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

Unified Diff: components/policy/core/common/cloud/component_cloud_policy_service.cc

Issue 337053005: Precache policy-for-extensions for device-local accounts. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 months 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: components/policy/core/common/cloud/component_cloud_policy_service.cc
diff --git a/components/policy/core/common/cloud/component_cloud_policy_service.cc b/components/policy/core/common/cloud/component_cloud_policy_service.cc
index cd783abdd25def15c31ed0f8778d4a5337f45815..cb7edec6078e4539e546c31d667c67988f61bc35 100644
--- a/components/policy/core/common/cloud/component_cloud_policy_service.cc
+++ b/components/policy/core/common/cloud/component_cloud_policy_service.cc
@@ -241,6 +241,11 @@ ComponentCloudPolicyService::ComponentCloudPolicyService(
// policies.
if (core_->store()->is_initialized())
OnStoreLoaded(core_->store());
+
+ // Start observing the core and tracking the state of the client.
+ core_->AddObserver(this);
+ if (core_->client())
+ OnCoreConnected(core_);
}
ComponentCloudPolicyService::~ComponentCloudPolicyService() {
@@ -300,8 +305,9 @@ void ComponentCloudPolicyService::OnCoreConnected(CloudPolicyCore* core) {
PolicyNamespaceKey(dm_protocol::kChromeExtensionPolicyType, ""));
// Immediately load any PolicyFetchResponses that the client may already
- // have.
- OnPolicyFetched(core_->client());
+ // have if the backend is ready.
+ if (loaded_initial_policy_)
+ OnPolicyFetched(core_->client());
}
void ComponentCloudPolicyService::OnCoreDisconnecting(CloudPolicyCore* core) {
@@ -394,6 +400,7 @@ void ComponentCloudPolicyService::OnPolicyFetched(CloudPolicyClient* client) {
current_schema_map_->GetSchema(ns)) {
scoped_ptr<em::PolicyFetchResponse> response(
new em::PolicyFetchResponse(*it->second));
+ LOG(ERROR) << "-- updating external policy for: " << ns.component_id;
bartfab (slow) 2014/06/20 17:03:46 Nit: Remove.
Joao da Silva 2014/06/20 22:28:19 Done
backend_task_runner_->PostTask(
FROM_HERE,
base::Bind(&Backend::UpdateExternalPolicy,
@@ -443,12 +450,6 @@ void ComponentCloudPolicyService::OnBackendInitialized(
// Send the current schema to the backend, in case it has changed while the
// backend was initializing.
ReloadSchema();
-
- // Start observing the core and tracking the state of the client.
- core_->AddObserver(this);
-
- if (core_->client())
- OnCoreConnected(core_);
}
void ComponentCloudPolicyService::ReloadSchema() {
@@ -462,10 +463,6 @@ void ComponentCloudPolicyService::ReloadSchema() {
current_schema_map_ = new_schema_map;
- // Schedule a policy refresh if a new managed component was added.
- if (core_->client() && !added.empty())
- core_->RefreshSoon();
-
// Send the updated SchemaMap and a list of removed components to the
// backend.
backend_task_runner_->PostTask(FROM_HERE,
@@ -473,6 +470,14 @@ void ComponentCloudPolicyService::ReloadSchema() {
base::Unretained(backend_.get()),
current_schema_map_,
base::Passed(&removed)));
+
+ // Have another look at the client if the core is already connected.
+ // The client may have already fetched policy for some component and it was
+ // previously ignored because the component wasn't listed in the schema map.
+ // There's no point in fetching policy from the server again; the server
+ // always pushes all the components it knows about.
+ if (core_->client())
+ OnPolicyFetched(core_->client());
}
void ComponentCloudPolicyService::OnPolicyUpdated(

Powered by Google App Engine
This is Rietveld 408576698