| 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 21 matching lines...) Expand all Loading... |
| 32 #include "extensions/browser/value_store/value_store_change.h" | 32 #include "extensions/browser/value_store/value_store_change.h" |
| 33 #include "extensions/browser/value_store/value_store_factory.h" | 33 #include "extensions/browser/value_store/value_store_factory.h" |
| 34 #include "extensions/common/api/storage.h" | 34 #include "extensions/common/api/storage.h" |
| 35 #include "extensions/common/constants.h" | 35 #include "extensions/common/constants.h" |
| 36 #include "extensions/common/extension.h" | 36 #include "extensions/common/extension.h" |
| 37 #include "extensions/common/extension_set.h" | 37 #include "extensions/common/extension_set.h" |
| 38 #include "extensions/common/manifest.h" | 38 #include "extensions/common/manifest.h" |
| 39 #include "extensions/common/manifest_constants.h" | 39 #include "extensions/common/manifest_constants.h" |
| 40 #include "extensions/common/one_shot_event.h" | 40 #include "extensions/common/one_shot_event.h" |
| 41 | 41 |
| 42 #if defined(OS_CHROMEOS) |
| 43 #include "chrome/browser/chromeos/profiles/profile_helper.h" |
| 44 #endif |
| 45 |
| 42 using content::BrowserContext; | 46 using content::BrowserContext; |
| 43 using content::BrowserThread; | 47 using content::BrowserThread; |
| 44 | 48 |
| 45 namespace extensions { | 49 namespace extensions { |
| 46 class ExtensionRegistry; | 50 class ExtensionRegistry; |
| 47 | 51 |
| 48 namespace storage = api::storage; | 52 namespace storage = api::storage; |
| 49 | 53 |
| 50 namespace { | 54 namespace { |
| 51 | 55 |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 228 // Subsequent calls to SetReady() are ignored. | 232 // Subsequent calls to SetReady() are ignored. |
| 229 schema_registry_->SetReady(policy::POLICY_DOMAIN_EXTENSIONS); | 233 schema_registry_->SetReady(policy::POLICY_DOMAIN_EXTENSIONS); |
| 230 schema_registry_->SetReady(policy::POLICY_DOMAIN_SIGNIN_EXTENSIONS); | 234 schema_registry_->SetReady(policy::POLICY_DOMAIN_SIGNIN_EXTENSIONS); |
| 231 } | 235 } |
| 232 | 236 |
| 233 ManagedValueStoreCache::ManagedValueStoreCache( | 237 ManagedValueStoreCache::ManagedValueStoreCache( |
| 234 BrowserContext* context, | 238 BrowserContext* context, |
| 235 const scoped_refptr<ValueStoreFactory>& factory, | 239 const scoped_refptr<ValueStoreFactory>& factory, |
| 236 const scoped_refptr<SettingsObserverList>& observers) | 240 const scoped_refptr<SettingsObserverList>& observers) |
| 237 : profile_(Profile::FromBrowserContext(context)), | 241 : profile_(Profile::FromBrowserContext(context)), |
| 238 policy_domain_(policy::POLICY_DOMAIN_EXTENSIONS), | 242 policy_domain_(GetPolicyDomain(profile_)), |
| 239 policy_service_( | 243 policy_service_( |
| 240 policy::ProfilePolicyConnectorFactory::GetForBrowserContext(context) | 244 policy::ProfilePolicyConnectorFactory::GetForBrowserContext(context) |
| 241 ->policy_service()), | 245 ->policy_service()), |
| 242 storage_factory_(factory), | 246 storage_factory_(factory), |
| 243 observers_(observers) { | 247 observers_(observers) { |
| 244 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 248 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 245 | 249 |
| 246 policy_service_->AddObserver(policy_domain_, this); | 250 policy_service_->AddObserver(policy_domain_, this); |
| 247 | 251 |
| 248 extension_tracker_.reset(new ExtensionTracker(profile_, policy_domain_)); | 252 extension_tracker_.reset(new ExtensionTracker(profile_, policy_domain_)); |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 321 } | 325 } |
| 322 | 326 |
| 323 BrowserThread::PostTask( | 327 BrowserThread::PostTask( |
| 324 BrowserThread::FILE, FROM_HERE, | 328 BrowserThread::FILE, FROM_HERE, |
| 325 base::Bind(&ManagedValueStoreCache::UpdatePolicyOnFILE, | 329 base::Bind(&ManagedValueStoreCache::UpdatePolicyOnFILE, |
| 326 base::Unretained(this), | 330 base::Unretained(this), |
| 327 ns.component_id, | 331 ns.component_id, |
| 328 base::Passed(current.DeepCopy()))); | 332 base::Passed(current.DeepCopy()))); |
| 329 } | 333 } |
| 330 | 334 |
| 335 // static |
| 336 policy::PolicyDomain ManagedValueStoreCache::GetPolicyDomain(Profile* profile) { |
| 337 #if defined(OS_CHROMEOS) |
| 338 return chromeos::ProfileHelper::IsSigninProfile(profile) |
| 339 ? policy::POLICY_DOMAIN_SIGNIN_EXTENSIONS |
| 340 : policy::POLICY_DOMAIN_EXTENSIONS; |
| 341 #else |
| 342 return policy::POLICY_DOMAIN_EXTENSIONS; |
| 343 #endif |
| 344 } |
| 345 |
| 331 void ManagedValueStoreCache::UpdatePolicyOnFILE( | 346 void ManagedValueStoreCache::UpdatePolicyOnFILE( |
| 332 const std::string& extension_id, | 347 const std::string& extension_id, |
| 333 std::unique_ptr<policy::PolicyMap> current_policy) { | 348 std::unique_ptr<policy::PolicyMap> current_policy) { |
| 334 DCHECK_CURRENTLY_ON(BrowserThread::FILE); | 349 DCHECK_CURRENTLY_ON(BrowserThread::FILE); |
| 335 | 350 |
| 336 if (!HasStore(extension_id) && current_policy->empty()) { | 351 if (!HasStore(extension_id) && current_policy->empty()) { |
| 337 // Don't create the store now if there are no policies configured for this | 352 // Don't create the store now if there are no policies configured for this |
| 338 // extension. If the extension uses the storage.managed API then the store | 353 // extension. If the extension uses the storage.managed API then the store |
| 339 // will be created at RunWithValueStoreForExtension(). | 354 // will be created at RunWithValueStoreForExtension(). |
| 340 return; | 355 return; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 362 return store; | 377 return store; |
| 363 } | 378 } |
| 364 | 379 |
| 365 bool ManagedValueStoreCache::HasStore(const std::string& extension_id) const { | 380 bool ManagedValueStoreCache::HasStore(const std::string& extension_id) const { |
| 366 // Note: Currently only manage extensions (not apps). | 381 // Note: Currently only manage extensions (not apps). |
| 367 return storage_factory_->HasSettings(settings_namespace::MANAGED, | 382 return storage_factory_->HasSettings(settings_namespace::MANAGED, |
| 368 kManagedModelType, extension_id); | 383 kManagedModelType, extension_id); |
| 369 } | 384 } |
| 370 | 385 |
| 371 } // namespace extensions | 386 } // namespace extensions |
| OLD | NEW |