diff options
author | pfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-28 18:42:41 +0000 |
---|---|---|
committer | pfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-28 18:42:41 +0000 |
commit | c5c1d6d69421fc1bd52efb0b1c5a6f646d1724c3 (patch) | |
tree | d42f5f40e3e508188e6eea82e274935e5641116c /content | |
parent | a43d908a88e048c24a285f01eab96ec5c5a4771f (diff) | |
download | chromium_src-c5c1d6d69421fc1bd52efb0b1c5a6f646d1724c3.zip chromium_src-c5c1d6d69421fc1bd52efb0b1c5a6f646d1724c3.tar.gz chromium_src-c5c1d6d69421fc1bd52efb0b1c5a6f646d1724c3.tar.bz2 |
DevTools: disable link doctor while DevTools is opened.
BUG=62465
TEST=
Review URL: http://codereview.chromium.org/7514038
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@94514 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r-- | content/renderer/devtools_agent.cc | 12 | ||||
-rw-r--r-- | content/renderer/devtools_agent.h | 3 | ||||
-rw-r--r-- | content/renderer/render_view.cc | 18 | ||||
-rw-r--r-- | content/renderer/render_view.h | 3 |
4 files changed, 33 insertions, 3 deletions
diff --git a/content/renderer/devtools_agent.cc b/content/renderer/devtools_agent.cc index b154813..bafcc8d 100644 --- a/content/renderer/devtools_agent.cc +++ b/content/renderer/devtools_agent.cc @@ -57,7 +57,8 @@ class WebKitClientMessageLoopImpl std::map<int, DevToolsAgent*> DevToolsAgent::agent_for_routing_id_; DevToolsAgent::DevToolsAgent(RenderView* render_view) - : RenderViewObserver(render_view) { + : RenderViewObserver(render_view), + is_attached_(false) { agent_for_routing_id_[routing_id()] = this; CommandLine* cmd = CommandLine::ForCurrentProcess(); @@ -160,6 +161,7 @@ void DevToolsAgent::OnAttach( WebDevToolsAgent* web_agent = GetWebAgent(); if (web_agent) { web_agent->attach(); + is_attached_ = true; for (DevToolsRuntimeProperties::const_iterator it = runtime_properties.begin(); it != runtime_properties.end(); ++it) { @@ -171,8 +173,10 @@ void DevToolsAgent::OnAttach( void DevToolsAgent::OnDetach() { WebDevToolsAgent* web_agent = GetWebAgent(); - if (web_agent) + if (web_agent) { web_agent->detach(); + is_attached_ = false; + } } void DevToolsAgent::OnFrontendLoaded() { @@ -212,3 +216,7 @@ WebDevToolsAgent* DevToolsAgent::GetWebAgent() { return NULL; return web_view->devToolsAgent(); } + +bool DevToolsAgent::IsAttached() { + return is_attached_; +} diff --git a/content/renderer/devtools_agent.h b/content/renderer/devtools_agent.h index a1693b5..8c8dd78 100644 --- a/content/renderer/devtools_agent.h +++ b/content/renderer/devtools_agent.h @@ -36,6 +36,8 @@ class DevToolsAgent : public RenderViewObserver, WebKit::WebDevToolsAgent* GetWebAgent(); + bool IsAttached(); + private: friend class DevToolsAgentFilter; @@ -68,6 +70,7 @@ class DevToolsAgent : public RenderViewObserver, static std::map<int, DevToolsAgent*> agent_for_routing_id_; + bool is_attached_; bool expose_v8_debugger_protocol_; DISALLOW_COPY_AND_ASSIGN(DevToolsAgent); diff --git a/content/renderer/render_view.cc b/content/renderer/render_view.cc index 1fa5152..988328a 100644 --- a/content/renderer/render_view.cc +++ b/content/renderer/render_view.cc @@ -359,6 +359,7 @@ RenderView::RenderView(RenderThreadBase* render_thread, device_orientation_dispatcher_(NULL), accessibility_ack_pending_(false), p2p_socket_dispatcher_(NULL), + devtools_agent_(NULL), session_storage_namespace_id_(session_storage_namespace_id) { routing_id_ = routing_id; if (opener_id != MSG_ROUTING_NONE) @@ -412,7 +413,7 @@ RenderView::RenderView(RenderThreadBase* render_thread, new MHTMLGenerator(this); - new DevToolsAgent(this); + devtools_agent_ = new DevToolsAgent(this); if (command_line.HasSwitch(switches::kEnableMediaStream)) { media_stream_impl_ = new MediaStreamImpl( @@ -1232,6 +1233,11 @@ void RenderView::LoadNavigationErrorPage(WebFrame* frame, const WebURLError& error, const std::string& html, bool replace) { + + // Do not show alternate error page when DevTools is attached. + if (devtools_agent_->IsAttached()) + return; + std::string alt_html = !html.empty() ? html : content::GetContentClient()->renderer()->GetNavigationErrorHtml( failed_request, error); @@ -2416,6 +2422,10 @@ void RenderView::didFailProvisionalLoad(WebFrame* frame, navigation_state->request_time())); } + // Do not show alternate error page when DevTools is attached. + if (devtools_agent_->IsAttached()) + return; + // Provide the user with a more helpful error page? if (MaybeLoadAlternateErrorPage(frame, error, replace)) return; @@ -2987,6 +2997,7 @@ void RenderView::SyncNavigationState() { GURL RenderView::GetAlternateErrorPageURL(const GURL& failed_url, ErrorPageType error_type) { + if (failed_url.SchemeIsSecure()) { // If the URL that failed was secure, then the embedding web page was not // expecting a network attacker to be able to manipulate its contents. As @@ -2996,6 +3007,11 @@ GURL RenderView::GetAlternateErrorPageURL(const GURL& failed_url, return GURL(); } + if (devtools_agent_->IsAttached()) { + // Do not show alternate error page when DevTools is attached. + return GURL(); + } + // Grab the base URL from the browser process. if (!alternate_error_page_url_.is_valid()) return GURL(); diff --git a/content/renderer/render_view.h b/content/renderer/render_view.h index 929fdec..e933053 100644 --- a/content/renderer/render_view.h +++ b/content/renderer/render_view.h @@ -53,6 +53,7 @@ class AudioMessageFilter; class DeviceOrientationDispatcher; +class DevToolsAgent; class ExternalPopupMenu; class FilePath; class GeolocationDispatcher; @@ -1130,6 +1131,8 @@ class RenderView : public RenderWidget, // Dispatches all P2P socket used by the renderer. P2PSocketDispatcher* p2p_socket_dispatcher_; + DevToolsAgent* devtools_agent_; + // Misc ---------------------------------------------------------------------- // The current and pending file chooser completion objects. If the queue is |