Index: chrome/browser/extensions/crx_installer.cc |
=================================================================== |
--- chrome/browser/extensions/crx_installer.cc (revision 30521) |
+++ chrome/browser/extensions/crx_installer.cc (working copy) |
@@ -10,6 +10,7 @@ |
#include "base/string_util.h" |
#include "base/task.h" |
#include "chrome/browser/browser_process.h" |
+#include "chrome/browser/chrome_thread.h" |
#include "chrome/browser/extensions/extension_file_util.h" |
#include "chrome/common/extensions/extension_error_reporter.h" |
#include "chrome/common/notification_service.h" |
@@ -32,14 +33,12 @@ |
const std::string& expected_id, |
bool delete_crx, |
bool allow_privilege_increase, |
- MessageLoop* file_loop, |
ExtensionsService* frontend, |
ExtensionInstallUI* client) { |
// Note: We don't keep a reference because this object manages its own |
// lifetime. |
new CrxInstaller(crx_path, install_directory, install_source, expected_id, |
- delete_crx, allow_privilege_increase, file_loop, frontend, |
- client); |
+ delete_crx, allow_privilege_increase, frontend, client); |
} |
CrxInstaller::CrxInstaller(const FilePath& crx_path, |
@@ -48,7 +47,6 @@ |
const std::string& expected_id, |
bool delete_crx, |
bool allow_privilege_increase, |
- MessageLoop* file_loop, |
ExtensionsService* frontend, |
ExtensionInstallUI* client) |
: crx_path_(crx_path), |
@@ -57,8 +55,6 @@ |
expected_id_(expected_id), |
delete_crx_(delete_crx), |
allow_privilege_increase_(allow_privilege_increase), |
- file_loop_(file_loop), |
- ui_loop_(MessageLoop::current()), |
frontend_(frontend), |
client_(client) { |
@@ -67,8 +63,9 @@ |
unpacker_ = new SandboxedExtensionUnpacker( |
crx_path, g_browser_process->resource_dispatcher_host(), this); |
- file_loop->PostTask(FROM_HERE, NewRunnableMethod(unpacker_, |
- &SandboxedExtensionUnpacker::Start)); |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableMethod(unpacker_, &SandboxedExtensionUnpacker::Start)); |
} |
CrxInstaller::~CrxInstaller() { |
@@ -76,25 +73,27 @@ |
// destructor might be called on any thread, so we post a task to the file |
// thread to make sure the delete happens there. |
if (!temp_dir_.value().empty()) { |
- file_loop_->PostTask(FROM_HERE, NewRunnableFunction(&DeleteFileHelper, |
- temp_dir_, true)); // recursive delete |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableFunction(&DeleteFileHelper, temp_dir_, true)); |
} |
if (delete_crx_) { |
- file_loop_->PostTask(FROM_HERE, NewRunnableFunction(&DeleteFileHelper, |
- crx_path_, false)); // non-recursive delete |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableFunction(&DeleteFileHelper, crx_path_, false)); |
} |
} |
void CrxInstaller::OnUnpackFailure(const std::string& error_message) { |
- DCHECK(MessageLoop::current() == file_loop_); |
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); |
ReportFailureFromFileThread(error_message); |
} |
void CrxInstaller::OnUnpackSuccess(const FilePath& temp_dir, |
const FilePath& extension_dir, |
Extension* extension) { |
- DCHECK(MessageLoop::current() == file_loop_); |
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); |
// Note: We take ownership of |extension| and |temp_dir|. |
extension_.reset(extension); |
@@ -128,8 +127,9 @@ |
extension_->GetIconPath(Extension::EXTENSION_ICON_LARGE).GetFilePath(); |
DecodeInstallIcon(icon_path, &install_icon_); |
} |
- ui_loop_->PostTask(FROM_HERE, NewRunnableMethod(this, |
- &CrxInstaller::ConfirmInstall)); |
+ ChromeThread::PostTask( |
+ ChromeThread::UI, FROM_HERE, |
+ NewRunnableMethod(this, &CrxInstaller::ConfirmInstall)); |
} |
// static |
@@ -168,7 +168,7 @@ |
} |
void CrxInstaller::ConfirmInstall() { |
- DCHECK(MessageLoop::current() == ui_loop_); |
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI)); |
if (frontend_->extension_prefs()->IsExtensionBlacklisted(extension_->id())) { |
LOG(INFO) << "This extension: " << extension_->id() |
<< " is blacklisted. Install failed."; |
@@ -185,15 +185,17 @@ |
AddRef(); // balanced in ContinueInstall() and AbortInstall(). |
client_->ConfirmInstall(this, extension_.get(), install_icon_.get()); |
} else { |
- file_loop_->PostTask(FROM_HERE, NewRunnableMethod(this, |
- &CrxInstaller::CompleteInstall)); |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableMethod(this, &CrxInstaller::CompleteInstall)); |
} |
return; |
} |
void CrxInstaller::ContinueInstall() { |
- file_loop_->PostTask(FROM_HERE, NewRunnableMethod(this, |
- &CrxInstaller::CompleteInstall)); |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableMethod(this, &CrxInstaller::CompleteInstall)); |
Release(); // balanced in ConfirmInstall(). |
} |
@@ -211,7 +213,7 @@ |
} |
void CrxInstaller::CompleteInstall() { |
- DCHECK(MessageLoop::current() == file_loop_); |
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); |
FilePath version_dir; |
Extension::InstallType install_type = |
@@ -252,13 +254,14 @@ |
} |
void CrxInstaller::ReportFailureFromFileThread(const std::string& error) { |
- DCHECK(MessageLoop::current() == file_loop_); |
- ui_loop_->PostTask(FROM_HERE, NewRunnableMethod(this, |
- &CrxInstaller::ReportFailureFromUIThread, error)); |
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); |
+ ChromeThread::PostTask( |
+ ChromeThread::UI, FROM_HERE, |
+ NewRunnableMethod(this, &CrxInstaller::ReportFailureFromUIThread, error)); |
} |
void CrxInstaller::ReportFailureFromUIThread(const std::string& error) { |
- DCHECK(MessageLoop::current() == ui_loop_); |
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI)); |
NotificationService* service = NotificationService::current(); |
service->Notify(NotificationType::EXTENSION_INSTALL_ERROR, |
@@ -277,13 +280,14 @@ |
} |
void CrxInstaller::ReportOverinstallFromFileThread() { |
- DCHECK(MessageLoop::current() == file_loop_); |
- ui_loop_->PostTask(FROM_HERE, NewRunnableMethod(this, |
- &CrxInstaller::ReportOverinstallFromUIThread)); |
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); |
+ ChromeThread::PostTask( |
+ ChromeThread::UI, FROM_HERE, |
+ NewRunnableMethod(this, &CrxInstaller::ReportOverinstallFromUIThread)); |
} |
void CrxInstaller::ReportOverinstallFromUIThread() { |
- DCHECK(MessageLoop::current() == ui_loop_); |
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI)); |
NotificationService* service = NotificationService::current(); |
service->Notify(NotificationType::EXTENSION_OVERINSTALL_ERROR, |
@@ -297,13 +301,14 @@ |
} |
void CrxInstaller::ReportSuccessFromFileThread() { |
- DCHECK(MessageLoop::current() == file_loop_); |
- ui_loop_->PostTask(FROM_HERE, NewRunnableMethod(this, |
- &CrxInstaller::ReportSuccessFromUIThread)); |
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); |
+ ChromeThread::PostTask( |
+ ChromeThread::UI, FROM_HERE, |
+ NewRunnableMethod(this, &CrxInstaller::ReportSuccessFromUIThread)); |
} |
void CrxInstaller::ReportSuccessFromUIThread() { |
- DCHECK(MessageLoop::current() == ui_loop_); |
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI)); |
// If there is a client, tell the client about installation. |
if (client_.get()) |