summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authordhg@chromium.org <dhg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-29 21:44:24 +0000
committerdhg@chromium.org <dhg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-29 21:44:24 +0000
commit14a000d1e7ced20cb4866a727323e4ea99f78bf7 (patch)
treebdee87d2b78ec19c5f64cb2121f61a5d46d12a0b /chrome/browser
parent58e1d9a47237870c128fe00fbd2e94e96319ffed (diff)
downloadchromium_src-14a000d1e7ced20cb4866a727323e4ea99f78bf7.zip
chromium_src-14a000d1e7ced20cb4866a727323e4ea99f78bf7.tar.gz
chromium_src-14a000d1e7ced20cb4866a727323e4ea99f78bf7.tar.bz2
Changing linux platform for chromeos. This involved moving platform_util and extension_error_reporter to browser, so that the UIs surrounding them can be in the browser.
BUG=none TEST=none Review URL: http://codereview.chromium.org/1705009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45986 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/automation/automation_provider.cc2
-rw-r--r--chrome/browser/browser.cc2
-rw-r--r--chrome/browser/browser_about_handler.cc2
-rw-r--r--chrome/browser/browser_uitest.cc2
-rw-r--r--chrome/browser/cocoa/about_window_controller.mm2
-rw-r--r--chrome/browser/diagnostics/recon_diagnostics.cc2
-rw-r--r--chrome/browser/download/download_file.cc2
-rw-r--r--chrome/browser/download/download_manager.cc2
-rw-r--r--chrome/browser/download/save_file_manager.cc2
-rw-r--r--chrome/browser/download/save_package.cc2
-rw-r--r--chrome/browser/extensions/crx_installer.cc2
-rw-r--r--chrome/browser/extensions/extension_browsertest.cc2
-rw-r--r--chrome/browser/extensions/extension_browsertests_misc.cc2
-rw-r--r--chrome/browser/extensions/extension_devtools_browsertests.cc2
-rw-r--r--chrome/browser/extensions/extension_error_reporter.cc71
-rw-r--r--chrome/browser/extensions/extension_error_reporter.h50
-rw-r--r--chrome/browser/extensions/extension_host.cc2
-rw-r--r--chrome/browser/extensions/extension_install_ui.cc2
-rw-r--r--chrome/browser/extensions/extension_process_manager_unittest.cc2
-rw-r--r--chrome/browser/extensions/extension_shelf_model_browsertest.cc2
-rw-r--r--chrome/browser/extensions/extension_updater.cc2
-rw-r--r--chrome/browser/extensions/extension_updater_unittest.cc2
-rw-r--r--chrome/browser/extensions/extensions_service.cc2
-rw-r--r--chrome/browser/extensions/extensions_service_unittest.cc2
-rw-r--r--chrome/browser/extensions/extensions_ui.cc2
-rw-r--r--chrome/browser/external_protocol_handler.cc2
-rw-r--r--chrome/browser/gtk/about_chrome_dialog.cc2
-rw-r--r--chrome/browser/gtk/first_run_dialog.cc2
-rw-r--r--chrome/browser/gtk/focus_store_gtk.cc2
-rw-r--r--chrome/browser/gtk/tabs/dragged_tab_controller_gtk.cc2
-rw-r--r--chrome/browser/platform_util.h51
-rw-r--r--chrome/browser/platform_util_chromeos.cc86
-rw-r--r--chrome/browser/platform_util_common_linux.cc83
-rw-r--r--chrome/browser/platform_util_linux.cc68
-rw-r--r--chrome/browser/platform_util_mac.mm89
-rw-r--r--chrome/browser/platform_util_win.cc173
-rw-r--r--chrome/browser/profile.cc3
-rw-r--r--chrome/browser/renderer_host/test/render_view_host_manager_browsertest.cc2
-rw-r--r--chrome/browser/ssl/ssl_add_cert_handler.cc2
-rw-r--r--chrome/browser/tab_contents/render_view_context_menu.cc2
-rw-r--r--chrome/browser/tab_contents/tab_contents.cc3
-rw-r--r--chrome/browser/views/about_chrome_view.cc2
-rw-r--r--chrome/browser/views/infobars/extension_infobar.cc2
-rw-r--r--chrome/browser/views/location_bar/page_action_image_view.cc4
44 files changed, 707 insertions, 40 deletions
diff --git a/chrome/browser/automation/automation_provider.cc b/chrome/browser/automation/automation_provider.cc
index a878fca..f46038a 100644
--- a/chrome/browser/automation/automation_provider.cc
+++ b/chrome/browser/automation/automation_provider.cc
@@ -59,6 +59,7 @@
#include "chrome/browser/login_prompt.h"
#include "chrome/browser/net/url_request_context_getter.h"
#include "chrome/browser/net/url_request_mock_util.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/browser/pref_service.h"
#include "chrome/browser/profile_manager.h"
#include "chrome/browser/renderer_host/render_process_host.h"
@@ -72,7 +73,6 @@
#include "chrome/common/extensions/extension.h"
#include "chrome/common/json_value_serializer.h"
#include "chrome/common/notification_service.h"
-#include "chrome/common/platform_util.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "chrome/test/automation/automation_messages.h"
diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc
index 0a6bfe5..6513680 100644
--- a/chrome/browser/browser.cc
+++ b/chrome/browser/browser.cc
@@ -52,6 +52,7 @@
#include "chrome/browser/net/browser_url_util.h"
#include "chrome/browser/net/url_fixer_upper.h"
#include "chrome/browser/options_window.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/browser/pref_service.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/renderer_host/render_view_host.h"
@@ -74,7 +75,6 @@
#include "chrome/common/extensions/extension.h"
#include "chrome/common/notification_service.h"
#include "chrome/common/page_transition_types.h"
-#include "chrome/common/platform_util.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "grit/chromium_strings.h"
diff --git a/chrome/browser/browser_about_handler.cc b/chrome/browser/browser_about_handler.cc
index 13950f7..e3f8dbd6 100644
--- a/chrome/browser/browser_about_handler.cc
+++ b/chrome/browser/browser_about_handler.cc
@@ -30,6 +30,7 @@
#include "chrome/browser/memory_details.h"
#include "chrome/browser/metrics/histogram_synchronizer.h"
#include "chrome/browser/net/dns_global.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/browser/pref_service.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/profile_manager.h"
@@ -38,7 +39,6 @@
#include "chrome/browser/sync/profile_sync_service.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/jstemplate_builder.h"
-#include "chrome/common/platform_util.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/render_messages.h"
#include "chrome/common/url_constants.h"
diff --git a/chrome/browser/browser_uitest.cc b/chrome/browser/browser_uitest.cc
index 08a6a9c4..8efef73 100644
--- a/chrome/browser/browser_uitest.cc
+++ b/chrome/browser/browser_uitest.cc
@@ -9,9 +9,9 @@
#include "base/test/test_file_util.h"
#include "base/values.h"
#include "chrome/app/chrome_dll_resource.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/chrome_constants.h"
-#include "chrome/common/platform_util.h"
#include "chrome/common/pref_names.h"
#include "chrome/test/automation/browser_proxy.h"
#include "chrome/test/automation/tab_proxy.h"
diff --git a/chrome/browser/cocoa/about_window_controller.mm b/chrome/browser/cocoa/about_window_controller.mm
index 6a2537e..d03d5de 100644
--- a/chrome/browser/cocoa/about_window_controller.mm
+++ b/chrome/browser/cocoa/about_window_controller.mm
@@ -11,10 +11,10 @@
#include "base/string_util.h"
#include "base/sys_string_conversions.h"
#include "chrome/browser/browser_list.h"
+#include "chrome/browser/platform_util.h"
#import "chrome/browser/cocoa/background_tile_view.h"
#import "chrome/browser/cocoa/keystone_glue.h"
#include "chrome/browser/cocoa/restart_browser.h"
-#include "chrome/common/platform_util.h"
#include "chrome/common/url_constants.h"
#include "grit/chromium_strings.h"
#include "grit/generated_resources.h"
diff --git a/chrome/browser/diagnostics/recon_diagnostics.cc b/chrome/browser/diagnostics/recon_diagnostics.cc
index c32900c..0faef4b 100644
--- a/chrome/browser/diagnostics/recon_diagnostics.cc
+++ b/chrome/browser/diagnostics/recon_diagnostics.cc
@@ -14,8 +14,8 @@
#include "base/path_service.h"
#include "chrome/app/chrome_version_info.h"
#include "chrome/browser/diagnostics/diagnostics_test.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/common/chrome_paths.h"
-#include "chrome/common/platform_util.h"
#include "chrome/common/json_value_serializer.h"
#if defined(OS_WIN)
diff --git a/chrome/browser/download/download_file.cc b/chrome/browser/download/download_file.cc
index 4c5f42d..6a9215f 100644
--- a/chrome/browser/download/download_file.cc
+++ b/chrome/browser/download/download_file.cc
@@ -15,12 +15,12 @@
#include "chrome/browser/download/download_manager.h"
#include "chrome/browser/download/download_util.h"
#include "chrome/browser/net/chrome_url_request_context.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/renderer_host/resource_dispatcher_host.h"
#include "chrome/browser/tab_contents/tab_util.h"
#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/common/chrome_paths.h"
-#include "chrome/common/platform_util.h"
#include "googleurl/src/gurl.h"
#include "net/base/io_buffer.h"
#include "net/base/net_util.h"
diff --git a/chrome/browser/download/download_manager.cc b/chrome/browser/download/download_manager.cc
index 00eff14..5b804d7 100644
--- a/chrome/browser/download/download_manager.cc
+++ b/chrome/browser/download/download_manager.cc
@@ -28,6 +28,7 @@
#include "chrome/browser/extensions/extension_install_ui.h"
#include "chrome/browser/extensions/extensions_service.h"
#include "chrome/browser/net/chrome_url_request_context.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/browser/pref_service.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/renderer_host/render_process_host.h"
@@ -42,7 +43,6 @@
#include "chrome/common/extensions/user_script.h"
#include "chrome/common/notification_service.h"
#include "chrome/common/notification_type.h"
-#include "chrome/common/platform_util.h"
#include "chrome/common/pref_names.h"
#include "googleurl/src/gurl.h"
#include "grit/chromium_strings.h"
diff --git a/chrome/browser/download/save_file_manager.cc b/chrome/browser/download/save_file_manager.cc
index 5d9ad43..9bbd9b0 100644
--- a/chrome/browser/download/save_file_manager.cc
+++ b/chrome/browser/download/save_file_manager.cc
@@ -16,11 +16,11 @@
#include "chrome/browser/download/save_file.h"
#include "chrome/browser/download/save_package.h"
#include "chrome/browser/net/url_request_context_getter.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/browser/renderer_host/resource_dispatcher_host.h"
#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/browser/tab_contents/tab_util.h"
#include "chrome/common/chrome_paths.h"
-#include "chrome/common/platform_util.h"
#include "googleurl/src/gurl.h"
#include "net/base/net_util.h"
#include "net/base/io_buffer.h"
diff --git a/chrome/browser/download/save_package.cc b/chrome/browser/download/save_package.cc
index c276517..58689cc 100644
--- a/chrome/browser/download/save_package.cc
+++ b/chrome/browser/download/save_package.cc
@@ -24,6 +24,7 @@
#include "chrome/browser/download/save_file_manager.h"
#include "chrome/browser/download/save_item.h"
#include "chrome/browser/net/url_request_context_getter.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/browser/pref_service.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/renderer_host/render_process_host.h"
@@ -35,7 +36,6 @@
#include "chrome/common/chrome_paths.h"
#include "chrome/common/notification_service.h"
#include "chrome/common/notification_type.h"
-#include "chrome/common/platform_util.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "grit/generated_resources.h"
diff --git a/chrome/browser/extensions/crx_installer.cc b/chrome/browser/extensions/crx_installer.cc
index e10c534..feb5753 100644
--- a/chrome/browser/extensions/crx_installer.cc
+++ b/chrome/browser/extensions/crx_installer.cc
@@ -13,10 +13,10 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chrome_thread.h"
#include "chrome/browser/extensions/convert_user_script.h"
+#include "chrome/browser/extensions/extension_error_reporter.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/shell_integration.h"
#include "chrome/browser/web_applications/web_app.h"
-#include "chrome/common/extensions/extension_error_reporter.h"
#include "chrome/common/extensions/extension_file_util.h"
#include "chrome/common/notification_service.h"
#include "chrome/common/notification_type.h"
diff --git a/chrome/browser/extensions/extension_browsertest.cc b/chrome/browser/extensions/extension_browsertest.cc
index e941260..44318aa 100644
--- a/chrome/browser/extensions/extension_browsertest.cc
+++ b/chrome/browser/extensions/extension_browsertest.cc
@@ -13,13 +13,13 @@
#include "chrome/browser/browser_window.h"
#include "chrome/browser/location_bar.h"
#include "chrome/browser/extensions/crx_installer.h"
+#include "chrome/browser/extensions/extension_error_reporter.h"
#include "chrome/browser/extensions/extension_host.h"
#include "chrome/browser/extensions/extension_install_ui.h"
#include "chrome/browser/extensions/extensions_service.h"
#include "chrome/browser/profile.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/chrome_paths.h"
-#include "chrome/common/extensions/extension_error_reporter.h"
#include "chrome/common/notification_registrar.h"
#include "chrome/common/notification_service.h"
#include "chrome/common/notification_type.h"
diff --git a/chrome/browser/extensions/extension_browsertests_misc.cc b/chrome/browser/extensions/extension_browsertests_misc.cc
index 24e90f3..2789569 100644
--- a/chrome/browser/extensions/extension_browsertests_misc.cc
+++ b/chrome/browser/extensions/extension_browsertests_misc.cc
@@ -8,6 +8,7 @@
#include "chrome/browser/renderer_host/render_view_host.h"
#include "chrome/browser/extensions/autoupdate_interceptor.h"
#include "chrome/browser/extensions/extension_browsertest.h"
+#include "chrome/browser/extensions/extension_error_reporter.h"
#include "chrome/browser/extensions/extension_host.h"
#include "chrome/browser/extensions/extension_process_manager.h"
#include "chrome/browser/extensions/extension_tabs_module.h"
@@ -22,7 +23,6 @@
#endif
#include "chrome/common/chrome_paths.h"
-#include "chrome/common/extensions/extension_error_reporter.h"
#include "chrome/common/notification_service.h"
#include "chrome/common/url_constants.h"
#include "chrome/test/ui_test_utils.h"
diff --git a/chrome/browser/extensions/extension_devtools_browsertests.cc b/chrome/browser/extensions/extension_devtools_browsertests.cc
index 6422f5f..a8e28ab 100644
--- a/chrome/browser/extensions/extension_devtools_browsertests.cc
+++ b/chrome/browser/extensions/extension_devtools_browsertests.cc
@@ -9,6 +9,7 @@
#include "chrome/browser/debugger/devtools_manager.h"
#include "chrome/browser/debugger/devtools_client_host.h"
#include "chrome/browser/extensions/extension_devtools_browsertest.h"
+#include "chrome/browser/extensions/extension_error_reporter.h"
#include "chrome/browser/extensions/extension_host.h"
#include "chrome/browser/extensions/extension_process_manager.h"
#include "chrome/browser/extensions/extensions_service.h"
@@ -18,7 +19,6 @@
#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/devtools_messages.h"
-#include "chrome/common/extensions/extension_error_reporter.h"
#include "chrome/common/notification_service.h"
#include "chrome/common/url_constants.h"
#include "chrome/test/ui_test_utils.h"
diff --git a/chrome/browser/extensions/extension_error_reporter.cc b/chrome/browser/extensions/extension_error_reporter.cc
new file mode 100644
index 0000000..92f854e
--- /dev/null
+++ b/chrome/browser/extensions/extension_error_reporter.cc
@@ -0,0 +1,71 @@
+// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/extensions/extension_error_reporter.h"
+
+#include "build/build_config.h"
+
+#include "base/logging.h"
+#include "base/message_loop.h"
+#include "base/utf_string_conversions.h"
+#include "chrome/browser/platform_util.h"
+
+// No AddRef required when using ExtensionErrorReporter with RunnableMethod.
+// This is okay since the ExtensionErrorReporter is a singleton that lives until
+// the end of the process.
+template <> struct RunnableMethodTraits<ExtensionErrorReporter> {
+ void RetainCallee(ExtensionErrorReporter*) {}
+ void ReleaseCallee(ExtensionErrorReporter*) {}
+};
+
+ExtensionErrorReporter* ExtensionErrorReporter::instance_ = NULL;
+
+// static
+void ExtensionErrorReporter::Init(bool enable_noisy_errors) {
+ if (!instance_) {
+ instance_ = new ExtensionErrorReporter(enable_noisy_errors);
+ }
+}
+
+// static
+ExtensionErrorReporter* ExtensionErrorReporter::GetInstance() {
+ CHECK(instance_) << "Init() was never called";
+ return instance_;
+}
+
+ExtensionErrorReporter::ExtensionErrorReporter(bool enable_noisy_errors)
+ : ui_loop_(MessageLoop::current()),
+ enable_noisy_errors_(enable_noisy_errors) {
+}
+
+void ExtensionErrorReporter::ReportError(const std::string& message,
+ bool be_noisy) {
+ // NOTE: There won't be a ui_loop_ in the unit test environment.
+ if (ui_loop_ && MessageLoop::current() != ui_loop_) {
+ ui_loop_->PostTask(FROM_HERE,
+ NewRunnableMethod(this, &ExtensionErrorReporter::ReportError, message,
+ be_noisy));
+ return;
+ }
+
+ errors_.push_back(message);
+
+ // TODO(aa): Print the error message out somewhere better. I think we are
+ // going to need some sort of 'extension inspector'.
+ LOG(ERROR) << "Extension error: " << message;
+
+ if (enable_noisy_errors_ && be_noisy) {
+ platform_util::SimpleErrorBox(NULL,
+ UTF8ToUTF16("Extension error"),
+ UTF8ToUTF16(message));
+ }
+}
+
+const std::vector<std::string>* ExtensionErrorReporter::GetErrors() {
+ return &errors_;
+}
+
+void ExtensionErrorReporter::ClearErrors() {
+ errors_.clear();
+}
diff --git a/chrome/browser/extensions/extension_error_reporter.h b/chrome/browser/extensions/extension_error_reporter.h
new file mode 100644
index 0000000..f4205e9
--- /dev/null
+++ b/chrome/browser/extensions/extension_error_reporter.h
@@ -0,0 +1,50 @@
+// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_ERROR_REPORTER_H_
+#define CHROME_BROWSER_EXTENSIONS_EXTENSION_ERROR_REPORTER_H_
+
+#include <string>
+#include <vector>
+
+class MessageLoop;
+
+// Exposes an easy way for the various components of the extension system to
+// report errors. This is a singleton that lives on the UI thread, with the
+// exception of ReportError() which may be called from any thread.
+// TODO(aa): Hook this up to about:extensions, when we have about:extensions.
+// TODO(aa): Consider exposing directly, or via a helper, to the renderer
+// process and plumbing the errors out to the browser.
+// TODO(aa): Add ReportError(extension_id, message, be_noisy), so that we can
+// report errors that are specific to a particular extension.
+class ExtensionErrorReporter {
+ public:
+ // Initializes the error reporter. Must be called before any other methods
+ // and on the UI thread.
+ static void Init(bool enable_noisy_errors);
+
+ // Get the singleton instance.
+ static ExtensionErrorReporter* GetInstance();
+
+ // Report an error. Errors always go to LOG(INFO). Optionally, they can also
+ // cause a noisy alert box. This method can be called from any thread.
+ void ReportError(const std::string& message, bool be_noisy);
+
+ // Get the errors that have been reported so far.
+ const std::vector<std::string>* GetErrors();
+
+ // Clear the list of errors reported so far.
+ void ClearErrors();
+
+ private:
+ static ExtensionErrorReporter* instance_;
+
+ explicit ExtensionErrorReporter(bool enable_noisy_errors);
+
+ MessageLoop* ui_loop_;
+ std::vector<std::string> errors_;
+ bool enable_noisy_errors_;
+};
+
+#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_ERROR_REPORTER_H_
diff --git a/chrome/browser/extensions/extension_host.cc b/chrome/browser/extensions/extension_host.cc
index 1d7de596..67af709 100644
--- a/chrome/browser/extensions/extension_host.cc
+++ b/chrome/browser/extensions/extension_host.cc
@@ -12,7 +12,6 @@
#include "base/message_loop.h"
#include "base/singleton.h"
#include "base/string_util.h"
-#include "chrome/common/platform_util.h"
#include "chrome/browser/browser.h"
#include "chrome/browser/browser_list.h"
#include "chrome/browser/browser_shutdown.h"
@@ -26,6 +25,7 @@
#include "chrome/browser/in_process_webkit/dom_storage_context.h"
#include "chrome/browser/in_process_webkit/webkit_context.h"
#include "chrome/browser/message_box_handler.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/browser/pref_service.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/renderer_host/render_view_host.h"
diff --git a/chrome/browser/extensions/extension_install_ui.cc b/chrome/browser/extensions/extension_install_ui.cc
index 801dee0..fa43635 100644
--- a/chrome/browser/extensions/extension_install_ui.cc
+++ b/chrome/browser/extensions/extension_install_ui.cc
@@ -15,6 +15,7 @@
#include "chrome/browser/browser_list.h"
#include "chrome/browser/browser_window.h"
#include "chrome/browser/extensions/theme_installed_infobar_delegate.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/tab_contents/tab_contents.h"
#if defined(TOOLKIT_VIEWS) // TODO(port)
@@ -24,7 +25,6 @@
#endif
#include "chrome/common/extensions/extension.h"
#include "chrome/common/notification_service.h"
-#include "chrome/common/platform_util.h"
#include "chrome/common/url_constants.h"
#include "grit/browser_resources.h"
#include "grit/chromium_strings.h"
diff --git a/chrome/browser/extensions/extension_process_manager_unittest.cc b/chrome/browser/extensions/extension_process_manager_unittest.cc
index ae9eefe..8ab9517 100644
--- a/chrome/browser/extensions/extension_process_manager_unittest.cc
+++ b/chrome/browser/extensions/extension_process_manager_unittest.cc
@@ -3,8 +3,8 @@
// found in the LICENSE file.
#include "chrome/browser/extensions/extension_process_manager.h"
+#include "chrome/browser/extensions/extension_error_reporter.h"
#include "chrome/browser/renderer_host/site_instance.h"
-#include "chrome/common/extensions/extension_error_reporter.h"
#include "chrome/test/testing_profile.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/platform_test.h"
diff --git a/chrome/browser/extensions/extension_shelf_model_browsertest.cc b/chrome/browser/extensions/extension_shelf_model_browsertest.cc
index 59cf318..abb2a93 100644
--- a/chrome/browser/extensions/extension_shelf_model_browsertest.cc
+++ b/chrome/browser/extensions/extension_shelf_model_browsertest.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/browser.h"
#include "chrome/browser/extensions/extension_browsertest.h"
+#include "chrome/browser/extensions/extension_error_reporter.h"
#include "chrome/browser/extensions/extension_host.h"
#include "chrome/browser/extensions/extension_shelf_model.h"
#include "chrome/browser/extensions/extensions_service.h"
@@ -12,7 +13,6 @@
#include "chrome/browser/views/frame/browser_view.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
-#include "chrome/common/extensions/extension_error_reporter.h"
#include "chrome/test/in_process_browser_test.h"
namespace {
diff --git a/chrome/browser/extensions/extension_updater.cc b/chrome/browser/extensions/extension_updater.cc
index 3d9ecea..505796e 100644
--- a/chrome/browser/extensions/extension_updater.cc
+++ b/chrome/browser/extensions/extension_updater.cc
@@ -19,13 +19,13 @@
#include "base/version.h"
#include "chrome/app/chrome_version_info.h"
#include "chrome/browser/browser_process.h"
+#include "chrome/browser/extensions/extension_error_reporter.h"
#include "chrome/browser/extensions/extensions_service.h"
#include "chrome/browser/pref_service.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/utility_process_host.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/extensions/extension.h"
-#include "chrome/common/extensions/extension_error_reporter.h"
#include "chrome/common/pref_names.h"
#include "googleurl/src/gurl.h"
#include "net/base/escape.h"
diff --git a/chrome/browser/extensions/extension_updater_unittest.cc b/chrome/browser/extensions/extension_updater_unittest.cc
index 9c54d7a..b783517 100644
--- a/chrome/browser/extensions/extension_updater_unittest.cc
+++ b/chrome/browser/extensions/extension_updater_unittest.cc
@@ -12,6 +12,7 @@
#include "base/thread.h"
#include "base/version.h"
#include "chrome/browser/chrome_thread.h"
+#include "chrome/browser/extensions/extension_error_reporter.h"
#include "chrome/browser/extensions/extension_updater.h"
#include "chrome/browser/extensions/extensions_service.h"
#include "chrome/browser/extensions/test_extension_prefs.h"
@@ -19,7 +20,6 @@
#include "chrome/browser/pref_service.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_constants.h"
-#include "chrome/common/extensions/extension_error_reporter.h"
#include "chrome/common/pref_names.h"
#include "net/base/escape.h"
#include "net/base/load_flags.h"
diff --git a/chrome/browser/extensions/extensions_service.cc b/chrome/browser/extensions/extensions_service.cc
index 42c41ca..67218a5 100644
--- a/chrome/browser/extensions/extensions_service.cc
+++ b/chrome/browser/extensions/extensions_service.cc
@@ -22,6 +22,7 @@
#include "chrome/browser/extensions/extension_browser_event_router.h"
#include "chrome/browser/extensions/extension_data_deleter.h"
#include "chrome/browser/extensions/extension_dom_ui.h"
+#include "chrome/browser/extensions/extension_error_reporter.h"
#include "chrome/browser/extensions/extension_history_api.h"
#include "chrome/browser/extensions/extension_host.h"
#include "chrome/browser/extensions/extension_process_manager.h"
@@ -35,7 +36,6 @@
#include "chrome/common/chrome_switches.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_constants.h"
-#include "chrome/common/extensions/extension_error_reporter.h"
#include "chrome/common/extensions/extension_file_util.h"
#include "chrome/common/extensions/extension_l10n_util.h"
#include "chrome/common/notification_service.h"
diff --git a/chrome/browser/extensions/extensions_service_unittest.cc b/chrome/browser/extensions/extensions_service_unittest.cc
index 9d3e242..5ed80c9 100644
--- a/chrome/browser/extensions/extensions_service_unittest.cc
+++ b/chrome/browser/extensions/extensions_service_unittest.cc
@@ -20,6 +20,7 @@
#include "base/version.h"
#include "chrome/browser/extensions/crx_installer.h"
#include "chrome/browser/extensions/extension_creator.h"
+#include "chrome/browser/extensions/extension_error_reporter.h"
#include "chrome/browser/extensions/extensions_service.h"
#include "chrome/browser/extensions/external_extension_provider.h"
#include "chrome/browser/extensions/external_pref_extension_provider.h"
@@ -28,7 +29,6 @@
#include "chrome/common/extensions/url_pattern.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
-#include "chrome/common/extensions/extension_error_reporter.h"
#include "chrome/common/json_value_serializer.h"
#include "chrome/common/notification_registrar.h"
#include "chrome/common/notification_service.h"
diff --git a/chrome/browser/extensions/extensions_ui.cc b/chrome/browser/extensions/extensions_ui.cc
index 9565d69..48cc7e1 100644
--- a/chrome/browser/extensions/extensions_ui.cc
+++ b/chrome/browser/extensions/extensions_ui.cc
@@ -16,6 +16,7 @@
#include "chrome/browser/debugger/devtools_manager.h"
#include "chrome/browser/extensions/crx_installer.h"
#include "chrome/browser/extensions/extension_disabled_infobar_delegate.h"
+#include "chrome/browser/extensions/extension_error_reporter.h"
#include "chrome/browser/extensions/extension_function_dispatcher.h"
#include "chrome/browser/extensions/extension_host.h"
#include "chrome/browser/extensions/extension_message_service.h"
@@ -32,7 +33,6 @@
#include "chrome/common/chrome_switches.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_constants.h"
-#include "chrome/common/extensions/extension_error_reporter.h"
#include "chrome/common/extensions/user_script.h"
#include "chrome/common/extensions/url_pattern.h"
#include "chrome/common/jstemplate_builder.h"
diff --git a/chrome/browser/external_protocol_handler.cc b/chrome/browser/external_protocol_handler.cc
index 80b60e2..d8bb81d 100644
--- a/chrome/browser/external_protocol_handler.cc
+++ b/chrome/browser/external_protocol_handler.cc
@@ -14,8 +14,8 @@
#include "base/thread.h"
#include "chrome/browser/browser.h"
#include "chrome/browser/browser_process_impl.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/browser/pref_service.h"
-#include "chrome/common/platform_util.h"
#include "chrome/common/pref_names.h"
#include "googleurl/src/gurl.h"
#include "net/base/escape.h"
diff --git a/chrome/browser/gtk/about_chrome_dialog.cc b/chrome/browser/gtk/about_chrome_dialog.cc
index 0299d52..ebe6d21 100644
--- a/chrome/browser/gtk/about_chrome_dialog.cc
+++ b/chrome/browser/gtk/about_chrome_dialog.cc
@@ -15,9 +15,9 @@
#include "chrome/browser/gtk/gtk_chrome_link_button.h"
#include "chrome/browser/gtk/gtk_theme_provider.h"
#include "chrome/browser/gtk/gtk_util.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/browser/profile.h"
#include "chrome/common/chrome_constants.h"
-#include "chrome/common/platform_util.h"
#include "chrome/common/url_constants.h"
#include "gfx/gtk_util.h"
#include "grit/chromium_strings.h"
diff --git a/chrome/browser/gtk/first_run_dialog.cc b/chrome/browser/gtk/first_run_dialog.cc
index 6613957..6f3e3d7 100644
--- a/chrome/browser/gtk/first_run_dialog.cc
+++ b/chrome/browser/gtk/first_run_dialog.cc
@@ -11,9 +11,9 @@
#include "chrome/browser/gtk/gtk_chrome_link_button.h"
#include "chrome/browser/gtk/gtk_util.h"
#include "chrome/browser/importer/importer_data_types.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/browser/process_singleton.h"
#include "chrome/browser/shell_integration.h"
-#include "chrome/common/platform_util.h"
#include "chrome/installer/util/google_update_settings.h"
#include "grit/chromium_strings.h"
#include "grit/generated_resources.h"
diff --git a/chrome/browser/gtk/focus_store_gtk.cc b/chrome/browser/gtk/focus_store_gtk.cc
index 061e8a9..f61b2ba 100644
--- a/chrome/browser/gtk/focus_store_gtk.cc
+++ b/chrome/browser/gtk/focus_store_gtk.cc
@@ -7,7 +7,7 @@
#include <gtk/gtk.h>
#include "base/logging.h"
-#include "chrome/common/platform_util.h"
+#include "chrome/browser/platform_util.h"
FocusStoreGtk::FocusStoreGtk() : widget_(NULL) {
}
diff --git a/chrome/browser/gtk/tabs/dragged_tab_controller_gtk.cc b/chrome/browser/gtk/tabs/dragged_tab_controller_gtk.cc
index 98b5ace..5ba1d37 100644
--- a/chrome/browser/gtk/tabs/dragged_tab_controller_gtk.cc
+++ b/chrome/browser/gtk/tabs/dragged_tab_controller_gtk.cc
@@ -12,10 +12,10 @@
#include "chrome/browser/gtk/gtk_util.h"
#include "chrome/browser/gtk/tabs/dragged_tab_gtk.h"
#include "chrome/browser/gtk/tabs/tab_strip_gtk.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/browser/tabs/tab_strip_model.h"
#include "chrome/common/notification_service.h"
-#include "chrome/common/platform_util.h"
namespace {
diff --git a/chrome/browser/platform_util.h b/chrome/browser/platform_util.h
new file mode 100644
index 0000000..1f148f4
--- /dev/null
+++ b/chrome/browser/platform_util.h
@@ -0,0 +1,51 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_PLATFORM_UTIL_H_
+#define CHROME_BROWSER_PLATFORM_UTIL_H_
+
+#include "base/string16.h"
+#include "gfx/native_widget_types.h"
+
+class FilePath;
+class GURL;
+
+namespace platform_util {
+
+// Show the given file in a file manager. If possible, select the file.
+void ShowItemInFolder(const FilePath& full_path);
+
+// Open the given file in the desktop's default manner.
+void OpenItem(const FilePath& full_path);
+
+// Open the given external protocol URL in the desktop's default manner.
+// (For example, mailto: URLs in the default mail user agent.)
+void OpenExternal(const GURL& url);
+
+// Get the top level window for the native view. This can return NULL.
+gfx::NativeWindow GetTopLevel(gfx::NativeView view);
+
+// Returns true if |window| is the foreground top level window.
+bool IsWindowActive(gfx::NativeWindow window);
+
+// Returns true if the view is visible. The exact definition of this is
+// platform-specific, but it is generally not "visible to the user", rather
+// whether the view has the visible attribute set.
+bool IsVisible(gfx::NativeView view);
+
+// Pops up an error box with an OK button. If |parent| is non-null, the box
+// will be modal on it. (On Mac, it is always app-modal.) Generally speaking,
+// this class should not be used for much. Infobars are preferred.
+void SimpleErrorBox(gfx::NativeWindow parent,
+ const string16& title,
+ const string16& message);
+
+// Return a human readable modifier for the version string. For a
+// branded Chrome (not Chromium), this modifier is the channel (dev,
+// beta, stable).
+string16 GetVersionStringModifier();
+
+}
+
+#endif // CHROME_BROWSER_PLATFORM_UTIL_H_
diff --git a/chrome/browser/platform_util_chromeos.cc b/chrome/browser/platform_util_chromeos.cc
new file mode 100644
index 0000000..a19d3ac
--- /dev/null
+++ b/chrome/browser/platform_util_chromeos.cc
@@ -0,0 +1,86 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/platform_util.h"
+
+#include <gtk/gtk.h>
+
+#include "app/gtk_util.h"
+#include "base/file_util.h"
+#include "base/process_util.h"
+#include "base/utf_string_conversions.h"
+#include "chrome/common/process_watcher.h"
+#include "googleurl/src/gurl.h"
+
+#include "chrome/browser/chrome_thread.h"
+#include "chrome/browser/browser_list.h"
+#include "chrome/browser/dom_ui/filebrowse_ui.h"
+#include "chrome/browser/dom_ui/mediaplayer_ui.h"
+
+class Profile;
+
+namespace platform_util {
+
+// TODO(estade): It would be nice to be able to select the file in the file
+// manager, but that probably requires extending xdg-open. For now just
+// show the folder.
+void ShowItemInFolder(const FilePath& full_path) {
+ FilePath dir = full_path.DirName();
+ if (!file_util::DirectoryExists(dir))
+ return;
+
+ Profile* profile;
+ profile = BrowserList::GetLastActive()->profile();
+
+ FileBrowseUI::OpenPopup(profile,
+ dir.value(),
+ FileBrowseUI::kPopupWidth,
+ FileBrowseUI::kPopupHeight);
+}
+
+void OpenItem(const FilePath& full_path) {
+ std::string ext = full_path.Extension();
+ // For things supported natively by the browser, we should open it
+ // in a tab.
+ if (ext == ".jpg" ||
+ ext == ".jpeg" ||
+ ext == ".png" ||
+ ext == ".gif" ||
+ ext == ".html" ||
+ ext == ".htm") {
+ std::string path;
+ path = "file://";
+ path += full_path.value();
+ if (!ChromeThread::CurrentlyOn(ChromeThread::UI)) {
+ bool result = ChromeThread::PostTask(
+ ChromeThread::UI, FROM_HERE,
+ NewRunnableFunction(&OpenItem, full_path));
+ DCHECK(result);
+ return;
+ }
+ Browser* browser = BrowserList::GetLastActive();
+ browser->AddTabWithURL(
+ GURL(path), GURL(), PageTransition::LINK,
+ true, -1, false, NULL);
+ return;
+ }
+ if (ext == ".avi" ||
+ ext == ".mp4" ||
+ ext == ".mp3" ||
+ ext == ".mkv" ||
+ ext == ".ogg") {
+ MediaPlayer* mediaplayer = MediaPlayer::Get();
+ std::string url = "file://";
+ url += full_path.value();
+ GURL gurl(url);
+ mediaplayer->EnqueueMediaURL(gurl);
+ return;
+ }
+}
+
+void OpenExternal(const GURL& url) {
+
+}
+
+} // namespace platform_util
diff --git a/chrome/browser/platform_util_common_linux.cc b/chrome/browser/platform_util_common_linux.cc
new file mode 100644
index 0000000..328d260
--- /dev/null
+++ b/chrome/browser/platform_util_common_linux.cc
@@ -0,0 +1,83 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/platform_util.h"
+
+#include <gtk/gtk.h>
+
+#include "app/gtk_util.h"
+#include "base/file_util.h"
+#include "base/process_util.h"
+#include "base/utf_string_conversions.h"
+#include "chrome/common/process_watcher.h"
+#include "gfx/native_widget_types.h"
+#include "googleurl/src/gurl.h"
+
+namespace platform_util {
+
+gfx::NativeWindow GetTopLevel(gfx::NativeView view) {
+ // A detached widget won't have a toplevel window as an ancestor, so we can't
+ // assume that the query for toplevel will return a window.
+ GtkWidget* toplevel = gtk_widget_get_ancestor(view, GTK_TYPE_WINDOW);
+ return GTK_IS_WINDOW(toplevel) ? GTK_WINDOW(toplevel) : NULL;
+}
+
+bool IsWindowActive(gfx::NativeWindow window) {
+ return gtk_window_is_active(window);
+}
+
+bool IsVisible(gfx::NativeView view) {
+ return GTK_WIDGET_VISIBLE(view);
+}
+
+void SimpleErrorBox(gfx::NativeWindow parent,
+ const string16& title,
+ const string16& message) {
+ GtkWidget* dialog = gtk_message_dialog_new(parent, GTK_DIALOG_MODAL,
+ GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s", UTF16ToUTF8(message).c_str());
+ gtk_util::ApplyMessageDialogQuirks(dialog);
+ gtk_window_set_title(GTK_WINDOW(dialog), UTF16ToUTF8(title).c_str());
+
+ g_signal_connect(dialog, "response", G_CALLBACK(gtk_widget_destroy), NULL);
+ gtk_widget_show_all(dialog);
+
+ // Make sure it's big enough to show the title.
+ GtkRequisition req;
+ gtk_widget_size_request(dialog, &req);
+ int width;
+ gtk_util::GetWidgetSizeFromCharacters(dialog, title.length(), 0,
+ &width, NULL);
+ // The fudge factor accounts for extra space needed by the frame
+ // decorations as well as width differences between average text and the
+ // actual title text.
+ width = width * 1.2 + 50;
+
+ if (width > req.width)
+ gtk_widget_set_size_request(dialog, width, -1);
+}
+
+/* Warning: this may be either Linux or ChromeOS */
+string16 GetVersionStringModifier() {
+ char* env = getenv("CHROME_VERSION_EXTRA");
+ if (!env)
+ return string16();
+ std::string modifier(env);
+
+#if defined(GOOGLE_CHROME_BUILD)
+ // Only ever return "", "unknown", "dev" or "beta" in a branded build.
+ if (modifier == "unstable") // linux version of "dev"
+ modifier = "dev";
+ if (modifier == "stable") {
+ modifier = "";
+ } else if ((modifier == "dev") || (modifier == "beta")) {
+ // do nothing.
+ } else {
+ modifier = "unknown";
+ }
+#endif
+
+ return ASCIIToUTF16(modifier);
+}
+
+} // namespace platform_util
diff --git a/chrome/browser/platform_util_linux.cc b/chrome/browser/platform_util_linux.cc
new file mode 100644
index 0000000..38ffba6
--- /dev/null
+++ b/chrome/browser/platform_util_linux.cc
@@ -0,0 +1,68 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/platform_util.h"
+
+#include <gtk/gtk.h>
+
+#include "app/gtk_util.h"
+#include "base/file_util.h"
+#include "base/process_util.h"
+#include "base/utf_string_conversions.h"
+#include "chrome/common/process_watcher.h"
+#include "googleurl/src/gurl.h"
+
+namespace {
+
+void XDGOpen(const std::string& path) {
+ std::vector<std::string> argv;
+ argv.push_back("xdg-open");
+ argv.push_back(path);
+
+ base::environment_vector env;
+ // xdg-open can fall back on mailcap which eventually might plumb through
+ // to a command that needs a terminal. Set the environment variable telling
+ // it that we definitely don't have a terminal available and that it should
+ // bring up a new terminal if necessary. See "man mailcap".
+ env.push_back(std::make_pair("MM_NOTTTY", "1"));
+
+ // In Google Chrome, we do not let GNOME's bug-buddy intercept our crashes.
+ // However, we do not want this environment variable to propagate to external
+ // applications. See http://crbug.com/24120
+ char* disable_gnome_bug_buddy = getenv("GNOME_DISABLE_CRASH_DIALOG");
+ if (disable_gnome_bug_buddy &&
+ disable_gnome_bug_buddy == std::string("SET_BY_GOOGLE_CHROME")) {
+ env.push_back(std::make_pair("GNOME_DISABLE_CRASH_DIALOG", ""));
+ }
+
+ base::file_handle_mapping_vector no_files;
+ base::ProcessHandle handle;
+ if (base::LaunchApp(argv, env, no_files, false, &handle))
+ ProcessWatcher::EnsureProcessGetsReaped(handle);
+}
+
+} // namespace
+
+namespace platform_util {
+
+// TODO(estade): It would be nice to be able to select the file in the file
+// manager, but that probably requires extending xdg-open. For now just
+// show the folder.
+void ShowItemInFolder(const FilePath& full_path) {
+ FilePath dir = full_path.DirName();
+ if (!file_util::DirectoryExists(dir))
+ return;
+
+ XDGOpen(dir.value());
+}
+
+void OpenItem(const FilePath& full_path) {
+ XDGOpen(full_path.value());
+}
+
+void OpenExternal(const GURL& url) {
+ XDGOpen(url.spec());
+}
+
+} // namespace platform_util
diff --git a/chrome/browser/platform_util_mac.mm b/chrome/browser/platform_util_mac.mm
new file mode 100644
index 0000000..43d9582
--- /dev/null
+++ b/chrome/browser/platform_util_mac.mm
@@ -0,0 +1,89 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/platform_util.h"
+
+#import <Cocoa/Cocoa.h>
+
+#include "app/l10n_util.h"
+#include "app/l10n_util_mac.h"
+#include "base/file_path.h"
+#include "base/logging.h"
+#include "base/mac_util.h"
+#include "base/sys_string_conversions.h"
+#include "googleurl/src/gurl.h"
+#include "grit/generated_resources.h"
+
+namespace platform_util {
+
+void ShowItemInFolder(const FilePath& full_path) {
+ DCHECK_EQ([NSThread currentThread], [NSThread mainThread]);
+ NSString* path_string = base::SysUTF8ToNSString(full_path.value());
+ if (!path_string || ![[NSWorkspace sharedWorkspace] selectFile:path_string
+ inFileViewerRootedAtPath:nil])
+ LOG(WARNING) << "NSWorkspace failed to select file " << full_path.value();
+}
+
+void OpenItem(const FilePath& full_path) {
+ DCHECK_EQ([NSThread currentThread], [NSThread mainThread]);
+ NSString* path_string = base::SysUTF8ToNSString(full_path.value());
+ if (!path_string || ![[NSWorkspace sharedWorkspace] openFile:path_string])
+ LOG(WARNING) << "NSWorkspace failed to open file " << full_path.value();
+}
+
+void OpenExternal(const GURL& url) {
+ DCHECK_EQ([NSThread currentThread], [NSThread mainThread]);
+ NSString* url_string = base::SysUTF8ToNSString(url.spec());
+ NSURL* ns_url = [NSURL URLWithString:url_string];
+ if (!ns_url || ![[NSWorkspace sharedWorkspace] openURL:ns_url])
+ LOG(WARNING) << "NSWorkspace failed to open URL " << url;
+}
+
+gfx::NativeWindow GetTopLevel(gfx::NativeView view) {
+ return [view window];
+}
+
+bool IsWindowActive(gfx::NativeWindow window) {
+ return [window isKeyWindow] || [window isMainWindow];
+}
+
+bool IsVisible(gfx::NativeView view) {
+ // A reasonable approximation of how you'd expect this to behave.
+ return (view &&
+ ![view isHiddenOrHasHiddenAncestor] &&
+ [view window] &&
+ [[view window] isVisible]);
+}
+
+void SimpleErrorBox(gfx::NativeWindow parent,
+ const string16& title,
+ const string16& message) {
+ NSAlert* alert = [[[NSAlert alloc] init] autorelease];
+ [alert addButtonWithTitle:l10n_util::GetNSString(IDS_OK)];
+ [alert setMessageText:base::SysUTF16ToNSString(title)];
+ [alert setInformativeText:base::SysUTF16ToNSString(message)];
+ [alert setAlertStyle:NSWarningAlertStyle];
+ [alert runModal];
+}
+
+string16 GetVersionStringModifier() {
+#if defined(GOOGLE_CHROME_BUILD)
+ NSBundle* bundle = mac_util::MainAppBundle();
+ NSString* channel = [bundle objectForInfoDictionaryKey:@"KSChannelID"];
+ // Only ever return "", "unknown", "beta" or "dev" in a branded build.
+ if ([channel isEqual:@"stable"]) {
+ channel = @"";
+ } else if ([channel isEqual:@"beta"] || [channel isEqual:@"dev"]) {
+ // do nothing.
+ } else {
+ channel = @"unknown";
+ }
+
+ return base::SysNSStringToUTF16(channel);
+#else
+ return string16();
+#endif
+}
+
+} // namespace platform_util
diff --git a/chrome/browser/platform_util_win.cc b/chrome/browser/platform_util_win.cc
new file mode 100644
index 0000000..7738fe3
--- /dev/null
+++ b/chrome/browser/platform_util_win.cc
@@ -0,0 +1,173 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/platform_util.h"
+
+#include <commdlg.h>
+#include <dwmapi.h>
+#include <shellapi.h>
+#include <shlobj.h>
+
+#include "app/win_util.h"
+#include "base/file_path.h"
+#include "base/file_util.h"
+#include "base/path_service.h"
+#include "base/logging.h"
+#include "base/registry.h"
+#include "base/scoped_comptr_win.h"
+#include "base/string_util.h"
+#include "chrome/installer/util/google_update_settings.h"
+#include "chrome/installer/util/google_update_constants.h"
+#include "chrome/installer/util/install_util.h"
+#include "gfx/native_widget_types.h"
+#include "googleurl/src/gurl.h"
+
+namespace platform_util {
+
+void ShowItemInFolder(const FilePath& full_path) {
+ FilePath dir = full_path.DirName();
+ // ParseDisplayName will fail if the directory is "C:", it must be "C:\\".
+ if (dir.value() == L"" || !file_util::EnsureEndsWithSeparator(&dir))
+ return;
+
+ typedef HRESULT (WINAPI *SHOpenFolderAndSelectItemsFuncPtr)(
+ PCIDLIST_ABSOLUTE pidl_Folder,
+ UINT cidl,
+ PCUITEMID_CHILD_ARRAY pidls,
+ DWORD flags);
+
+ static SHOpenFolderAndSelectItemsFuncPtr open_folder_and_select_itemsPtr =
+ NULL;
+ static bool initialize_open_folder_proc = true;
+ if (initialize_open_folder_proc) {
+ initialize_open_folder_proc = false;
+ // The SHOpenFolderAndSelectItems API is exposed by shell32 version 6
+ // and does not exist in Win2K. We attempt to retrieve this function export
+ // from shell32 and if it does not exist, we just invoke ShellExecute to
+ // open the folder thus losing the functionality to select the item in
+ // the process.
+ HMODULE shell32_base = GetModuleHandle(L"shell32.dll");
+ if (!shell32_base) {
+ NOTREACHED();
+ return;
+ }
+ open_folder_and_select_itemsPtr =
+ reinterpret_cast<SHOpenFolderAndSelectItemsFuncPtr>
+ (GetProcAddress(shell32_base, "SHOpenFolderAndSelectItems"));
+ }
+ if (!open_folder_and_select_itemsPtr) {
+ ShellExecute(NULL, _T("open"), dir.value().c_str(), NULL, NULL, SW_SHOW);
+ return;
+ }
+
+ ScopedComPtr<IShellFolder> desktop;
+ HRESULT hr = SHGetDesktopFolder(desktop.Receive());
+ if (FAILED(hr))
+ return;
+
+ win_util::CoMemReleaser<ITEMIDLIST> dir_item;
+ hr = desktop->ParseDisplayName(NULL, NULL,
+ const_cast<wchar_t *>(dir.value().c_str()),
+ NULL, &dir_item, NULL);
+ if (FAILED(hr))
+ return;
+
+ win_util::CoMemReleaser<ITEMIDLIST> file_item;
+ hr = desktop->ParseDisplayName(NULL, NULL,
+ const_cast<wchar_t *>(full_path.value().c_str()),
+ NULL, &file_item, NULL);
+ if (FAILED(hr))
+ return;
+
+ const ITEMIDLIST* highlight[] = {
+ {file_item},
+ };
+ (*open_folder_and_select_itemsPtr)(dir_item, arraysize(highlight),
+ highlight, NULL);
+}
+
+void OpenItem(const FilePath& full_path) {
+ win_util::OpenItemViaShell(full_path);
+}
+
+void OpenExternal(const GURL& url) {
+ // Quote the input scheme to be sure that the command does not have
+ // parameters unexpected by the external program. This url should already
+ // have been escaped.
+ std::string escaped_url = url.spec();
+ escaped_url.insert(0, "\"");
+ escaped_url += "\"";
+
+ // According to Mozilla in uriloader/exthandler/win/nsOSHelperAppService.cpp:
+ // "Some versions of windows (Win2k before SP3, Win XP before SP1) crash in
+ // ShellExecute on long URLs (bug 161357 on bugzilla.mozilla.org). IE 5 and 6
+ // support URLS of 2083 chars in length, 2K is safe."
+ const size_t kMaxUrlLength = 2048;
+ if (escaped_url.length() > kMaxUrlLength) {
+ NOTREACHED();
+ return;
+ }
+
+ RegKey key;
+ std::wstring registry_path = ASCIIToWide(url.scheme()) +
+ L"\\shell\\open\\command";
+ key.Open(HKEY_CLASSES_ROOT, registry_path.c_str());
+ if (key.Valid()) {
+ DWORD size = 0;
+ key.ReadValue(NULL, NULL, &size);
+ if (size <= 2) {
+ // ShellExecute crashes the process when the command is empty.
+ // We check for "2" because it always returns the trailing NULL.
+ // TODO(nsylvain): we should also add a dialog to warn on errors. See
+ // bug 1136923.
+ return;
+ }
+ }
+
+ if (reinterpret_cast<ULONG_PTR>(ShellExecuteA(NULL, "open",
+ escaped_url.c_str(), NULL, NULL,
+ SW_SHOWNORMAL)) <= 32) {
+ // We fail to execute the call. We could display a message to the user.
+ // TODO(nsylvain): we should also add a dialog to warn on errors. See
+ // bug 1136923.
+ return;
+ }
+}
+
+gfx::NativeWindow GetTopLevel(gfx::NativeView view) {
+ return GetAncestor(view, GA_ROOT);
+}
+
+bool IsWindowActive(gfx::NativeWindow window) {
+ return ::GetForegroundWindow() == window;
+}
+
+bool IsVisible(gfx::NativeView view) {
+ // MSVC complains if we don't include != 0.
+ return ::IsWindowVisible(view) != 0;
+}
+
+void SimpleErrorBox(gfx::NativeWindow parent,
+ const string16& title,
+ const string16& message) {
+ win_util::MessageBox(parent, message, title, MB_OK | MB_SETFOREGROUND);
+}
+
+string16 GetVersionStringModifier() {
+#if defined(GOOGLE_CHROME_BUILD)
+ FilePath module;
+ string16 channel;
+ if (PathService::Get(base::FILE_MODULE, &module)) {
+ bool is_system_install =
+ !InstallUtil::IsPerUserInstall(module.value().c_str());
+
+ GoogleUpdateSettings::GetChromeChannel(is_system_install, &channel);
+ }
+ return channel;
+#else
+ return string16();
+#endif
+}
+
+} // namespace platform_util
diff --git a/chrome/browser/profile.cc b/chrome/browser/profile.cc
index fd82db1..4332a35 100644
--- a/chrome/browser/profile.cc
+++ b/chrome/browser/profile.cc
@@ -25,6 +25,7 @@
#include "chrome/browser/dom_ui/ntp_resource_cache.h"
#include "chrome/browser/download/download_manager.h"
#include "chrome/browser/extensions/extension_devtools_manager.h"
+#include "chrome/browser/extensions/extension_error_reporter.h"
#include "chrome/browser/extensions/extension_message_service.h"
#include "chrome/browser/extensions/extension_process_manager.h"
#include "chrome/browser/extensions/extensions_service.h"
@@ -65,7 +66,6 @@
#include "chrome/common/chrome_constants.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
-#include "chrome/common/extensions/extension_error_reporter.h"
#include "chrome/common/notification_service.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/render_messages.h"
@@ -1494,4 +1494,3 @@ void ProfileImpl::InitCloudPrintProxyService() {
cloud_print_proxy_service_.reset(new CloudPrintProxyService(this));
cloud_print_proxy_service_->Initialize();
}
-
diff --git a/chrome/browser/renderer_host/test/render_view_host_manager_browsertest.cc b/chrome/browser/renderer_host/test/render_view_host_manager_browsertest.cc
index dd6546c..fb6e16c 100644
--- a/chrome/browser/renderer_host/test/render_view_host_manager_browsertest.cc
+++ b/chrome/browser/renderer_host/test/render_view_host_manager_browsertest.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/browser.h"
#include "chrome/browser/download/download_manager.h"
+#include "chrome/browser/extensions/extension_error_reporter.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/renderer_host/site_instance.h"
#include "chrome/browser/tab_contents/tab_contents.h"
@@ -14,7 +15,6 @@
#include "chrome/common/notification_registrar.h"
#include "chrome/common/notification_service.h"
#include "chrome/common/notification_type.h"
-#include "chrome/common/extensions/extension_error_reporter.h"
#include "chrome/test/in_process_browser_test.h"
#include "chrome/test/ui_test_utils.h"
#include "net/base/net_util.h"
diff --git a/chrome/browser/ssl/ssl_add_cert_handler.cc b/chrome/browser/ssl/ssl_add_cert_handler.cc
index 8c75d7d..dafc78f 100644
--- a/chrome/browser/ssl/ssl_add_cert_handler.cc
+++ b/chrome/browser/ssl/ssl_add_cert_handler.cc
@@ -9,7 +9,7 @@
#include "chrome/browser/browser.h"
#include "chrome/browser/browser_window.h"
#include "chrome/browser/chrome_thread.h"
-#include "chrome/common/platform_util.h"
+#include "chrome/browser/platform_util.h"
#include "grit/generated_resources.h"
#include "net/base/cert_database.h"
#include "net/base/net_errors.h"
diff --git a/chrome/browser/tab_contents/render_view_context_menu.cc b/chrome/browser/tab_contents/render_view_context_menu.cc
index 471d2b8..1f208dc 100644
--- a/chrome/browser/tab_contents/render_view_context_menu.cc
+++ b/chrome/browser/tab_contents/render_view_context_menu.cc
@@ -25,6 +25,7 @@
#include "chrome/browser/metrics/user_metrics.h"
#include "chrome/browser/net/browser_url_util.h"
#include "chrome/browser/page_info_window.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/browser/pref_service.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/renderer_host/render_view_host.h"
@@ -35,7 +36,6 @@
#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/browser/translate/translate_manager.h"
#include "chrome/common/chrome_switches.h"
-#include "chrome/common/platform_util.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "grit/generated_resources.h"
diff --git a/chrome/browser/tab_contents/tab_contents.cc b/chrome/browser/tab_contents/tab_contents.cc
index d23e537..f3fe7d7 100644
--- a/chrome/browser/tab_contents/tab_contents.cc
+++ b/chrome/browser/tab_contents/tab_contents.cc
@@ -44,6 +44,7 @@
#include "chrome/browser/modal_html_dialog_delegate.h"
#include "chrome/browser/omnibox_search_hint.h"
#include "chrome/browser/password_manager/password_manager.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/browser/plugin_installer.h"
#include "chrome/browser/pref_service.h"
#include "chrome/browser/profile.h"
@@ -71,7 +72,6 @@
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_action.h"
#include "chrome/common/notification_service.h"
-#include "chrome/common/platform_util.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/render_messages.h"
#include "chrome/common/renderer_preferences.h"
@@ -3154,4 +3154,3 @@ Profile* TabContents::GetProfileForPasswordManager() {
bool TabContents::DidLastPageLoadEncounterSSLErrors() {
return controller().ssl_manager()->ProcessedSSLErrorFromRequest();
}
-
diff --git a/chrome/browser/views/about_chrome_view.cc b/chrome/browser/views/about_chrome_view.cc
index 96e284d..3630b304 100644
--- a/chrome/browser/views/about_chrome_view.cc
+++ b/chrome/browser/views/about_chrome_view.cc
@@ -13,9 +13,9 @@
#include "chrome/app/chrome_version_info.h"
#include "chrome/browser/browser_list.h"
#include "chrome/browser/metrics/user_metrics.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/browser/views/accessible_view_helper.h"
#include "chrome/common/chrome_constants.h"
-#include "chrome/common/platform_util.h"
#include "chrome/common/url_constants.h"
#include "gfx/canvas.h"
#include "grit/chromium_strings.h"
diff --git a/chrome/browser/views/infobars/extension_infobar.cc b/chrome/browser/views/infobars/extension_infobar.cc
index bbfc4ac..5556593 100644
--- a/chrome/browser/views/infobars/extension_infobar.cc
+++ b/chrome/browser/views/infobars/extension_infobar.cc
@@ -9,9 +9,9 @@
#include "chrome/browser/extensions/extension_context_menu_model.h"
#include "chrome/browser/extensions/extension_infobar_delegate.h"
#include "chrome/browser/extensions/extension_host.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/browser/views/frame/browser_view.h"
#include "chrome/common/extensions/extension.h"
-#include "chrome/common/platform_util.h"
#include "gfx/canvas.h"
#include "grit/theme_resources.h"
#include "views/controls/button/menu_button.h"
diff --git a/chrome/browser/views/location_bar/page_action_image_view.cc b/chrome/browser/views/location_bar/page_action_image_view.cc
index 6ee90a3..635d678 100644
--- a/chrome/browser/views/location_bar/page_action_image_view.cc
+++ b/chrome/browser/views/location_bar/page_action_image_view.cc
@@ -10,7 +10,7 @@
#include "chrome/browser/profile.h"
#include "chrome/browser/views/frame/browser_view.h"
#include "chrome/browser/views/location_bar/location_bar_view.h"
-#include "chrome/common/platform_util.h"
+#include "chrome/browser/platform_util.h"
#include "views/controls/menu/menu_2.h"
PageActionImageView::PageActionImageView(LocationBarView* owner,
@@ -217,5 +217,3 @@ void PageActionImageView::HidePopup() {
if (popup_)
popup_->Close();
}
-
-