diff options
author | mihaip@chromium.org <mihaip@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-15 00:41:44 +0000 |
---|---|---|
committer | mihaip@chromium.org <mihaip@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-15 00:41:44 +0000 |
commit | 5b1a04b49b0b58b8268415118c89f3056cbd1fac (patch) | |
tree | a81fc292bcfc9c2b36b826dd6253d89a5339e06c /chrome/renderer | |
parent | 15c532e6a94646f9d5ed40af9bcb60a28a30a7ec (diff) | |
download | chromium_src-5b1a04b49b0b58b8268415118c89f3056cbd1fac.zip chromium_src-5b1a04b49b0b58b8268415118c89f3056cbd1fac.tar.gz chromium_src-5b1a04b49b0b58b8268415118c89f3056cbd1fac.tar.bz2 |
Allow platform apps to open links in the browser.
Triggered via <a href="..." target="_blank"> or window.open('...').
R=miket@chromium.org
BUG=130213
Review URL: https://chromiumcodereview.appspot.com/10534147
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@142292 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/extensions/extension_helper.cc | 40 | ||||
-rw-r--r-- | chrome/renderer/extensions/extension_helper.h | 8 |
2 files changed, 40 insertions, 8 deletions
diff --git a/chrome/renderer/extensions/extension_helper.cc b/chrome/renderer/extensions/extension_helper.cc index a3460bf..24d3dc2 100644 --- a/chrome/renderer/extensions/extension_helper.cc +++ b/chrome/renderer/extensions/extension_helper.cc @@ -32,6 +32,7 @@ #include "webkit/glue/image_resource_fetcher.h" #include "webkit/glue/resource_fetcher.h" +using content::ConsoleMessageLevel; using extensions::MiscellaneousBindings; using WebKit::WebConsoleMessage; using WebKit::WebDataSource; @@ -215,6 +216,8 @@ bool ExtensionHelper::OnMessageReceived(const IPC::Message& message) { OnUpdateBrowserWindowId) IPC_MESSAGE_HANDLER(ExtensionMsg_NotifyRenderViewType, OnNotifyRendererViewType) + IPC_MESSAGE_HANDLER(ExtensionMsg_AddMessageToConsole, + OnAddMessageToConsole) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP() return handled; @@ -385,6 +388,11 @@ void ExtensionHelper::OnUpdateBrowserWindowId(int window_id) { browser_window_id_ = window_id; } +void ExtensionHelper::OnAddMessageToConsole(ConsoleMessageLevel level, + const std::string& message) { + AddMessageToRootConsole(level, UTF8ToUTF16(message)); +} + void ExtensionHelper::DidDownloadApplicationDefinition( const WebKit::WebURLResponse& response, const std::string& data) { @@ -396,14 +404,16 @@ void ExtensionHelper::DidDownloadApplicationDefinition( std::string error_message; scoped_ptr<Value> result(serializer.Deserialize(&error_code, &error_message)); if (!result.get()) { - AddErrorToRootConsole(UTF8ToUTF16(error_message)); + AddMessageToRootConsole( + content::CONSOLE_MESSAGE_LEVEL_ERROR, UTF8ToUTF16(error_message)); return; } string16 error_message_16; if (!web_apps::ParseWebAppFromDefinitionFile(result.get(), app_info.get(), &error_message_16)) { - AddErrorToRootConsole(error_message_16); + AddMessageToRootConsole( + content::CONSOLE_MESSAGE_LEVEL_ERROR, error_message_16); return; } @@ -466,8 +476,10 @@ void ExtensionHelper::DidDownloadApplicationIcon(ImageResourceFetcher* fetcher, for (size_t i = 0; i < pending_app_info_->icons.size(); ++i) { size_t current_size = pending_app_info_->icons[i].data.getSize(); if (current_size > kMaxIconSize - actual_icon_size) { - AddErrorToRootConsole(ASCIIToUTF16( - "Icons are too large. Maximum total size for app icons is 128 KB.")); + AddMessageToRootConsole( + content::CONSOLE_MESSAGE_LEVEL_ERROR, + ASCIIToUTF16("Icons are too large. " + "Maximum total size for app icons is 128 KB.")); return; } actual_icon_size += current_size; @@ -478,9 +490,25 @@ void ExtensionHelper::DidDownloadApplicationIcon(ImageResourceFetcher* fetcher, pending_app_info_.reset(NULL); } -void ExtensionHelper::AddErrorToRootConsole(const string16& message) { +void ExtensionHelper::AddMessageToRootConsole(ConsoleMessageLevel level, + const string16& message) { if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { + WebConsoleMessage::Level target_level = WebConsoleMessage::LevelLog; + switch (level) { + case content::CONSOLE_MESSAGE_LEVEL_TIP: + target_level = WebConsoleMessage::LevelTip; + break; + case content::CONSOLE_MESSAGE_LEVEL_LOG: + target_level = WebConsoleMessage::LevelLog; + break; + case content::CONSOLE_MESSAGE_LEVEL_WARNING: + target_level = WebConsoleMessage::LevelWarning; + break; + case content::CONSOLE_MESSAGE_LEVEL_ERROR: + target_level = WebConsoleMessage::LevelError; + break; + } render_view()->GetWebView()->mainFrame()->addMessageToConsole( - WebConsoleMessage(WebConsoleMessage::LevelError, message)); + WebConsoleMessage(target_level, message)); } } diff --git a/chrome/renderer/extensions/extension_helper.h b/chrome/renderer/extensions/extension_helper.h index 99afbde..46a91aa 100644 --- a/chrome/renderer/extensions/extension_helper.h +++ b/chrome/renderer/extensions/extension_helper.h @@ -12,6 +12,7 @@ #include "base/memory/linked_ptr.h" #include "base/memory/scoped_ptr.h" #include "chrome/common/view_type.h" +#include "content/public/common/console_message_level.h" #include "content/public/renderer/render_view_observer.h" #include "content/public/renderer/render_view_observer_tracker.h" #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLResponse.h" @@ -95,6 +96,8 @@ class ExtensionHelper void OnNotifyRendererViewType(chrome::ViewType view_type); void OnSetTabId(int tab_id); void OnUpdateBrowserWindowId(int window_id); + void OnAddMessageToConsole(content::ConsoleMessageLevel level, + const std::string& message); // Callback triggered when we finish downloading the application definition // file. @@ -106,8 +109,9 @@ class ExtensionHelper void DidDownloadApplicationIcon(webkit_glue::ImageResourceFetcher* fetcher, const SkBitmap& image); - // Helper to add an error message to the root frame's console. - void AddErrorToRootConsole(const string16& message); + // Helper to add an logging message to the root frame's console. + void AddMessageToRootConsole(content::ConsoleMessageLevel level, + const string16& message); ExtensionDispatcher* extension_dispatcher_; |