| OLD | NEW |
| 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/version_updater_chromeos.h" | 5 #include "chrome/browser/ui/webui/help/version_updater_chromeos.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| 11 #include "chrome/browser/browser_process.h" |
| 11 #include "chrome/browser/chromeos/login/startup_utils.h" | 12 #include "chrome/browser/chromeos/login/startup_utils.h" |
| 12 #include "chrome/browser/chromeos/login/user_manager.h" | 13 #include "chrome/browser/chromeos/login/user_manager.h" |
| 13 #include "chrome/browser/chromeos/login/wizard_controller.h" | 14 #include "chrome/browser/chromeos/login/wizard_controller.h" |
| 14 #include "chrome/browser/chromeos/settings/cros_settings.h" | 15 #include "chrome/browser/chromeos/settings/cros_settings.h" |
| 15 #include "chrome/browser/chromeos/settings/cros_settings_names.h" | 16 #include "chrome/browser/chromeos/settings/cros_settings_names.h" |
| 17 #include "chrome/browser/policy/browser_policy_connector.h" |
| 16 #include "chrome/browser/ui/webui/help/help_utils_chromeos.h" | 18 #include "chrome/browser/ui/webui/help/help_utils_chromeos.h" |
| 17 #include "chromeos/dbus/dbus_thread_manager.h" | 19 #include "chromeos/dbus/dbus_thread_manager.h" |
| 18 #include "chromeos/dbus/power_manager_client.h" | 20 #include "chromeos/dbus/power_manager_client.h" |
| 19 #include "chromeos/network/network_handler.h" | 21 #include "chromeos/network/network_handler.h" |
| 20 #include "chromeos/network/network_state.h" | 22 #include "chromeos/network/network_state.h" |
| 21 #include "chromeos/network/network_state_handler.h" | 23 #include "chromeos/network/network_state_handler.h" |
| 22 #include "grit/chromium_strings.h" | 24 #include "grit/chromium_strings.h" |
| 23 #include "grit/generated_resources.h" | 25 #include "grit/generated_resources.h" |
| 24 #include "third_party/cros_system_api/dbus/service_constants.h" | 26 #include "third_party/cros_system_api/dbus/service_constants.h" |
| 25 #include "ui/base/l10n/l10n_util.h" | 27 #include "ui/base/l10n/l10n_util.h" |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 update_engine_client->RequestUpdateCheck( | 120 update_engine_client->RequestUpdateCheck( |
| 119 base::Bind(&VersionUpdaterCros::OnUpdateCheck, | 121 base::Bind(&VersionUpdaterCros::OnUpdateCheck, |
| 120 weak_ptr_factory_.GetWeakPtr())); | 122 weak_ptr_factory_.GetWeakPtr())); |
| 121 } | 123 } |
| 122 } | 124 } |
| 123 | 125 |
| 124 void VersionUpdaterCros::RelaunchBrowser() const { | 126 void VersionUpdaterCros::RelaunchBrowser() const { |
| 125 DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart(); | 127 DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart(); |
| 126 } | 128 } |
| 127 | 129 |
| 128 void VersionUpdaterCros::SetReleaseChannel(const std::string& channel) { | 130 void VersionUpdaterCros::SetChannel(const std::string& channel, |
| 129 DBusThreadManager::Get()->GetUpdateEngineClient()->SetReleaseTrack(channel); | 131 bool is_powerwash_allowed) { |
| 130 // For local owner set the field in the policy blob too. | 132 // On enterprise machines we can only use SetChannel to store the |
| 131 if (UserManager::Get()->IsCurrentUserOwner()) | 133 // user choice in the lsb-release file but we can not modify the |
| 134 // policy blob. Therefore we only call SetString if the device is |
| 135 // locally owned and the currently logged in user is the owner. |
| 136 if (g_browser_process->browser_policy_connector()->IsEnterpriseManaged()) { |
| 137 DBusThreadManager::Get()->GetUpdateEngineClient()-> |
| 138 SetChannel(channel, is_powerwash_allowed); |
| 139 } else if (UserManager::Get()->IsCurrentUserOwner()) { |
| 140 // For local owner set the field in the policy blob. |
| 132 CrosSettings::Get()->SetString(chromeos::kReleaseChannel, channel); | 141 CrosSettings::Get()->SetString(chromeos::kReleaseChannel, channel); |
| 142 } |
| 133 } | 143 } |
| 134 | 144 |
| 135 void VersionUpdaterCros::GetReleaseChannel(const ChannelCallback& cb) { | 145 void VersionUpdaterCros::GetChannel(bool get_current_channel, |
| 136 channel_callback_ = cb; | 146 const ChannelCallback& cb) { |
| 137 | |
| 138 // TODO(jhawkins): Store on this object. | |
| 139 UpdateEngineClient* update_engine_client = | 147 UpdateEngineClient* update_engine_client = |
| 140 DBusThreadManager::Get()->GetUpdateEngineClient(); | 148 DBusThreadManager::Get()->GetUpdateEngineClient(); |
| 141 | 149 |
| 142 // Request the channel information. Use the observer to track the help page | 150 // Request the channel information. |
| 143 // handler and ensure it does not get deleted before the callback. | 151 update_engine_client->GetChannel(get_current_channel, cb); |
| 144 update_engine_client->GetReleaseTrack( | |
| 145 base::Bind(&VersionUpdaterCros::UpdateSelectedChannel, | |
| 146 weak_ptr_factory_.GetWeakPtr())); | |
| 147 } | 152 } |
| 148 | 153 |
| 149 VersionUpdaterCros::VersionUpdaterCros() | 154 VersionUpdaterCros::VersionUpdaterCros() |
| 150 : last_operation_(UpdateEngineClient::UPDATE_STATUS_IDLE), | 155 : last_operation_(UpdateEngineClient::UPDATE_STATUS_IDLE), |
| 151 weak_ptr_factory_(this) { | 156 weak_ptr_factory_(this) { |
| 152 } | 157 } |
| 153 | 158 |
| 154 VersionUpdaterCros::~VersionUpdaterCros() { | 159 VersionUpdaterCros::~VersionUpdaterCros() { |
| 155 UpdateEngineClient* update_engine_client = | 160 UpdateEngineClient* update_engine_client = |
| 156 DBusThreadManager::Get()->GetUpdateEngineClient(); | 161 DBusThreadManager::Get()->GetUpdateEngineClient(); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 208 last_operation_ = status.status; | 213 last_operation_ = status.status; |
| 209 } | 214 } |
| 210 | 215 |
| 211 void VersionUpdaterCros::OnUpdateCheck( | 216 void VersionUpdaterCros::OnUpdateCheck( |
| 212 UpdateEngineClient::UpdateCheckResult result) { | 217 UpdateEngineClient::UpdateCheckResult result) { |
| 213 // If version updating is not implemented, this binary is the most up-to-date | 218 // If version updating is not implemented, this binary is the most up-to-date |
| 214 // possible with respect to automatic updating. | 219 // possible with respect to automatic updating. |
| 215 if (result == UpdateEngineClient::UPDATE_RESULT_NOTIMPLEMENTED) | 220 if (result == UpdateEngineClient::UPDATE_RESULT_NOTIMPLEMENTED) |
| 216 callback_.Run(UPDATED, 0, string16()); | 221 callback_.Run(UPDATED, 0, string16()); |
| 217 } | 222 } |
| 218 | |
| 219 void VersionUpdaterCros::UpdateSelectedChannel(const std::string& channel) { | |
| 220 channel_callback_.Run(channel); | |
| 221 } | |
| OLD | NEW |