| 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..4c704ba0cb741f0c5a81e7cb95e641a9eaa3f993 100644
|
| --- a/chrome/browser/policy/cloud/cloud_policy_manager.cc
|
| +++ b/chrome/browser/policy/cloud/cloud_policy_manager.cc
|
| @@ -8,6 +8,7 @@
|
| #include "base/bind_helpers.h"
|
| #include "base/logging.h"
|
| #include "base/prefs/pref_service.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"
|
| @@ -30,6 +31,19 @@ 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::Shutdown() {
|
| core_.Disconnect();
|
| store()->RemoveObserver(this);
|
| @@ -66,6 +80,24 @@ void CloudPolicyManager::OnStoreError(CloudPolicyStore* cloud_policy_store) {
|
| CheckAndPublishPolicy();
|
| }
|
|
|
| +void CloudPolicyManager::SetInvalidationInfo(
|
| + int64 version,
|
| + const std::string& payload) {
|
| + DCHECK(core()->client());
|
| + core()->client()->SetInvalidationInfo(version, payload);
|
| +}
|
| +
|
| +void CloudPolicyManager::InvalidatePolicy() {
|
| + DCHECK(core()->refresh_scheduler());
|
| + core()->refresh_scheduler()->RefreshSoon();
|
| +}
|
| +
|
| +void CloudPolicyManager::OnInvalidatorStateChanged(bool invalidations_enabled) {
|
| + DCHECK(core()->refresh_scheduler());
|
| + core()->refresh_scheduler()->SetInvalidationServiceAvailability(
|
| + invalidations_enabled);
|
| +}
|
| +
|
| void CloudPolicyManager::CheckAndPublishPolicy() {
|
| if (IsInitializationComplete(POLICY_DOMAIN_CHROME) &&
|
| !waiting_for_policy_refresh_) {
|
| @@ -73,6 +105,14 @@ 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();
|
| +}
|
| +
|
| scoped_ptr<PolicyBundle> CloudPolicyManager::CreatePolicyBundle() {
|
| scoped_ptr<PolicyBundle> bundle(new PolicyBundle);
|
| bundle->Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()))
|
|
|