Index: chrome/browser/ui/webui/extensions/install_extension_handler.cc |
diff --git a/chrome/browser/ui/webui/extensions/install_extension_handler.cc b/chrome/browser/ui/webui/extensions/install_extension_handler.cc |
index b0aa4f94a006cacc495c311a877484c613a87423..e00980fcc7482c0e57f2aa488b8e971a5bbc2a14 100644 |
--- a/chrome/browser/ui/webui/extensions/install_extension_handler.cc |
+++ b/chrome/browser/ui/webui/extensions/install_extension_handler.cc |
@@ -5,6 +5,7 @@ |
#include "chrome/browser/ui/webui/extensions/install_extension_handler.h" |
#include "base/bind.h" |
+#include "base/string_util.h" |
#include "base/utf_string_conversions.h" |
#include "chrome/browser/extensions/crx_installer.h" |
#include "chrome/browser/extensions/extension_install_ui.h" |
@@ -16,6 +17,7 @@ |
#include "content/public/browser/web_contents_view.h" |
#include "content/public/browser/web_ui.h" |
#include "grit/generated_resources.h" |
+#include "net/base/net_util.h" |
#include "ui/base/l10n/l10n_util.h" |
#include "webkit/glue/webdropdata.h" |
@@ -83,7 +85,24 @@ void InstallExtensionHandler::HandleInstallMessage(const ListValue* args) { |
ExtensionSystem::Get(profile)->extension_service(), |
new ExtensionInstallUI(profile))); |
crx_installer->set_allow_off_store_install(true); |
- crx_installer->InstallCrx(file_to_install_); |
+ |
+ const bool kCaseSensitive = false; |
+ |
+ // Have to use EndsWith() because FilePath::Extension() would return ".js" for |
+ // "foo.user.js". |
+ if (EndsWith(file_to_install_.BaseName().value(), |
+ FILE_PATH_LITERAL(".user.js"), |
+ kCaseSensitive)) { |
+ crx_installer->InstallUserScript( |
+ file_to_install_, |
+ net::FilePathToFileURL(file_to_install_)); |
+ } else if (EndsWith(file_to_install_.BaseName().value(), |
+ FILE_PATH_LITERAL(".crx"), |
+ kCaseSensitive)) { |
+ crx_installer->InstallCrx(file_to_install_); |
+ } else { |
+ CHECK(false); |
+ } |
file_to_install_.clear(); |
} |