11145ef852a4e230e1f642eecd8de155f2b26bc53jkummerow@chromium.org// Copyright (c) 2012 The Chromium Authors. All rights reserved. 29e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org// Use of this source code is governed by a BSD-style license that can be 39e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org// found in the LICENSE file. 49e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 59e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#ifndef CHROME_BROWSER_UI_WEBUI_HELP_HELP_HANDLER_H_ 69e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#define CHROME_BROWSER_UI_WEBUI_HELP_HELP_HANDLER_H_ 79e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 89e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#include <string> 99e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 109e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#include "base/compiler_specific.h" 119e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#include "base/memory/weak_ptr.h" 129e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#include "base/strings/string16.h" 139e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#include "chrome/browser/ui/webui/help/version_updater.h" 149e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#include "content/public/browser/notification_observer.h" 159e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#include "content/public/browser/notification_registrar.h" 169e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#include "content/public/browser/web_ui_message_handler.h" 179e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 189e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#if defined(OS_CHROMEOS) 199e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#include "base/task/cancelable_task_tracker.h" 209e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#include "chrome/browser/chromeos/version_loader.h" 219e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#endif // defined(OS_CHROMEOS) 229e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 239e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgnamespace base { 249e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgclass DictionaryValue; 259e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgclass ListValue; 269e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org} 279e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 289e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org// WebUI message handler for the help page. 299e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgclass HelpHandler : public content::WebUIMessageHandler, 309e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org public content::NotificationObserver { 319e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org public: 329e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org HelpHandler(); 339e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org virtual ~HelpHandler(); 349e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 359e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org // WebUIMessageHandler implementation. 369e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org virtual void RegisterMessages() OVERRIDE; 379e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 389e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org // Adds string values for the UI to |localized_strings|. 399e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org static void GetLocalizedValues(base::DictionaryValue* localized_strings); 40ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org 41ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org // NotificationObserver implementation. 42ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org virtual void Observe(int type, const content::NotificationSource& source, 43ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org const content::NotificationDetails& details) OVERRIDE; 44ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org 459e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org // Returns the browser version as a string. 469e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org static base::string16 BuildBrowserVersionString(); 479e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 489e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org private: 499e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org // Initializes querying values for the page. 509e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org void OnPageLoaded(const base::ListValue* args); 519e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 529e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#if defined(OS_MACOSX) 539e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org // Promotes the updater for all users. 549e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org void PromoteUpdater(const base::ListValue* args); 559e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#endif 569e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 579e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org // Relaunches the browser. |args| must be empty. 589e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org void RelaunchNow(const base::ListValue* args); 599e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 60ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org // Opens the feedback dialog. |args| must be empty. 61ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org void OpenFeedbackDialog(const base::ListValue* args); 62ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org 63ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org // Opens the help page. |args| must be empty. 64ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org void OpenHelpPage(const base::ListValue* args); 659e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 669e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#if defined(OS_CHROMEOS) 679e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org // Sets the release track version. 689e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org void SetChannel(const base::ListValue* args); 699e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 709e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org // Performs relaunch and powerwash. 719e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org void RelaunchAndPowerwash(const base::ListValue* args); 729e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#endif 739e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 749e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org // Checks for and applies update. 759e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org void RequestUpdate(const base::ListValue* args); 769e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 779e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org // Callback method which forwards status updates to the page. 789e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org void SetUpdateStatus(VersionUpdater::Status status, int progress, 79c03a1924dcc113678c0ebe58aa7d3c855a657719yangguo@chromium.org const base::string16& fail_message); 809e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 819e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#if defined(OS_MACOSX) 829e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org // Callback method which forwards promotion state to the page. 839e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org void SetPromotionState(VersionUpdater::PromotionState state); 849e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#endif 859e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 864a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org#if defined(OS_CHROMEOS) 874a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org // Callbacks from VersionLoader. 884a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org void OnOSVersion(const std::string& version); 899e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org void OnOSFirmware(const std::string& firmware); 909e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org void OnCurrentChannel(const std::string& channel); 919e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org void OnTargetChannel(const std::string& channel); 929e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#endif 939e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 949e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org // Specialized instance of the VersionUpdater used to update the browser. 95c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com scoped_ptr<VersionUpdater> version_updater_; 96c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com 97c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com // Used to observe notifications. 98a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org content::NotificationRegistrar registrar_; 99a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org 100a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org#if defined(OS_CHROMEOS) 1019e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org // Handles asynchronously loading the CrOS version info. 1029e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org chromeos::VersionLoader loader_; 1039e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 1049e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org // Used to request the version. 1059e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org base::CancelableTaskTracker tracker_; 1069e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#endif // defined(OS_CHROMEOS) 107c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com 108c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com // Used for callbacks. 109c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com base::WeakPtrFactory<HelpHandler> weak_factory_; 1104d3fe4e246b0312eba361689f288ddf8dd516960danno@chromium.org 1114d3fe4e246b0312eba361689f288ddf8dd516960danno@chromium.org DISALLOW_COPY_AND_ASSIGN(HelpHandler); 1129e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org}; 1139e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 1149e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#endif // CHROME_BROWSER_UI_WEBUI_HELP_HELP_HANDLER_H_ 1159e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org