OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/declarative/rules_cache_delegate.h" | 5 #include "extensions/browser/api/declarative/rules_cache_delegate.h" |
6 | 6 |
7 #include "chrome/browser/chrome_notification_types.h" | |
8 #include "chrome/browser/extensions/api/declarative/rules_registry.h" | |
9 #include "chrome/browser/extensions/extension_service.h" | |
10 #include "chrome/browser/extensions/extension_util.h" | |
11 #include "content/public/browser/browser_context.h" | 7 #include "content/public/browser/browser_context.h" |
12 #include "content/public/browser/notification_details.h" | 8 #include "content/public/browser/notification_details.h" |
13 #include "content/public/browser/notification_source.h" | 9 #include "content/public/browser/notification_source.h" |
| 10 #include "extensions/browser/api/declarative/rules_registry.h" |
14 #include "extensions/browser/extension_prefs.h" | 11 #include "extensions/browser/extension_prefs.h" |
15 #include "extensions/browser/extension_registry.h" | 12 #include "extensions/browser/extension_registry.h" |
16 #include "extensions/browser/extension_system.h" | 13 #include "extensions/browser/extension_system.h" |
17 #include "extensions/browser/info_map.h" | 14 #include "extensions/browser/info_map.h" |
18 #include "extensions/browser/state_store.h" | 15 #include "extensions/browser/state_store.h" |
19 #include "extensions/common/permissions/permissions_data.h" | 16 #include "extensions/common/permissions/permissions_data.h" |
20 | 17 |
21 namespace { | 18 namespace { |
22 | 19 |
23 // Returns the key to use for storing declarative rules in the state store. | 20 // Returns the key to use for storing declarative rules in the state store. |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 | 117 |
121 content::BrowserThread::PostTask( | 118 content::BrowserThread::PostTask( |
122 rules_registry_thread_, | 119 rules_registry_thread_, |
123 FROM_HERE, | 120 FROM_HERE, |
124 base::Bind( | 121 base::Bind( |
125 &RulesRegistry::MarkReady, registry_, storage_init_time_)); | 122 &RulesRegistry::MarkReady, registry_, storage_init_time_)); |
126 notified_registry_ = true; | 123 notified_registry_ = true; |
127 } | 124 } |
128 | 125 |
129 void RulesCacheDelegate::ReadRulesForInstalledExtensions() { | 126 void RulesCacheDelegate::ReadRulesForInstalledExtensions() { |
130 ExtensionSystem& system = *ExtensionSystem::Get(browser_context_); | 127 bool is_ready = ExtensionSystem::Get(browser_context_)->ready().is_signaled(); |
131 ExtensionService* extension_service = system.extension_service(); | |
132 DCHECK(extension_service); | |
133 // In an OTR context, we start on top of a normal context already, so the | 128 // In an OTR context, we start on top of a normal context already, so the |
134 // extension service should be ready. | 129 // extension service should be ready. |
135 DCHECK(!browser_context_->IsOffTheRecord() || extension_service->is_ready()); | 130 DCHECK(!browser_context_->IsOffTheRecord() || is_ready); |
136 if (extension_service->is_ready()) { | 131 if (is_ready) { |
137 const ExtensionSet* extensions = extension_service->extensions(); | 132 const ExtensionSet& extensions = |
138 for (ExtensionSet::const_iterator i = extensions->begin(); | 133 ExtensionRegistry::Get(browser_context_)->enabled_extensions(); |
139 i != extensions->end(); | 134 const ExtensionPrefs* extension_prefs = |
| 135 ExtensionPrefs::Get(browser_context_); |
| 136 for (ExtensionSet::const_iterator i = extensions.begin(); |
| 137 i != extensions.end(); |
140 ++i) { | 138 ++i) { |
141 bool needs_apis_storing_rules = | 139 bool needs_apis_storing_rules = |
142 (*i)->permissions_data()->HasAPIPermission( | 140 (*i)->permissions_data()->HasAPIPermission( |
143 APIPermission::kDeclarativeContent) || | 141 APIPermission::kDeclarativeContent) || |
144 (*i)->permissions_data()->HasAPIPermission( | 142 (*i)->permissions_data()->HasAPIPermission( |
145 APIPermission::kDeclarativeWebRequest); | 143 APIPermission::kDeclarativeWebRequest); |
146 bool respects_off_the_record = | 144 bool respects_off_the_record = |
147 !(browser_context_->IsOffTheRecord()) || | 145 !(browser_context_->IsOffTheRecord()) || |
148 util::IsIncognitoEnabled((*i)->id(), browser_context_); | 146 extension_prefs->IsIncognitoEnabled((*i)->id()); |
149 if (needs_apis_storing_rules && respects_off_the_record) | 147 if (needs_apis_storing_rules && respects_off_the_record) |
150 ReadFromStorage((*i)->id()); | 148 ReadFromStorage((*i)->id()); |
151 } | 149 } |
152 } | 150 } |
153 } | 151 } |
154 | 152 |
155 void RulesCacheDelegate::ReadFromStorage(const std::string& extension_id) { | 153 void RulesCacheDelegate::ReadFromStorage(const std::string& extension_id) { |
156 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 154 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
157 if (!browser_context_) | 155 if (!browser_context_) |
158 return; | 156 return; |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 ->GetExtensionById(extension_id, ExtensionRegistry::EVERYTHING)); | 221 ->GetExtensionById(extension_id, ExtensionRegistry::EVERYTHING)); |
224 | 222 |
225 ExtensionScopedPrefs* extension_prefs = ExtensionPrefs::Get(browser_context_); | 223 ExtensionScopedPrefs* extension_prefs = ExtensionPrefs::Get(browser_context_); |
226 extension_prefs->UpdateExtensionPref( | 224 extension_prefs->UpdateExtensionPref( |
227 extension_id, | 225 extension_id, |
228 rules_stored_key_, | 226 rules_stored_key_, |
229 new base::FundamentalValue(rules_stored)); | 227 new base::FundamentalValue(rules_stored)); |
230 } | 228 } |
231 | 229 |
232 } // namespace extensions | 230 } // namespace extensions |
OLD | NEW |