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

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

Issue 14757022: Add a non-blocking "OneShotEvent" class (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: dcronin's comments; ExtensionSystem::ready; and WeakPtr support Created 7 years, 7 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/base_switches.h" 7 #include "base/base_switches.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 !command_line->HasSwitch(chromeos::switches::kGuestSession); 144 !command_line->HasSwitch(chromeos::switches::kGuestSession);
145 #endif 145 #endif
146 extension_service_.reset(new ExtensionService( 146 extension_service_.reset(new ExtensionService(
147 profile_, 147 profile_,
148 CommandLine::ForCurrentProcess(), 148 CommandLine::ForCurrentProcess(),
149 profile_->GetPath().AppendASCII(ExtensionService::kInstallDirectoryName), 149 profile_->GetPath().AppendASCII(ExtensionService::kInstallDirectoryName),
150 extension_prefs_.get(), 150 extension_prefs_.get(),
151 blacklist_.get(), 151 blacklist_.get(),
152 autoupdate_enabled, 152 autoupdate_enabled,
153 extensions_enabled)); 153 extensions_enabled));
154 extension_service_->ready().RunAfter(
155 FROM_HERE, base::Bind(&AsyncEvent::MarkHappened, ready_.AsWeakPtr()));
Matt Perry 2013/05/15 21:08:54 I think it will get confusing to have 2 "ready" si
Jeffrey Yasskin 2013/05/15 22:46:50 Ok, I've moved them into ExtensionSystem. They nee
154 156
155 // These services must be registered before the ExtensionService tries to 157 // These services must be registered before the ExtensionService tries to
156 // load any extensions. 158 // load any extensions.
157 { 159 {
158 management_policy_.reset(new ManagementPolicy); 160 management_policy_.reset(new ManagementPolicy);
159 RegisterManagementPolicyProviders(); 161 RegisterManagementPolicyProviders();
160 } 162 }
161 163
162 bool skip_session_extensions = false; 164 bool skip_session_extensions = false;
163 #if defined(OS_CHROMEOS) 165 #if defined(OS_CHROMEOS)
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 } 431 }
430 432
431 ExtensionWarningService* ExtensionSystemImpl::warning_service() { 433 ExtensionWarningService* ExtensionSystemImpl::warning_service() {
432 return shared_->warning_service(); 434 return shared_->warning_service();
433 } 435 }
434 436
435 Blacklist* ExtensionSystemImpl::blacklist() { 437 Blacklist* ExtensionSystemImpl::blacklist() {
436 return shared_->blacklist(); 438 return shared_->blacklist();
437 } 439 }
438 440
441 const AsyncEvent& ExtensionSystemImpl::ready() const {
442 return shared_->ready();
443 }
444
439 void ExtensionSystemImpl::RegisterExtensionWithRequestContexts( 445 void ExtensionSystemImpl::RegisterExtensionWithRequestContexts(
440 const Extension* extension) { 446 const Extension* extension) {
441 base::Time install_time; 447 base::Time install_time;
442 if (extension->location() != Manifest::COMPONENT) { 448 if (extension->location() != Manifest::COMPONENT) {
443 install_time = extension_service()->extension_prefs()-> 449 install_time = extension_service()->extension_prefs()->
444 GetInstallTime(extension->id()); 450 GetInstallTime(extension->id());
445 } 451 }
446 bool incognito_enabled = 452 bool incognito_enabled =
447 extension_service()->IsIncognitoEnabled(extension->id()); 453 extension_service()->IsIncognitoEnabled(extension->id());
448 BrowserThread::PostTask( 454 BrowserThread::PostTask(
449 BrowserThread::IO, FROM_HERE, 455 BrowserThread::IO, FROM_HERE,
450 base::Bind(&ExtensionInfoMap::AddExtension, info_map(), 456 base::Bind(&ExtensionInfoMap::AddExtension, info_map(),
451 make_scoped_refptr(extension), install_time, 457 make_scoped_refptr(extension), install_time,
452 incognito_enabled)); 458 incognito_enabled));
453 } 459 }
454 460
455 void ExtensionSystemImpl::UnregisterExtensionWithRequestContexts( 461 void ExtensionSystemImpl::UnregisterExtensionWithRequestContexts(
456 const std::string& extension_id, 462 const std::string& extension_id,
457 const extension_misc::UnloadedExtensionReason reason) { 463 const extension_misc::UnloadedExtensionReason reason) {
458 BrowserThread::PostTask( 464 BrowserThread::PostTask(
459 BrowserThread::IO, FROM_HERE, 465 BrowserThread::IO, FROM_HERE,
460 base::Bind(&ExtensionInfoMap::RemoveExtension, info_map(), 466 base::Bind(&ExtensionInfoMap::RemoveExtension, info_map(),
461 extension_id, reason)); 467 extension_id, reason));
462 } 468 }
463 469
464 } // namespace extensions 470 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698