Index: chrome/browser/extensions/extensions_service.cc |
=================================================================== |
--- chrome/browser/extensions/extensions_service.cc (revision 30521) |
+++ chrome/browser/extensions/extensions_service.cc (working copy) |
@@ -82,12 +82,9 @@ |
const CommandLine* command_line, |
PrefService* prefs, |
const FilePath& install_directory, |
- MessageLoop* frontend_loop, |
- MessageLoop* backend_loop, |
bool autoupdate_enabled) |
: profile_(profile), |
extension_prefs_(new ExtensionPrefs(prefs, install_directory)), |
- backend_loop_(backend_loop), |
install_directory_(install_directory), |
extensions_enabled_(true), |
show_extensions_prompts_(true), |
@@ -106,11 +103,10 @@ |
update_frequency = StringToInt(WideToASCII(command_line->GetSwitchValue( |
switches::kExtensionsUpdateFrequency))); |
} |
- updater_ = new ExtensionUpdater(this, prefs, update_frequency, |
- backend_loop_, g_browser_process->io_thread()->message_loop()); |
+ updater_ = new ExtensionUpdater(this, prefs, update_frequency); |
} |
- backend_ = new ExtensionsServiceBackend(install_directory_, frontend_loop); |
+ backend_ = new ExtensionsServiceBackend(install_directory_); |
} |
ExtensionsService::~ExtensionsService() { |
@@ -143,7 +139,6 @@ |
"", // no expected id |
false, // don't delete crx when complete |
true, // allow privilege increase |
- backend_loop_, |
this, |
NULL); // no client (silent install) |
} |
@@ -160,7 +155,6 @@ |
id, |
true, // delete crx when complete |
false, // do not allow upgrade of privileges |
- backend_loop_, |
this, |
NULL); // no client (silent install) |
} |
@@ -196,9 +190,11 @@ |
// Tell the backend to start deleting installed extensions on the file thread. |
if (Extension::LOAD != extension->location()) { |
- backend_loop_->PostTask(FROM_HERE, NewRunnableFunction( |
- &extension_file_util::UninstallExtension, extension_id, |
- install_directory_)); |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableFunction( |
+ &extension_file_util::UninstallExtension, extension_id, |
+ install_directory_)); |
} |
ExtensionDOMUI::UnregisterChromeURLOverrides(profile_, |
@@ -256,9 +252,12 @@ |
} |
void ExtensionsService::LoadExtension(const FilePath& extension_path) { |
- backend_loop_->PostTask(FROM_HERE, NewRunnableMethod(backend_.get(), |
- &ExtensionsServiceBackend::LoadSingleExtension, |
- extension_path, scoped_refptr<ExtensionsService>(this))); |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableMethod( |
+ backend_.get(), |
+ &ExtensionsServiceBackend::LoadSingleExtension, |
+ extension_path, scoped_refptr<ExtensionsService>(this))); |
} |
void ExtensionsService::LoadAllExtensions() { |
@@ -297,9 +296,12 @@ |
if (location == Extension::EXTERNAL_PREF || |
location == Extension::EXTERNAL_REGISTRY) { |
- backend_loop_->PostTask(FROM_HERE, NewRunnableMethod(backend_.get(), |
- &ExtensionsServiceBackend::CheckExternalUninstall, |
- scoped_refptr<ExtensionsService>(this), id, location)); |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableMethod( |
+ backend_.get(), |
+ &ExtensionsServiceBackend::CheckExternalUninstall, |
+ scoped_refptr<ExtensionsService>(this), id, location)); |
} |
} |
@@ -315,11 +317,13 @@ |
static_cast<ChromeURLRequestContextGetter*>( |
profile_->GetRequestContext()); |
if (context_getter) { |
- g_browser_process->io_thread()->message_loop()->PostTask(FROM_HERE, |
- NewRunnableMethod(context_getter, |
- &ChromeURLRequestContextGetter::OnNewExtensions, |
- extension->id(), |
- extension->path())); |
+ ChromeThread::PostTask( |
+ ChromeThread::IO, FROM_HERE, |
+ NewRunnableMethod( |
+ context_getter, |
+ &ChromeURLRequestContextGetter::OnNewExtensions, |
+ extension->id(), |
+ extension->path())); |
} |
} |
@@ -342,7 +346,8 @@ |
static_cast<ChromeURLRequestContextGetter*>( |
profile_->GetRequestContext()); |
if (context_getter) { |
- g_browser_process->io_thread()->message_loop()->PostTask(FROM_HERE, |
+ ChromeThread::PostTask( |
+ ChromeThread::IO, FROM_HERE, |
NewRunnableMethod( |
context_getter, |
&ChromeURLRequestContextGetter::OnUnloadedExtension, |
@@ -384,10 +389,11 @@ |
// later? |
std::set<std::string> killed_extensions; |
extension_prefs_->GetKilledExtensionIds(&killed_extensions); |
- backend_loop_->PostTask(FROM_HERE, NewRunnableMethod(backend_.get(), |
- &ExtensionsServiceBackend::CheckForExternalUpdates, |
- killed_extensions, |
- scoped_refptr<ExtensionsService>(this))); |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableMethod( |
+ backend_.get(), &ExtensionsServiceBackend::CheckForExternalUpdates, |
+ killed_extensions, scoped_refptr<ExtensionsService>(this))); |
} |
void ExtensionsService::UnloadExtension(const std::string& extension_id) { |
@@ -439,9 +445,11 @@ |
void ExtensionsService::GarbageCollectExtensions() { |
InstalledExtensionSet installed( |
new InstalledExtensions(extension_prefs_.get())); |
- backend_loop_->PostTask(FROM_HERE, NewRunnableFunction( |
- &extension_file_util::GarbageCollectExtensions, install_directory_, |
- installed.extensions())); |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableFunction( |
+ &extension_file_util::GarbageCollectExtensions, install_directory_, |
+ installed.extensions())); |
} |
void ExtensionsService::OnLoadedInstalledExtensions() { |
@@ -601,15 +609,19 @@ |
} |
void ExtensionsService::ClearProvidersForTesting() { |
- backend_loop_->PostTask(FROM_HERE, NewRunnableMethod(backend_.get(), |
- &ExtensionsServiceBackend::ClearProvidersForTesting)); |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableMethod( |
+ backend_.get(), &ExtensionsServiceBackend::ClearProvidersForTesting)); |
} |
void ExtensionsService::SetProviderForTesting( |
Extension::Location location, ExternalExtensionProvider* test_provider) { |
- backend_loop_->PostTask(FROM_HERE, NewRunnableMethod(backend_.get(), |
- &ExtensionsServiceBackend::SetProviderForTesting, |
- location, test_provider)); |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableMethod( |
+ backend_.get(), &ExtensionsServiceBackend::SetProviderForTesting, |
+ location, test_provider)); |
} |
void ExtensionsService::OnExternalExtensionFound(const std::string& id, |
@@ -639,7 +651,6 @@ |
CrxInstaller::Start(path, install_directory_, location, id, |
false, // don't delete crx when complete |
true, // allow privilege increase |
- backend_loop_, |
this, |
NULL); // no client (silent install) |
} |
@@ -664,11 +675,10 @@ |
// ExtensionsServicesBackend |
ExtensionsServiceBackend::ExtensionsServiceBackend( |
- const FilePath& install_directory, MessageLoop* frontend_loop) |
+ const FilePath& install_directory) |
: frontend_(NULL), |
install_directory_(install_directory), |
- alert_on_error_(false), |
- frontend_loop_(frontend_loop) { |
+ alert_on_error_(false) { |
// TODO(aa): This ends up doing blocking IO on the UI thread because it reads |
// pref data in the ctor and that is called on the UI thread. Would be better |
// to re-read data each time we list external extensions, anyway. |
@@ -715,25 +725,19 @@ |
void ExtensionsServiceBackend::ReportExtensionLoadError( |
const FilePath& extension_path, const std::string &error) { |
- // In the unit tests, frontend_loop_ may be null. |
- if (frontend_loop_ == NULL) { |
- frontend_->ReportExtensionLoadError( |
- extension_path, |
- error, |
- NotificationType::EXTENSION_INSTALL_ERROR, |
- alert_on_error_); |
- return; |
- } |
- |
- frontend_loop_->PostTask(FROM_HERE, |
- NewRunnableMethod(frontend_, |
+ ChromeThread::PostTask( |
+ ChromeThread::UI, FROM_HERE, |
+ NewRunnableMethod( |
+ frontend_, |
&ExtensionsService::ReportExtensionLoadError, extension_path, |
error, NotificationType::EXTENSION_INSTALL_ERROR, alert_on_error_)); |
} |
void ExtensionsServiceBackend::ReportExtensionLoaded(Extension* extension) { |
- frontend_loop_->PostTask(FROM_HERE, NewRunnableMethod( |
- frontend_, &ExtensionsService::OnExtensionLoaded, extension, true)); |
+ ChromeThread::PostTask( |
+ ChromeThread::UI, FROM_HERE, |
+ NewRunnableMethod( |
+ frontend_, &ExtensionsService::OnExtensionLoaded, extension, true)); |
} |
bool ExtensionsServiceBackend::LookupExternalExtension( |
@@ -795,9 +799,10 @@ |
return; // Yup, known extension, don't uninstall. |
// This is an external extension that we don't have registered. Uninstall. |
- frontend_loop_->PostTask(FROM_HERE, NewRunnableMethod( |
- frontend.get(), &ExtensionsService::UninstallExtension, |
- id, true)); |
+ ChromeThread::PostTask( |
+ ChromeThread::UI, FROM_HERE, |
+ NewRunnableMethod( |
+ frontend.get(), &ExtensionsService::UninstallExtension, id, true)); |
} |
void ExtensionsServiceBackend::ClearProvidersForTesting() { |
@@ -815,7 +820,9 @@ |
void ExtensionsServiceBackend::OnExternalExtensionFound( |
const std::string& id, const Version* version, const FilePath& path, |
Extension::Location location) { |
- frontend_loop_->PostTask(FROM_HERE, NewRunnableMethod(frontend_, |
- &ExtensionsService::OnExternalExtensionFound, id, version->GetString(), |
- path, location)); |
+ ChromeThread::PostTask( |
+ ChromeThread::UI, FROM_HERE, |
+ NewRunnableMethod( |
+ frontend_, &ExtensionsService::OnExternalExtensionFound, id, |
+ version->GetString(), path, location)); |
} |