Chromium Code Reviews| Index: chrome/browser/policy/cloud/cloud_policy_manager.cc |
| diff --git a/chrome/browser/policy/cloud/cloud_policy_manager.cc b/chrome/browser/policy/cloud/cloud_policy_manager.cc |
| index 59fcc735805e8d8c7089a4d35663cc23ac49dbb8..662390dfd571059ddeff12401e1283e18182dccb 100644 |
| --- a/chrome/browser/policy/cloud/cloud_policy_manager.cc |
| +++ b/chrome/browser/policy/cloud/cloud_policy_manager.cc |
| @@ -6,11 +6,15 @@ |
| #include "base/bind.h" |
| #include "base/bind_helpers.h" |
| +#include "base/command_line.h" |
| #include "base/logging.h" |
| #include "base/prefs/pref_service.h" |
| +#include "chrome/browser/policy/cloud/cloud_policy_invalidator.h" |
| +#include "chrome/browser/policy/cloud/cloud_policy_refresh_scheduler.h" |
| #include "chrome/browser/policy/cloud/cloud_policy_service.h" |
| #include "chrome/browser/policy/policy_bundle.h" |
| #include "chrome/browser/policy/policy_map.h" |
| +#include "chrome/common/chrome_switches.h" |
| namespace policy { |
| @@ -31,6 +35,7 @@ CloudPolicyManager::CloudPolicyManager(const PolicyNamespaceKey& policy_ns_key, |
| CloudPolicyManager::~CloudPolicyManager() {} |
| void CloudPolicyManager::Shutdown() { |
| + invalidator_.reset(); |
| core_.Disconnect(); |
| store()->RemoveObserver(this); |
| ConfigurationPolicyProvider::Shutdown(); |
| @@ -66,6 +71,18 @@ void CloudPolicyManager::OnStoreError(CloudPolicyStore* cloud_policy_store) { |
| CheckAndPublishPolicy(); |
| } |
| +void CloudPolicyManager::InvalidatePolicy() { |
| + DCHECK(core()->refresh_scheduler()); |
| + core()->refresh_scheduler()->RefreshSoon(); |
| +} |
| + |
| +void CloudPolicyManager::OnInvalidatorStateChanged(bool invalidations_enabled) { |
| + DCHECK(core()->refresh_scheduler()); |
| + // Enable this code once method is added to CloudPolicyRefreshScheduler. |
| + // core()->refresh_scheduler()->SetInvalidationServiceAvailability( |
| + // invalidations_enabled); |
| +} |
| + |
| void CloudPolicyManager::CheckAndPublishPolicy() { |
| if (IsInitializationComplete(POLICY_DOMAIN_CHROME) && |
| !waiting_for_policy_refresh_) { |
| @@ -73,6 +90,31 @@ void CloudPolicyManager::CheckAndPublishPolicy() { |
| } |
| } |
| +void CloudPolicyManager::CreateInvalidator( |
| + invalidation::InvalidationService* service, |
| + bool ignore_switch) { |
| + DCHECK(core()->refresh_scheduler()); |
| +#if defined(OS_ANDROID) // Allow invalidations on Android regardless of switch. |
| + ignore_switch = true; |
| +#endif |
| + if (ignore_switch || CommandLine::ForCurrentProcess()->HasSwitch( |
| + switches::kEnableCloudPolicyPush)) { |
| + invalidator_.reset(new CloudPolicyInvalidator( |
| + service, |
| + client(), |
| + store(), |
| + base::MessageLoop::current()->message_loop_proxy(), |
| + this /* invalidation_handler */)); |
| + } |
| +} |
| + |
| +void CloudPolicyManager::UnregisterInvalidator() { |
| + if (invalidator_.get()) { |
|
Joao da Silva
2013/07/24 15:34:07
.get() not needed to test scoped_ptrs
Steve Condie
2013/07/25 01:18:08
This function is now removed anyway.
|
| + invalidator_->Unregister(); |
| + invalidator_.reset(); |
| + } |
| +} |
| + |
| scoped_ptr<PolicyBundle> CloudPolicyManager::CreatePolicyBundle() { |
| scoped_ptr<PolicyBundle> bundle(new PolicyBundle); |
| bundle->Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |