| Index: chrome/browser/policy/cloud_policy_provider.cc
|
| diff --git a/chrome/browser/policy/cloud_policy_provider.cc b/chrome/browser/policy/cloud_policy_provider.cc
|
| index be91926c3294d20e21b287328ff2ef6fe6ddabc0..c28bba9d612871b69bbdd24929df86247e6913f2 100644
|
| --- a/chrome/browser/policy/cloud_policy_provider.cc
|
| +++ b/chrome/browser/policy/cloud_policy_provider.cc
|
| @@ -4,7 +4,10 @@
|
|
|
| #include "chrome/browser/policy/cloud_policy_provider.h"
|
|
|
| +#include "base/memory/scoped_ptr.h"
|
| #include "chrome/browser/policy/browser_policy_connector.h"
|
| +#include "chrome/browser/policy/policy_bundle.h"
|
| +#include "chrome/browser/policy/policy_map.h"
|
|
|
| namespace policy {
|
|
|
| @@ -43,11 +46,6 @@ void CloudPolicyProvider::SetDevicePolicyCache(CloudPolicyCacheBase* cache) {
|
| }
|
| #endif
|
|
|
| -bool CloudPolicyProvider::ProvideInternal(PolicyMap* result) {
|
| - result->CopyFrom(combined_);
|
| - return true;
|
| -}
|
| -
|
| bool CloudPolicyProvider::IsInitializationComplete() const {
|
| return initialization_complete_;
|
| }
|
| @@ -58,14 +56,15 @@ void CloudPolicyProvider::RefreshPolicies() {
|
| pending_updates_.insert(caches_[i]);
|
| }
|
| if (pending_updates_.empty())
|
| - NotifyPolicyUpdated();
|
| + Merge();
|
| else
|
| browser_policy_connector_->FetchCloudPolicy();
|
| }
|
|
|
| void CloudPolicyProvider::OnCacheUpdate(CloudPolicyCacheBase* cache) {
|
| pending_updates_.erase(cache);
|
| - Merge();
|
| + if (pending_updates_.empty())
|
| + Merge();
|
| }
|
|
|
| void CloudPolicyProvider::OnCacheGoingAway(CloudPolicyCacheBase* cache) {
|
| @@ -93,17 +92,16 @@ void CloudPolicyProvider::Merge() {
|
| }
|
| }
|
|
|
| - combined_.Clear();
|
| + PolicyMap combined;
|
| for (size_t i = 0; i < CACHE_SIZE; ++i) {
|
| if (caches_[i] && caches_[i]->IsReady())
|
| - combined_.MergeFrom(*caches_[i]->policy());
|
| + combined.MergeFrom(*caches_[i]->policy());
|
| }
|
| - FixDeprecatedPolicies(&combined_);
|
| - combined_.FilterLevel(level_);
|
| + combined.FilterLevel(level_);
|
|
|
| - // Trigger a notification.
|
| - if (pending_updates_.empty())
|
| - NotifyPolicyUpdated();
|
| + scoped_ptr<PolicyBundle> bundle(new PolicyBundle());
|
| + bundle->Get(POLICY_DOMAIN_CHROME, std::string()).Swap(&combined);
|
| + UpdatePolicy(bundle.Pass());
|
| }
|
|
|
| } // namespace policy
|
|
|