Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/extensions/sandboxed_extension_unpacker.h" | 5 #include "chrome/browser/extensions/sandboxed_extension_unpacker.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "base/base64.h" | 9 #include "base/base64.h" |
| 10 #include "base/crypto/signature_verifier.h" | 10 #include "base/crypto/signature_verifier.h" |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 33 #include "ui/gfx/codec/png_codec.h" | 33 #include "ui/gfx/codec/png_codec.h" |
| 34 | 34 |
| 35 const char SandboxedExtensionUnpacker::kExtensionHeaderMagic[] = "Cr24"; | 35 const char SandboxedExtensionUnpacker::kExtensionHeaderMagic[] = "Cr24"; |
| 36 | 36 |
| 37 SandboxedExtensionUnpacker::SandboxedExtensionUnpacker( | 37 SandboxedExtensionUnpacker::SandboxedExtensionUnpacker( |
| 38 const FilePath& crx_path, | 38 const FilePath& crx_path, |
| 39 ResourceDispatcherHost* rdh, | 39 ResourceDispatcherHost* rdh, |
| 40 SandboxedExtensionUnpackerClient* client) | 40 SandboxedExtensionUnpackerClient* client) |
| 41 : crx_path_(crx_path), | 41 : crx_path_(crx_path), |
| 42 thread_identifier_(BrowserThread::ID_COUNT), | 42 thread_identifier_(BrowserThread::ID_COUNT), |
| 43 rdh_(rdh), client_(client), got_response_(false) { | 43 rdh_(rdh), client_(client), got_response_(false) { |
|
jam
2011/04/06 16:28:36
looks like this isn't needed anymore
willchan no longer on Chromium
2011/04/06 16:37:25
It's actually used to determine if we're in a unit
| |
| 44 } | 44 } |
| 45 | 45 |
| 46 bool SandboxedExtensionUnpacker::CreateTempDirectory() { | 46 bool SandboxedExtensionUnpacker::CreateTempDirectory() { |
| 47 CHECK(BrowserThread::GetCurrentThreadIdentifier(&thread_identifier_)); | 47 CHECK(BrowserThread::GetCurrentThreadIdentifier(&thread_identifier_)); |
| 48 | 48 |
| 49 FilePath user_data_temp_dir = extension_file_util::GetUserDataTempDir(); | 49 FilePath user_data_temp_dir = extension_file_util::GetUserDataTempDir(); |
| 50 if (user_data_temp_dir.empty()) { | 50 if (user_data_temp_dir.empty()) { |
| 51 ReportFailure( | 51 ReportFailure( |
| 52 COULD_NOT_GET_TEMP_DIRECTORY, | 52 COULD_NOT_GET_TEMP_DIRECTORY, |
| 53 l10n_util::GetStringFUTF8( | 53 l10n_util::GetStringFUTF8( |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 139 SandboxedExtensionUnpacker::~SandboxedExtensionUnpacker() { | 139 SandboxedExtensionUnpacker::~SandboxedExtensionUnpacker() { |
| 140 base::FileUtilProxy::Delete( | 140 base::FileUtilProxy::Delete( |
| 141 BrowserThread::GetMessageLoopProxyForThread(thread_identifier_), | 141 BrowserThread::GetMessageLoopProxyForThread(thread_identifier_), |
| 142 temp_dir_.Take(), | 142 temp_dir_.Take(), |
| 143 true, | 143 true, |
| 144 NULL); | 144 NULL); |
| 145 } | 145 } |
| 146 | 146 |
| 147 void SandboxedExtensionUnpacker::StartProcessOnIOThread( | 147 void SandboxedExtensionUnpacker::StartProcessOnIOThread( |
| 148 const FilePath& temp_crx_path) { | 148 const FilePath& temp_crx_path) { |
| 149 UtilityProcessHost* host = new UtilityProcessHost( | 149 UtilityProcessHost* host = new UtilityProcessHost(this, thread_identifier_); |
| 150 rdh_, this, thread_identifier_); | |
| 151 host->StartExtensionUnpacker(temp_crx_path); | 150 host->StartExtensionUnpacker(temp_crx_path); |
| 152 } | 151 } |
| 153 | 152 |
| 154 void SandboxedExtensionUnpacker::OnUnpackExtensionSucceeded( | 153 void SandboxedExtensionUnpacker::OnUnpackExtensionSucceeded( |
| 155 const DictionaryValue& manifest) { | 154 const DictionaryValue& manifest) { |
| 156 // Skip check for unittests. | 155 // Skip check for unittests. |
| 157 if (thread_identifier_ != BrowserThread::ID_COUNT) | 156 if (thread_identifier_ != BrowserThread::ID_COUNT) |
| 158 CHECK(BrowserThread::CurrentlyOn(thread_identifier_)); | 157 CHECK(BrowserThread::CurrentlyOn(thread_identifier_)); |
| 159 got_response_ = true; | 158 got_response_ = true; |
| 160 | 159 |
| (...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 582 ERROR_SAVING_CATALOG, | 581 ERROR_SAVING_CATALOG, |
| 583 l10n_util::GetStringFUTF8( | 582 l10n_util::GetStringFUTF8( |
| 584 IDS_EXTENSION_PACKAGE_INSTALL_ERROR, | 583 IDS_EXTENSION_PACKAGE_INSTALL_ERROR, |
| 585 ASCIIToUTF16("ERROR_SAVING_CATALOG"))); | 584 ASCIIToUTF16("ERROR_SAVING_CATALOG"))); |
| 586 return false; | 585 return false; |
| 587 } | 586 } |
| 588 } | 587 } |
| 589 | 588 |
| 590 return true; | 589 return true; |
| 591 } | 590 } |
| OLD | NEW |