diff options
-rw-r--r-- | chrome/browser/extensions/zipfile_installer.cc | 8 | ||||
-rw-r--r-- | chrome/common/extensions/chrome_utility_extensions_messages.h | 13 | ||||
-rw-r--r-- | chrome/utility/extensions/extensions_handler.cc | 17 | ||||
-rw-r--r-- | chrome/utility/extensions/extensions_handler.h | 1 | ||||
-rw-r--r-- | extensions/browser/sandboxed_unpacker.cc | 8 | ||||
-rw-r--r-- | extensions/common/extension_utility_messages.h | 22 | ||||
-rw-r--r-- | extensions/utility/utility_handler.cc | 23 | ||||
-rw-r--r-- | extensions/utility/utility_handler.h | 1 |
8 files changed, 48 insertions, 45 deletions
diff --git a/chrome/browser/extensions/zipfile_installer.cc b/chrome/browser/extensions/zipfile_installer.cc index d2f16b2..b6a68de 100644 --- a/chrome/browser/extensions/zipfile_installer.cc +++ b/chrome/browser/extensions/zipfile_installer.cc @@ -11,10 +11,10 @@ #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/unpacked_installer.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/common/extensions/chrome_utility_extensions_messages.h" #include "chrome/grit/generated_resources.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/utility_process_host.h" +#include "extensions/common/extension_utility_messages.h" #include "ui/base/l10n/l10n_util.h" using content::BrowserThread; @@ -80,7 +80,7 @@ void ZipFileInstaller::StartWorkOnIOThread(const base::FilePath& temp_dir) { host->SetName(l10n_util::GetStringUTF16( IDS_UTILITY_PROCESS_ZIP_FILE_INSTALLER_NAME)); host->SetExposedDir(temp_dir); - host->Send(new ChromeUtilityMsg_UnzipToDir(zip_path_, temp_dir)); + host->Send(new ExtensionUtilityMsg_UnzipToDir(zip_path_, temp_dir)); } void ZipFileInstaller::ReportSuccessOnUIThread( @@ -122,9 +122,9 @@ void ZipFileInstaller::OnUnzipFailed(const std::string& error) { bool ZipFileInstaller::OnMessageReceived(const IPC::Message& message) { bool handled = true; IPC_BEGIN_MESSAGE_MAP(ZipFileInstaller, message) - IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_UnzipToDir_Succeeded, + IPC_MESSAGE_HANDLER(ExtensionUtilityHostMsg_UnzipToDir_Succeeded, OnUnzipSucceeded) - IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_UnzipToDir_Failed, OnUnzipFailed) + IPC_MESSAGE_HANDLER(ExtensionUtilityHostMsg_UnzipToDir_Failed, OnUnzipFailed) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP() return handled; diff --git a/chrome/common/extensions/chrome_utility_extensions_messages.h b/chrome/common/extensions/chrome_utility_extensions_messages.h index 6613e47..95cdee3 100644 --- a/chrome/common/extensions/chrome_utility_extensions_messages.h +++ b/chrome/common/extensions/chrome_utility_extensions_messages.h @@ -75,9 +75,6 @@ IPC_STRUCT_TRAITS_END() // Utility process messages: // These are messages from the browser to the utility process. -IPC_MESSAGE_CONTROL2(ChromeUtilityMsg_UnzipToDir, - base::FilePath /* zip_file */, - base::FilePath /* dir */) #if defined(OS_WIN) // Tell the utility process to parse the iTunes preference XML file contents @@ -149,16 +146,6 @@ IPC_MESSAGE_CONTROL0(ChromeUtilityMsg_ImageWriter_Cancel) // Utility process host messages: // These are messages from the utility process to the browser. -// Reply when the utility process is done unzipping a file. |unpacked_path| -// is the directory which contains the unzipped contents. -IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_UnzipToDir_Succeeded, - base::FilePath /* unpacked_path */) - -// Reply when the utility process failed to unzip a file. |error| contains -// an error string to be reported to the user. -IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_UnzipToDir_Failed, - std::string /* error */) - #if defined(OS_WIN) // Reply after parsing the iTunes preferences XML file contents with either the // path to the iTunes directory or an empty FilePath. diff --git a/chrome/utility/extensions/extensions_handler.cc b/chrome/utility/extensions/extensions_handler.cc index ca6972d..982045f 100644 --- a/chrome/utility/extensions/extensions_handler.cc +++ b/chrome/utility/extensions/extensions_handler.cc @@ -20,7 +20,6 @@ #include "extensions/utility/unpacker.h" #include "media/base/media.h" #include "media/base/media_file_checker.h" -#include "third_party/zlib/google/zip.h" #include "ui/base/ui_base_switches.h" #if defined(OS_WIN) @@ -52,9 +51,6 @@ void ReleaseProcessIfNeeded() { content::UtilityThread::Get()->ReleaseProcessIfNeeded(); } -const char kExtensionHandlerUnzipError[] = - "Could not unzip extension for install."; - } // namespace ExtensionsHandler::ExtensionsHandler() { @@ -79,7 +75,6 @@ void ExtensionsHandler::PreSandboxStartup() { bool ExtensionsHandler::OnMessageReceived(const IPC::Message& message) { bool handled = true; IPC_BEGIN_MESSAGE_MAP(ExtensionsHandler, message) - IPC_MESSAGE_HANDLER(ChromeUtilityMsg_UnzipToDir, OnUnzipToDir) IPC_MESSAGE_HANDLER(ChromeUtilityMsg_CheckMediaFile, OnCheckMediaFile) #if defined(OS_WIN) IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParseITunesPrefXml, @@ -110,18 +105,6 @@ bool ExtensionsHandler::OnMessageReceived(const IPC::Message& message) { return handled || utility_handler_.OnMessageReceived(message); } -void ExtensionsHandler::OnUnzipToDir(const base::FilePath& zip_path, - const base::FilePath& dir) { - if (!zip::Unzip(zip_path, dir)) { - Send(new ChromeUtilityHostMsg_UnzipToDir_Failed( - std::string(kExtensionHandlerUnzipError))); - } else { - Send(new ChromeUtilityHostMsg_UnzipToDir_Succeeded(dir)); - } - - ReleaseProcessIfNeeded(); -} - void ExtensionsHandler::OnCheckMediaFile( int64 milliseconds_of_decoding, const IPC::PlatformFileForTransit& media_file) { diff --git a/chrome/utility/extensions/extensions_handler.h b/chrome/utility/extensions/extensions_handler.h index 272fee7..06f3601 100644 --- a/chrome/utility/extensions/extensions_handler.h +++ b/chrome/utility/extensions/extensions_handler.h @@ -35,7 +35,6 @@ class ExtensionsHandler : public UtilityMessageHandler { private: // IPC message handlers. - void OnUnzipToDir(const base::FilePath& zip_path, const base::FilePath& dir); void OnCheckMediaFile(int64 milliseconds_of_decoding, const IPC::PlatformFileForTransit& media_file); diff --git a/extensions/browser/sandboxed_unpacker.cc b/extensions/browser/sandboxed_unpacker.cc index 18823cb..de7267f 100644 --- a/extensions/browser/sandboxed_unpacker.cc +++ b/extensions/browser/sandboxed_unpacker.cc @@ -330,9 +330,9 @@ SandboxedUnpacker::~SandboxedUnpacker() { bool SandboxedUnpacker::OnMessageReceived(const IPC::Message& message) { bool handled = true; IPC_BEGIN_MESSAGE_MAP(SandboxedUnpacker, message) - IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_UnpackExtension_Succeeded, + IPC_MESSAGE_HANDLER(ExtensionUtilityHostMsg_UnpackExtension_Succeeded, OnUnpackExtensionSucceeded) - IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_UnpackExtension_Failed, + IPC_MESSAGE_HANDLER(ExtensionUtilityHostMsg_UnpackExtension_Failed, OnUnpackExtensionFailed) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP() @@ -363,8 +363,8 @@ void SandboxedUnpacker::StartProcessOnIOThread( // Grant the subprocess access to the entire subdir the extension file is // in, so that it can unpack to that dir. host->SetExposedDir(temp_crx_path.DirName()); - host->Send(new ChromeUtilityMsg_UnpackExtension(temp_crx_path, extension_id_, - location_, creation_flags_)); + host->Send(new ExtensionUtilityMsg_UnpackExtension( + temp_crx_path, extension_id_, location_, creation_flags_)); } void SandboxedUnpacker::OnUnpackExtensionSucceeded( diff --git a/extensions/common/extension_utility_messages.h b/extensions/common/extension_utility_messages.h index 35e37a3..8c0fd30 100644 --- a/extensions/common/extension_utility_messages.h +++ b/extensions/common/extension_utility_messages.h @@ -41,9 +41,15 @@ IPC_STRUCT_TRAITS_END() IPC_MESSAGE_CONTROL1(ExtensionUtilityMsg_ParseUpdateManifest, std::string /* xml document contents */) +// Tell the utility process to unzip the zipfile at a given path into a +// directory at the second given path. +IPC_MESSAGE_CONTROL2(ExtensionUtilityMsg_UnzipToDir, + base::FilePath /* zip_file */, + base::FilePath /* dir */) + // Tells the utility process to unpack the given extension file in its // directory and verify that it is valid. -IPC_MESSAGE_CONTROL4(ChromeUtilityMsg_UnpackExtension, +IPC_MESSAGE_CONTROL4(ExtensionUtilityMsg_UnpackExtension, base::FilePath /* extension_filename */, std::string /* extension_id */, int /* Manifest::Location */, @@ -63,6 +69,16 @@ IPC_MESSAGE_CONTROL1(ExtensionUtilityHostMsg_ParseUpdateManifest_Succeeded, IPC_MESSAGE_CONTROL1(ExtensionUtilityHostMsg_ParseUpdateManifest_Failed, std::string /* error_message, if any */) +// Reply when the utility process is done unzipping a file. |unpacked_path| +// is the directory which contains the unzipped contents. +IPC_MESSAGE_CONTROL1(ExtensionUtilityHostMsg_UnzipToDir_Succeeded, + base::FilePath /* unpacked_path */) + +// Reply when the utility process failed to unzip a file. |error| contains +// an error string to be reported to the user. +IPC_MESSAGE_CONTROL1(ExtensionUtilityHostMsg_UnzipToDir_Failed, + std::string /* error */) + // Reply when the utility process is done unpacking an extension. |manifest| // is the parsed manifest.json file. // The unpacker should also have written out files containing the decoded @@ -70,10 +86,10 @@ IPC_MESSAGE_CONTROL1(ExtensionUtilityHostMsg_ParseUpdateManifest_Failed, // DecodedImages struct into a file named kDecodedImagesFilename in the // directory that was passed in. This is done because the data is too large to // pass over IPC. -IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_UnpackExtension_Succeeded, +IPC_MESSAGE_CONTROL1(ExtensionUtilityHostMsg_UnpackExtension_Succeeded, base::DictionaryValue /* manifest */) // Reply when the utility process has failed while unpacking an extension. // |error_message| is a user-displayable explanation of what went wrong. -IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_UnpackExtension_Failed, +IPC_MESSAGE_CONTROL1(ExtensionUtilityHostMsg_UnpackExtension_Failed, base::string16 /* error_message, if any */) diff --git a/extensions/utility/utility_handler.cc b/extensions/utility/utility_handler.cc index 3add93e..1620337 100644 --- a/extensions/utility/utility_handler.cc +++ b/extensions/utility/utility_handler.cc @@ -16,6 +16,7 @@ #include "extensions/utility/unpacker.h" #include "ipc/ipc_message.h" #include "ipc/ipc_message_macros.h" +#include "third_party/zlib/google/zip.h" #include "ui/base/ui_base_switches.h" namespace extensions { @@ -30,6 +31,9 @@ void ReleaseProcessIfNeeded() { content::UtilityThread::Get()->ReleaseProcessIfNeeded(); } +const char kExtensionHandlerUnzipError[] = + "Could not unzip extension for install."; + } // namespace UtilityHandler::UtilityHandler() { @@ -49,9 +53,10 @@ void UtilityHandler::UtilityThreadStarted() { bool UtilityHandler::OnMessageReceived(const IPC::Message& message) { bool handled = true; IPC_BEGIN_MESSAGE_MAP(UtilityHandler, message) - IPC_MESSAGE_HANDLER(ChromeUtilityMsg_UnpackExtension, OnUnpackExtension) IPC_MESSAGE_HANDLER(ExtensionUtilityMsg_ParseUpdateManifest, OnParseUpdateManifest) + IPC_MESSAGE_HANDLER(ExtensionUtilityMsg_UnzipToDir, OnUnzipToDir) + IPC_MESSAGE_HANDLER(ExtensionUtilityMsg_UnpackExtension, OnUnpackExtension) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP() return handled; @@ -69,6 +74,18 @@ void UtilityHandler::OnParseUpdateManifest(const std::string& xml) { ReleaseProcessIfNeeded(); } +void UtilityHandler::OnUnzipToDir(const base::FilePath& zip_path, + const base::FilePath& dir) { + if (!zip::Unzip(zip_path, dir)) { + Send(new ExtensionUtilityHostMsg_UnzipToDir_Failed( + std::string(kExtensionHandlerUnzipError))); + } else { + Send(new ExtensionUtilityHostMsg_UnzipToDir_Succeeded(dir)); + } + + ReleaseProcessIfNeeded(); +} + void UtilityHandler::OnUnpackExtension( const base::FilePath& extension_path, const std::string& extension_id, @@ -83,10 +100,10 @@ void UtilityHandler::OnUnpackExtension( creation_flags); if (unpacker.Run() && unpacker.DumpImagesToFile() && unpacker.DumpMessageCatalogsToFile()) { - Send(new ChromeUtilityHostMsg_UnpackExtension_Succeeded( + Send(new ExtensionUtilityHostMsg_UnpackExtension_Succeeded( *unpacker.parsed_manifest())); } else { - Send(new ChromeUtilityHostMsg_UnpackExtension_Failed( + Send(new ExtensionUtilityHostMsg_UnpackExtension_Failed( unpacker.error_message())); } diff --git a/extensions/utility/utility_handler.h b/extensions/utility/utility_handler.h index 89a81d6..d3f0b6c 100644 --- a/extensions/utility/utility_handler.h +++ b/extensions/utility/utility_handler.h @@ -33,6 +33,7 @@ class UtilityHandler { private: // IPC message handlers. void OnParseUpdateManifest(const std::string& xml); + void OnUnzipToDir(const base::FilePath& zip_path, const base::FilePath& dir); void OnUnpackExtension(const base::FilePath& extension_path, const std::string& extension_id, int location, int creation_flags); |