Chromium Code Reviews| Index: chrome/browser/policy/profile_policy_context.cc |
| diff --git a/chrome/browser/policy/profile_policy_context.cc b/chrome/browser/policy/profile_policy_context.cc |
| index c2215295c47701692a1865dda193742f90e3378f..7adffd3e8c562d46b44e42967003df0bc8ebee5c 100644 |
| --- a/chrome/browser/policy/profile_policy_context.cc |
| +++ b/chrome/browser/policy/profile_policy_context.cc |
| @@ -7,8 +7,20 @@ |
| #include "chrome/browser/policy/device_management_policy_provider.h" |
| #include "chrome/browser/policy/device_management_service.h" |
| #include "chrome/browser/policy/profile_policy_context.h" |
| +#include "chrome/browser/prefs/pref_service.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/common/chrome_switches.h" |
| +#include "chrome/common/notification_details.h" |
| +#include "chrome/common/notification_source.h" |
| +#include "chrome/common/pref_names.h" |
| + |
| +namespace { |
| + |
| +// Refresh rate sanity interval bounds. |
| +const int64 kPolicyRefreshRateMinMs = 30 * 60 * 1000; // 30 minutes |
| +const int64 kPolicyRefreshRateMaxMs = 24 * 60 * 60 * 1000; // 1 day |
| + |
| +} |
| namespace policy { |
| @@ -34,6 +46,10 @@ ProfilePolicyContext::~ProfilePolicyContext() { |
| void ProfilePolicyContext::Initialize() { |
| if (device_management_service_.get()) |
| device_management_service_->Initialize(profile_->GetRequestContext()); |
| + |
| + policy_refresh_rate_.Init(prefs::kPolicyRefreshRate, profile_->GetPrefs(), |
| + this); |
| + UpdatePolicyRefreshRate(); |
| } |
| void ProfilePolicyContext::Shutdown() { |
| @@ -46,4 +62,32 @@ ProfilePolicyContext::GetDeviceManagementPolicyProvider() { |
| return device_management_policy_provider_.get(); |
| } |
| +// static |
| +void ProfilePolicyContext::RegisterUserPrefs(PrefService* user_prefs) { |
| + user_prefs->RegisterIntegerPref(prefs::kPolicyRefreshRate, |
| + kDefaultPolicyRefreshRateInMilliseconds); |
| +} |
| + |
| +void ProfilePolicyContext::UpdatePolicyRefreshRate() { |
| + if (device_management_policy_provider_.get()) { |
| + // Clamp to sane values. |
| + int64 refresh_rate = policy_refresh_rate_.GetValue(); |
| + refresh_rate = std::max(kPolicyRefreshRateMinMs, refresh_rate); |
| + refresh_rate = std::min(kPolicyRefreshRateMaxMs, refresh_rate); |
| + device_management_policy_provider_->SetRefreshRate(refresh_rate); |
| + } |
| +} |
| + |
| +void ProfilePolicyContext::Observe(NotificationType type, |
| + const NotificationSource& source, |
| + const NotificationDetails& details) { |
| + if (type == NotificationType::PREF_CHANGED && |
|
danno
2011/01/06 19:16:26
How do you know that this notification will get pr
Mattias Nissler (ping if slow)
2011/01/07 11:15:33
No, PrefMember doesn't register the observer with
|
| + prefs::kPolicyRefreshRate == *(Details<std::string>(details).ptr()) && |
| + profile_->GetPrefs() == Source<PrefService>(source).ptr()) { |
| + UpdatePolicyRefreshRate(); |
| + } else { |
| + NOTREACHED(); |
| + } |
| +} |
| + |
| } // namespace policy |