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..f671ce90b7387915e18171e03cb9f1482d785282 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()); |
+ |
+ // 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))); |
elijahtaylor1
2014/07/31 17:26:28
this is a bug fix for the unpacked extension loade
|
failure->Set("manifest", manifest_value.release()); |
failures_.Append(failure.release()); |