| Index: chrome/utility/extensions/extensions_handler.cc
|
| diff --git a/chrome/utility/extensions/extensions_handler.cc b/chrome/utility/extensions/extensions_handler.cc
|
| index 6aa0c2ef6e229feceb4ae2b808daf63ecae88d80..25f65a77707dfe1cd13deb206666dc7bcbb0901e 100644
|
| --- a/chrome/utility/extensions/extensions_handler.cc
|
| +++ b/chrome/utility/extensions/extensions_handler.cc
|
| @@ -21,6 +21,7 @@
|
| #include "extensions/common/update_manifest.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,6 +53,9 @@ void ReleaseProcessIfNeeded() {
|
| content::UtilityThread::Get()->ReleaseProcessIfNeeded();
|
| }
|
|
|
| +const char kExtensionHandlerUnzipError[] =
|
| + "Could not unzip extension for install.";
|
| +
|
| } // namespace
|
|
|
| ExtensionsHandler::ExtensionsHandler() {}
|
| @@ -81,6 +85,7 @@ bool ExtensionsHandler::OnMessageReceived(const IPC::Message& message) {
|
| bool handled = true;
|
| IPC_BEGIN_MESSAGE_MAP(ExtensionsHandler, message)
|
| IPC_MESSAGE_HANDLER(ChromeUtilityMsg_UnpackExtension, OnUnpackExtension)
|
| + IPC_MESSAGE_HANDLER(ChromeUtilityMsg_UnzipToDir, OnUnzipToDir)
|
| IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParseUpdateManifest,
|
| OnParseUpdateManifest)
|
| IPC_MESSAGE_HANDLER(ChromeUtilityMsg_DecodeImageBase64, OnDecodeImageBase64)
|
| @@ -139,6 +144,18 @@ void ExtensionsHandler::OnUnpackExtension(
|
| ReleaseProcessIfNeeded();
|
| }
|
|
|
| +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::OnParseUpdateManifest(const std::string& xml) {
|
| UpdateManifest manifest;
|
| if (!manifest.Parse(xml)) {
|
|
|