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

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: Nits 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 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 profile_, 126 profile_,
129 CommandLine::ForCurrentProcess(), 127 CommandLine::ForCurrentProcess(),
130 profile_->GetPath().AppendASCII(ExtensionService::kInstallDirectoryName), 128 profile_->GetPath().AppendASCII(ExtensionService::kInstallDirectoryName),
131 extension_prefs_.get(), 129 extension_prefs_.get(),
132 autoupdate_enabled, 130 autoupdate_enabled,
133 extensions_enabled)); 131 extensions_enabled));
134 132
135 // These services must be registered before the ExtensionService tries to 133 // These services must be registered before the ExtensionService tries to
136 // load any extensions. 134 // load any extensions.
137 { 135 {
138 rules_registry_service_.reset(new RulesRegistryService(profile_));
139 rules_registry_service_->RegisterDefaultRulesRegistries();
140
141 management_policy_.reset(new ManagementPolicy); 136 management_policy_.reset(new ManagementPolicy);
142 RegisterManagementPolicyProviders(); 137 RegisterManagementPolicyProviders();
143 } 138 }
144 139
145 extension_service_->component_loader()->AddDefaultComponentExtensions(); 140 extension_service_->component_loader()->AddDefaultComponentExtensions();
146 if (command_line->HasSwitch(switches::kLoadComponentExtension)) { 141 if (command_line->HasSwitch(switches::kLoadComponentExtension)) {
147 CommandLine::StringType path_list = command_line->GetSwitchValueNative( 142 CommandLine::StringType path_list = command_line->GetSwitchValueNative(
148 switches::kLoadComponentExtension); 143 switches::kLoadComponentExtension);
149 StringTokenizerT<CommandLine::StringType, 144 StringTokenizerT<CommandLine::StringType,
150 CommandLine::StringType::const_iterator> t(path_list, 145 CommandLine::StringType::const_iterator> t(path_list,
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 } 225 }
231 226
232 ExtensionMessageService* ExtensionSystemImpl::Shared::message_service() { 227 ExtensionMessageService* ExtensionSystemImpl::Shared::message_service() {
233 return extension_message_service_.get(); 228 return extension_message_service_.get();
234 } 229 }
235 230
236 EventRouter* ExtensionSystemImpl::Shared::event_router() { 231 EventRouter* ExtensionSystemImpl::Shared::event_router() {
237 return extension_event_router_.get(); 232 return extension_event_router_.get();
238 } 233 }
239 234
240 RulesRegistryService* ExtensionSystemImpl::Shared::rules_registry_service() {
241 return rules_registry_service_.get();
242 }
243
244 // 235 //
245 // ExtensionSystemImpl 236 // ExtensionSystemImpl
246 // 237 //
247 238
248 ExtensionSystemImpl::ExtensionSystemImpl(Profile* profile) 239 ExtensionSystemImpl::ExtensionSystemImpl(Profile* profile)
249 : profile_(profile), 240 : profile_(profile),
250 extension_devtools_manager_(NULL) { 241 extension_devtools_manager_(NULL) {
251 shared_ = ExtensionSystemSharedFactory::GetForProfile(profile); 242 shared_ = ExtensionSystemSharedFactory::GetForProfile(profile);
252 243
253 if (profile->IsOffTheRecord()) { 244 if (profile->IsOffTheRecord()) {
254 extension_process_manager_.reset(ExtensionProcessManager::Create(profile)); 245 extension_process_manager_.reset(ExtensionProcessManager::Create(profile));
255 } else { 246 } else {
256 shared_->InitPrefs(); 247 shared_->InitPrefs();
257 } 248 }
258 } 249 }
259 250
260 ExtensionSystemImpl::~ExtensionSystemImpl() { 251 ExtensionSystemImpl::~ExtensionSystemImpl() {
252 if (rules_registry_service_.get())
253 rules_registry_service_->Shutdown();
261 } 254 }
262 255
263 void ExtensionSystemImpl::Shutdown() { 256 void ExtensionSystemImpl::Shutdown() {
264 extension_process_manager_.reset(); 257 extension_process_manager_.reset();
265 } 258 }
266 259
267 void ExtensionSystemImpl::Init(bool extensions_enabled) { 260 void ExtensionSystemImpl::InitForRegularProfile(bool extensions_enabled) {
268 DCHECK(!profile_->IsOffTheRecord()); 261 DCHECK(!profile_->IsOffTheRecord());
269 if (user_script_master() || extension_service()) 262 if (user_script_master() || extension_service())
270 return; // Already initialized. 263 return; // Already initialized.
271 264
272 const CommandLine* command_line = CommandLine::ForCurrentProcess(); 265 const CommandLine* command_line = CommandLine::ForCurrentProcess();
273 if (command_line->HasSwitch( 266 if (command_line->HasSwitch(
274 switches::kEnableExtensionTimelineApi)) { 267 switches::kEnableExtensionTimelineApi)) {
275 extension_devtools_manager_ = new ExtensionDevToolsManager(profile_); 268 extension_devtools_manager_ = new ExtensionDevToolsManager(profile_);
276 } 269 }
277 270
278 shared_->InitInfoMap(); 271 shared_->InitInfoMap();
279 272
280 extension_process_manager_.reset(ExtensionProcessManager::Create(profile_)); 273 extension_process_manager_.reset(ExtensionProcessManager::Create(profile_));
281 alarm_manager_.reset(new AlarmManager(profile_, &base::Time::Now)); 274 alarm_manager_.reset(new AlarmManager(profile_, &base::Time::Now));
282 275
283 serial_connection_manager_.reset(new ApiResourceManager<SerialConnection>( 276 serial_connection_manager_.reset(new ApiResourceManager<SerialConnection>(
284 BrowserThread::FILE)); 277 BrowserThread::FILE));
285 socket_manager_.reset(new ApiResourceManager<Socket>(BrowserThread::IO)); 278 socket_manager_.reset(new ApiResourceManager<Socket>(BrowserThread::IO));
286 usb_device_resource_manager_.reset( 279 usb_device_resource_manager_.reset(
287 new ApiResourceManager<UsbDeviceResource>(BrowserThread::IO)); 280 new ApiResourceManager<UsbDeviceResource>(BrowserThread::IO));
288 281
282 rules_registry_service_.reset(new RulesRegistryService(profile_));
283 rules_registry_service_->RegisterDefaultRulesRegistries(
284 profile_->IsOffTheRecord());
285
289 shared_->Init(extensions_enabled); 286 shared_->Init(extensions_enabled);
290 } 287 }
291 288
289 void ExtensionSystemImpl::InitForOTRProfile() {
Matt Perry 2012/07/25 21:27:56 I wonder if this should just be done in the constr
battre 2012/07/26 16:38:43 No, RegisterDefaultRulesRegistries calls extension
290 rules_registry_service_.reset(new RulesRegistryService(profile_));
291 rules_registry_service_->RegisterDefaultRulesRegistries(
292 profile_->IsOffTheRecord());
293 }
294
292 ExtensionService* ExtensionSystemImpl::extension_service() { 295 ExtensionService* ExtensionSystemImpl::extension_service() {
293 return shared_->extension_service(); 296 return shared_->extension_service();
294 } 297 }
295 298
296 ManagementPolicy* ExtensionSystemImpl::management_policy() { 299 ManagementPolicy* ExtensionSystemImpl::management_policy() {
297 return shared_->management_policy(); 300 return shared_->management_policy();
298 } 301 }
299 302
300 UserScriptMaster* ExtensionSystemImpl::user_script_master() { 303 UserScriptMaster* ExtensionSystemImpl::user_script_master() {
301 return shared_->user_script_master(); 304 return shared_->user_script_master();
(...skipping 27 matching lines...) Expand all
329 332
330 ExtensionMessageService* ExtensionSystemImpl::message_service() { 333 ExtensionMessageService* ExtensionSystemImpl::message_service() {
331 return shared_->message_service(); 334 return shared_->message_service();
332 } 335 }
333 336
334 EventRouter* ExtensionSystemImpl::event_router() { 337 EventRouter* ExtensionSystemImpl::event_router() {
335 return shared_->event_router(); 338 return shared_->event_router();
336 } 339 }
337 340
338 RulesRegistryService* ExtensionSystemImpl::rules_registry_service() { 341 RulesRegistryService* ExtensionSystemImpl::rules_registry_service() {
339 return shared_->rules_registry_service(); 342 return rules_registry_service_.get();
340 } 343 }
341 344
342 ApiResourceManager<SerialConnection>* 345 ApiResourceManager<SerialConnection>*
343 ExtensionSystemImpl::serial_connection_manager() { 346 ExtensionSystemImpl::serial_connection_manager() {
344 return serial_connection_manager_.get(); 347 return serial_connection_manager_.get();
345 } 348 }
346 349
347 ApiResourceManager<Socket>*ExtensionSystemImpl::socket_manager() { 350 ApiResourceManager<Socket>* ExtensionSystemImpl::socket_manager() {
348 return socket_manager_.get(); 351 return socket_manager_.get();
349 } 352 }
350 353
351 ApiResourceManager<UsbDeviceResource>* 354 ApiResourceManager<UsbDeviceResource>*
352 ExtensionSystemImpl::usb_device_resource_manager() { 355 ExtensionSystemImpl::usb_device_resource_manager() {
353 return usb_device_resource_manager_.get(); 356 return usb_device_resource_manager_.get();
354 } 357 }
355 358
356 void ExtensionSystemImpl::RegisterExtensionWithRequestContexts( 359 void ExtensionSystemImpl::RegisterExtensionWithRequestContexts(
357 const Extension* extension) { 360 const Extension* extension) {
(...skipping 14 matching lines...) Expand all
372 void ExtensionSystemImpl::UnregisterExtensionWithRequestContexts( 375 void ExtensionSystemImpl::UnregisterExtensionWithRequestContexts(
373 const std::string& extension_id, 376 const std::string& extension_id,
374 const extension_misc::UnloadedExtensionReason reason) { 377 const extension_misc::UnloadedExtensionReason reason) {
375 BrowserThread::PostTask( 378 BrowserThread::PostTask(
376 BrowserThread::IO, FROM_HERE, 379 BrowserThread::IO, FROM_HERE,
377 base::Bind(&ExtensionInfoMap::RemoveExtension, info_map(), 380 base::Bind(&ExtensionInfoMap::RemoveExtension, info_map(),
378 extension_id, reason)); 381 extension_id, reason));
379 } 382 }
380 383
381 } // namespace extensions 384 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698