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())) |