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

Unified Diff: chrome/browser/extensions/extensions_service.cc

Issue 345023: Get rid of MessageLoop* caching in extensions code. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 2 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 side-by-side diff with in-line comments
Download patch
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));
}
« no previous file with comments | « chrome/browser/extensions/extensions_service.h ('k') | chrome/browser/extensions/extensions_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698