| Index: chrome/browser/browser_init.cc
|
| diff --git a/chrome/browser/browser_init.cc b/chrome/browser/browser_init.cc
|
| index 12adeb0012c72e63df7068dfd9754a2db691a031..a65c79ee137c76be5415b46cb8d610a9c6aed0cc 100644
|
| --- a/chrome/browser/browser_init.cc
|
| +++ b/chrome/browser/browser_init.cc
|
| @@ -4,6 +4,9 @@
|
|
|
| #include "chrome/browser/browser_init.h"
|
|
|
| +#if defined(OS_WIN)
|
| +#include "app/win_util.h"
|
| +#endif
|
| #include "app/l10n_util.h"
|
| #include "app/resource_bundle.h"
|
| #include "base/basictypes.h"
|
| @@ -11,6 +14,7 @@
|
| #include "base/compiler_specific.h"
|
| #include "base/event_recorder.h"
|
| #include "base/file_path.h"
|
| +#include "base/file_util.h"
|
| #include "base/histogram.h"
|
| #include "base/path_service.h"
|
| #include "base/string_util.h"
|
| @@ -21,6 +25,9 @@
|
| #include "chrome/browser/browser_list.h"
|
| #include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/browser_window.h"
|
| +#if defined(OS_WIN) // TODO(port)
|
| +#include "chrome/browser/extensions/extension_creator.h"
|
| +#endif
|
| #include "chrome/browser/extensions/extensions_service.h"
|
| #include "chrome/browser/extensions/user_script_master.h"
|
| #include "chrome/browser/first_run.h"
|
| @@ -689,6 +696,43 @@ bool BrowserInit::ProcessCmdLineImpl(const CommandLine& command_line,
|
| profile->GetExtensionsService()->LoadExtension(path);
|
| profile->GetUserScriptMaster()->AddWatchedPath(path);
|
| }
|
| +
|
| + if (command_line.HasSwitch(switches::kPackExtension)) {
|
| + // Input Paths.
|
| + FilePath src_dir = FilePath::FromWStringHack(command_line.GetSwitchValue(
|
| + switches::kPackExtension));
|
| + FilePath private_key_path;
|
| + if (command_line.HasSwitch(switches::kPackExtensionKey)) {
|
| + private_key_path = FilePath::FromWStringHack(
|
| + command_line.GetSwitchValue(switches::kPackExtensionKey));
|
| + }
|
| +
|
| + // Output Paths.
|
| + FilePath output(src_dir.DirName().Append(src_dir.BaseName().value()));
|
| + FilePath crx_path(output);
|
| + crx_path = crx_path.ReplaceExtension(chrome::kExtensionFileExtension);
|
| + FilePath output_private_key_path;
|
| + if (private_key_path.empty()) {
|
| + output_private_key_path = FilePath(output);
|
| + output_private_key_path =
|
| + output_private_key_path.ReplaceExtension(FILE_PATH_LITERAL("pem"));
|
| + }
|
| +
|
| + // TODO(port): Creation & running is removed from mac & linux because
|
| + // ExtensionCreator depends on base/crypto/rsa_private_key and
|
| + // base/crypto/signature_creator, both of which only have windows
|
| + // implementations.
|
| +#if defined(OS_WIN)
|
| + scoped_ptr<ExtensionCreator> creator(new ExtensionCreator());
|
| + if (!creator->Run(src_dir, crx_path, private_key_path,
|
| + output_private_key_path)) {
|
| + win_util::MessageBox(NULL, UTF8ToWide(creator->error_message()),
|
| + L"Extension Packaging Error", MB_OK | MB_SETFOREGROUND);
|
| + return false;
|
| + }
|
| +#endif // defined(OS_WIN)
|
| + return false;
|
| + }
|
| }
|
|
|
| // Allow the command line to override the persisted setting of home page.
|
|
|