Chromium Code Reviews| Index: chrome/browser/policy/browser_policy_connector.cc |
| diff --git a/chrome/browser/policy/browser_policy_connector.cc b/chrome/browser/policy/browser_policy_connector.cc |
| index 1d39ea67cb1922b5fe66a8eb7d56353d7798c73f..e0359add4e4dd3b3a784b3e5b5ded85c59ddb37b 100644 |
| --- a/chrome/browser/policy/browser_policy_connector.cc |
| +++ b/chrome/browser/policy/browser_policy_connector.cc |
| @@ -46,10 +46,13 @@ |
| #endif |
| #if defined(OS_CHROMEOS) |
| +#include "base/utf_string_conversions.h" |
| #include "chrome/browser/chromeos/cros/cros_library.h" |
| -#include "chrome/browser/chromeos/login/authenticator.h" |
| #include "chrome/browser/chromeos/login/user_manager.h" |
| +#include "chrome/browser/chromeos/settings/cros_settings.h" |
| +#include "chrome/browser/chromeos/settings/cros_settings_provider.h" |
| #include "chrome/browser/chromeos/system/statistics_provider.h" |
| +#include "chrome/browser/chromeos/system/timezone_settings.h" |
| #include "chrome/browser/policy/app_pack_updater.h" |
| #include "chrome/browser/policy/cros_user_policy_cache.h" |
| #include "chrome/browser/policy/device_policy_cache.h" |
| @@ -146,13 +149,14 @@ void BrowserPolicyConnector::Init() { |
| InitializeDevicePolicy(); |
| - // Create the AppPackUpdater to start updating the cache. It requires the |
| - // system request context, which isn't available yet; therefore it is |
| - // created only once the loops are running. |
| - MessageLoop::current()->PostTask( |
| - FROM_HERE, |
| - base::Bind(base::IgnoreResult(&BrowserPolicyConnector::GetAppPackUpdater), |
| - weak_ptr_factory_.GetWeakPtr())); |
| + // Skip the final initialization if this is a unit test. |
| + if (MessageLoop::current()) { |
|
Joao da Silva
2012/08/09 13:39:47
Don't add this test, just run the inner stuff dire
pneubeck (no reviews)
2012/08/09 13:45:34
Done.
|
| + // Complete the initialization once the message loops are spinning. |
| + MessageLoop::current()->PostTask( |
| + FROM_HERE, |
| + base::Bind(&BrowserPolicyConnector::CompleteInitialization, |
| + weak_ptr_factory_.GetWeakPtr())); |
| + } |
| #endif |
| } |
| @@ -538,12 +542,6 @@ void BrowserPolicyConnector::InitializeDevicePolicy() { |
| device_data_store_.get(), |
| device_policy_cache, |
| GetDeviceManagementUrl())); |
| - |
| - // Initialize the subsystem once the message loops are spinning. |
| - MessageLoop::current()->PostTask( |
| - FROM_HERE, |
| - base::Bind(&BrowserPolicyConnector::CompleteInitialization, |
| - weak_ptr_factory_.GetWeakPtr())); |
| } |
| } |
| #endif |
| @@ -551,6 +549,12 @@ void BrowserPolicyConnector::InitializeDevicePolicy() { |
| void BrowserPolicyConnector::CompleteInitialization() { |
| #if defined(OS_CHROMEOS) |
| + |
| + // Create the AppPackUpdater to start updating the cache. It requires the |
| + // system request context, which isn't available in Init(); therefore it is |
| + // created only once the loops are running. |
| + GetAppPackUpdater(); |
| + |
| if (device_cloud_policy_subsystem_.get()) { |
| // Read serial number and machine model. This must be done before we call |
| // CompleteInitialization() below such that the serial number is available |
| @@ -583,6 +587,28 @@ void BrowserPolicyConnector::CompleteInitialization() { |
| g_browser_process->local_state(), |
| chromeos::system::StatisticsProvider::GetInstance(), |
| NULL)); |
| + |
| + SetTimezoneIfPolicyAvailable(); |
| +#endif |
| +} |
| + |
| +void BrowserPolicyConnector::SetTimezoneIfPolicyAvailable() { |
| +#if defined(OS_CHROMEOS) |
| + typedef chromeos::CrosSettingsProvider Provider; |
| + Provider::TrustedStatus result = |
| + chromeos::CrosSettings::Get()->PrepareTrustedValues( |
| + base::Bind(&BrowserPolicyConnector::SetTimezoneIfPolicyAvailable, |
| + weak_ptr_factory_.GetWeakPtr())); |
| + |
| + if (result != Provider::TRUSTED) |
| + return; |
| + |
| + std::string timezone; |
| + if (chromeos::CrosSettings::Get()->GetString( |
| + chromeos::kSystemTimezonePolicy, &timezone)) { |
| + chromeos::system::TimezoneSettings::GetInstance()->SetTimezoneFromID( |
| + UTF8ToUTF16(timezone)); |
| + } |
| #endif |
| } |