| 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 "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 | 99 |
| 100 DISALLOW_COPY_AND_ASSIGN(ExtensionTracker); | 100 DISALLOW_COPY_AND_ASSIGN(ExtensionTracker); |
| 101 }; | 101 }; |
| 102 | 102 |
| 103 ManagedValueStoreCache::ExtensionTracker::ExtensionTracker(Profile* profile) | 103 ManagedValueStoreCache::ExtensionTracker::ExtensionTracker(Profile* profile) |
| 104 : profile_(profile), | 104 : profile_(profile), |
| 105 schema_registry_( | 105 schema_registry_( |
| 106 policy::SchemaRegistryServiceFactory::GetForContext(profile)), | 106 policy::SchemaRegistryServiceFactory::GetForContext(profile)), |
| 107 weak_factory_(this) { | 107 weak_factory_(this) { |
| 108 registrar_.Add(this, | 108 registrar_.Add(this, |
| 109 chrome::NOTIFICATION_EXTENSION_INSTALLED, | 109 chrome::NOTIFICATION_EXTENSION_INSTALLED_DEPRECATED, |
| 110 content::Source<Profile>(profile_)); | 110 content::Source<Profile>(profile_)); |
| 111 registrar_.Add(this, | 111 registrar_.Add(this, |
| 112 chrome::NOTIFICATION_EXTENSION_UNINSTALLED, | 112 chrome::NOTIFICATION_EXTENSION_UNINSTALLED, |
| 113 content::Source<Profile>(profile_)); | 113 content::Source<Profile>(profile_)); |
| 114 | 114 |
| 115 // Load schemas when the extension system is ready. It might be ready now. | 115 // Load schemas when the extension system is ready. It might be ready now. |
| 116 ExtensionSystem::Get(profile_)->ready().Post( | 116 ExtensionSystem::Get(profile_)->ready().Post( |
| 117 FROM_HERE, | 117 FROM_HERE, |
| 118 base::Bind(&ExtensionTracker::OnExtensionsReady, | 118 base::Bind(&ExtensionTracker::OnExtensionsReady, |
| 119 weak_factory_.GetWeakPtr())); | 119 weak_factory_.GetWeakPtr())); |
| 120 } | 120 } |
| 121 | 121 |
| 122 void ManagedValueStoreCache::ExtensionTracker::Observe( | 122 void ManagedValueStoreCache::ExtensionTracker::Observe( |
| 123 int type, | 123 int type, |
| 124 const content::NotificationSource& source, | 124 const content::NotificationSource& source, |
| 125 const content::NotificationDetails& details) { | 125 const content::NotificationDetails& details) { |
| 126 // Some extensions are installed on the first run before the ExtensionSystem | 126 // Some extensions are installed on the first run before the ExtensionSystem |
| 127 // becomes ready. Wait until all of them are ready before registering the | 127 // becomes ready. Wait until all of them are ready before registering the |
| 128 // schemas of managed extensions, so that the policy loaders are reloaded at | 128 // schemas of managed extensions, so that the policy loaders are reloaded at |
| 129 // most once. | 129 // most once. |
| 130 if (!ExtensionSystem::Get(profile_)->ready().is_signaled()) | 130 if (!ExtensionSystem::Get(profile_)->ready().is_signaled()) |
| 131 return; | 131 return; |
| 132 | 132 |
| 133 switch (type) { | 133 switch (type) { |
| 134 case chrome::NOTIFICATION_EXTENSION_INSTALLED: { | 134 case chrome::NOTIFICATION_EXTENSION_INSTALLED_DEPRECATED: { |
| 135 scoped_ptr<ExtensionSet> added(new ExtensionSet); | 135 scoped_ptr<ExtensionSet> added(new ExtensionSet); |
| 136 added->Insert( | 136 added->Insert( |
| 137 content::Details<InstalledExtensionInfo>(details)->extension); | 137 content::Details<InstalledExtensionInfo>(details)->extension); |
| 138 LoadSchemas(added.Pass()); | 138 LoadSchemas(added.Pass()); |
| 139 break; | 139 break; |
| 140 } | 140 } |
| 141 case chrome::NOTIFICATION_EXTENSION_UNINSTALLED: { | 141 case chrome::NOTIFICATION_EXTENSION_UNINSTALLED: { |
| 142 const Extension* removed = | 142 const Extension* removed = |
| 143 content::Details<const Extension>(details).ptr(); | 143 content::Details<const Extension>(details).ptr(); |
| 144 if (removed && UsesManagedStorage(removed)) { | 144 if (removed && UsesManagedStorage(removed)) { |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 369 | 369 |
| 370 return store; | 370 return store; |
| 371 } | 371 } |
| 372 | 372 |
| 373 bool ManagedValueStoreCache::HasStore(const std::string& extension_id) const { | 373 bool ManagedValueStoreCache::HasStore(const std::string& extension_id) const { |
| 374 // TODO(joaodasilva): move this check to a ValueStore method. | 374 // TODO(joaodasilva): move this check to a ValueStore method. |
| 375 return base::DirectoryExists(base_path_.AppendASCII(extension_id)); | 375 return base::DirectoryExists(base_path_.AppendASCII(extension_id)); |
| 376 } | 376 } |
| 377 | 377 |
| 378 } // namespace extensions | 378 } // namespace extensions |
| OLD | NEW |