Commit 8ff54246 authored by thestig@chromium.org's avatar thestig@chromium.org

Mark ChromeViewHostMsg_DetailedConsoleMessageAdded as extensions-only.

Review URL: https://codereview.chromium.org/321453003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@275641 0039d316-1c4b-4281-b951-d872f2087c98
parent f567406f
...@@ -49,12 +49,16 @@ bool ChromeExtensionWebContentsObserver::OnMessageReceived( ...@@ -49,12 +49,16 @@ bool ChromeExtensionWebContentsObserver::OnMessageReceived(
bool ChromeExtensionWebContentsObserver::OnMessageReceived( bool ChromeExtensionWebContentsObserver::OnMessageReceived(
const IPC::Message& message, const IPC::Message& message,
content::RenderFrameHost* render_frame_host) { content::RenderFrameHost* render_frame_host) {
#if defined(ENABLE_EXTENSIONS)
bool handled = true; bool handled = true;
IPC_BEGIN_MESSAGE_MAP(ChromeExtensionWebContentsObserver, message) IPC_BEGIN_MESSAGE_MAP(ChromeExtensionWebContentsObserver, message)
IPC_MESSAGE_HANDLER(ChromeViewHostMsg_DetailedConsoleMessageAdded, IPC_MESSAGE_HANDLER(ChromeViewHostMsg_DetailedConsoleMessageAdded,
OnDetailedConsoleMessageAdded) OnDetailedConsoleMessageAdded)
IPC_MESSAGE_UNHANDLED(handled = false) IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP() IPC_END_MESSAGE_MAP()
#else
bool handled = false;
#endif
return handled; return handled;
} }
...@@ -63,6 +67,7 @@ void ChromeExtensionWebContentsObserver::OnDetailedConsoleMessageAdded( ...@@ -63,6 +67,7 @@ void ChromeExtensionWebContentsObserver::OnDetailedConsoleMessageAdded(
const base::string16& source, const base::string16& source,
const StackTrace& stack_trace, const StackTrace& stack_trace,
int32 severity_level) { int32 severity_level) {
#if defined(ENABLE_EXTENSIONS)
if (!IsSourceFromAnExtension(source)) if (!IsSourceFromAnExtension(source))
return; return;
...@@ -83,6 +88,7 @@ void ChromeExtensionWebContentsObserver::OnDetailedConsoleMessageAdded( ...@@ -83,6 +88,7 @@ void ChromeExtensionWebContentsObserver::OnDetailedConsoleMessageAdded(
static_cast<logging::LogSeverity>(severity_level), static_cast<logging::LogSeverity>(severity_level),
render_view_host->GetRoutingID(), render_view_host->GetRoutingID(),
render_view_host->GetProcess()->GetID()))); render_view_host->GetProcess()->GetID())));
#endif
} }
void ChromeExtensionWebContentsObserver::OnPostMessage(int port_id, void ChromeExtensionWebContentsObserver::OnPostMessage(int port_id,
......
...@@ -318,12 +318,16 @@ bool TabHelper::OnMessageReceived(const IPC::Message& message) { ...@@ -318,12 +318,16 @@ bool TabHelper::OnMessageReceived(const IPC::Message& message) {
bool TabHelper::OnMessageReceived(const IPC::Message& message, bool TabHelper::OnMessageReceived(const IPC::Message& message,
content::RenderFrameHost* render_frame_host) { content::RenderFrameHost* render_frame_host) {
#if defined(ENABLE_EXTENSIONS)
bool handled = true; bool handled = true;
IPC_BEGIN_MESSAGE_MAP(TabHelper, message) IPC_BEGIN_MESSAGE_MAP(TabHelper, message)
IPC_MESSAGE_HANDLER(ChromeViewHostMsg_DetailedConsoleMessageAdded, IPC_MESSAGE_HANDLER(ChromeViewHostMsg_DetailedConsoleMessageAdded,
OnDetailedConsoleMessageAdded) OnDetailedConsoleMessageAdded)
IPC_MESSAGE_UNHANDLED(handled = false) IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP() IPC_END_MESSAGE_MAP()
#else
bool handled = false;
#endif
return handled; return handled;
} }
...@@ -472,6 +476,7 @@ void TabHelper::OnDetailedConsoleMessageAdded( ...@@ -472,6 +476,7 @@ void TabHelper::OnDetailedConsoleMessageAdded(
const base::string16& source, const base::string16& source,
const StackTrace& stack_trace, const StackTrace& stack_trace,
int32 severity_level) { int32 severity_level) {
#if defined(ENABLE_EXTENSIONS)
if (IsSourceFromAnExtension(source)) { if (IsSourceFromAnExtension(source)) {
content::RenderViewHost* rvh = web_contents()->GetRenderViewHost(); content::RenderViewHost* rvh = web_contents()->GetRenderViewHost();
ErrorConsole::Get(profile_)->ReportError( ErrorConsole::Get(profile_)->ReportError(
...@@ -487,6 +492,7 @@ void TabHelper::OnDetailedConsoleMessageAdded( ...@@ -487,6 +492,7 @@ void TabHelper::OnDetailedConsoleMessageAdded(
rvh->GetRoutingID(), rvh->GetRoutingID(),
rvh->GetProcess()->GetID()))); rvh->GetProcess()->GetID())));
} }
#endif
} }
const Extension* TabHelper::GetExtension(const std::string& extension_app_id) { const Extension* TabHelper::GetExtension(const std::string& extension_app_id) {
......
...@@ -60,6 +60,8 @@ ...@@ -60,6 +60,8 @@
'renderer/extensions/chrome_extension_helper.h', 'renderer/extensions/chrome_extension_helper.h',
'renderer/extensions/chrome_extensions_dispatcher_delegate.cc', 'renderer/extensions/chrome_extensions_dispatcher_delegate.cc',
'renderer/extensions/chrome_extensions_dispatcher_delegate.h', 'renderer/extensions/chrome_extensions_dispatcher_delegate.h',
'renderer/extensions/chrome_extensions_render_frame_observer.cc',
'renderer/extensions/chrome_extensions_render_frame_observer.h',
'renderer/extensions/chrome_extensions_renderer_client.cc', 'renderer/extensions/chrome_extensions_renderer_client.cc',
'renderer/extensions/chrome_extensions_renderer_client.h', 'renderer/extensions/chrome_extensions_renderer_client.h',
'renderer/extensions/chrome_v8_context.cc', 'renderer/extensions/chrome_v8_context.cc',
...@@ -315,6 +317,12 @@ ...@@ -315,6 +317,12 @@
['exclude', '^renderer/safe_browsing/'], ['exclude', '^renderer/safe_browsing/'],
], ],
}], }],
['enable_extensions==0', {
'sources!': [
'renderer/extensions/chrome_extensions_render_frame_observer.cc',
'renderer/extensions/chrome_extensions_render_frame_observer.h',
],
}],
['enable_webrtc==0', { ['enable_webrtc==0', {
'sources!': [ 'sources!': [
'renderer/extensions/cast_streaming_native_handler.cc', 'renderer/extensions/cast_streaming_native_handler.cc',
......
...@@ -707,6 +707,8 @@ IPC_MESSAGE_CONTROL2(ChromeViewMsg_SetSearchURLs, ...@@ -707,6 +707,8 @@ IPC_MESSAGE_CONTROL2(ChromeViewMsg_SetSearchURLs,
std::vector<GURL> /* search_urls */, std::vector<GURL> /* search_urls */,
GURL /* new_tab_page_url */) GURL /* new_tab_page_url */)
// TODO(thestig) Eventually separate out all the extensions messages.
#if defined(ENABLE_EXTENSIONS)
// Tells listeners that a detailed message was reported to the console by // Tells listeners that a detailed message was reported to the console by
// WebKit. // WebKit.
IPC_MESSAGE_ROUTED4(ChromeViewHostMsg_DetailedConsoleMessageAdded, IPC_MESSAGE_ROUTED4(ChromeViewHostMsg_DetailedConsoleMessageAdded,
...@@ -714,6 +716,7 @@ IPC_MESSAGE_ROUTED4(ChromeViewHostMsg_DetailedConsoleMessageAdded, ...@@ -714,6 +716,7 @@ IPC_MESSAGE_ROUTED4(ChromeViewHostMsg_DetailedConsoleMessageAdded,
base::string16 /* source */, base::string16 /* source */,
extensions::StackTrace /* stack trace */, extensions::StackTrace /* stack trace */,
int32 /* severity level */) int32 /* severity level */)
#endif
#if defined(ENABLE_PLUGINS) #if defined(ENABLE_PLUGINS)
// Sent by the renderer to check if crash reporting is enabled. // Sent by the renderer to check if crash reporting is enabled.
......
...@@ -114,8 +114,8 @@ ...@@ -114,8 +114,8 @@
#include "components/nacl/renderer/nacl_helper.h" #include "components/nacl/renderer/nacl_helper.h"
#endif #endif
#if defined(ENABLE_WEBRTC) #if defined(ENABLE_EXTENSIONS)
#include "chrome/renderer/media/webrtc_logging_message_filter.h" #include "chrome/renderer/extensions/chrome_extensions_render_frame_observer.h"
#endif #endif
#if defined(ENABLE_SPELLCHECK) #if defined(ENABLE_SPELLCHECK)
...@@ -123,9 +123,13 @@ ...@@ -123,9 +123,13 @@
#include "chrome/renderer/spellchecker/spellcheck_provider.h" #include "chrome/renderer/spellchecker/spellcheck_provider.h"
#endif #endif
#if defined(ENABLE_WEBRTC)
#include "chrome/renderer/media/webrtc_logging_message_filter.h"
#endif
#if defined(OS_WIN) #if defined(OS_WIN)
#include "chrome_elf/blacklist/blacklist.h" #include "chrome_elf/blacklist/blacklist.h"
#endif // OS_WIN #endif
using autofill::AutofillAgent; using autofill::AutofillAgent;
using autofill::PasswordAutofillAgent; using autofill::PasswordAutofillAgent;
...@@ -394,6 +398,9 @@ void ChromeContentRendererClient::RenderFrameCreated( ...@@ -394,6 +398,9 @@ void ChromeContentRendererClient::RenderFrameCreated(
chrome_observer_->content_setting_rules()); chrome_observer_->content_setting_rules());
} }
#if defined(ENABLE_EXTENSIONS)
new extensions::ChromeExtensionsRenderFrameObserver(render_frame);
#endif
new extensions::ExtensionFrameHelper(render_frame, new extensions::ExtensionFrameHelper(render_frame,
extension_dispatcher_.get()); extension_dispatcher_.get());
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include "chrome/renderer/chrome_render_frame_observer.h" #include "chrome/renderer/chrome_render_frame_observer.h"
#include "base/strings/string_split.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "chrome/common/prerender_messages.h" #include "chrome/common/prerender_messages.h"
#include "chrome/common/print_messages.h" #include "chrome/common/print_messages.h"
...@@ -12,7 +11,6 @@ ...@@ -12,7 +11,6 @@
#include "chrome/renderer/prerender/prerender_helper.h" #include "chrome/renderer/prerender/prerender_helper.h"
#include "chrome/renderer/printing/print_web_view_helper.h" #include "chrome/renderer/printing/print_web_view_helper.h"
#include "content/public/renderer/render_frame.h" #include "content/public/renderer/render_frame.h"
#include "extensions/common/stack_frame.h"
#include "skia/ext/image_operations.h" #include "skia/ext/image_operations.h"
#include "skia/ext/platform_canvas.h" #include "skia/ext/platform_canvas.h"
#include "third_party/WebKit/public/platform/WebImage.h" #include "third_party/WebKit/public/platform/WebImage.h"
...@@ -24,61 +22,6 @@ using blink::WebElement; ...@@ -24,61 +22,6 @@ using blink::WebElement;
using blink::WebNode; using blink::WebNode;
namespace { namespace {
// The delimiter for a stack trace provided by WebKit.
const char kStackFrameDelimiter[] = "\n at ";
// Get a stack trace from a WebKit console message.
// There are three possible scenarios:
// 1. WebKit gives us a stack trace in |stack_trace|.
// 2. The stack trace is embedded in the error |message| by an internal
// script. This will be more useful than |stack_trace|, since |stack_trace|
// will include the internal bindings trace, instead of a developer's code.
// 3. No stack trace is included. In this case, we should mock one up from
// the given line number and source.
// |message| will be populated with the error message only (i.e., will not
// include any stack trace).
extensions::StackTrace GetStackTraceFromMessage(
base::string16* message,
const base::string16& source,
const base::string16& stack_trace,
int32 line_number) {
extensions::StackTrace result;
std::vector<base::string16> pieces;
size_t index = 0;
if (message->find(base::UTF8ToUTF16(kStackFrameDelimiter)) !=
base::string16::npos) {
base::SplitStringUsingSubstr(*message,
base::UTF8ToUTF16(kStackFrameDelimiter),
&pieces);
*message = pieces[0];
index = 1;
} else if (!stack_trace.empty()) {
base::SplitStringUsingSubstr(stack_trace,
base::UTF8ToUTF16(kStackFrameDelimiter),
&pieces);
}
// If we got a stack trace, parse each frame from the text.
if (index < pieces.size()) {
for (; index < pieces.size(); ++index) {
scoped_ptr<extensions::StackFrame> frame =
extensions::StackFrame::CreateFromText(pieces[index]);
if (frame.get())
result.push_back(*frame);
}
}
if (result.empty()) { // If we don't have a stack trace, mock one up.
result.push_back(
extensions::StackFrame(line_number,
1u, // column number
source,
base::string16() /* no function name */ ));
}
return result;
}
// If the source image is null or occupies less area than // If the source image is null or occupies less area than
// |thumbnail_min_area_pixels|, we return the image unmodified. Otherwise, we // |thumbnail_min_area_pixels|, we return the image unmodified. Otherwise, we
...@@ -155,22 +98,6 @@ void ChromeRenderFrameObserver::DidChangeName( ...@@ -155,22 +98,6 @@ void ChromeRenderFrameObserver::DidChangeName(
base::UTF16ToUTF8(name))); base::UTF16ToUTF8(name)));
} }
void ChromeRenderFrameObserver::DetailedConsoleMessageAdded(
const base::string16& message,
const base::string16& source,
const base::string16& stack_trace_string,
int32 line_number,
int32 severity_level) {
base::string16 trimmed_message = message;
extensions::StackTrace stack_trace = GetStackTraceFromMessage(
&trimmed_message,
source,
stack_trace_string,
line_number);
Send(new ChromeViewHostMsg_DetailedConsoleMessageAdded(
routing_id(), trimmed_message, source, stack_trace, severity_level));
}
void ChromeRenderFrameObserver::OnSetIsPrerendering(bool is_prerendering) { void ChromeRenderFrameObserver::OnSetIsPrerendering(bool is_prerendering) {
if (is_prerendering) { if (is_prerendering) {
// If the PrerenderHelper for this frame already exists, don't create it. It // If the PrerenderHelper for this frame already exists, don't create it. It
......
...@@ -23,11 +23,6 @@ class ChromeRenderFrameObserver : public content::RenderFrameObserver { ...@@ -23,11 +23,6 @@ class ChromeRenderFrameObserver : public content::RenderFrameObserver {
// RenderFrameObserver implementation. // RenderFrameObserver implementation.
virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
virtual void DidChangeName(const base::string16& name) OVERRIDE; virtual void DidChangeName(const base::string16& name) OVERRIDE;
virtual void DetailedConsoleMessageAdded(const base::string16& message,
const base::string16& source,
const base::string16& stack_trace,
int32 line_number,
int32 severity_level) OVERRIDE;
// IPC handlers // IPC handlers
void OnSetIsPrerendering(bool is_prerendering); void OnSetIsPrerendering(bool is_prerendering);
......
// Copyright 2014 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/renderer/extensions/chrome_extensions_render_frame_observer.h"
#include "base/strings/string_split.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/common/render_messages.h"
#include "extensions/common/stack_frame.h"
namespace extensions {
namespace {
// The delimiter for a stack trace provided by WebKit.
const char kStackFrameDelimiter[] = "\n at ";
// Get a stack trace from a WebKit console message.
// There are three possible scenarios:
// 1. WebKit gives us a stack trace in |stack_trace|.
// 2. The stack trace is embedded in the error |message| by an internal
// script. This will be more useful than |stack_trace|, since |stack_trace|
// will include the internal bindings trace, instead of a developer's code.
// 3. No stack trace is included. In this case, we should mock one up from
// the given line number and source.
// |message| will be populated with the error message only (i.e., will not
// include any stack trace).
StackTrace GetStackTraceFromMessage(
base::string16* message,
const base::string16& source,
const base::string16& stack_trace,
int32 line_number) {
StackTrace result;
std::vector<base::string16> pieces;
size_t index = 0;
if (message->find(base::UTF8ToUTF16(kStackFrameDelimiter)) !=
base::string16::npos) {
base::SplitStringUsingSubstr(*message,
base::UTF8ToUTF16(kStackFrameDelimiter),
&pieces);
*message = pieces[0];
index = 1;
} else if (!stack_trace.empty()) {
base::SplitStringUsingSubstr(stack_trace,
base::UTF8ToUTF16(kStackFrameDelimiter),
&pieces);
}
// If we got a stack trace, parse each frame from the text.
if (index < pieces.size()) {
for (; index < pieces.size(); ++index) {
scoped_ptr<StackFrame> frame = StackFrame::CreateFromText(pieces[index]);
if (frame.get())
result.push_back(*frame);
}
}
if (result.empty()) { // If we don't have a stack trace, mock one up.
result.push_back(
StackFrame(line_number,
1u, // column number
source,
base::string16() /* no function name */ ));
}
return result;
}
} // namespace
ChromeExtensionsRenderFrameObserver::ChromeExtensionsRenderFrameObserver(
content::RenderFrame* render_frame)
: content::RenderFrameObserver(render_frame) {
}
ChromeExtensionsRenderFrameObserver::~ChromeExtensionsRenderFrameObserver() {
}
void ChromeExtensionsRenderFrameObserver::DetailedConsoleMessageAdded(
const base::string16& message,
const base::string16& source,
const base::string16& stack_trace_string,
int32 line_number,
int32 severity_level) {
base::string16 trimmed_message = message;
StackTrace stack_trace = GetStackTraceFromMessage(
&trimmed_message,
source,
stack_trace_string,
line_number);
Send(new ChromeViewHostMsg_DetailedConsoleMessageAdded(
routing_id(), trimmed_message, source, stack_trace, severity_level));
}
} // namespace extensions
// Copyright 2014 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_RENDERER_EXTENSIONS_CHROME_EXTENSIONS_RENDER_FRAME_OBSERVER_H_
#define CHROME_RENDERER_EXTENSIONS_CHROME_EXTENSIONS_RENDER_FRAME_OBSERVER_H_
#include "base/basictypes.h"
#include "content/public/renderer/render_frame_observer.h"
namespace extensions {
// This class holds the extensions specific parts of RenderFrame, and has the
// same lifetime.
class ChromeExtensionsRenderFrameObserver
: public content::RenderFrameObserver {
public:
explicit ChromeExtensionsRenderFrameObserver(
content::RenderFrame* render_frame);
virtual ~ChromeExtensionsRenderFrameObserver();
private:
// RenderFrameObserver implementation.
virtual void DetailedConsoleMessageAdded(const base::string16& message,
const base::string16& source,
const base::string16& stack_trace,
int32 line_number,
int32 severity_level) OVERRIDE;
DISALLOW_COPY_AND_ASSIGN(ChromeExtensionsRenderFrameObserver);
};
} // namespace extensions
#endif // CHROME_RENDERER_EXTENSIONS_CHROME_EXTENSIONS_RENDER_FRAME_OBSERVER_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment