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

Side by Side Diff: chrome/browser/ui/webui/settings/about_handler.cc

Issue 2873193002: Make update over cellular an option for user (Closed)
Patch Set: Make update over cellular an option for user Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/settings/about_handler.h" 5 #include "chrome/browser/ui/webui/settings/about_handler.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <string> 9 #include <string>
10 10
11 #include "ash/system/devicetype_utils.h" 11 #include "ash/system/devicetype_utils.h"
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/bind_helpers.h" 13 #include "base/bind_helpers.h"
14 #include "base/command_line.h" 14 #include "base/command_line.h"
15 #include "base/files/file_path.h" 15 #include "base/files/file_path.h"
16 #include "base/files/file_util.h" 16 #include "base/files/file_util.h"
17 #include "base/i18n/message_formatter.h" 17 #include "base/i18n/message_formatter.h"
18 #include "base/location.h" 18 #include "base/location.h"
19 #include "base/macros.h" 19 #include "base/macros.h"
20 #include "base/memory/ptr_util.h" 20 #include "base/memory/ptr_util.h"
21 #include "base/strings/string16.h" 21 #include "base/strings/string16.h"
22 #include "base/strings/string_number_conversions.h"
22 #include "base/strings/string_util.h" 23 #include "base/strings/string_util.h"
23 #include "base/strings/utf_string_conversions.h" 24 #include "base/strings/utf_string_conversions.h"
24 #include "base/task_scheduler/post_task.h" 25 #include "base/task_scheduler/post_task.h"
25 #include "base/time/time.h" 26 #include "base/time/time.h"
26 #include "base/values.h" 27 #include "base/values.h"
27 #include "build/build_config.h" 28 #include "build/build_config.h"
28 #include "chrome/browser/browser_process.h" 29 #include "chrome/browser/browser_process.h"
29 #include "chrome/browser/chrome_notification_types.h" 30 #include "chrome/browser/chrome_notification_types.h"
30 #include "chrome/browser/obsolete_system/obsolete_system.h" 31 #include "chrome/browser/obsolete_system/obsolete_system.h"
31 #include "chrome/browser/ui/browser.h" 32 #include "chrome/browser/ui/browser.h"
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 case VersionUpdater::FAILED_OFFLINE: 233 case VersionUpdater::FAILED_OFFLINE:
233 case VersionUpdater::FAILED_CONNECTION_TYPE_DISALLOWED: 234 case VersionUpdater::FAILED_CONNECTION_TYPE_DISALLOWED:
234 status_str = "failed"; 235 status_str = "failed";
235 break; 236 break;
236 case VersionUpdater::DISABLED: 237 case VersionUpdater::DISABLED:
237 status_str = "disabled"; 238 status_str = "disabled";
238 break; 239 break;
239 case VersionUpdater::DISABLED_BY_ADMIN: 240 case VersionUpdater::DISABLED_BY_ADMIN:
240 status_str = "disabled_by_admin"; 241 status_str = "disabled_by_admin";
241 break; 242 break;
243 case VersionUpdater::NEED_PERMISSION_TO_UPDATE:
244 status_str = "need_permission_to_update";
245 break;
242 } 246 }
243 247
244 return status_str; 248 return status_str;
245 } 249 }
246 250
247 } // namespace 251 } // namespace
248 252
249 namespace settings { 253 namespace settings {
250 254
251 AboutHandler::AboutHandler() : weak_factory_(this) {} 255 AboutHandler::AboutHandler() : weak_factory_(this) {}
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 IDS_ABOUT_TERMS_OF_SERVICE, base::UTF8ToUTF16(chrome::kChromeUITermsURL)); 299 IDS_ABOUT_TERMS_OF_SERVICE, base::UTF8ToUTF16(chrome::kChromeUITermsURL));
296 html_source->AddString("aboutProductTos", tos); 300 html_source->AddString("aboutProductTos", tos);
297 #endif 301 #endif
298 302
299 #if defined(OS_CHROMEOS) 303 #if defined(OS_CHROMEOS)
300 base::string16 os_license = l10n_util::GetStringFUTF16( 304 base::string16 os_license = l10n_util::GetStringFUTF16(
301 IDS_ABOUT_CROS_VERSION_LICENSE, 305 IDS_ABOUT_CROS_VERSION_LICENSE,
302 base::ASCIIToUTF16(chrome::kChromeUIOSCreditsURL)); 306 base::ASCIIToUTF16(chrome::kChromeUIOSCreditsURL));
303 html_source->AddString("aboutProductOsLicense", os_license); 307 html_source->AddString("aboutProductOsLicense", os_license);
304 html_source->AddBoolean("aboutEnterpriseManaged", IsEnterpriseManaged()); 308 html_source->AddBoolean("aboutEnterpriseManaged", IsEnterpriseManaged());
305
xiyuan 2017/05/11 20:37:25 nit: please restore
weidongg 2017/05/11 23:50:45 Done.
306 base::Time build_time = base::SysInfo::GetLsbReleaseTime(); 309 base::Time build_time = base::SysInfo::GetLsbReleaseTime();
307 base::string16 build_date = base::TimeFormatFriendlyDate(build_time); 310 base::string16 build_date = base::TimeFormatFriendlyDate(build_time);
308 html_source->AddString("aboutBuildDate", build_date); 311 html_source->AddString("aboutBuildDate", build_date);
309 312
310 base::CommandLine::StringType command_line = 313 base::CommandLine::StringType command_line =
311 base::CommandLine::ForCurrentProcess()->GetCommandLineString(); 314 base::CommandLine::ForCurrentProcess()->GetCommandLineString();
312 html_source->AddString("aboutCommandLine", command_line); 315 html_source->AddString("aboutCommandLine", command_line);
313 316
314 html_source->AddString("aboutUserAgent", GetUserAgent()); 317 html_source->AddString("aboutUserAgent", GetUserAgent());
315 html_source->AddString("aboutJsEngineVersion", V8_VERSION_STRING); 318 html_source->AddString("aboutJsEngineVersion", V8_VERSION_STRING);
(...skipping 17 matching lines...) Expand all
333 web_ui()->RegisterMessageCallback( 336 web_ui()->RegisterMessageCallback(
334 "openHelpPage", 337 "openHelpPage",
335 base::Bind(&AboutHandler::HandleOpenHelpPage, base::Unretained(this))); 338 base::Bind(&AboutHandler::HandleOpenHelpPage, base::Unretained(this)));
336 #if defined(OS_CHROMEOS) 339 #if defined(OS_CHROMEOS)
337 web_ui()->RegisterMessageCallback( 340 web_ui()->RegisterMessageCallback(
338 "setChannel", 341 "setChannel",
339 base::Bind(&AboutHandler::HandleSetChannel, base::Unretained(this))); 342 base::Bind(&AboutHandler::HandleSetChannel, base::Unretained(this)));
340 web_ui()->RegisterMessageCallback( 343 web_ui()->RegisterMessageCallback(
341 "requestUpdate", 344 "requestUpdate",
342 base::Bind(&AboutHandler::HandleRequestUpdate, base::Unretained(this))); 345 base::Bind(&AboutHandler::HandleRequestUpdate, base::Unretained(this)));
343 346 web_ui()->RegisterMessageCallback(
347 "requestUpdateOverCellular",
348 base::Bind(&AboutHandler::HandleRequestUpdateOverCellular,
349 base::Unretained(this)));
344 web_ui()->RegisterMessageCallback( 350 web_ui()->RegisterMessageCallback(
345 "getVersionInfo", 351 "getVersionInfo",
346 base::Bind(&AboutHandler::HandleGetVersionInfo, base::Unretained(this))); 352 base::Bind(&AboutHandler::HandleGetVersionInfo, base::Unretained(this)));
347 web_ui()->RegisterMessageCallback( 353 web_ui()->RegisterMessageCallback(
348 "getRegulatoryInfo", base::Bind(&AboutHandler::HandleGetRegulatoryInfo, 354 "getRegulatoryInfo", base::Bind(&AboutHandler::HandleGetRegulatoryInfo,
349 base::Unretained(this))); 355 base::Unretained(this)));
350 web_ui()->RegisterMessageCallback( 356 web_ui()->RegisterMessageCallback(
351 "getChannelInfo", base::Bind(&AboutHandler::HandleGetChannelInfo, 357 "getChannelInfo", base::Bind(&AboutHandler::HandleGetChannelInfo,
352 base::Unretained(this))); 358 base::Unretained(this)));
353 #endif 359 #endif
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 channel_info->SetBoolean("canChangeChannel", 543 channel_info->SetBoolean("canChangeChannel",
538 CanChangeChannel(Profile::FromWebUI(web_ui()))); 544 CanChangeChannel(Profile::FromWebUI(web_ui())));
539 545
540 ResolveJavascriptCallback(base::Value(callback_id), *channel_info); 546 ResolveJavascriptCallback(base::Value(callback_id), *channel_info);
541 } 547 }
542 548
543 void AboutHandler::HandleRequestUpdate(const base::ListValue* args) { 549 void AboutHandler::HandleRequestUpdate(const base::ListValue* args) {
544 RequestUpdate(); 550 RequestUpdate();
545 } 551 }
546 552
553 void AboutHandler::HandleRequestUpdateOverCellular(
554 const base::ListValue* args) {
555 CHECK_EQ(2U, args->GetSize());
556
557 std::string target_version;
558 std::string target_size_string;
559 int64_t target_size;
560
561 CHECK(args->GetString(0, &target_version));
562 CHECK(args->GetString(1, &target_size_string));
563 CHECK(base::StringToInt64(target_size_string, &target_size));
564
565 RequestUpdateOverCellular(target_version, target_size);
566 }
567
547 #endif // defined(OS_CHROMEOS) 568 #endif // defined(OS_CHROMEOS)
548 569
549 void AboutHandler::RequestUpdate() { 570 void AboutHandler::RequestUpdate() {
550 version_updater_->CheckForUpdate( 571 version_updater_->CheckForUpdate(
551 base::Bind(&AboutHandler::SetUpdateStatus, base::Unretained(this)), 572 base::Bind(&AboutHandler::SetUpdateStatus, base::Unretained(this)),
552 #if defined(OS_MACOSX) 573 #if defined(OS_MACOSX)
553 base::Bind(&AboutHandler::SetPromotionState, base::Unretained(this))); 574 base::Bind(&AboutHandler::SetPromotionState, base::Unretained(this)));
554 #else 575 #else
555 VersionUpdater::PromoteCallback()); 576 VersionUpdater::PromoteCallback());
556 #endif // OS_MACOSX 577 #endif // OS_MACOSX
557 } 578 }
558 579
580 void AboutHandler::RequestUpdateOverCellular(std::string& target_version,
581 int64_t target_size) {
582 version_updater_->SetUpdateOverCellularTarget(
583 base::Bind(&AboutHandler::SetUpdateStatus, base::Unretained(this)),
xiyuan 2017/05/11 20:37:25 Use weak_factory_.GetWeakPtr() instead of base::Un
stevenjb 2017/05/11 21:03:45 Technically we don't need a weak_ptr here (and don
weidongg 2017/05/11 23:50:45 Should I leave it unchanged?
584 target_version, target_size);
585 }
586
559 void AboutHandler::SetUpdateStatus(VersionUpdater::Status status, 587 void AboutHandler::SetUpdateStatus(VersionUpdater::Status status,
560 int progress, 588 int progress,
589 const std::string& version,
590 const int64_t size,
561 const base::string16& message) { 591 const base::string16& message) {
562 // Only UPDATING state should have progress set. 592 // Only UPDATING state should have progress set.
563 DCHECK(status == VersionUpdater::UPDATING || progress == 0); 593 DCHECK(status == VersionUpdater::UPDATING || progress == 0);
564 594
565 std::unique_ptr<base::DictionaryValue> event(new base::DictionaryValue); 595 std::unique_ptr<base::DictionaryValue> event(new base::DictionaryValue);
566 event->SetString("status", UpdateStatusToString(status)); 596 event->SetString("status", UpdateStatusToString(status));
567 event->SetString("message", message); 597 event->SetString("message", message);
568 event->SetInteger("progress", progress); 598 event->SetInteger("progress", progress);
569 599 event->SetString("version", version);
600 // DictionaryValue does not support int64_t, so convert to string.
601 event->SetString("size", base::Int64ToString(size));
570 #if defined(OS_CHROMEOS) 602 #if defined(OS_CHROMEOS)
571 if (status == VersionUpdater::FAILED_OFFLINE || 603 if (status == VersionUpdater::FAILED_OFFLINE ||
572 status == VersionUpdater::FAILED_CONNECTION_TYPE_DISALLOWED) { 604 status == VersionUpdater::FAILED_CONNECTION_TYPE_DISALLOWED) {
573 base::string16 types_msg = GetAllowedConnectionTypesMessage(); 605 base::string16 types_msg = GetAllowedConnectionTypesMessage();
574 if (!types_msg.empty()) 606 if (!types_msg.empty())
575 event->SetString("connectionTypes", types_msg); 607 event->SetString("connectionTypes", types_msg);
576 else 608 else
577 event->Set("connectionTypes", base::MakeUnique<base::Value>()); 609 event->Set("connectionTypes", base::MakeUnique<base::Value>());
578 } else { 610 } else {
579 event->Set("connectionTypes", base::MakeUnique<base::Value>()); 611 event->Set("connectionTypes", base::MakeUnique<base::Value>());
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 label_dir_path.AppendASCII(kRegulatoryLabelImageFilename).MaybeAsASCII(); 674 label_dir_path.AppendASCII(kRegulatoryLabelImageFilename).MaybeAsASCII();
643 std::string url = 675 std::string url =
644 std::string("chrome://") + chrome::kChromeOSAssetHost + "/" + image_path; 676 std::string("chrome://") + chrome::kChromeOSAssetHost + "/" + image_path;
645 regulatory_info->SetString("url", url); 677 regulatory_info->SetString("url", url);
646 678
647 ResolveJavascriptCallback(base::Value(callback_id), *regulatory_info); 679 ResolveJavascriptCallback(base::Value(callback_id), *regulatory_info);
648 } 680 }
649 #endif // defined(OS_CHROMEOS) 681 #endif // defined(OS_CHROMEOS)
650 682
651 } // namespace settings 683 } // namespace settings
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698