summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authormihaip@chromium.org <mihaip@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-15 00:41:44 +0000
committermihaip@chromium.org <mihaip@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-15 00:41:44 +0000
commit5b1a04b49b0b58b8268415118c89f3056cbd1fac (patch)
treea81fc292bcfc9c2b36b826dd6253d89a5339e06c /chrome/renderer
parent15c532e6a94646f9d5ed40af9bcb60a28a30a7ec (diff)
downloadchromium_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.cc40
-rw-r--r--chrome/renderer/extensions/extension_helper.h8
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_;