| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/extensions/api/storage/managed_value_store_cache.h" | 5 #include "chrome/browser/extensions/api/storage/managed_value_store_cache.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 if (!UsesManagedStorage(it->get())) | 170 if (!UsesManagedStorage(it->get())) |
| 171 to_remove = (*it)->id(); | 171 to_remove = (*it)->id(); |
| 172 ++it; | 172 ++it; |
| 173 if (!to_remove.empty()) | 173 if (!to_remove.empty()) |
| 174 added->Remove(to_remove); | 174 added->Remove(to_remove); |
| 175 } | 175 } |
| 176 | 176 |
| 177 // Load the schema files in a background thread. | 177 // Load the schema files in a background thread. |
| 178 BrowserThread::PostBlockingPoolSequencedTask( | 178 BrowserThread::PostBlockingPoolSequencedTask( |
| 179 kLoadSchemasBackgroundTaskTokenName, FROM_HERE, | 179 kLoadSchemasBackgroundTaskTokenName, FROM_HERE, |
| 180 base::Bind(&ExtensionTracker::LoadSchemasOnBlockingPool, | 180 base::BindOnce(&ExtensionTracker::LoadSchemasOnBlockingPool, |
| 181 base::Passed(&added), | 181 base::Passed(&added), weak_factory_.GetWeakPtr())); |
| 182 weak_factory_.GetWeakPtr())); | |
| 183 } | 182 } |
| 184 | 183 |
| 185 bool ManagedValueStoreCache::ExtensionTracker::UsesManagedStorage( | 184 bool ManagedValueStoreCache::ExtensionTracker::UsesManagedStorage( |
| 186 const Extension* extension) const { | 185 const Extension* extension) const { |
| 187 return extension->manifest()->HasPath(manifest_keys::kStorageManagedSchema); | 186 return extension->manifest()->HasPath(manifest_keys::kStorageManagedSchema); |
| 188 } | 187 } |
| 189 | 188 |
| 190 // static | 189 // static |
| 191 void ManagedValueStoreCache::ExtensionTracker::LoadSchemasOnBlockingPool( | 190 void ManagedValueStoreCache::ExtensionTracker::LoadSchemasOnBlockingPool( |
| 192 std::unique_ptr<ExtensionSet> extensions, | 191 std::unique_ptr<ExtensionSet> extensions, |
| (...skipping 16 matching lines...) Expand all Loading... |
| 209 policy::Schema schema = | 208 policy::Schema schema = |
| 210 StorageSchemaManifestHandler::GetSchema(it->get(), &error); | 209 StorageSchemaManifestHandler::GetSchema(it->get(), &error); |
| 211 // If the schema is invalid then proceed with an empty schema. The extension | 210 // If the schema is invalid then proceed with an empty schema. The extension |
| 212 // will be listed in chrome://policy but won't be able to load any policies. | 211 // will be listed in chrome://policy but won't be able to load any policies. |
| 213 if (!schema.valid()) | 212 if (!schema.valid()) |
| 214 schema = policy::Schema(); | 213 schema = policy::Schema(); |
| 215 (*components)[(*it)->id()] = schema; | 214 (*components)[(*it)->id()] = schema; |
| 216 } | 215 } |
| 217 | 216 |
| 218 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 217 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| 219 base::Bind(&ExtensionTracker::Register, self, | 218 base::BindOnce(&ExtensionTracker::Register, self, |
| 220 base::Owned(components.release()))); | 219 base::Owned(components.release()))); |
| 221 } | 220 } |
| 222 | 221 |
| 223 void ManagedValueStoreCache::ExtensionTracker::Register( | 222 void ManagedValueStoreCache::ExtensionTracker::Register( |
| 224 const policy::ComponentMap* components) { | 223 const policy::ComponentMap* components) { |
| 225 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 224 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 226 schema_registry_->RegisterComponents(policy_domain_, *components); | 225 schema_registry_->RegisterComponents(policy_domain_, *components); |
| 227 | 226 |
| 228 // The first SetExtensionsDomainsReady() call is performed after the | 227 // The first SetExtensionsDomainsReady() call is performed after the |
| 229 // ExtensionSystem is ready, even if there are no managed extensions. It will | 228 // ExtensionSystem is ready, even if there are no managed extensions. It will |
| 230 // trigger a loading of the initial policy for any managed extensions, and | 229 // trigger a loading of the initial policy for any managed extensions, and |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 | 322 |
| 324 if (!policy_service_->IsInitializationComplete(policy_domain_)) { | 323 if (!policy_service_->IsInitializationComplete(policy_domain_)) { |
| 325 // OnPolicyUpdated is called whenever a policy changes, but it doesn't | 324 // OnPolicyUpdated is called whenever a policy changes, but it doesn't |
| 326 // mean that all the policy providers are ready; wait until we get the | 325 // mean that all the policy providers are ready; wait until we get the |
| 327 // final policy values before passing them to the store. | 326 // final policy values before passing them to the store. |
| 328 return; | 327 return; |
| 329 } | 328 } |
| 330 | 329 |
| 331 BrowserThread::PostTask( | 330 BrowserThread::PostTask( |
| 332 BrowserThread::FILE, FROM_HERE, | 331 BrowserThread::FILE, FROM_HERE, |
| 333 base::Bind(&ManagedValueStoreCache::UpdatePolicyOnFILE, | 332 base::BindOnce(&ManagedValueStoreCache::UpdatePolicyOnFILE, |
| 334 base::Unretained(this), | 333 base::Unretained(this), ns.component_id, |
| 335 ns.component_id, | 334 base::Passed(current.DeepCopy()))); |
| 336 base::Passed(current.DeepCopy()))); | |
| 337 } | 335 } |
| 338 | 336 |
| 339 // static | 337 // static |
| 340 policy::PolicyDomain ManagedValueStoreCache::GetPolicyDomain(Profile* profile) { | 338 policy::PolicyDomain ManagedValueStoreCache::GetPolicyDomain(Profile* profile) { |
| 341 #if defined(OS_CHROMEOS) | 339 #if defined(OS_CHROMEOS) |
| 342 return chromeos::ProfileHelper::IsSigninProfile(profile) | 340 return chromeos::ProfileHelper::IsSigninProfile(profile) |
| 343 ? policy::POLICY_DOMAIN_SIGNIN_EXTENSIONS | 341 ? policy::POLICY_DOMAIN_SIGNIN_EXTENSIONS |
| 344 : policy::POLICY_DOMAIN_EXTENSIONS; | 342 : policy::POLICY_DOMAIN_EXTENSIONS; |
| 345 #else | 343 #else |
| 346 return policy::POLICY_DOMAIN_EXTENSIONS; | 344 return policy::POLICY_DOMAIN_EXTENSIONS; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 return raw_store; | 380 return raw_store; |
| 383 } | 381 } |
| 384 | 382 |
| 385 bool ManagedValueStoreCache::HasStore(const std::string& extension_id) const { | 383 bool ManagedValueStoreCache::HasStore(const std::string& extension_id) const { |
| 386 // Note: Currently only manage extensions (not apps). | 384 // Note: Currently only manage extensions (not apps). |
| 387 return storage_factory_->HasSettings(settings_namespace::MANAGED, | 385 return storage_factory_->HasSettings(settings_namespace::MANAGED, |
| 388 kManagedModelType, extension_id); | 386 kManagedModelType, extension_id); |
| 389 } | 387 } |
| 390 | 388 |
| 391 } // namespace extensions | 389 } // namespace extensions |
| OLD | NEW |