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 4f8754341e2a1270d583552be2a8bc5c8d6fde45..72906fca61ae58936ee741f4ad72a20e1ee6faa1 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( |
@@ -290,7 +304,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))); |
Devlin
2014/08/11 15:58:01
This looks like a merge conflict resolution gone w
|
failure->Set("manifest", manifest_value.release()); |
failures_.Append(failure.release()); |