From 66d6d400d539f526671920968970d02c03f70148 Mon Sep 17 00:00:00 2001 From: "rafaelw@chromium.org" Date: Wed, 7 Oct 2009 22:26:07 +0000 Subject: Reland: HTML Pack Extension Dialog / Linux & Mac Packaging Support. Part 1. original issue: http://codereview.chromium.org/207062 Attempting to land this patch earlier resulted in compile failures on linux valgrind and linux perf that I was unable to reproduce. I am splitting this into two pieces. This piece adds extension packing support via --pack-extension for mac & linux. BUG=20668,20669 Review URL: http://codereview.chromium.org/266007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28325 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/browser_init.cc | 27 ++++++++++++++-------- .../extensions/extensions_service_unittest.cc | 2 -- chrome/browser/extensions/pack_extension_job.h | 8 ++++++- chrome/browser/net/chrome_url_request_context.cc | 3 +-- chrome/chrome.gyp | 7 ------ 5 files changed, 25 insertions(+), 22 deletions(-) (limited to 'chrome') diff --git a/chrome/browser/browser_init.cc b/chrome/browser/browser_init.cc index b551bcf..ce0c7f4 100644 --- a/chrome/browser/browser_init.cc +++ b/chrome/browser/browser_init.cc @@ -28,9 +28,7 @@ #include "chrome/browser/browser_process.h" #include "chrome/browser/browser_window.h" #include "chrome/browser/defaults.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" @@ -367,6 +365,20 @@ GURL GetWelcomePageURL() { return GURL(welcome_url); } +void ShowPackExtensionMessage(const std::wstring caption, + const std::wstring message) { +#if defined(OS_WIN) + win_util::MessageBox(NULL, message, caption, MB_OK | MB_SETFOREGROUND); +#else + // Just send caption & text to stdout on mac & linux. + std::string out_text = WideToASCII(caption); + out_text.append("\n\n"); + out_text.append(WideToASCII(message)); + out_text.append("\n"); + printf(out_text.c_str()); +#endif +} + } // namespace // static @@ -751,7 +763,6 @@ bool BrowserInit::ProcessCmdLineImpl(const CommandLine& command_line, // 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 creator(new ExtensionCreator()); if (creator->Run(src_dir, crx_path, private_key_path, output_private_key_path)) { @@ -769,16 +780,12 @@ bool BrowserInit::ProcessCmdLineImpl(const CommandLine& command_line, message = StringPrintf(L"Created the extension:\n\n%ls", crx_path.ToWStringHack().c_str()); } - win_util::MessageBox(NULL, message, L"Extension Packaging Success", - MB_OK | MB_SETFOREGROUND); + ShowPackExtensionMessage(L"Extension Packaging Success", message); } else { - win_util::MessageBox(NULL, UTF8ToWide(creator->error_message()), - L"Extension Packaging Error", MB_OK | MB_SETFOREGROUND); + ShowPackExtensionMessage(L"Extension Packaging Error", + UTF8ToWide(creator->error_message())); return false; } -#else - NOTIMPLEMENTED() << " extension creation not implemented on POSIX."; -#endif // defined(OS_WIN) return false; } } diff --git a/chrome/browser/extensions/extensions_service_unittest.cc b/chrome/browser/extensions/extensions_service_unittest.cc index fa257e0..57ae6f6 100644 --- a/chrome/browser/extensions/extensions_service_unittest.cc +++ b/chrome/browser/extensions/extensions_service_unittest.cc @@ -727,7 +727,6 @@ TEST_F(ExtensionsServiceTest, InstallExtension) { // TODO(erikkay): add tests for upgrade cases. } -#if defined(OS_WIN) // TODO(port) // Test Packaging and installing an extension. // TODO(rafaelw): add more tests for failure cases. TEST_F(ExtensionsServiceTest, PackExtension) { @@ -791,7 +790,6 @@ TEST_F(ExtensionsServiceTest, PackExtensionOpenSSLKey) { file_util::Delete(crx_path, false); } -#endif // defined(OS_WIN) TEST_F(ExtensionsServiceTest, InstallTheme) { InitializeEmptyExtensionsService(); diff --git a/chrome/browser/extensions/pack_extension_job.h b/chrome/browser/extensions/pack_extension_job.h index ec00f21..8c3cf26 100644 --- a/chrome/browser/extensions/pack_extension_job.h +++ b/chrome/browser/extensions/pack_extension_job.h @@ -2,6 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#ifndef CHROME_BROWSER_EXTENSIONS_PACK_EXTENSION_JOB_UI_H_ +#define CHROME_BROWSER_EXTENSIONS_PACK_EXTENSION_JOB_UI_H_ + #include #include "base/file_path.h" @@ -11,7 +14,7 @@ class MessageLoop; // Manages packing an extension on the file thread and reporting the result // back to the UI. -class PackExtensionJob : public base::RefCounted { +class PackExtensionJob : public base::RefCountedThreadSafe { public: // Interface for people who want to use PackExtensionJob to implement. @@ -46,3 +49,6 @@ class PackExtensionJob : public base::RefCounted { DISALLOW_COPY_AND_ASSIGN(PackExtensionJob); }; + +#endif // CHROME_BROWSER_EXTENSIONS_PACK_EXTENSION_JOB_UI_H_ + diff --git a/chrome/browser/net/chrome_url_request_context.cc b/chrome/browser/net/chrome_url_request_context.cc index 2c68419..2918b1f 100644 --- a/chrome/browser/net/chrome_url_request_context.cc +++ b/chrome/browser/net/chrome_url_request_context.cc @@ -520,9 +520,8 @@ void ChromeURLRequestContext::OnDefaultCharsetChange( void ChromeURLRequestContext::OnNewExtensions(const std::string& id, const FilePath& path) { - if (!is_off_the_record_) { + if (!is_off_the_record_) extension_paths_[id] = path; - } } void ChromeURLRequestContext::OnUnloadedExtension(const std::string& id) { diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp index fb39caf..c2b4ce5 100755 --- a/chrome/chrome.gyp +++ b/chrome/chrome.gyp @@ -2753,11 +2753,6 @@ ['exclude', '^browser/tab_contents/tab_contents_view_gtk.h'], ['exclude', '^browser/tab_contents/render_view_context_menu_gtk.cc'], ['exclude', '^browser/tab_contents/render_view_context_menu_gtk.h'], - # This compiles but has Linux shared build linking issues due to - # missing rsa_private_key functions. - ['exclude', '^browser/extensions/extension_creator.cc'], - # This compiles but it needs extension_creator. - ['exclude', '^browser/extensions/pack_extension_job.cc'], # Overlaps with browser/views/frame/browser_view.cc ['exclude', '^browser/browser_list_gtk.cc'], ], @@ -2845,8 +2840,6 @@ 'browser/bookmarks/bookmark_menu_controller.h', 'browser/browser_accessibility.cc', 'browser/browser_accessibility_manager.cc', - 'browser/extensions/extension_creator.cc', - 'browser/extensions/pack_extension_job.cc', 'browser/dom_ui/html_dialog_contents.cc', 'browser/external_tab_container.cc', 'browser/google_update.cc', -- cgit v1.1