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

Unified Diff: chrome/browser/ui/webui/help/help_handler.cc

Issue 17437004: Implemented new channel switcher UI. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix, sync. Created 7 years, 6 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/help/help_handler.cc
diff --git a/chrome/browser/ui/webui/help/help_handler.cc b/chrome/browser/ui/webui/help/help_handler.cc
index 3da02fd70438be8bbba1b7f35b1f38b98a8bca3e..c23c623165c6992e59eb49bfcb7d16222fa7d155 100644
--- a/chrome/browser/ui/webui/help/help_handler.cc
+++ b/chrome/browser/ui/webui/help/help_handler.cc
@@ -89,17 +89,21 @@ string16 GetAllowedConnectionTypesMessage() {
}
}
-bool CanChangeReleaseChannel() {
- // On non managed machines we have local owner who is the only one to change
- // anything.
- if (chromeos::UserManager::Get()->IsCurrentUserOwner())
- return true;
+// Returns true if the device is enterprise managed, false otherwise.
+bool IsEnterpriseManaged() {
+ return g_browser_process->browser_policy_connector()->IsEnterpriseManaged();
+}
+
+// Returns true if current user can change channel, false otherwise.
+bool CanChangeChannel() {
+ bool value = false;
+ chromeos::CrosSettings::Get()->GetBoolean(chromeos::kReleaseChannelDelegated,
+ &value);
+
// On a managed machine we delegate this setting to the users of the same
// domain only if the policy value is "domain".
- if (g_browser_process->browser_policy_connector()->IsEnterpriseManaged()) {
- bool value = false;
- if (!chromeos::CrosSettings::Get()->GetBoolean(
- chromeos::kReleaseChannelDelegated, &value) || !value)
+ if (IsEnterpriseManaged()) {
+ if (!value)
return false;
// Get the currently logged in user and strip the domain part only.
std::string domain = "";
@@ -109,6 +113,10 @@ bool CanChangeReleaseChannel() {
domain = user.substr(user.find('@') + 1);
return domain == g_browser_process->browser_policy_connector()->
GetEnterpriseDomain();
+ } else if (chromeos::UserManager::Get()->IsCurrentUserOwner()) {
+ // On non managed machines we have local owner who is the only one to change
+ // anything. Ensure that ReleaseChannelDelegated is false.
+ return !value;
}
return false;
}
@@ -146,6 +154,8 @@ void HelpHandler::GetLocalizedValues(content::WebUIDataSource* source) {
#endif
{ "aboutProductDescription", IDS_ABOUT_PRODUCT_DESCRIPTION },
{ "relaunch", IDS_RELAUNCH_BUTTON },
+ { "relaunch", IDS_RELAUNCH_BUTTON },
+ { "relaunchAndPowerwash", IDS_RELAUNCH_AND_POWERWASH_BUTTON },
{ "productName", IDS_PRODUCT_NAME },
{ "productCopyright", IDS_ABOUT_VERSION_COPYRIGHT },
{ "updateCheckStarted", IDS_UPGRADE_CHECK_STARTED },
@@ -164,6 +174,32 @@ void HelpHandler::GetLocalizedValues(content::WebUIDataSource* source) {
{ "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 },
+ { "channelChangePageDelayedChangeMessage",
+ IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_DELAYED_CHANGE_MESSAGE },
+ { "channelChangePageUnstableTitle",
+ IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_UNSTABLE_TITLE },
+ { "channelChangePageUnstableMessage",
+ IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_UNSTABLE_MESSAGE },
+ { "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_ABOUT_VERSION_USER_AGENT },
{ "commandLine", IDS_ABOUT_VERSION_COMMAND_LINE },
@@ -237,8 +273,8 @@ void HelpHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback("openHelpPage",
base::Bind(&HelpHandler::OpenHelpPage, base::Unretained(this)));
#if defined(OS_CHROMEOS)
- web_ui()->RegisterMessageCallback("setReleaseTrack",
- base::Bind(&HelpHandler::SetReleaseTrack, base::Unretained(this)));
+ web_ui()->RegisterMessageCallback("setChannel",
+ base::Bind(&HelpHandler::SetChannel, base::Unretained(this)));
#endif
#if defined(OS_MACOSX)
web_ui()->RegisterMessageCallback("promoteUpdater",
@@ -278,7 +314,7 @@ void HelpHandler::OnPageLoaded(const ListValue* args) {
web_ui()->CallJavascriptFunction(
"help.HelpPage.updateEnableReleaseChannel",
- base::FundamentalValue(CanChangeReleaseChannel()));
+ base::FundamentalValue(CanChangeChannel()));
if (g_build_date_string == NULL) {
// If |g_build_date_string| is |NULL|, the date has not yet been assigned.
@@ -302,8 +338,13 @@ void HelpHandler::OnPageLoaded(const ListValue* args) {
);
#if defined(OS_CHROMEOS)
- version_updater_->GetReleaseChannel(
- base::Bind(&HelpHandler::OnReleaseChannel, base::Unretained(this)));
+ web_ui()->CallJavascriptFunction(
+ "help.HelpPage.updateIsEnterpriseManaged",
+ base::FundamentalValue(IsEnterpriseManaged()));
+ version_updater_->GetChannel(true,
Nikita (slow) 2013/06/21 12:58:04 nit: Please add comments for true/false value (1st
ygorshenin1 2013/06/21 17:24:58 Done.
+ base::Bind(&HelpHandler::OnCurrentChannel, weak_factory_.GetWeakPtr()));
+ version_updater_->GetChannel(false,
+ base::Bind(&HelpHandler::OnTargetChannel, weak_factory_.GetWeakPtr()));
#endif
}
@@ -334,21 +375,24 @@ void HelpHandler::OpenHelpPage(const base::ListValue* args) {
#if defined(OS_CHROMEOS)
-void HelpHandler::SetReleaseTrack(const ListValue* args) {
- if (!CanChangeReleaseChannel()) {
+void HelpHandler::SetChannel(const ListValue* args) {
+ DCHECK(args->GetSize() == 2);
+
+ if (!CanChangeChannel()) {
LOG(WARNING) << "Non-owner tried to change release track.";
return;
}
- const std::string channel = UTF16ToUTF8(ExtractStringValue(args));
- version_updater_->SetReleaseChannel(channel);
- // On enterprise machines we can only use SetReleaseChannel to store the
- // user choice in the lsb-release file but we can not modify the policy blob.
- // Therefore we only call SetString if the device is locally owned and the
- // currently logged in user is the owner.
+ base::string16 channel;
+ bool is_powerwash_allowed;
+ if (!args->GetString(0, &channel) ||
+ !args->GetBoolean(1, &is_powerwash_allowed)) {
+ LOG(ERROR) << "Can't parse SetReleaseTrack() args";
+ return;
+ }
+
+ version_updater_->SetChannel(UTF16ToUTF8(channel), is_powerwash_allowed);
if (chromeos::UserManager::Get()->IsCurrentUserOwner()) {
- chromeos::CrosSettings::Get()->SetString(chromeos::kReleaseChannel,
- channel);
// Check for update after switching release channel.
version_updater_->CheckForUpdate(base::Bind(&HelpHandler::SetUpdateStatus,
base::Unretained(this)));
@@ -447,9 +491,14 @@ void HelpHandler::OnOSFirmware(const std::string& firmware) {
base::StringValue(firmware));
}
-void HelpHandler::OnReleaseChannel(const std::string& channel) {
+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.updateSelectedChannel", base::StringValue(channel));
+ "help.HelpPage.updateTargetChannel", base::StringValue(channel));
}
void HelpHandler::ProcessLsbFileInfo(

Powered by Google App Engine
This is Rietveld 408576698