Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(514)

Unified Diff: chrome/browser/policy/cloud_policy_provider_impl.cc

Issue 8586030: Added ConfigurationPolicyProvider::RefreshPolicies. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed win build Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/policy/cloud_policy_provider_impl.cc
diff --git a/chrome/browser/policy/cloud_policy_provider_impl.cc b/chrome/browser/policy/cloud_policy_provider_impl.cc
index d1c3f3b7a21b50289370dc6f0524bcc5caeb9c40..a24c0cad0e6f98e785b58f8a03337d527f77c2a1 100644
--- a/chrome/browser/policy/cloud_policy_provider_impl.cc
+++ b/chrome/browser/policy/cloud_policy_provider_impl.cc
@@ -4,14 +4,19 @@
#include "chrome/browser/policy/cloud_policy_provider_impl.h"
+#include <algorithm>
+
+#include "chrome/browser/policy/browser_policy_connector.h"
#include "chrome/browser/policy/configuration_policy_pref_store.h"
namespace policy {
CloudPolicyProviderImpl::CloudPolicyProviderImpl(
+ BrowserPolicyConnector* browser_policy_connector,
const PolicyDefinitionList* policy_list,
CloudPolicyCacheBase::PolicyLevel level)
: CloudPolicyProvider(policy_list),
+ browser_policy_connector_(browser_policy_connector),
level_(level),
initialization_complete_(true) {}
@@ -29,11 +34,21 @@ bool CloudPolicyProviderImpl::IsInitializationComplete() const {
return initialization_complete_;
}
+void CloudPolicyProviderImpl::RefreshPolicies() {
+ pending_update_caches_ = caches_;
+ if (pending_update_caches_.empty())
+ NotifyPolicyUpdated();
+ else
+ browser_policy_connector_->FetchCloudPolicy();
Mattias Nissler (ping if slow) 2011/11/18 11:00:25 I think there's still an issue here. This will not
Joao da Silva 2011/11/18 14:03:30 FetchCloudPolicy() triggers CloudPolicyController:
+}
+
void CloudPolicyProviderImpl::OnCacheUpdate(CloudPolicyCacheBase* cache) {
+ RemoveFromPending(cache);
RecombineCachesAndTriggerUpdate();
}
void CloudPolicyProviderImpl::OnCacheGoingAway(CloudPolicyCacheBase* cache) {
+ RemoveFromPending(cache);
cache->RemoveObserver(this);
for (ListType::iterator i = caches_.begin(); i != caches_.end(); ++i) {
Mattias Nissler (ping if slow) 2011/11/18 11:00:25 can we please use std::find + erase here? :) Also,
Joao da Silva 2011/11/18 14:03:30 Done.
if (*i == cache) {
@@ -112,7 +127,16 @@ void CloudPolicyProviderImpl::RecombineCachesAndTriggerUpdate() {
// Trigger a notification.
combined_.Swap(&newly_combined);
- NotifyPolicyUpdated();
+ if (pending_update_caches_.empty())
+ NotifyPolicyUpdated();
+}
+
+void CloudPolicyProviderImpl::RemoveFromPending(CloudPolicyCacheBase* cache) {
+ pending_update_caches_.erase(
+ std::remove(pending_update_caches_.begin(),
+ pending_update_caches_.end(),
+ cache),
+ pending_update_caches_.end());
}
} // namespace policy

Powered by Google App Engine
This is Rietveld 408576698