| 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 4c704ba0cb741f0c5a81e7cb95e641a9eaa3f993..f3af3c93b9486583647435d595aac9285bdb66b4 100644
|
| --- a/chrome/browser/policy/cloud/cloud_policy_manager.cc
|
| +++ b/chrome/browser/policy/cloud/cloud_policy_manager.cc
|
| @@ -18,7 +18,8 @@ namespace policy {
|
| CloudPolicyManager::CloudPolicyManager(const PolicyNamespaceKey& policy_ns_key,
|
| CloudPolicyStore* cloud_policy_store)
|
| : core_(policy_ns_key, cloud_policy_store),
|
| - waiting_for_policy_refresh_(false) {
|
| + waiting_for_policy_refresh_(false),
|
| + invalidator_started_(false) {
|
| store()->AddObserver(this);
|
|
|
| // If the underlying store is already initialized, publish the loaded
|
| @@ -31,17 +32,13 @@ CloudPolicyManager::CloudPolicyManager(const PolicyNamespaceKey& policy_ns_key,
|
|
|
| CloudPolicyManager::~CloudPolicyManager() {}
|
|
|
| -void CloudPolicyManager::EnableInvalidations(
|
| - const base::Closure& initialize_invalidator) {
|
| - DCHECK(!initialize_invalidator.is_null());
|
| - DCHECK(initialize_invalidator_.is_null());
|
| - // If the refresh scheduler is already running, initialize the invalidator
|
| - // right away. Otherwise, store the closure so it can be invoked when the
|
| - // refresh scheduler starts.
|
| - if (core()->refresh_scheduler())
|
| - initialize_invalidator.Run();
|
| - else
|
| - initialize_invalidator_ = initialize_invalidator;
|
| +void CloudPolicyManager::SetInvalidator(
|
| + const base::WeakPtr<CloudPolicyInvalidator>& invalidator) {
|
| + DCHECK(invalidator);
|
| + invalidator_ = invalidator;
|
| + // Start the invalidator if StartInvalidator was already called.
|
| + if (invalidator_started_)
|
| + invalidator_->Start();
|
| }
|
|
|
| void CloudPolicyManager::Shutdown() {
|
| @@ -105,12 +102,22 @@ void CloudPolicyManager::CheckAndPublishPolicy() {
|
| }
|
| }
|
|
|
| -void CloudPolicyManager::StartRefreshScheduler() {
|
| - DCHECK(!core()->refresh_scheduler());
|
| - core()->StartRefreshScheduler();
|
| - // Initialize the invalidator if EnableInvalidations has been called.
|
| - if (!initialize_invalidator_.is_null())
|
| - initialize_invalidator_.Run();
|
| +void CloudPolicyManager::StartInvalidator() {
|
| + DCHECK(core()->refresh_scheduler());
|
| + invalidator_started_ = true;
|
| + CloudPolicyInvalidator* invalidator = invalidator_.get();
|
| + if (invalidator)
|
| + invalidator->Start();
|
| +}
|
| +
|
| +void CloudPolicyManager::StopInvalidator() {
|
| + if (invalidator_started_) {
|
| + DCHECK(core()->refresh_scheduler());
|
| + invalidator_started_ = false;
|
| + CloudPolicyInvalidator* invalidator = invalidator_.get();
|
| + if (invalidator)
|
| + invalidator->Stop();
|
| + }
|
| }
|
|
|
| scoped_ptr<PolicyBundle> CloudPolicyManager::CreatePolicyBundle() {
|
|
|