Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3059)

Unified Diff: chrome/browser/ui/webui/settings/about_handler.cc

Issue 1971483002: MD Settings: About page, porting C++ handler and adding browser proxy. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressing comments. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/settings/about_handler.cc
diff --git a/chrome/browser/ui/webui/help/help_handler.cc b/chrome/browser/ui/webui/settings/about_handler.cc
similarity index 54%
copy from chrome/browser/ui/webui/help/help_handler.cc
copy to chrome/browser/ui/webui/settings/about_handler.cc
index 0db3e352833b9aa450535110bde2b0238eb3ba2d..ddc3783cdec49db38da3c8e72b2eb03f7b360e6b 100644
--- a/chrome/browser/ui/webui/help/help_handler.cc
+++ b/chrome/browser/ui/webui/settings/about_handler.cc
@@ -1,8 +1,8 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright 2016 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.
-#include "chrome/browser/ui/webui/help/help_handler.h"
+#include "chrome/browser/ui/webui/settings/about_handler.h"
#include <stddef.h>
@@ -43,6 +43,7 @@
#include "content/public/browser/notification_service.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_ui.h"
+#include "content/public/browser/web_ui_data_source.h"
#include "content/public/common/user_agent.h"
#include "grit/components_chromium_strings.h"
#include "grit/components_google_chrome_strings.h"
@@ -66,10 +67,8 @@
#include "chrome/browser/ui/webui/help/help_utils_chromeos.h"
#include "chrome/browser/ui/webui/help/version_updater_chromeos.h"
#include "chromeos/chromeos_switches.h"
-#include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/dbus/power_manager_client.h"
#include "chromeos/system/statistics_provider.h"
-#include "components/prefs/pref_service.h"
#include "components/user_manager/user_manager.h"
#endif
@@ -203,203 +202,150 @@ std::string ReadRegulatoryLabelText(const base::FilePath& path) {
return std::string();
}
+std::unique_ptr<base::DictionaryValue> GetVersionInfo() {
+ std::unique_ptr<base::DictionaryValue> version_info(
+ new base::DictionaryValue);
+
+ version_info->SetString(
+ "osVersion",
+ chromeos::version_loader::GetVersion(
+ chromeos::version_loader::VERSION_FULL));
+ version_info->SetString(
+ "arcVersion", chromeos::version_loader::GetARCVersion());
+ version_info->SetString("osFirmware",
+ chromeos::version_loader::GetFirmware());
+
+ return version_info;
+}
+
#endif // defined(OS_CHROMEOS)
+std::string UpdateStatusToString(VersionUpdater::Status status) {
+ std::string status_str;
+ switch (status) {
+ case VersionUpdater::CHECKING:
+ status_str = "checking";
+ break;
+ case VersionUpdater::UPDATING:
+ status_str = "updating";
+ break;
+ case VersionUpdater::NEARLY_UPDATED:
+ status_str = "nearly_updated";
+ break;
+ case VersionUpdater::UPDATED:
+ status_str = "updated";
+ break;
+ case VersionUpdater::FAILED:
+ case VersionUpdater::FAILED_OFFLINE:
+ case VersionUpdater::FAILED_CONNECTION_TYPE_DISALLOWED:
+ status_str = "failed";
+ break;
+ case VersionUpdater::DISABLED:
+ status_str = "disabled";
+ break;
+ case VersionUpdater::DISABLED_BY_ADMIN:
+ status_str = "disabled_by_admin";
+ break;
+ }
Dan Beam 2016/05/11 00:05:57 indent wrong
dpapad 2016/05/11 00:45:31 Done.
+
+ return status_str;
+}
+
} // namespace
-HelpHandler::HelpHandler()
+namespace settings {
+
+AboutHandler::AboutHandler()
: policy_registrar_(
g_browser_process->policy_service(),
policy::PolicyNamespace(policy::POLICY_DOMAIN_CHROME, std::string())),
weak_factory_(this) {
}
-HelpHandler::~HelpHandler() {
-}
-
-void HelpHandler::GetLocalizedValues(base::DictionaryValue* localized_strings) {
- struct L10nResources {
- const char* name;
- int ids;
- };
-
- static L10nResources resources[] = {
- {"aboutTitle", IDS_ABOUT_TITLE},
-#if defined(OS_CHROMEOS)
- {"aboutProductTitle", IDS_PRODUCT_OS_NAME},
-#else
- {"aboutProductTitle", IDS_PRODUCT_NAME},
-#endif
- {"aboutProductDescription", IDS_ABOUT_PRODUCT_DESCRIPTION},
- {"relaunch", IDS_RELAUNCH_BUTTON},
-#if defined(OS_CHROMEOS)
- {"relaunchAndPowerwash", IDS_RELAUNCH_AND_POWERWASH_BUTTON},
-#endif
- {"productName", IDS_PRODUCT_NAME},
- {"updateCheckStarted", IDS_UPGRADE_CHECK_STARTED},
- {"updating", IDS_UPGRADE_UPDATING},
-#if defined(OS_CHROMEOS) || defined(OS_WIN)
- {"updateDisabledByPolicy", IDS_UPGRADE_DISABLED_BY_POLICY},
-#endif // defined(OS_CHROMEOS) || defined(OS_WIN)
-#if defined(OS_CHROMEOS)
- {"updateButton", IDS_UPGRADE_BUTTON},
- {"updatingChannelSwitch", IDS_UPGRADE_UPDATING_CHANNEL_SWITCH},
-#endif
- {"updateAlmostDone", IDS_UPGRADE_SUCCESSFUL_RELAUNCH},
-#if defined(OS_CHROMEOS)
- {"successfulChannelSwitch", IDS_UPGRADE_SUCCESSFUL_CHANNEL_SWITCH},
-#endif
- {"getHelpWithChrome", IDS_GET_HELP_USING_CHROME},
- {"reportAnIssue", IDS_REPORT_AN_ISSUE},
-#if defined(OS_CHROMEOS)
- {"platform", IDS_PLATFORM_LABEL},
- {"arcVersion", IDS_ARC_VERSION_LABEL},
- {"firmware", IDS_ABOUT_PAGE_FIRMWARE},
- {"showMoreInfo", IDS_SHOW_MORE_INFO},
- {"hideMoreInfo", IDS_HIDE_MORE_INFO},
- {"channel", IDS_ABOUT_PAGE_CHANNEL},
- {"stable", IDS_ABOUT_PAGE_CHANNEL_STABLE},
- {"beta", IDS_ABOUT_PAGE_CHANNEL_BETA},
- {"dev", IDS_ABOUT_PAGE_CHANNEL_DEVELOPMENT},
- {"channel-changed", IDS_ABOUT_PAGE_CHANNEL_CHANGED},
- {"currentChannelStable", IDS_ABOUT_PAGE_CURRENT_CHANNEL_STABLE},
- {"currentChannelBeta", IDS_ABOUT_PAGE_CURRENT_CHANNEL_BETA},
- {"currentChannelDev", IDS_ABOUT_PAGE_CURRENT_CHANNEL_DEV},
- {"currentChannel", IDS_ABOUT_PAGE_CURRENT_CHANNEL},
- {"channelChangeButton", IDS_ABOUT_PAGE_CHANNEL_CHANGE_BUTTON},
- {"channelChangeDisallowedMessage",
- IDS_ABOUT_PAGE_CHANNEL_CHANGE_DISALLOWED_MESSAGE},
- {"channelChangePageTitle", IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_TITLE},
- {"channelChangePagePowerwashTitle",
- IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_POWERWASH_TITLE},
- {"channelChangePagePowerwashMessage",
- IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_POWERWASH_MESSAGE},
- {"channelChangePageDelayedChangeTitle",
- IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_DELAYED_CHANGE_TITLE},
- {"channelChangePageUnstableTitle",
- IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_UNSTABLE_TITLE},
- {"channelChangePagePowerwashButton",
- IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_POWERWASH_BUTTON},
- {"channelChangePageChangeButton",
- IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_CHANGE_BUTTON},
- {"channelChangePageCancelButton",
- IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_CANCEL_BUTTON},
- {"webkit", IDS_WEBKIT},
- {"userAgent", IDS_VERSION_UI_USER_AGENT},
- {"commandLine", IDS_VERSION_UI_COMMAND_LINE},
- {"buildDate", IDS_VERSION_UI_BUILD_DATE},
-#endif
-#if defined(OS_MACOSX) || defined(OS_WIN)
- {"learnMore", IDS_LEARN_MORE},
-#endif
-#if defined(OS_MACOSX)
- {"promote", IDS_ABOUT_CHROME_PROMOTE_UPDATER},
-#endif
- };
-
- for (size_t i = 0; i < arraysize(resources); ++i) {
- localized_strings->SetString(resources[i].name,
- l10n_util::GetStringUTF16(resources[i].ids));
- }
-
-#if defined(OS_CHROMEOS)
- localized_strings->SetString("upToDate", ash::SubstituteChromeOSDeviceType(
- IDS_UPGRADE_UP_TO_DATE));
-#else
- localized_strings->SetString("upToDate", l10n_util::GetStringUTF16(
- IDS_UPGRADE_UP_TO_DATE));
-#endif
+AboutHandler::~AboutHandler() {}
- localized_strings->SetString("updateObsoleteSystem",
- ObsoleteSystem::LocalizedObsoleteString());
- localized_strings->SetString("updateObsoleteSystemURL",
- ObsoleteSystem::GetLinkURL());
-
- localized_strings->SetString(
- "browserVersion",
+AboutHandler* AboutHandler::Create(content::WebUIDataSource* html_source,
+ Profile* profile) {
+ html_source->AddString(
+ "aboutBrowserVersion",
l10n_util::GetStringFUTF16(IDS_ABOUT_PRODUCT_VERSION,
BuildBrowserVersionString()));
base::Time::Exploded exploded_time;
base::Time::Now().LocalExplode(&exploded_time);
- localized_strings->SetString(
- "productCopyright",
+ html_source->AddString(
+ "aboutProductCopyright",
l10n_util::GetStringFUTF16(IDS_ABOUT_VERSION_COPYRIGHT,
base::IntToString16(exploded_time.year)));
base::string16 license = l10n_util::GetStringFUTF16(
IDS_VERSION_UI_LICENSE, base::ASCIIToUTF16(chrome::kChromiumProjectURL),
base::ASCIIToUTF16(chrome::kChromeUICreditsURL));
- localized_strings->SetString("productLicense", license);
+ html_source->AddString("aboutProductLicense", license);
+
+ html_source->AddBoolean("aboutObsolteNowOrSoon",
+ ObsoleteSystem::IsObsoleteNowOrSoon());
+ html_source->AddBoolean(
+ "aboutObsolteEndOfTheLine",
+ ObsoleteSystem::IsObsoleteNowOrSoon() &&
+ ObsoleteSystem::IsEndOfTheLine());
#if defined(OS_CHROMEOS)
base::string16 os_license = l10n_util::GetStringFUTF16(
IDS_ABOUT_CROS_VERSION_LICENSE,
base::ASCIIToUTF16(chrome::kChromeUIOSCreditsURL));
- localized_strings->SetString("productOsLicense", os_license);
-
- base::string16 product_name = l10n_util::GetStringUTF16(IDS_PRODUCT_OS_NAME);
- localized_strings->SetString(
- "channelChangePageDelayedChangeMessage",
- l10n_util::GetStringFUTF16(
- IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_DELAYED_CHANGE_MESSAGE,
- product_name));
- localized_strings->SetString(
- "channelChangePageUnstableMessage",
- l10n_util::GetStringFUTF16(
- IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_UNSTABLE_MESSAGE,
- product_name));
-
- if (base::CommandLine::ForCurrentProcess()->HasSwitch(
- chromeos::switches::kDisableNewChannelSwitcherUI)) {
- localized_strings->SetBoolean("disableNewChannelSwitcherUI", true);
- }
-#endif
-
- base::string16 tos = l10n_util::GetStringFUTF16(
- IDS_ABOUT_TERMS_OF_SERVICE, base::UTF8ToUTF16(chrome::kChromeUITermsURL));
- localized_strings->SetString("productTOS", tos);
-
- localized_strings->SetString("webkitVersion", content::GetWebKitVersion());
+ html_source->AddString("aboutProductOsLicense", os_license);
- localized_strings->SetString("jsEngine", "V8");
- localized_strings->SetString("jsEngineVersion", v8::V8::GetVersion());
+ html_source->AddBoolean("aboutCanChangeChannel", CanChangeChannel(profile));
+ html_source->AddBoolean("aboutEnterpriseManaged", IsEnterpriseManaged());
- localized_strings->SetString("userAgentInfo", GetUserAgent());
+ base::Time build_time = base::SysInfo::GetLsbReleaseTime();
+ base::string16 build_date = base::TimeFormatFriendlyDate(build_time);
+ html_source->AddString("aboutBuildDate", build_date);
+#endif
- base::CommandLine::StringType command_line =
- base::CommandLine::ForCurrentProcess()->GetCommandLineString();
- localized_strings->SetString("commandLineInfo", command_line);
+ return new AboutHandler();
}
-void HelpHandler::RegisterMessages() {
- version_updater_.reset(VersionUpdater::Create(web_ui()->GetWebContents()));
- registrar_.Add(this, chrome::NOTIFICATION_UPGRADE_RECOMMENDED,
- content::NotificationService::AllSources());
+void AboutHandler::RegisterMessages() {
+ // TODO(dpapad): Implement an "Unobserve" method and move this to
+ // |OnJavascriptAllowed| instead.
Dan Beam 2016/05/11 00:05:57 when are you doing this?
dpapad 2016/05/11 00:45:31 Done, followed the unique_ptr approach.
policy_registrar_.Observe(
policy::key::kDeviceAutoUpdateDisabled,
- base::Bind(&HelpHandler::OnDeviceAutoUpdatePolicyChanged,
+ base::Bind(&AboutHandler::OnDeviceAutoUpdatePolicyChanged,
base::Unretained(this)));
- web_ui()->RegisterMessageCallback("onPageLoaded",
- base::Bind(&HelpHandler::OnPageLoaded, base::Unretained(this)));
+ web_ui()->RegisterMessageCallback("refreshUpdateStatus",
+ base::Bind(&AboutHandler::HandleRefreshUpdateStatus,
+ base::Unretained(this)));
web_ui()->RegisterMessageCallback("relaunchNow",
- base::Bind(&HelpHandler::RelaunchNow, base::Unretained(this)));
+ base::Bind(&AboutHandler::HandleRelaunchNow, base::Unretained(this)));
web_ui()->RegisterMessageCallback("openFeedbackDialog",
- base::Bind(&HelpHandler::OpenFeedbackDialog, base::Unretained(this)));
+ base::Bind(&AboutHandler::HandleOpenFeedbackDialog,
+ base::Unretained(this)));
web_ui()->RegisterMessageCallback("openHelpPage",
- base::Bind(&HelpHandler::OpenHelpPage, base::Unretained(this)));
+ base::Bind(&AboutHandler::HandleOpenHelpPage, base::Unretained(this)));
#if defined(OS_CHROMEOS)
web_ui()->RegisterMessageCallback("setChannel",
- base::Bind(&HelpHandler::SetChannel, base::Unretained(this)));
- web_ui()->RegisterMessageCallback("relaunchAndPowerwash",
- base::Bind(&HelpHandler::RelaunchAndPowerwash, base::Unretained(this)));
+ base::Bind(&AboutHandler::HandleSetChannel, base::Unretained(this)));
web_ui()->RegisterMessageCallback("requestUpdate",
- base::Bind(&HelpHandler::RequestUpdate, base::Unretained(this)));
+ base::Bind(&AboutHandler::HandleRequestUpdate, base::Unretained(this)));
+
+ web_ui()->RegisterMessageCallback("getVersionInfo",
+ base::Bind(&AboutHandler::HandleGetVersionInfo, base::Unretained(this)));
+ web_ui()->RegisterMessageCallback("getRegulatoryInfo",
+ base::Bind(&AboutHandler::HandleGetRegulatoryInfo,
+ base::Unretained(this)));
+ web_ui()->RegisterMessageCallback("getCurrentChannel",
+ base::Bind(&AboutHandler::HandleGetCurrentChannel,
+ base::Unretained(this)));
+ web_ui()->RegisterMessageCallback("getTargetChannel",
+ base::Bind(&AboutHandler::HandleGetTargetChannel,
+ base::Unretained(this)));
#endif
#if defined(OS_MACOSX)
web_ui()->RegisterMessageCallback("promoteUpdater",
- base::Bind(&HelpHandler::PromoteUpdater, base::Unretained(this)));
+ base::Bind(&AboutHandler::PromoteUpdater, base::Unretained(this)));
#endif
#if defined(OS_CHROMEOS)
@@ -409,13 +355,25 @@ void HelpHandler::RegisterMessages() {
#endif
}
-void HelpHandler::Observe(int type, const content::NotificationSource& source,
+void AboutHandler::OnJavascriptAllowed() {
+ version_updater_.reset(VersionUpdater::Create(web_ui()->GetWebContents()));
+ registrar_.Add(this, chrome::NOTIFICATION_UPGRADE_RECOMMENDED,
+ content::NotificationService::AllSources());
+
Dan Beam 2016/05/11 00:05:57 extra newline
dpapad 2016/05/11 00:45:31 Done. I just ran clang-format for this entire file
+}
+
+void AboutHandler::OnJavascriptDisallowed() {
+ registrar_.Remove(this, chrome::NOTIFICATION_UPGRADE_RECOMMENDED,
+ content::NotificationService::AllSources());
+}
+
+void AboutHandler::Observe(int type, const content::NotificationSource& source,
const content::NotificationDetails& details) {
switch (type) {
case chrome::NOTIFICATION_UPGRADE_RECOMMENDED: {
// A version update is installed and ready to go. Refresh the UI so the
// correct state will be shown.
- RequestUpdate(NULL);
+ RequestUpdate();
break;
}
default:
@@ -424,7 +382,7 @@ void HelpHandler::Observe(int type, const content::NotificationSource& source,
}
// static
-base::string16 HelpHandler::BuildBrowserVersionString() {
+base::string16 AboutHandler::BuildBrowserVersionString() {
std::string version = version_info::GetVersionNumber();
std::string modifier = chrome::GetChannelString();
@@ -438,7 +396,7 @@ base::string16 HelpHandler::BuildBrowserVersionString() {
return base::UTF8ToUTF16(version);
}
-void HelpHandler::OnDeviceAutoUpdatePolicyChanged(
+void AboutHandler::OnDeviceAutoUpdatePolicyChanged(
const base::Value* previous_policy,
const base::Value* current_policy) {
bool previous_auto_update_disabled = false;
@@ -455,98 +413,40 @@ void HelpHandler::OnDeviceAutoUpdatePolicyChanged(
}
}
-void HelpHandler::RefreshUpdateStatus() {
+void AboutHandler::HandleRefreshUpdateStatus(const base::ListValue* args) {
+ AllowJavascript();
+ RefreshUpdateStatus();
+}
+
+void AboutHandler::RefreshUpdateStatus() {
// On Chrome OS, do not check for an update automatically.
#if defined(OS_CHROMEOS)
static_cast<VersionUpdaterCros*>(version_updater_.get())->GetUpdateStatus(
- base::Bind(&HelpHandler::SetUpdateStatus, base::Unretained(this)));
+ base::Bind(&AboutHandler::SetUpdateStatus, base::Unretained(this)));
#else
- RequestUpdate(NULL);
-#endif
-}
-
-void HelpHandler::OnPageLoaded(const base::ListValue* args) {
-#if defined(OS_CHROMEOS)
- base::PostTaskAndReplyWithResult(
- content::BrowserThread::GetBlockingPool(),
- FROM_HERE,
- base::Bind(&chromeos::version_loader::GetVersion,
- chromeos::version_loader::VERSION_FULL),
- base::Bind(&HelpHandler::OnOSVersion,
- weak_factory_.GetWeakPtr()));
- base::PostTaskAndReplyWithResult(
- content::BrowserThread::GetBlockingPool(),
- FROM_HERE,
- base::Bind(&chromeos::version_loader::GetARCVersion),
- base::Bind(&HelpHandler::OnARCVersion,
- weak_factory_.GetWeakPtr()));
- base::PostTaskAndReplyWithResult(
- content::BrowserThread::GetBlockingPool(),
- FROM_HERE,
- base::Bind(&chromeos::version_loader::GetFirmware),
- base::Bind(&HelpHandler::OnOSFirmware,
- weak_factory_.GetWeakPtr()));
-
- web_ui()->CallJavascriptFunction(
- "help.HelpPage.updateEnableReleaseChannel",
- base::FundamentalValue(CanChangeChannel(Profile::FromWebUI(web_ui()))));
-
- base::Time build_time = base::SysInfo::GetLsbReleaseTime();
- base::string16 build_date = base::TimeFormatFriendlyDate(build_time);
- web_ui()->CallJavascriptFunction("help.HelpPage.setBuildDate",
- base::StringValue(build_date));
-#endif // defined(OS_CHROMEOS)
-
- RefreshUpdateStatus();
-
- web_ui()->CallJavascriptFunction(
- "help.HelpPage.setObsoleteSystem",
- base::FundamentalValue(ObsoleteSystem::IsObsoleteNowOrSoon()));
- web_ui()->CallJavascriptFunction(
- "help.HelpPage.setObsoleteSystemEndOfTheLine",
- base::FundamentalValue(ObsoleteSystem::IsObsoleteNowOrSoon() &&
- ObsoleteSystem::IsEndOfTheLine()));
-
-#if defined(OS_CHROMEOS)
- web_ui()->CallJavascriptFunction(
- "help.HelpPage.updateIsEnterpriseManaged",
- base::FundamentalValue(IsEnterpriseManaged()));
- // First argument to GetChannel() is a flag that indicates whether
- // current channel should be returned (if true) or target channel
- // (otherwise).
- version_updater_->GetChannel(true,
- base::Bind(&HelpHandler::OnCurrentChannel, weak_factory_.GetWeakPtr()));
- version_updater_->GetChannel(false,
- base::Bind(&HelpHandler::OnTargetChannel, weak_factory_.GetWeakPtr()));
-
- base::PostTaskAndReplyWithResult(
- content::BrowserThread::GetBlockingPool(),
- FROM_HERE,
- base::Bind(&FindRegulatoryLabelDir),
- base::Bind(&HelpHandler::OnRegulatoryLabelDirFound,
- weak_factory_.GetWeakPtr()));
+ RequestUpdate();
#endif
}
#if defined(OS_MACOSX)
-void HelpHandler::PromoteUpdater(const base::ListValue* args) {
+void AboutHandler::PromoteUpdater(const base::ListValue* args) {
version_updater_->PromoteUpdater();
}
#endif
-void HelpHandler::RelaunchNow(const base::ListValue* args) {
+void AboutHandler::HandleRelaunchNow(const base::ListValue* args) {
DCHECK(args->empty());
version_updater_->RelaunchBrowser();
}
-void HelpHandler::OpenFeedbackDialog(const base::ListValue* args) {
+void AboutHandler::HandleOpenFeedbackDialog(const base::ListValue* args) {
DCHECK(args->empty());
Browser* browser = chrome::FindBrowserWithWebContents(
web_ui()->GetWebContents());
chrome::OpenFeedbackDialog(browser);
}
-void HelpHandler::OpenHelpPage(const base::ListValue* args) {
+void AboutHandler::HandleOpenHelpPage(const base::ListValue* args) {
DCHECK(args->empty());
Browser* browser = chrome::FindBrowserWithWebContents(
web_ui()->GetWebContents());
@@ -555,7 +455,7 @@ void HelpHandler::OpenHelpPage(const base::ListValue* args) {
#if defined(OS_CHROMEOS)
-void HelpHandler::SetChannel(const base::ListValue* args) {
+void AboutHandler::HandleSetChannel(const base::ListValue* args) {
DCHECK(args->GetSize() == 2);
if (!CanChangeChannel(Profile::FromWebUI(web_ui()))) {
@@ -575,104 +475,121 @@ void HelpHandler::SetChannel(const base::ListValue* args) {
is_powerwash_allowed);
if (user_manager::UserManager::Get()->IsCurrentUserOwner()) {
// Check for update after switching release channel.
- version_updater_->CheckForUpdate(base::Bind(&HelpHandler::SetUpdateStatus,
+ version_updater_->CheckForUpdate(base::Bind(&AboutHandler::SetUpdateStatus,
base::Unretained(this)),
VersionUpdater::PromoteCallback());
}
}
-void HelpHandler::RelaunchAndPowerwash(const base::ListValue* args) {
- DCHECK(args->empty());
+void AboutHandler::HandleGetVersionInfo(const base::ListValue* args) {
+ CHECK_EQ(1U, args->GetSize());
+ std::string callback_id;
+ CHECK(args->GetString(0, &callback_id));
- if (IsEnterpriseManaged())
- return;
+ base::PostTaskAndReplyWithResult(
+ content::BrowserThread::GetBlockingPool(),
+ FROM_HERE,
+ base::Bind(&GetVersionInfo),
+ base::Bind(&AboutHandler::OnGetVersionInfoReady,
+ weak_factory_.GetWeakPtr(),
+ callback_id));
+}
+
+void AboutHandler::OnGetVersionInfoReady(
+ std::string callback_id,
+ std::unique_ptr<base::DictionaryValue> version_info) {
+ ResolveJavascriptCallback(base::StringValue(callback_id), *version_info);
+}
+
+void AboutHandler::HandleGetRegulatoryInfo(const base::ListValue* args) {
+ CHECK_EQ(1U, args->GetSize());
+ std::string callback_id;
+ CHECK(args->GetString(0, &callback_id));
+
+ base::PostTaskAndReplyWithResult(
+ content::BrowserThread::GetBlockingPool(),
+ FROM_HERE,
+ base::Bind(&FindRegulatoryLabelDir),
+ base::Bind(&AboutHandler::OnRegulatoryLabelDirFound,
+ weak_factory_.GetWeakPtr(),
+ callback_id));
+}
+
+void AboutHandler::HandleGetCurrentChannel(const base::ListValue* args) {
+ CHECK_EQ(1U, args->GetSize());
+ std::string callback_id;
+ CHECK(args->GetString(0, &callback_id));
+ // First argument to GetChannel() is a flag that indicates whether
+ // current channel should be returned (if true) or target channel
+ // (otherwise).
+ version_updater_->GetChannel(true,
+ base::Bind(&AboutHandler::OnGetChannelReady,
+ weak_factory_.GetWeakPtr(),
+ callback_id));
+}
+
+void AboutHandler::HandleGetTargetChannel(const base::ListValue* args) {
+ CHECK_EQ(1U, args->GetSize());
+ std::string callback_id;
+ CHECK(args->GetString(0, &callback_id));
+ version_updater_->GetChannel(false,
+ base::Bind(&AboutHandler::OnGetChannelReady,
+ weak_factory_.GetWeakPtr(),
+ callback_id));
+}
- PrefService* prefs = g_browser_process->local_state();
- prefs->SetBoolean(prefs::kFactoryResetRequested, true);
- prefs->CommitPendingWrite();
+void AboutHandler::OnGetChannelReady(std::string callback_id,
+ const std::string& channel) {
+ ResolveJavascriptCallback(
+ base::StringValue(callback_id), base::StringValue(channel));
+}
- // Perform sign out. Current chrome process will then terminate, new one will
- // be launched (as if it was a restart).
- chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart();
+void AboutHandler::HandleRequestUpdate(const base::ListValue* args) {
+ RequestUpdate();
}
#endif // defined(OS_CHROMEOS)
-void HelpHandler::RequestUpdate(const base::ListValue* args) {
- VersionUpdater::PromoteCallback promote_callback;
+void AboutHandler::RequestUpdate() {
version_updater_->CheckForUpdate(
- base::Bind(&HelpHandler::SetUpdateStatus, base::Unretained(this)),
+ base::Bind(&AboutHandler::SetUpdateStatus, base::Unretained(this)),
#if defined(OS_MACOSX)
- base::Bind(&HelpHandler::SetPromotionState, base::Unretained(this)));
+ base::Bind(&AboutHandler::SetPromotionState, base::Unretained(this)));
#else
VersionUpdater::PromoteCallback());
#endif // OS_MACOSX
}
-void HelpHandler::SetUpdateStatus(VersionUpdater::Status status,
+void AboutHandler::SetUpdateStatus(VersionUpdater::Status status,
int progress, const base::string16& message) {
// Only UPDATING state should have progress set.
DCHECK(status == VersionUpdater::UPDATING || progress == 0);
- std::string status_str;
- switch (status) {
- case VersionUpdater::CHECKING:
- status_str = "checking";
- break;
- case VersionUpdater::UPDATING:
- status_str = "updating";
- break;
- case VersionUpdater::NEARLY_UPDATED:
- status_str = "nearly_updated";
- break;
- case VersionUpdater::UPDATED:
- status_str = "updated";
- break;
- case VersionUpdater::FAILED:
- case VersionUpdater::FAILED_OFFLINE:
- case VersionUpdater::FAILED_CONNECTION_TYPE_DISALLOWED:
- status_str = "failed";
- break;
- case VersionUpdater::DISABLED:
- status_str = "disabled";
- break;
- case VersionUpdater::DISABLED_BY_ADMIN:
- status_str = "disabled_by_admin";
- break;
- }
-
- web_ui()->CallJavascriptFunction("help.HelpPage.setUpdateStatus",
- base::StringValue(status_str),
- base::StringValue(message));
-
- if (status == VersionUpdater::UPDATING) {
- web_ui()->CallJavascriptFunction("help.HelpPage.setProgress",
- base::FundamentalValue(progress));
- }
+ std::unique_ptr<base::DictionaryValue> event(new base::DictionaryValue);
+ event->SetString("status", UpdateStatusToString(status));
+ event->SetString("message", message);
+ event->SetInteger("progress", progress);
#if defined(OS_CHROMEOS)
if (status == VersionUpdater::FAILED_OFFLINE ||
status == VersionUpdater::FAILED_CONNECTION_TYPE_DISALLOWED) {
base::string16 types_msg = GetAllowedConnectionTypesMessage();
- if (!types_msg.empty()) {
- web_ui()->CallJavascriptFunction(
- "help.HelpPage.setAndShowAllowedConnectionTypesMsg",
- base::StringValue(types_msg));
- } else {
- web_ui()->CallJavascriptFunction(
- "help.HelpPage.showAllowedConnectionTypesMsg",
- base::FundamentalValue(false));
- }
+ if (!types_msg.empty())
+ event->SetString("connectionTypes", types_msg);
+ else
+ event->Set("connectionTypes", base::Value::CreateNullValue());
} else {
- web_ui()->CallJavascriptFunction(
- "help.HelpPage.showAllowedConnectionTypesMsg",
- base::FundamentalValue(false));
+ event->Set("connectionTypes", base::Value::CreateNullValue());
}
#endif // defined(OS_CHROMEOS)
+
+ CallJavascriptFunction("cr.webUIListenerCallback",
+ base::StringValue("update-status-changed"),
+ *event);
}
#if defined(OS_MACOSX)
-void HelpHandler::SetPromotionState(VersionUpdater::PromotionState state) {
+void AboutHandler::SetPromotionState(VersionUpdater::PromotionState state) {
std::string state_str;
switch (state) {
case VersionUpdater::PROMOTE_HIDDEN:
@@ -686,63 +603,44 @@ void HelpHandler::SetPromotionState(VersionUpdater::PromotionState state) {
break;
}
- web_ui()->CallJavascriptFunction("help.HelpPage.setPromotionState",
- base::StringValue(state_str));
+ CallJavascriptFunction("cr.webUIListenerCallback",
+ base::StringValue("promotion-state-changed"),
+ base::StringValue(state_str));
}
#endif // defined(OS_MACOSX)
#if defined(OS_CHROMEOS)
-void HelpHandler::OnOSVersion(const std::string& version) {
- web_ui()->CallJavascriptFunction("help.HelpPage.setOSVersion",
- base::StringValue(version));
-}
-
-void HelpHandler::OnARCVersion(const std::string& firmware) {
- web_ui()->CallJavascriptFunction("help.HelpPage.setARCVersion",
- base::StringValue(firmware));
-}
-
-void HelpHandler::OnOSFirmware(const std::string& firmware) {
- web_ui()->CallJavascriptFunction("help.HelpPage.setOSFirmware",
- base::StringValue(firmware));
-}
-
-void HelpHandler::OnCurrentChannel(const std::string& channel) {
- web_ui()->CallJavascriptFunction(
- "help.HelpPage.updateCurrentChannel", base::StringValue(channel));
-}
-
-void HelpHandler::OnTargetChannel(const std::string& channel) {
- web_ui()->CallJavascriptFunction(
- "help.HelpPage.updateTargetChannel", base::StringValue(channel));
-}
-
-void HelpHandler::OnRegulatoryLabelDirFound(const base::FilePath& path) {
- if (path.empty())
+void AboutHandler::OnRegulatoryLabelDirFound(std::string callback_id,
+ const base::FilePath& path) {
+ if (path.empty()) {
+ ResolveJavascriptCallback(base::StringValue(callback_id),
+ *base::Value::CreateNullValue());
return;
+ }
base::PostTaskAndReplyWithResult(
content::BrowserThread::GetBlockingPool(), FROM_HERE,
base::Bind(&ReadRegulatoryLabelText, path),
- base::Bind(&HelpHandler::OnRegulatoryLabelTextRead,
- weak_factory_.GetWeakPtr()));
-
- // Send the image path to the WebUI.
- OnRegulatoryLabelImageFound(path.AppendASCII(kRegulatoryLabelImageFilename));
+ base::Bind(&AboutHandler::OnRegulatoryLabelTextRead,
+ weak_factory_.GetWeakPtr(),
+ callback_id, path));
}
-void HelpHandler::OnRegulatoryLabelImageFound(const base::FilePath& path) {
+void AboutHandler::OnRegulatoryLabelTextRead(std::string callback_id,
+ const base::FilePath& path,
+ const std::string& text) {
+ std::unique_ptr<base::DictionaryValue> regulatory_info(
+ new base::DictionaryValue);
+ // Remove unnecessary whitespace.
+ regulatory_info->SetString("text", base::CollapseWhitespaceASCII(text, true));
std::string url = std::string("chrome://") + chrome::kChromeOSAssetHost +
"/" + path.MaybeAsASCII();
- web_ui()->CallJavascriptFunction("help.HelpPage.setRegulatoryLabelPath",
- base::StringValue(url));
-}
+ regulatory_info->SetString("url", url);
-void HelpHandler::OnRegulatoryLabelTextRead(const std::string& text) {
- // Remove unnecessary whitespace.
- web_ui()->CallJavascriptFunction(
- "help.HelpPage.setRegulatoryLabelText",
- base::StringValue(base::CollapseWhitespaceASCII(text, true)));
+ ResolveJavascriptCallback(
+ base::StringValue(callback_id), *regulatory_info);
}
#endif // defined(OS_CHROMEOS)
+
+} // namespace settings

Powered by Google App Engine
This is Rietveld 408576698