| 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));
|
| }
|
|
|