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

Side by Side 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, 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/help/help_handler.h" 5 #include "chrome/browser/ui/webui/help/help_handler.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/bind_helpers.h" 11 #include "base/bind_helpers.h"
12 #include "base/command_line.h" 12 #include "base/command_line.h"
13 #include "base/strings/string16.h" 13 #include "base/strings/string16.h"
14 #include "base/strings/utf_string_conversions.h" 14 #include "base/strings/utf_string_conversions.h"
15 #include "base/values.h" 15 #include "base/values.h"
16 #include "chrome/browser/browser_process.h" 16 #include "chrome/browser/browser_process.h"
17 #include "chrome/browser/google/google_util.h" 17 #include "chrome/browser/google/google_util.h"
18 #include "chrome/browser/policy/browser_policy_connector.h" 18 #include "chrome/browser/policy/browser_policy_connector.h"
19 #include "chrome/browser/ui/browser.h" 19 #include "chrome/browser/ui/browser.h"
20 #include "chrome/browser/ui/browser_commands.h" 20 #include "chrome/browser/ui/browser_commands.h"
21 #include "chrome/browser/ui/browser_finder.h" 21 #include "chrome/browser/ui/browser_finder.h"
22 #include "chrome/browser/ui/chrome_pages.h" 22 #include "chrome/browser/ui/chrome_pages.h"
23 #include "chrome/browser/ui/send_feedback_experiment.h" 23 #include "chrome/browser/ui/send_feedback_experiment.h"
24 #include "chrome/common/chrome_notification_types.h" 24 #include "chrome/common/chrome_notification_types.h"
25 #include "chrome/common/chrome_version_info.h" 25 #include "chrome/common/chrome_version_info.h"
26 #include "chrome/common/pref_names.h"
26 #include "chrome/common/url_constants.h" 27 #include "chrome/common/url_constants.h"
27 #include "content/public/browser/browser_thread.h" 28 #include "content/public/browser/browser_thread.h"
28 #include "content/public/browser/notification_service.h" 29 #include "content/public/browser/notification_service.h"
29 #include "content/public/browser/web_ui.h" 30 #include "content/public/browser/web_ui.h"
30 #include "content/public/browser/web_ui_data_source.h" 31 #include "content/public/browser/web_ui_data_source.h"
31 #include "content/public/common/content_client.h" 32 #include "content/public/common/content_client.h"
32 #include "grit/chromium_strings.h" 33 #include "grit/chromium_strings.h"
33 #include "grit/generated_resources.h" 34 #include "grit/generated_resources.h"
34 #include "grit/google_chrome_strings.h" 35 #include "grit/google_chrome_strings.h"
35 #include "ui/base/l10n/l10n_util.h" 36 #include "ui/base/l10n/l10n_util.h"
36 #include "ui/base/resource/resource_bundle.h" 37 #include "ui/base/resource/resource_bundle.h"
37 #include "v8/include/v8.h" 38 #include "v8/include/v8.h"
38 #include "webkit/common/user_agent/user_agent_util.h" 39 #include "webkit/common/user_agent/user_agent_util.h"
39 40
40 #if defined(OS_CHROMEOS) 41 #if defined(OS_CHROMEOS)
41 #include "base/files/file_util_proxy.h" 42 #include "base/files/file_util_proxy.h"
42 #include "base/i18n/time_formatting.h" 43 #include "base/i18n/time_formatting.h"
43 #include "base/prefs/pref_service.h" 44 #include "base/prefs/pref_service.h"
44 #include "base/sys_info.h" 45 #include "base/sys_info.h"
45 #include "chrome/browser/chromeos/login/user_manager.h" 46 #include "chrome/browser/chromeos/login/user_manager.h"
46 #include "chrome/browser/chromeos/settings/cros_settings.h" 47 #include "chrome/browser/chromeos/settings/cros_settings.h"
47 #include "chrome/browser/profiles/profile.h" 48 #include "chrome/browser/profiles/profile.h"
48 #include "chrome/browser/ui/webui/help/help_utils_chromeos.h" 49 #include "chrome/browser/ui/webui/help/help_utils_chromeos.h"
50 #include "chromeos/chromeos_switches.h"
51 #include "chromeos/dbus/dbus_thread_manager.h"
52 #include "chromeos/dbus/power_manager_client.h"
49 #include "content/public/browser/browser_thread.h" 53 #include "content/public/browser/browser_thread.h"
50 #endif 54 #endif
51 55
52 using base::ListValue; 56 using base::ListValue;
53 using content::BrowserThread; 57 using content::BrowserThread;
54 58
55 namespace { 59 namespace {
56 60
57 const char kResourceReportIssue[] = "reportAnIssue"; 61 const char kResourceReportIssue[] = "reportAnIssue";
58 62
(...skipping 23 matching lines...) Expand all
82 // connect to a network of one of the allowed types. 86 // connect to a network of one of the allowed types.
83 string16 GetAllowedConnectionTypesMessage() { 87 string16 GetAllowedConnectionTypesMessage() {
84 if (help_utils_chromeos::IsUpdateOverCellularAllowed()) { 88 if (help_utils_chromeos::IsUpdateOverCellularAllowed()) {
85 return l10n_util::GetStringUTF16(IDS_UPGRADE_NETWORK_LIST_CELLULAR_ALLOWED); 89 return l10n_util::GetStringUTF16(IDS_UPGRADE_NETWORK_LIST_CELLULAR_ALLOWED);
86 } else { 90 } else {
87 return l10n_util::GetStringUTF16( 91 return l10n_util::GetStringUTF16(
88 IDS_UPGRADE_NETWORK_LIST_CELLULAR_DISALLOWED); 92 IDS_UPGRADE_NETWORK_LIST_CELLULAR_DISALLOWED);
89 } 93 }
90 } 94 }
91 95
92 bool CanChangeReleaseChannel() { 96 // Returns true if the device is enterprise managed, false otherwise.
93 // On non managed machines we have local owner who is the only one to change 97 bool IsEnterpriseManaged() {
94 // anything. 98 return g_browser_process->browser_policy_connector()->IsEnterpriseManaged();
95 if (chromeos::UserManager::Get()->IsCurrentUserOwner()) 99 }
96 return true; 100
101 // Returns true if current user can change channel, false otherwise.
102 bool CanChangeChannel() {
103 bool value = false;
104 chromeos::CrosSettings::Get()->GetBoolean(chromeos::kReleaseChannelDelegated,
105 &value);
106
97 // On a managed machine we delegate this setting to the users of the same 107 // On a managed machine we delegate this setting to the users of the same
98 // domain only if the policy value is "domain". 108 // domain only if the policy value is "domain".
99 if (g_browser_process->browser_policy_connector()->IsEnterpriseManaged()) { 109 if (IsEnterpriseManaged()) {
100 bool value = false; 110 if (!value)
101 if (!chromeos::CrosSettings::Get()->GetBoolean(
102 chromeos::kReleaseChannelDelegated, &value) || !value)
103 return false; 111 return false;
104 // Get the currently logged in user and strip the domain part only. 112 // Get the currently logged in user and strip the domain part only.
105 std::string domain = ""; 113 std::string domain = "";
106 std::string user = chromeos::UserManager::Get()->GetLoggedInUser()->email(); 114 std::string user = chromeos::UserManager::Get()->GetLoggedInUser()->email();
107 size_t at_pos = user.find('@'); 115 size_t at_pos = user.find('@');
108 if (at_pos != std::string::npos && at_pos + 1 < user.length()) 116 if (at_pos != std::string::npos && at_pos + 1 < user.length())
109 domain = user.substr(user.find('@') + 1); 117 domain = user.substr(user.find('@') + 1);
110 return domain == g_browser_process->browser_policy_connector()-> 118 return domain == g_browser_process->browser_policy_connector()->
111 GetEnterpriseDomain(); 119 GetEnterpriseDomain();
120 } else if (chromeos::UserManager::Get()->IsCurrentUserOwner()) {
121 // On non managed machines we have local owner who is the only one to change
122 // anything. Ensure that ReleaseChannelDelegated is false.
123 return !value;
112 } 124 }
113 return false; 125 return false;
114 } 126 }
115 127
116 // Pointer to a |StringValue| holding the date of the build date to Chromium 128 // Pointer to a |StringValue| holding the date of the build date to Chromium
117 // OS. Because this value is obtained by reading a file, it is cached here to 129 // OS. Because this value is obtained by reading a file, it is cached here to
118 // prevent the need to read from the file system multiple times unnecessarily. 130 // prevent the need to read from the file system multiple times unnecessarily.
119 Value* g_build_date_string = NULL; 131 Value* g_build_date_string = NULL;
120 132
121 #endif // defined(OS_CHROMEOS) 133 #endif // defined(OS_CHROMEOS)
(...skipping 17 matching lines...) Expand all
139 static L10nResources resources[] = { 151 static L10nResources resources[] = {
140 { "helpTitle", IDS_HELP_TITLE }, 152 { "helpTitle", IDS_HELP_TITLE },
141 { "aboutTitle", IDS_ABOUT_TAB_TITLE }, 153 { "aboutTitle", IDS_ABOUT_TAB_TITLE },
142 #if defined(OS_CHROMEOS) 154 #if defined(OS_CHROMEOS)
143 { "aboutProductTitle", IDS_PRODUCT_OS_NAME }, 155 { "aboutProductTitle", IDS_PRODUCT_OS_NAME },
144 #else 156 #else
145 { "aboutProductTitle", IDS_PRODUCT_NAME }, 157 { "aboutProductTitle", IDS_PRODUCT_NAME },
146 #endif 158 #endif
147 { "aboutProductDescription", IDS_ABOUT_PRODUCT_DESCRIPTION }, 159 { "aboutProductDescription", IDS_ABOUT_PRODUCT_DESCRIPTION },
148 { "relaunch", IDS_RELAUNCH_BUTTON }, 160 { "relaunch", IDS_RELAUNCH_BUTTON },
161 { "relaunch", IDS_RELAUNCH_BUTTON },
162 #if defined(OS_CHROMEOS)
163 { "relaunchAndPowerwash", IDS_RELAUNCH_AND_POWERWASH_BUTTON },
164 #endif
149 { "productName", IDS_PRODUCT_NAME }, 165 { "productName", IDS_PRODUCT_NAME },
150 { "productCopyright", IDS_ABOUT_VERSION_COPYRIGHT }, 166 { "productCopyright", IDS_ABOUT_VERSION_COPYRIGHT },
151 { "updateCheckStarted", IDS_UPGRADE_CHECK_STARTED }, 167 { "updateCheckStarted", IDS_UPGRADE_CHECK_STARTED },
152 { "upToDate", IDS_UPGRADE_UP_TO_DATE }, 168 { "upToDate", IDS_UPGRADE_UP_TO_DATE },
153 { "updating", IDS_UPGRADE_UPDATING }, 169 { "updating", IDS_UPGRADE_UPDATING },
170 { "updatingChannelSwitch", IDS_UPGRADE_UPDATING_CHANNEL_SWITCH },
154 { "updateAlmostDone", IDS_UPGRADE_SUCCESSFUL_RELAUNCH }, 171 { "updateAlmostDone", IDS_UPGRADE_SUCCESSFUL_RELAUNCH },
172 #if defined(OS_CHROMEOS)
173 { "successfulChannelSwitch", IDS_UPGRADE_SUCCESSFUL_CHANNEL_SWITCH },
174 #endif
155 { "getHelpWithChrome", IDS_GET_HELP_USING_CHROME }, 175 { "getHelpWithChrome", IDS_GET_HELP_USING_CHROME },
156 { kResourceReportIssue, IDS_REPORT_AN_ISSUE }, 176 { kResourceReportIssue, IDS_REPORT_AN_ISSUE },
157 #if defined(OS_CHROMEOS) 177 #if defined(OS_CHROMEOS)
158 { "platform", IDS_PLATFORM_LABEL }, 178 { "platform", IDS_PLATFORM_LABEL },
159 { "firmware", IDS_ABOUT_PAGE_FIRMWARE }, 179 { "firmware", IDS_ABOUT_PAGE_FIRMWARE },
160 { "showMoreInfo", IDS_SHOW_MORE_INFO }, 180 { "showMoreInfo", IDS_SHOW_MORE_INFO },
161 { "hideMoreInfo", IDS_HIDE_MORE_INFO }, 181 { "hideMoreInfo", IDS_HIDE_MORE_INFO },
162 { "channel", IDS_ABOUT_PAGE_CHANNEL }, 182 { "channel", IDS_ABOUT_PAGE_CHANNEL },
163 { "stable", IDS_ABOUT_PAGE_CHANNEL_STABLE }, 183 { "stable", IDS_ABOUT_PAGE_CHANNEL_STABLE },
164 { "beta", IDS_ABOUT_PAGE_CHANNEL_BETA }, 184 { "beta", IDS_ABOUT_PAGE_CHANNEL_BETA },
165 { "dev", IDS_ABOUT_PAGE_CHANNEL_DEVELOPMENT }, 185 { "dev", IDS_ABOUT_PAGE_CHANNEL_DEVELOPMENT },
166 { "channel-changed", IDS_ABOUT_PAGE_CHANNEL_CHANGED }, 186 { "channel-changed", IDS_ABOUT_PAGE_CHANNEL_CHANGED },
187 { "currentChannelStable", IDS_ABOUT_PAGE_CURRENT_CHANNEL_STABLE },
188 { "currentChannelBeta", IDS_ABOUT_PAGE_CURRENT_CHANNEL_BETA },
189 { "currentChannelDev", IDS_ABOUT_PAGE_CURRENT_CHANNEL_DEV },
190 { "currentChannel", IDS_ABOUT_PAGE_CURRENT_CHANNEL },
191 { "channelChangeButton", IDS_ABOUT_PAGE_CHANNEL_CHANGE_BUTTON },
192 { "channelChangeDisallowedMessage",
193 IDS_ABOUT_PAGE_CHANNEL_CHANGE_DISALLOWED_MESSAGE },
194 { "channelChangePageTitle", IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_TITLE },
195 { "channelChangePagePowerwashTitle",
196 IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_POWERWASH_TITLE },
197 { "channelChangePagePowerwashMessage",
198 IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_POWERWASH_MESSAGE },
199 { "channelChangePageDelayedChangeTitle",
200 IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_DELAYED_CHANGE_TITLE },
201 { "channelChangePageUnstableTitle",
202 IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_UNSTABLE_TITLE },
203 { "channelChangePagePowerwashButton",
204 IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_POWERWASH_BUTTON },
205 { "channelChangePageChangeButton",
206 IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_CHANGE_BUTTON },
207 { "channelChangePageCancelButton",
208 IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_CANCEL_BUTTON },
167 { "webkit", IDS_WEBKIT }, 209 { "webkit", IDS_WEBKIT },
168 { "userAgent", IDS_ABOUT_VERSION_USER_AGENT }, 210 { "userAgent", IDS_ABOUT_VERSION_USER_AGENT },
169 { "commandLine", IDS_ABOUT_VERSION_COMMAND_LINE }, 211 { "commandLine", IDS_ABOUT_VERSION_COMMAND_LINE },
170 { "buildDate", IDS_ABOUT_VERSION_BUILD_DATE }, 212 { "buildDate", IDS_ABOUT_VERSION_BUILD_DATE },
171 #endif 213 #endif
172 #if defined(OS_MACOSX) 214 #if defined(OS_MACOSX)
173 { "promote", IDS_ABOUT_CHROME_PROMOTE_UPDATER }, 215 { "promote", IDS_ABOUT_CHROME_PROMOTE_UPDATER },
174 { "learnMore", IDS_LEARN_MORE }, 216 { "learnMore", IDS_LEARN_MORE },
175 #endif 217 #endif
176 }; 218 };
(...skipping 22 matching lines...) Expand all
199 IDS_ABOUT_VERSION_LICENSE, 241 IDS_ABOUT_VERSION_LICENSE,
200 ASCIIToUTF16(chrome::kChromiumProjectURL), 242 ASCIIToUTF16(chrome::kChromiumProjectURL),
201 ASCIIToUTF16(chrome::kChromeUICreditsURL)); 243 ASCIIToUTF16(chrome::kChromeUICreditsURL));
202 source->AddString("productLicense", license); 244 source->AddString("productLicense", license);
203 245
204 #if defined(OS_CHROMEOS) 246 #if defined(OS_CHROMEOS)
205 string16 os_license = l10n_util::GetStringFUTF16( 247 string16 os_license = l10n_util::GetStringFUTF16(
206 IDS_ABOUT_CROS_VERSION_LICENSE, 248 IDS_ABOUT_CROS_VERSION_LICENSE,
207 ASCIIToUTF16(chrome::kChromeUIOSCreditsURL)); 249 ASCIIToUTF16(chrome::kChromeUIOSCreditsURL));
208 source->AddString("productOsLicense", os_license); 250 source->AddString("productOsLicense", os_license);
251
252 string16 product_name = l10n_util::GetStringUTF16(IDS_PRODUCT_OS_NAME);
253 source->AddString(
254 "channelChangePageDelayedChangeMessage",
255 l10n_util::GetStringFUTF16(
256 IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_DELAYED_CHANGE_MESSAGE,
257 product_name));
258 source->AddString(
259 "channelChangePageUnstableMessage",
260 l10n_util::GetStringFUTF16(
261 IDS_ABOUT_PAGE_CHANNEL_CHANGE_PAGE_UNSTABLE_MESSAGE,
262 product_name));
263
264 if (CommandLine::ForCurrentProcess()->
265 HasSwitch(chromeos::switches::kDisableNewChannelSwitcherUI)) {
266 source->AddBoolean("disableNewChannelSwitcherUI", true);
267 }
209 #endif 268 #endif
210 269
211 string16 tos = l10n_util::GetStringFUTF16( 270 string16 tos = l10n_util::GetStringFUTF16(
212 IDS_ABOUT_TERMS_OF_SERVICE, UTF8ToUTF16(chrome::kChromeUITermsURL)); 271 IDS_ABOUT_TERMS_OF_SERVICE, UTF8ToUTF16(chrome::kChromeUITermsURL));
213 source->AddString("productTOS", tos); 272 source->AddString("productTOS", tos);
214 273
215 source->AddString("webkitVersion", webkit_glue::GetWebKitVersion()); 274 source->AddString("webkitVersion", webkit_glue::GetWebKitVersion());
216 275
217 source->AddString("jsEngine", "V8"); 276 source->AddString("jsEngine", "V8");
218 source->AddString("jsEngineVersion", v8::V8::GetVersion()); 277 source->AddString("jsEngineVersion", v8::V8::GetVersion());
(...skipping 11 matching lines...) Expand all
230 289
231 web_ui()->RegisterMessageCallback("onPageLoaded", 290 web_ui()->RegisterMessageCallback("onPageLoaded",
232 base::Bind(&HelpHandler::OnPageLoaded, base::Unretained(this))); 291 base::Bind(&HelpHandler::OnPageLoaded, base::Unretained(this)));
233 web_ui()->RegisterMessageCallback("relaunchNow", 292 web_ui()->RegisterMessageCallback("relaunchNow",
234 base::Bind(&HelpHandler::RelaunchNow, base::Unretained(this))); 293 base::Bind(&HelpHandler::RelaunchNow, base::Unretained(this)));
235 web_ui()->RegisterMessageCallback("openFeedbackDialog", 294 web_ui()->RegisterMessageCallback("openFeedbackDialog",
236 base::Bind(&HelpHandler::OpenFeedbackDialog, base::Unretained(this))); 295 base::Bind(&HelpHandler::OpenFeedbackDialog, base::Unretained(this)));
237 web_ui()->RegisterMessageCallback("openHelpPage", 296 web_ui()->RegisterMessageCallback("openHelpPage",
238 base::Bind(&HelpHandler::OpenHelpPage, base::Unretained(this))); 297 base::Bind(&HelpHandler::OpenHelpPage, base::Unretained(this)));
239 #if defined(OS_CHROMEOS) 298 #if defined(OS_CHROMEOS)
240 web_ui()->RegisterMessageCallback("setReleaseTrack", 299 web_ui()->RegisterMessageCallback("setChannel",
241 base::Bind(&HelpHandler::SetReleaseTrack, base::Unretained(this))); 300 base::Bind(&HelpHandler::SetChannel, base::Unretained(this)));
301 web_ui()->RegisterMessageCallback("relaunchAndPowerwash",
302 base::Bind(&HelpHandler::RelaunchAndPowerwash, base::Unretained(this)));
242 #endif 303 #endif
243 #if defined(OS_MACOSX) 304 #if defined(OS_MACOSX)
244 web_ui()->RegisterMessageCallback("promoteUpdater", 305 web_ui()->RegisterMessageCallback("promoteUpdater",
245 base::Bind(&HelpHandler::PromoteUpdater, base::Unretained(this))); 306 base::Bind(&HelpHandler::PromoteUpdater, base::Unretained(this)));
246 #endif 307 #endif
247 } 308 }
248 309
249 void HelpHandler::Observe(int type, const content::NotificationSource& source, 310 void HelpHandler::Observe(int type, const content::NotificationSource& source,
250 const content::NotificationDetails& details) { 311 const content::NotificationDetails& details) {
251 switch (type) { 312 switch (type) {
(...skipping 19 matching lines...) Expand all
271 loader_.GetVersion( 332 loader_.GetVersion(
272 chromeos::VersionLoader::VERSION_FULL, 333 chromeos::VersionLoader::VERSION_FULL,
273 base::Bind(&HelpHandler::OnOSVersion, base::Unretained(this)), 334 base::Bind(&HelpHandler::OnOSVersion, base::Unretained(this)),
274 &tracker_); 335 &tracker_);
275 loader_.GetFirmware( 336 loader_.GetFirmware(
276 base::Bind(&HelpHandler::OnOSFirmware, base::Unretained(this)), 337 base::Bind(&HelpHandler::OnOSFirmware, base::Unretained(this)),
277 &tracker_); 338 &tracker_);
278 339
279 web_ui()->CallJavascriptFunction( 340 web_ui()->CallJavascriptFunction(
280 "help.HelpPage.updateEnableReleaseChannel", 341 "help.HelpPage.updateEnableReleaseChannel",
281 base::FundamentalValue(CanChangeReleaseChannel())); 342 base::FundamentalValue(CanChangeChannel()));
282 343
283 if (g_build_date_string == NULL) { 344 if (g_build_date_string == NULL) {
284 // If |g_build_date_string| is |NULL|, the date has not yet been assigned. 345 // If |g_build_date_string| is |NULL|, the date has not yet been assigned.
285 // Get the date of the last lsb-release file modification. 346 // Get the date of the last lsb-release file modification.
286 base::FileUtilProxy::GetFileInfo( 347 base::FileUtilProxy::GetFileInfo(
287 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE), 348 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE),
288 base::SysInfo::GetLsbReleaseFilePath(), 349 base::SysInfo::GetLsbReleaseFilePath(),
289 base::Bind(&HelpHandler::ProcessLsbFileInfo, 350 base::Bind(&HelpHandler::ProcessLsbFileInfo,
290 weak_factory_.GetWeakPtr())); 351 weak_factory_.GetWeakPtr()));
291 } else { 352 } else {
292 web_ui()->CallJavascriptFunction("help.HelpPage.setBuildDate", 353 web_ui()->CallJavascriptFunction("help.HelpPage.setBuildDate",
293 *g_build_date_string); 354 *g_build_date_string);
294 } 355 }
295 #endif // defined(OS_CHROMEOS) 356 #endif // defined(OS_CHROMEOS)
296 357
297 version_updater_->CheckForUpdate( 358 version_updater_->CheckForUpdate(
298 base::Bind(&HelpHandler::SetUpdateStatus, base::Unretained(this)) 359 base::Bind(&HelpHandler::SetUpdateStatus, base::Unretained(this))
299 #if defined(OS_MACOSX) 360 #if defined(OS_MACOSX)
300 , base::Bind(&HelpHandler::SetPromotionState, base::Unretained(this)) 361 , base::Bind(&HelpHandler::SetPromotionState, base::Unretained(this))
301 #endif 362 #endif
302 ); 363 );
303 364
304 #if defined(OS_CHROMEOS) 365 #if defined(OS_CHROMEOS)
305 version_updater_->GetReleaseChannel( 366 web_ui()->CallJavascriptFunction(
306 base::Bind(&HelpHandler::OnReleaseChannel, base::Unretained(this))); 367 "help.HelpPage.updateIsEnterpriseManaged",
368 base::FundamentalValue(IsEnterpriseManaged()));
369 // First argument to GetChannel() is a flag that indicates whether
370 // current channel should be returned (if true) or target channel
371 // (otherwise).
372 version_updater_->GetChannel(true,
373 base::Bind(&HelpHandler::OnCurrentChannel, weak_factory_.GetWeakPtr()));
374 version_updater_->GetChannel(false,
375 base::Bind(&HelpHandler::OnTargetChannel, weak_factory_.GetWeakPtr()));
307 #endif 376 #endif
308 } 377 }
309 378
310 #if defined(OS_MACOSX) 379 #if defined(OS_MACOSX)
311 void HelpHandler::PromoteUpdater(const ListValue* args) { 380 void HelpHandler::PromoteUpdater(const ListValue* args) {
312 version_updater_->PromoteUpdater(); 381 version_updater_->PromoteUpdater();
313 } 382 }
314 #endif 383 #endif
315 384
316 void HelpHandler::RelaunchNow(const ListValue* args) { 385 void HelpHandler::RelaunchNow(const ListValue* args) {
(...skipping 10 matching lines...) Expand all
327 396
328 void HelpHandler::OpenHelpPage(const base::ListValue* args) { 397 void HelpHandler::OpenHelpPage(const base::ListValue* args) {
329 DCHECK(args->empty()); 398 DCHECK(args->empty());
330 Browser* browser = chrome::FindBrowserWithWebContents( 399 Browser* browser = chrome::FindBrowserWithWebContents(
331 web_ui()->GetWebContents()); 400 web_ui()->GetWebContents());
332 chrome::ShowHelp(browser, chrome::HELP_SOURCE_WEBUI); 401 chrome::ShowHelp(browser, chrome::HELP_SOURCE_WEBUI);
333 } 402 }
334 403
335 #if defined(OS_CHROMEOS) 404 #if defined(OS_CHROMEOS)
336 405
337 void HelpHandler::SetReleaseTrack(const ListValue* args) { 406 void HelpHandler::SetChannel(const ListValue* args) {
338 if (!CanChangeReleaseChannel()) { 407 DCHECK(args->GetSize() == 2);
408
409 if (!CanChangeChannel()) {
339 LOG(WARNING) << "Non-owner tried to change release track."; 410 LOG(WARNING) << "Non-owner tried to change release track.";
340 return; 411 return;
341 } 412 }
342 413
343 const std::string channel = UTF16ToUTF8(ExtractStringValue(args)); 414 base::string16 channel;
344 version_updater_->SetReleaseChannel(channel); 415 bool is_powerwash_allowed;
345 // On enterprise machines we can only use SetReleaseChannel to store the 416 if (!args->GetString(0, &channel) ||
346 // user choice in the lsb-release file but we can not modify the policy blob. 417 !args->GetBoolean(1, &is_powerwash_allowed)) {
347 // Therefore we only call SetString if the device is locally owned and the 418 LOG(ERROR) << "Can't parse SetReleaseTrack() args";
348 // currently logged in user is the owner. 419 return;
420 }
421
422 version_updater_->SetChannel(UTF16ToUTF8(channel), is_powerwash_allowed);
349 if (chromeos::UserManager::Get()->IsCurrentUserOwner()) { 423 if (chromeos::UserManager::Get()->IsCurrentUserOwner()) {
350 chromeos::CrosSettings::Get()->SetString(chromeos::kReleaseChannel,
351 channel);
352 // Check for update after switching release channel. 424 // Check for update after switching release channel.
353 version_updater_->CheckForUpdate(base::Bind(&HelpHandler::SetUpdateStatus, 425 version_updater_->CheckForUpdate(base::Bind(&HelpHandler::SetUpdateStatus,
354 base::Unretained(this))); 426 base::Unretained(this)));
355 } 427 }
356 } 428 }
357 429
430 void HelpHandler::RelaunchAndPowerwash(const ListValue* args) {
431 DCHECK(args->empty());
432
433 if (IsEnterpriseManaged())
434 return;
435
436 PrefService* prefs = g_browser_process->local_state();
437 prefs->SetBoolean(prefs::kFactoryResetRequested, true);
438 prefs->CommitPendingWrite();
439
440 // Perform sign out. Current chrome process will then terminate, new one will
441 // be launched (as if it was a restart).
442 chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart();
443 }
444
358 #endif // defined(OS_CHROMEOS) 445 #endif // defined(OS_CHROMEOS)
359 446
360 void HelpHandler::SetUpdateStatus(VersionUpdater::Status status, 447 void HelpHandler::SetUpdateStatus(VersionUpdater::Status status,
361 int progress, const string16& message) { 448 int progress, const string16& message) {
362 // Only UPDATING state should have progress set. 449 // Only UPDATING state should have progress set.
363 DCHECK(status == VersionUpdater::UPDATING || progress == 0); 450 DCHECK(status == VersionUpdater::UPDATING || progress == 0);
364 451
365 std::string status_str; 452 std::string status_str;
366 switch (status) { 453 switch (status) {
367 case VersionUpdater::CHECKING: 454 case VersionUpdater::CHECKING:
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 void HelpHandler::OnOSVersion(const std::string& version) { 527 void HelpHandler::OnOSVersion(const std::string& version) {
441 web_ui()->CallJavascriptFunction("help.HelpPage.setOSVersion", 528 web_ui()->CallJavascriptFunction("help.HelpPage.setOSVersion",
442 base::StringValue(version)); 529 base::StringValue(version));
443 } 530 }
444 531
445 void HelpHandler::OnOSFirmware(const std::string& firmware) { 532 void HelpHandler::OnOSFirmware(const std::string& firmware) {
446 web_ui()->CallJavascriptFunction("help.HelpPage.setOSFirmware", 533 web_ui()->CallJavascriptFunction("help.HelpPage.setOSFirmware",
447 base::StringValue(firmware)); 534 base::StringValue(firmware));
448 } 535 }
449 536
450 void HelpHandler::OnReleaseChannel(const std::string& channel) { 537 void HelpHandler::OnCurrentChannel(const std::string& channel) {
451 web_ui()->CallJavascriptFunction( 538 web_ui()->CallJavascriptFunction(
452 "help.HelpPage.updateSelectedChannel", base::StringValue(channel)); 539 "help.HelpPage.updateCurrentChannel", base::StringValue(channel));
540 }
541
542 void HelpHandler::OnTargetChannel(const std::string& channel) {
543 web_ui()->CallJavascriptFunction(
544 "help.HelpPage.updateTargetChannel", base::StringValue(channel));
453 } 545 }
454 546
455 void HelpHandler::ProcessLsbFileInfo( 547 void HelpHandler::ProcessLsbFileInfo(
456 base::PlatformFileError error, const base::PlatformFileInfo& file_info) { 548 base::PlatformFileError error, const base::PlatformFileInfo& file_info) {
457 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 549 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
458 550
459 // If |g_build_date_string| is not |NULL|, then the file's information has 551 // If |g_build_date_string| is not |NULL|, then the file's information has
460 // already been retrieved by another tab. 552 // already been retrieved by another tab.
461 if (g_build_date_string == NULL) { 553 if (g_build_date_string == NULL) {
462 base::Time time; 554 base::Time time;
(...skipping 10 matching lines...) Expand all
473 565
474 // Note that this string will be internationalized. 566 // Note that this string will be internationalized.
475 string16 build_date = base::TimeFormatFriendlyDate(time); 567 string16 build_date = base::TimeFormatFriendlyDate(time);
476 g_build_date_string = Value::CreateStringValue(build_date); 568 g_build_date_string = Value::CreateStringValue(build_date);
477 } 569 }
478 570
479 web_ui()->CallJavascriptFunction("help.HelpPage.setBuildDate", 571 web_ui()->CallJavascriptFunction("help.HelpPage.setBuildDate",
480 *g_build_date_string); 572 *g_build_date_string);
481 } 573 }
482 #endif // defined(OS_CHROMEOS) 574 #endif // defined(OS_CHROMEOS)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698