1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// found in the LICENSE file.
4bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
5dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#ifndef CHROME_BROWSER_UI_WEBUI_OPTIONS_ABOUT_PAGE_HANDLER_H_
6dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#define CHROME_BROWSER_UI_WEBUI_OPTIONS_ABOUT_PAGE_HANDLER_H_
7bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
8bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include <string>
9bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
10dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/webui/options/options_ui.h"
11bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
12bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#if defined(OS_CHROMEOS)
13bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/chromeos/cros/update_library.h"
14bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/chromeos/version_loader.h"
15bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#endif
16bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
17bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// ChromeOS about page UI handler.
18bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass AboutPageHandler : public OptionsPageUIHandler {
19bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen public:
20bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  AboutPageHandler();
21bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  virtual ~AboutPageHandler();
22bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
23dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // OptionsPageUIHandler implementation.
24bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  virtual void GetLocalizedValues(DictionaryValue* localized_strings);
25bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  virtual void RegisterMessages();
26bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
27bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen private:
28513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  // The function is called from JavaScript when the about page is ready.
29bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  void PageReady(const ListValue* args);
30bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
31513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  // The function is called from JavaScript to set the release track like
32513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  // "beta-channel" and "dev-channel".
33513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  void SetReleaseTrack(const ListValue* args);
34513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch
35bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#if defined(OS_CHROMEOS)
36513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  // Initiates update check.
37bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  void CheckNow(const ListValue* args);
38513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch
39513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  // Restarts the system.
40513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  void RestartNow(const ListValue* args);
41513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch
42bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // Callback from chromeos::VersionLoader giving the version.
43bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  void OnOSVersion(chromeos::VersionLoader::Handle handle,
44bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                   std::string version);
45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  void OnOSFirmware(chromeos::VersionLoader::Handle handle,
46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                    std::string firmware);
47bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  void UpdateStatus(const chromeos::UpdateLibrary::Status& status);
48bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // UpdateEngine Callback handler.
50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  static void UpdateSelectedChannel(void* user_data, const char* channel);
51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
52bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // Handles asynchronously loading the version.
53bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  chromeos::VersionLoader loader_;
54bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
55bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // Used to request the version.
56bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  CancelableRequestConsumer consumer_;
57bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
58bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // Update Observer
59bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  class UpdateObserver;
60bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  scoped_ptr<UpdateObserver> update_observer_;
61bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
62bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  int progress_;
63bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  bool sticky_;
64bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  bool started_;
65bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#endif
66bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
67bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  DISALLOW_COPY_AND_ASSIGN(AboutPageHandler);
68bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
69bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
70dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#endif  // CHROME_BROWSER_UI_WEBUI_OPTIONS_ABOUT_PAGE_HANDLER_H_
71