| Index: chrome/browser/ui/webui/extensions/extension_loader_handler.cc
|
| diff --git a/chrome/browser/ui/webui/extensions/extension_loader_handler.cc b/chrome/browser/ui/webui/extensions/extension_loader_handler.cc
|
| index 0bc5aa96a702bb9b93f1828ccea8933660256001..6dbd3c9d743c2593aa7cb21230ee664a13e4d248 100644
|
| --- a/chrome/browser/ui/webui/extensions/extension_loader_handler.cc
|
| +++ b/chrome/browser/ui/webui/extensions/extension_loader_handler.cc
|
| @@ -14,6 +14,7 @@
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "chrome/browser/extensions/path_util.h"
|
| #include "chrome/browser/extensions/unpacked_installer.h"
|
| +#include "chrome/browser/extensions/zipfile_installer.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/ui/chrome_select_file_policy.h"
|
| #include "content/public/browser/browser_thread.h"
|
| @@ -218,14 +219,27 @@ void ExtensionLoaderHandler::HandleDisplayFailures(
|
|
|
| void ExtensionLoaderHandler::LoadUnpackedExtensionImpl(
|
| const base::FilePath& file_path) {
|
| - scoped_refptr<UnpackedInstaller> installer = UnpackedInstaller::Create(
|
| - ExtensionSystem::Get(profile_)->extension_service());
|
| -
|
| - // We do our own error handling, so we don't want a load failure to trigger
|
| - // a dialog.
|
| - installer->set_be_noisy_on_failure(false);
|
| -
|
| - installer->Load(file_path);
|
| + if (EndsWith(file_path.AsUTF16Unsafe(),
|
| + base::ASCIIToUTF16(".zip"),
|
| + false /* case insensitive */)) {
|
| + scoped_refptr<ZipFileInstaller> installer = ZipFileInstaller::Create(
|
| + ExtensionSystem::Get(profile_)->extension_service(), NULL);
|
| +
|
| + // We do our own error handling, so we don't want a load failure to trigger
|
| + // a dialog.
|
| + installer->set_be_noisy_on_failure(false);
|
| +
|
| + installer->LoadFromZipFile(file_path);
|
| + } else {
|
| + scoped_refptr<UnpackedInstaller> installer = UnpackedInstaller::Create(
|
| + ExtensionSystem::Get(profile_)->extension_service());
|
| +
|
| + // We do our own error handling, so we don't want a load failure to trigger
|
| + // a dialog.
|
| + installer->set_be_noisy_on_failure(false);
|
| +
|
| + installer->Load(file_path);
|
| + }
|
| }
|
|
|
| void ExtensionLoaderHandler::OnLoadFailure(const base::FilePath& file_path,
|
| @@ -284,7 +298,7 @@ void ExtensionLoaderHandler::AddFailure(
|
| scoped_ptr<base::DictionaryValue> failure(new base::DictionaryValue());
|
| failure->Set("path",
|
| new base::StringValue(prettified_path.LossyDisplayName()));
|
| - failure->Set("error", new base::StringValue(base::UTF8ToUTF16(error)));
|
| + failure->Set("reason", new base::StringValue(base::UTF8ToUTF16(error)));
|
| failure->Set("manifest", manifest_value.release());
|
| failures_.Append(failure.release());
|
|
|
|
|