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

Side by Side Diff: chrome/browser/extensions/extension_system.cc

Issue 10831008: Refactor and fix declarative webRequest API permissions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed license headers Created 8 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/extension_system.h" 5 #include "chrome/browser/extensions/extension_system.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/file_path.h" 9 #include "base/file_path.h"
10 #include "base/string_tokenizer.h" 10 #include "base/string_tokenizer.h"
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 66
67 // 67 //
68 // ExtensionSystemImpl::Shared 68 // ExtensionSystemImpl::Shared
69 // 69 //
70 70
71 ExtensionSystemImpl::Shared::Shared(Profile* profile) 71 ExtensionSystemImpl::Shared::Shared(Profile* profile)
72 : profile_(profile) { 72 : profile_(profile) {
73 } 73 }
74 74
75 ExtensionSystemImpl::Shared::~Shared() { 75 ExtensionSystemImpl::Shared::~Shared() {
76 if (rules_registry_service_.get())
77 rules_registry_service_->Shutdown();
78 } 76 }
79 77
80 void ExtensionSystemImpl::Shared::InitPrefs() { 78 void ExtensionSystemImpl::Shared::InitPrefs() {
81 bool extensions_disabled = 79 bool extensions_disabled =
82 profile_->GetPrefs()->GetBoolean(prefs::kDisableExtensions) || 80 profile_->GetPrefs()->GetBoolean(prefs::kDisableExtensions) ||
83 CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableExtensions); 81 CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableExtensions);
84 extension_prefs_.reset(new ExtensionPrefs( 82 extension_prefs_.reset(new ExtensionPrefs(
85 profile_->GetPrefs(), 83 profile_->GetPrefs(),
86 profile_->GetPath().AppendASCII(ExtensionService::kInstallDirectoryName), 84 profile_->GetPath().AppendASCII(ExtensionService::kInstallDirectoryName),
87 ExtensionPrefValueMapFactory::GetForProfile(profile_))); 85 ExtensionPrefValueMapFactory::GetForProfile(profile_)));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 profile_, 125 profile_,
128 CommandLine::ForCurrentProcess(), 126 CommandLine::ForCurrentProcess(),
129 profile_->GetPath().AppendASCII(ExtensionService::kInstallDirectoryName), 127 profile_->GetPath().AppendASCII(ExtensionService::kInstallDirectoryName),
130 extension_prefs_.get(), 128 extension_prefs_.get(),
131 autoupdate_enabled, 129 autoupdate_enabled,
132 extensions_enabled)); 130 extensions_enabled));
133 131
134 // These services must be registered before the ExtensionService tries to 132 // These services must be registered before the ExtensionService tries to
135 // load any extensions. 133 // load any extensions.
136 { 134 {
137 rules_registry_service_.reset(new RulesRegistryService(profile_));
138 rules_registry_service_->RegisterDefaultRulesRegistries();
139
140 management_policy_.reset(new ManagementPolicy); 135 management_policy_.reset(new ManagementPolicy);
141 RegisterManagementPolicyProviders(); 136 RegisterManagementPolicyProviders();
142 } 137 }
143 138
144 extension_service_->component_loader()->AddDefaultComponentExtensions(); 139 extension_service_->component_loader()->AddDefaultComponentExtensions();
145 if (command_line->HasSwitch(switches::kLoadComponentExtension)) { 140 if (command_line->HasSwitch(switches::kLoadComponentExtension)) {
146 CommandLine::StringType path_list = command_line->GetSwitchValueNative( 141 CommandLine::StringType path_list = command_line->GetSwitchValueNative(
147 switches::kLoadComponentExtension); 142 switches::kLoadComponentExtension);
148 StringTokenizerT<CommandLine::StringType, 143 StringTokenizerT<CommandLine::StringType,
149 CommandLine::StringType::const_iterator> t(path_list, 144 CommandLine::StringType::const_iterator> t(path_list,
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 } 224 }
230 225
231 MessageService* ExtensionSystemImpl::Shared::message_service() { 226 MessageService* ExtensionSystemImpl::Shared::message_service() {
232 return message_service_.get(); 227 return message_service_.get();
233 } 228 }
234 229
235 EventRouter* ExtensionSystemImpl::Shared::event_router() { 230 EventRouter* ExtensionSystemImpl::Shared::event_router() {
236 return extension_event_router_.get(); 231 return extension_event_router_.get();
237 } 232 }
238 233
239 RulesRegistryService* ExtensionSystemImpl::Shared::rules_registry_service() {
240 return rules_registry_service_.get();
241 }
242
243 // 234 //
244 // ExtensionSystemImpl 235 // ExtensionSystemImpl
245 // 236 //
246 237
247 ExtensionSystemImpl::ExtensionSystemImpl(Profile* profile) 238 ExtensionSystemImpl::ExtensionSystemImpl(Profile* profile)
248 : profile_(profile), 239 : profile_(profile),
249 extension_devtools_manager_(NULL) { 240 extension_devtools_manager_(NULL) {
250 shared_ = ExtensionSystemSharedFactory::GetForProfile(profile); 241 shared_ = ExtensionSystemSharedFactory::GetForProfile(profile);
251 242
252 if (profile->IsOffTheRecord()) { 243 if (profile->IsOffTheRecord()) {
253 extension_process_manager_.reset(ExtensionProcessManager::Create(profile)); 244 extension_process_manager_.reset(ExtensionProcessManager::Create(profile));
254 } else { 245 } else {
255 shared_->InitPrefs(); 246 shared_->InitPrefs();
256 } 247 }
257 } 248 }
258 249
259 ExtensionSystemImpl::~ExtensionSystemImpl() { 250 ExtensionSystemImpl::~ExtensionSystemImpl() {
251 if (rules_registry_service_.get())
252 rules_registry_service_->Shutdown();
260 } 253 }
261 254
262 void ExtensionSystemImpl::Shutdown() { 255 void ExtensionSystemImpl::Shutdown() {
263 extension_process_manager_.reset(); 256 extension_process_manager_.reset();
264 } 257 }
265 258
266 void ExtensionSystemImpl::Init(bool extensions_enabled) { 259 void ExtensionSystemImpl::InitForRegularProfile(bool extensions_enabled) {
267 DCHECK(!profile_->IsOffTheRecord()); 260 DCHECK(!profile_->IsOffTheRecord());
268 if (user_script_master() || extension_service()) 261 if (user_script_master() || extension_service())
269 return; // Already initialized. 262 return; // Already initialized.
270 263
271 const CommandLine* command_line = CommandLine::ForCurrentProcess(); 264 const CommandLine* command_line = CommandLine::ForCurrentProcess();
272 if (command_line->HasSwitch( 265 if (command_line->HasSwitch(
273 switches::kEnableExtensionTimelineApi)) { 266 switches::kEnableExtensionTimelineApi)) {
274 extension_devtools_manager_ = new ExtensionDevToolsManager(profile_); 267 extension_devtools_manager_ = new ExtensionDevToolsManager(profile_);
275 } 268 }
276 269
277 shared_->InitInfoMap(); 270 shared_->InitInfoMap();
278 271
279 extension_process_manager_.reset(ExtensionProcessManager::Create(profile_)); 272 extension_process_manager_.reset(ExtensionProcessManager::Create(profile_));
280 alarm_manager_.reset(new AlarmManager(profile_, &base::Time::Now)); 273 alarm_manager_.reset(new AlarmManager(profile_, &base::Time::Now));
281 274
282 serial_connection_manager_.reset(new ApiResourceManager<SerialConnection>( 275 serial_connection_manager_.reset(new ApiResourceManager<SerialConnection>(
283 BrowserThread::FILE)); 276 BrowserThread::FILE));
284 socket_manager_.reset(new ApiResourceManager<Socket>(BrowserThread::IO)); 277 socket_manager_.reset(new ApiResourceManager<Socket>(BrowserThread::IO));
285 usb_device_resource_manager_.reset( 278 usb_device_resource_manager_.reset(
286 new ApiResourceManager<UsbDeviceResource>(BrowserThread::IO)); 279 new ApiResourceManager<UsbDeviceResource>(BrowserThread::IO));
287 280
281 rules_registry_service_.reset(new RulesRegistryService(profile_));
282 rules_registry_service_->RegisterDefaultRulesRegistries();
283
288 shared_->Init(extensions_enabled); 284 shared_->Init(extensions_enabled);
289 } 285 }
290 286
287 void ExtensionSystemImpl::InitForOTRProfile() {
288 // Only initialize the RulesRegistryService of the OTR ExtensionSystem if the
289 // regular ExtensionSystem has been initialized properly, as we depend on it.
290 // Some ChromeOS browser tests don't initialize the regular ExtensionSystem
291 // in login-tests.
292 if (extension_service()) {
293 rules_registry_service_.reset(new RulesRegistryService(profile_));
294 rules_registry_service_->RegisterDefaultRulesRegistries();
295 }
296 }
297
291 ExtensionService* ExtensionSystemImpl::extension_service() { 298 ExtensionService* ExtensionSystemImpl::extension_service() {
292 return shared_->extension_service(); 299 return shared_->extension_service();
293 } 300 }
294 301
295 ManagementPolicy* ExtensionSystemImpl::management_policy() { 302 ManagementPolicy* ExtensionSystemImpl::management_policy() {
296 return shared_->management_policy(); 303 return shared_->management_policy();
297 } 304 }
298 305
299 UserScriptMaster* ExtensionSystemImpl::user_script_master() { 306 UserScriptMaster* ExtensionSystemImpl::user_script_master() {
300 return shared_->user_script_master(); 307 return shared_->user_script_master();
(...skipping 27 matching lines...) Expand all
328 335
329 MessageService* ExtensionSystemImpl::message_service() { 336 MessageService* ExtensionSystemImpl::message_service() {
330 return shared_->message_service(); 337 return shared_->message_service();
331 } 338 }
332 339
333 EventRouter* ExtensionSystemImpl::event_router() { 340 EventRouter* ExtensionSystemImpl::event_router() {
334 return shared_->event_router(); 341 return shared_->event_router();
335 } 342 }
336 343
337 RulesRegistryService* ExtensionSystemImpl::rules_registry_service() { 344 RulesRegistryService* ExtensionSystemImpl::rules_registry_service() {
338 return shared_->rules_registry_service(); 345 return rules_registry_service_.get();
339 } 346 }
340 347
341 ApiResourceManager<SerialConnection>* 348 ApiResourceManager<SerialConnection>*
342 ExtensionSystemImpl::serial_connection_manager() { 349 ExtensionSystemImpl::serial_connection_manager() {
343 return serial_connection_manager_.get(); 350 return serial_connection_manager_.get();
344 } 351 }
345 352
346 ApiResourceManager<Socket>*ExtensionSystemImpl::socket_manager() { 353 ApiResourceManager<Socket>* ExtensionSystemImpl::socket_manager() {
347 return socket_manager_.get(); 354 return socket_manager_.get();
348 } 355 }
349 356
350 ApiResourceManager<UsbDeviceResource>* 357 ApiResourceManager<UsbDeviceResource>*
351 ExtensionSystemImpl::usb_device_resource_manager() { 358 ExtensionSystemImpl::usb_device_resource_manager() {
352 return usb_device_resource_manager_.get(); 359 return usb_device_resource_manager_.get();
353 } 360 }
354 361
355 void ExtensionSystemImpl::RegisterExtensionWithRequestContexts( 362 void ExtensionSystemImpl::RegisterExtensionWithRequestContexts(
356 const Extension* extension) { 363 const Extension* extension) {
(...skipping 14 matching lines...) Expand all
371 void ExtensionSystemImpl::UnregisterExtensionWithRequestContexts( 378 void ExtensionSystemImpl::UnregisterExtensionWithRequestContexts(
372 const std::string& extension_id, 379 const std::string& extension_id,
373 const extension_misc::UnloadedExtensionReason reason) { 380 const extension_misc::UnloadedExtensionReason reason) {
374 BrowserThread::PostTask( 381 BrowserThread::PostTask(
375 BrowserThread::IO, FROM_HERE, 382 BrowserThread::IO, FROM_HERE,
376 base::Bind(&ExtensionInfoMap::RemoveExtension, info_map(), 383 base::Bind(&ExtensionInfoMap::RemoveExtension, info_map(),
377 extension_id, reason)); 384 extension_id, reason));
378 } 385 }
379 386
380 } // namespace extensions 387 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_system.h ('k') | chrome/browser/extensions/test_extension_system.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698