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 1ea7be579287df2186a5961791ae489e4eb9e8bc..9532bc4390c0e4e994d1e910f9f5b211bdca132b 100644 |
--- a/chrome/browser/ui/webui/help/version_updater_chromeos.cc |
+++ b/chrome/browser/ui/webui/help/version_updater_chromeos.cc |
@@ -8,11 +8,13 @@ |
#include "base/bind.h" |
#include "base/bind_helpers.h" |
+#include "chrome/browser/browser_process.h" |
#include "chrome/browser/chromeos/login/startup_utils.h" |
#include "chrome/browser/chromeos/login/user_manager.h" |
#include "chrome/browser/chromeos/login/wizard_controller.h" |
#include "chrome/browser/chromeos/settings/cros_settings.h" |
#include "chrome/browser/chromeos/settings/cros_settings_names.h" |
+#include "chrome/browser/policy/browser_policy_connector.h" |
#include "chrome/browser/ui/webui/help/help_utils_chromeos.h" |
#include "chromeos/dbus/dbus_thread_manager.h" |
#include "chromeos/dbus/power_manager_client.h" |
@@ -125,25 +127,28 @@ void VersionUpdaterCros::RelaunchBrowser() const { |
DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart(); |
} |
-void VersionUpdaterCros::SetReleaseChannel(const std::string& channel) { |
- DBusThreadManager::Get()->GetUpdateEngineClient()->SetReleaseTrack(channel); |
- // For local owner set the field in the policy blob too. |
- if (UserManager::Get()->IsCurrentUserOwner()) |
+void VersionUpdaterCros::SetChannel(const std::string& channel, |
+ bool is_powerwash_allowed) { |
+ // On enterprise machines we can only use SetChannel to store the |
+ // user choice in the lsb-release file but we can not modify the |
+ // policy blob. Therefore we only call SetString if the device is |
+ // locally owned and the currently logged in user is the owner. |
+ if (g_browser_process->browser_policy_connector()->IsEnterpriseManaged()) { |
+ DBusThreadManager::Get()->GetUpdateEngineClient()-> |
+ SetChannel(channel, is_powerwash_allowed); |
+ } else if (UserManager::Get()->IsCurrentUserOwner()) { |
+ // For local owner set the field in the policy blob. |
CrosSettings::Get()->SetString(chromeos::kReleaseChannel, channel); |
+ } |
} |
-void VersionUpdaterCros::GetReleaseChannel(const ChannelCallback& cb) { |
- channel_callback_ = cb; |
- |
- // TODO(jhawkins): Store on this object. |
+void VersionUpdaterCros::GetChannel(bool get_current_channel, |
+ const ChannelCallback& cb) { |
UpdateEngineClient* update_engine_client = |
DBusThreadManager::Get()->GetUpdateEngineClient(); |
- // Request the channel information. Use the observer to track the help page |
- // handler and ensure it does not get deleted before the callback. |
- update_engine_client->GetReleaseTrack( |
- base::Bind(&VersionUpdaterCros::UpdateSelectedChannel, |
- weak_ptr_factory_.GetWeakPtr())); |
+ // Request the channel information. |
+ update_engine_client->GetChannel(get_current_channel, cb); |
} |
VersionUpdaterCros::VersionUpdaterCros() |
@@ -215,7 +220,3 @@ void VersionUpdaterCros::OnUpdateCheck( |
if (result == UpdateEngineClient::UPDATE_RESULT_NOTIMPLEMENTED) |
callback_.Run(UPDATED, 0, string16()); |
} |
- |
-void VersionUpdaterCros::UpdateSelectedChannel(const std::string& channel) { |
- channel_callback_.Run(channel); |
-} |