// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_WEBUI_OPTIONS_ABOUT_PAGE_HANDLER_H_
#define CHROME_BROWSER_UI_WEBUI_OPTIONS_ABOUT_PAGE_HANDLER_H_
#include <string>
#include "chrome/browser/ui/webui/options/options_ui.h"
#if defined(OS_CHROMEOS)
#include "chrome/browser/chromeos/cros/update_library.h"
#include "chrome/browser/chromeos/version_loader.h"
#endif
// ChromeOS about page UI handler.
class AboutPageHandler : public OptionsPageUIHandler {
public:
AboutPageHandler();
virtual ~AboutPageHandler();
// OptionsPageUIHandler implementation.
virtual void GetLocalizedValues(DictionaryValue* localized_strings);
virtual void RegisterMessages();
private:
// The function is called from JavaScript when the about page is ready.
void PageReady(const ListValue* args);
// The function is called from JavaScript to set the release track like
// "beta-channel" and "dev-channel".
void SetReleaseTrack(const ListValue* args);
#if defined(OS_CHROMEOS)
// Initiates update check.
void CheckNow(const ListValue* args);
// Restarts the system.
void RestartNow(const ListValue* args);
// Callback from chromeos::VersionLoader giving the version.
void OnOSVersion(chromeos::VersionLoader::Handle handle,
std::string version);
void OnOSFirmware(chromeos::VersionLoader::Handle handle,
std::string firmware);
void UpdateStatus(const chromeos::UpdateLibrary::Status& status);
// UpdateEngine Callback handler.
static void UpdateSelectedChannel(void* user_data, const char* channel);
// Handles asynchronously loading the version.
chromeos::VersionLoader loader_;
// Used to request the version.
CancelableRequestConsumer consumer_;
// Update Observer
class UpdateObserver;
scoped_ptr<UpdateObserver> update_observer_;
int progress_;
bool sticky_;
bool started_;
#endif
DISALLOW_COPY_AND_ASSIGN(AboutPageHandler);
};
#endif // CHROME_BROWSER_UI_WEBUI_OPTIONS_ABOUT_PAGE_HANDLER_H_