| Index: chrome/browser/ui/webui/help/version_updater_chromeos.cc
|
| diff --git a/chrome/browser/ui/webui/help/version_updater_chromeos.cc b/chrome/browser/ui/webui/help/version_updater_chromeos.cc
|
| index f0d8179d6ae38294c85ba1c0b9c1d114eb14f32d..db91ef5170a9db255f1782a27b78564c506f3a6f 100644
|
| --- a/chrome/browser/ui/webui/help/version_updater_chromeos.cc
|
| +++ b/chrome/browser/ui/webui/help/version_updater_chromeos.cc
|
| @@ -72,39 +72,6 @@ bool IsAutoUpdateDisabled() {
|
| return update_disabled;
|
| }
|
|
|
| -// Returns whether an update is allowed. If not, it calls the callback with
|
| -// the appropriate status.
|
| -bool EnsureCanUpdate(const VersionUpdater::StatusCallback& callback) {
|
| - if (IsAutoUpdateDisabled()) {
|
| - callback.Run(VersionUpdater::FAILED, 0,
|
| - l10n_util::GetStringUTF16(IDS_UPGRADE_DISABLED_BY_POLICY));
|
| - return false;
|
| - }
|
| -
|
| - chromeos::NetworkStateHandler* network_state_handler =
|
| - chromeos::NetworkHandler::Get()->network_state_handler();
|
| - const chromeos::NetworkState* network =
|
| - network_state_handler->DefaultNetwork();
|
| -
|
| - // Don't allow an update if we're currently offline or connected
|
| - // to a network for which updates are disallowed.
|
| - NetworkStatus status = GetNetworkStatus(network);
|
| - if (status == NETWORK_STATUS_OFFLINE) {
|
| - callback.Run(VersionUpdater::FAILED_OFFLINE, 0,
|
| - l10n_util::GetStringUTF16(IDS_UPGRADE_OFFLINE));
|
| - return false;
|
| - } else if (status == NETWORK_STATUS_DISALLOWED) {
|
| - base::string16 message =
|
| - l10n_util::GetStringFUTF16(
|
| - IDS_UPGRADE_DISALLOWED,
|
| - help_utils_chromeos::GetConnectionTypeAsUTF16(network->type()));
|
| - callback.Run(VersionUpdater::FAILED_CONNECTION_TYPE_DISALLOWED, 0, message);
|
| - return false;
|
| - }
|
| -
|
| - return true;
|
| -}
|
| -
|
| } // namespace
|
|
|
| VersionUpdater* VersionUpdater::Create() {
|
| @@ -136,12 +103,18 @@ void VersionUpdaterCros::CheckForUpdate(const StatusCallback& callback) {
|
| if (!update_engine_client->HasObserver(this))
|
| update_engine_client->AddObserver(this);
|
|
|
| + if (update_engine_client->GetLastStatus().status !=
|
| + UpdateEngineClient::UPDATE_STATUS_IDLE) {
|
| + check_for_update_when_idle_ = true;
|
| + return;
|
| + }
|
| + check_for_update_when_idle_ = false;
|
| +
|
| // Make sure that libcros is loaded and OOBE is complete.
|
| - if (!WizardController::default_controller() ||
|
| + if (can_update_for_testing_ || !WizardController::default_controller() ||
|
| chromeos::StartupUtils::IsDeviceRegistered()) {
|
| - update_engine_client->RequestUpdateCheck(
|
| - base::Bind(&VersionUpdaterCros::OnUpdateCheck,
|
| - weak_ptr_factory_.GetWeakPtr()));
|
| + update_engine_client->RequestUpdateCheck(base::Bind(
|
| + &VersionUpdaterCros::OnUpdateCheck, weak_ptr_factory_.GetWeakPtr()));
|
| }
|
| }
|
|
|
| @@ -170,6 +143,7 @@ void VersionUpdaterCros::GetChannel(bool get_current_channel,
|
|
|
| VersionUpdaterCros::VersionUpdaterCros()
|
| : last_operation_(UpdateEngineClient::UPDATE_STATUS_IDLE),
|
| + check_for_update_when_idle_(false),
|
| weak_ptr_factory_(this) {
|
| }
|
|
|
| @@ -229,6 +203,11 @@ void VersionUpdaterCros::UpdateStatusChanged(
|
|
|
| callback_.Run(my_status, progress, message);
|
| last_operation_ = status.status;
|
| +
|
| + if (check_for_update_when_idle_ &&
|
| + status.status == UpdateEngineClient::UPDATE_STATUS_IDLE) {
|
| + CheckForUpdate(callback_);
|
| + }
|
| }
|
|
|
| void VersionUpdaterCros::OnUpdateCheck(
|
| @@ -238,3 +217,37 @@ void VersionUpdaterCros::OnUpdateCheck(
|
| if (result == UpdateEngineClient::UPDATE_RESULT_NOTIMPLEMENTED)
|
| callback_.Run(UPDATED, 0, base::string16());
|
| }
|
| +
|
| +bool VersionUpdaterCros::EnsureCanUpdate(const StatusCallback& callback) {
|
| + if (can_update_for_testing_)
|
| + return true;
|
| +
|
| + if (IsAutoUpdateDisabled()) {
|
| + callback.Run(VersionUpdater::FAILED, 0,
|
| + l10n_util::GetStringUTF16(IDS_UPGRADE_DISABLED_BY_POLICY));
|
| + return false;
|
| + }
|
| +
|
| + chromeos::NetworkStateHandler* network_state_handler =
|
| + chromeos::NetworkHandler::Get()->network_state_handler();
|
| + const chromeos::NetworkState* network =
|
| + network_state_handler->DefaultNetwork();
|
| +
|
| + // Don't allow an update if we're currently offline or connected
|
| + // to a network for which updates are disallowed.
|
| + NetworkStatus status = GetNetworkStatus(network);
|
| + if (status == NETWORK_STATUS_OFFLINE) {
|
| + callback.Run(VersionUpdater::FAILED_OFFLINE, 0,
|
| + l10n_util::GetStringUTF16(IDS_UPGRADE_OFFLINE));
|
| + return false;
|
| + } else if (status == NETWORK_STATUS_DISALLOWED) {
|
| + base::string16 message =
|
| + l10n_util::GetStringFUTF16(
|
| + IDS_UPGRADE_DISALLOWED,
|
| + help_utils_chromeos::GetConnectionTypeAsUTF16(network->type()));
|
| + callback.Run(VersionUpdater::FAILED_CONNECTION_TYPE_DISALLOWED, 0, message);
|
| + return false;
|
| + }
|
| +
|
| + return true;
|
| +}
|
|
|