| Index: chrome/browser/extensions/sandboxed_extension_unpacker.cc
|
| diff --git a/chrome/browser/extensions/sandboxed_extension_unpacker.cc b/chrome/browser/extensions/sandboxed_extension_unpacker.cc
|
| index 8048ff27de7d4552843195ea7e2428167a5cc500..46a838291d45d4962a0dd083a319c08482581fb6 100644
|
| --- a/chrome/browser/extensions/sandboxed_extension_unpacker.cc
|
| +++ b/chrome/browser/extensions/sandboxed_extension_unpacker.cc
|
| @@ -28,11 +28,15 @@ const char SandboxedExtensionUnpacker::kExtensionHeaderMagic[] = "Cr24";
|
| SandboxedExtensionUnpacker::SandboxedExtensionUnpacker(
|
| const FilePath& crx_path, ResourceDispatcherHost* rdh,
|
| SandboxedExtensionUnpackerClient* client)
|
| - : crx_path_(crx_path), client_loop_(MessageLoop::current()), rdh_(rdh),
|
| - client_(client), got_response_(false) {
|
| + : crx_path_(crx_path), file_loop_(NULL), rdh_(rdh), client_(client),
|
| + got_response_(false) {
|
| }
|
|
|
| void SandboxedExtensionUnpacker::Start() {
|
| + // We assume that we are started on the thread that the client wants us to do
|
| + // file IO on.
|
| + file_loop_ = MessageLoop::current();
|
| +
|
| // Create a temporary directory to work in.
|
| if (!temp_dir_.CreateUniqueTempDir()) {
|
| ReportFailure("Could not create temporary directory.");
|
| @@ -72,13 +76,13 @@ void SandboxedExtensionUnpacker::Start() {
|
|
|
| void SandboxedExtensionUnpacker::StartProcessOnIOThread(
|
| const FilePath& temp_crx_path) {
|
| - UtilityProcessHost* host = new UtilityProcessHost(rdh_, this,
|
| - MessageLoop::current());
|
| + UtilityProcessHost* host = new UtilityProcessHost(rdh_, this, file_loop_);
|
| host->StartExtensionUnpacker(temp_crx_path);
|
| }
|
|
|
| void SandboxedExtensionUnpacker::OnUnpackExtensionSucceeded(
|
| const DictionaryValue& manifest) {
|
| + DCHECK(file_loop_ == MessageLoop::current());
|
| got_response_ = true;
|
|
|
| ExtensionUnpacker::DecodedImages images;
|
| @@ -164,6 +168,7 @@ void SandboxedExtensionUnpacker::OnUnpackExtensionSucceeded(
|
|
|
| void SandboxedExtensionUnpacker::OnUnpackExtensionFailed(
|
| const std::string& error) {
|
| + DCHECK(file_loop_ == MessageLoop::current());
|
| got_response_ = true;
|
| ReportFailure(error);
|
| }
|
|
|