| Index: chrome/browser/ui/webui/settings/about_handler.cc
|
| diff --git a/chrome/browser/ui/webui/settings/about_handler.cc b/chrome/browser/ui/webui/settings/about_handler.cc
|
| index a4ff8df6894a7f894dc57db5f104e6429c105fcd..7806a8a248964b69784ebde6110472e0361aee6e 100644
|
| --- a/chrome/browser/ui/webui/settings/about_handler.cc
|
| +++ b/chrome/browser/ui/webui/settings/about_handler.cc
|
| @@ -19,6 +19,7 @@
|
| #include "base/macros.h"
|
| #include "base/memory/ptr_util.h"
|
| #include "base/strings/string16.h"
|
| +#include "base/strings/string_number_conversions.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "base/task_scheduler/post_task.h"
|
| @@ -239,6 +240,9 @@ std::string UpdateStatusToString(VersionUpdater::Status status) {
|
| case VersionUpdater::DISABLED_BY_ADMIN:
|
| status_str = "disabled_by_admin";
|
| break;
|
| + case VersionUpdater::NEED_PERMISSION_TO_UPDATE:
|
| + status_str = "need_permission_to_update";
|
| + break;
|
| }
|
|
|
| return status_str;
|
| @@ -302,7 +306,6 @@ AboutHandler* AboutHandler::Create(content::WebUIDataSource* html_source,
|
| base::ASCIIToUTF16(chrome::kChromeUIOSCreditsURL));
|
| html_source->AddString("aboutProductOsLicense", os_license);
|
| html_source->AddBoolean("aboutEnterpriseManaged", IsEnterpriseManaged());
|
| -
|
| base::Time build_time = base::SysInfo::GetLsbReleaseTime();
|
| base::string16 build_date = base::TimeFormatFriendlyDate(build_time);
|
| html_source->AddString("aboutBuildDate", build_date);
|
| @@ -340,7 +343,10 @@ void AboutHandler::RegisterMessages() {
|
| web_ui()->RegisterMessageCallback(
|
| "requestUpdate",
|
| base::Bind(&AboutHandler::HandleRequestUpdate, base::Unretained(this)));
|
| -
|
| + web_ui()->RegisterMessageCallback(
|
| + "requestUpdateOverCellular",
|
| + base::Bind(&AboutHandler::HandleRequestUpdateOverCellular,
|
| + base::Unretained(this)));
|
| web_ui()->RegisterMessageCallback(
|
| "getVersionInfo",
|
| base::Bind(&AboutHandler::HandleGetVersionInfo, base::Unretained(this)));
|
| @@ -545,6 +551,21 @@ void AboutHandler::HandleRequestUpdate(const base::ListValue* args) {
|
| RequestUpdate();
|
| }
|
|
|
| +void AboutHandler::HandleRequestUpdateOverCellular(
|
| + const base::ListValue* args) {
|
| + CHECK_EQ(2U, args->GetSize());
|
| +
|
| + std::string target_version;
|
| + std::string target_size_string;
|
| + int64_t target_size;
|
| +
|
| + CHECK(args->GetString(0, &target_version));
|
| + CHECK(args->GetString(1, &target_size_string));
|
| + CHECK(base::StringToInt64(target_size_string, &target_size));
|
| +
|
| + RequestUpdateOverCellular(target_version, target_size);
|
| +}
|
| +
|
| #endif // defined(OS_CHROMEOS)
|
|
|
| void AboutHandler::RequestUpdate() {
|
| @@ -557,8 +578,17 @@ void AboutHandler::RequestUpdate() {
|
| #endif // OS_MACOSX
|
| }
|
|
|
| +void AboutHandler::RequestUpdateOverCellular(std::string& target_version,
|
| + int64_t target_size) {
|
| + version_updater_->SetUpdateOverCellularTarget(
|
| + base::Bind(&AboutHandler::SetUpdateStatus, base::Unretained(this)),
|
| + target_version, target_size);
|
| +}
|
| +
|
| void AboutHandler::SetUpdateStatus(VersionUpdater::Status status,
|
| int progress,
|
| + const std::string& version,
|
| + const int64_t size,
|
| const base::string16& message) {
|
| // Only UPDATING state should have progress set.
|
| DCHECK(status == VersionUpdater::UPDATING || progress == 0);
|
| @@ -567,7 +597,9 @@ void AboutHandler::SetUpdateStatus(VersionUpdater::Status status,
|
| event->SetString("status", UpdateStatusToString(status));
|
| event->SetString("message", message);
|
| event->SetInteger("progress", progress);
|
| -
|
| + event->SetString("version", version);
|
| + // DictionaryValue does not support int64_t, so convert to string.
|
| + event->SetString("size", base::Int64ToString(size));
|
| #if defined(OS_CHROMEOS)
|
| if (status == VersionUpdater::FAILED_OFFLINE ||
|
| status == VersionUpdater::FAILED_CONNECTION_TYPE_DISALLOWED) {
|
|
|