summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorpfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-28 18:42:41 +0000
committerpfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-28 18:42:41 +0000
commitc5c1d6d69421fc1bd52efb0b1c5a6f646d1724c3 (patch)
treed42f5f40e3e508188e6eea82e274935e5641116c /content
parenta43d908a88e048c24a285f01eab96ec5c5a4771f (diff)
downloadchromium_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.cc12
-rw-r--r--content/renderer/devtools_agent.h3
-rw-r--r--content/renderer/render_view.cc18
-rw-r--r--content/renderer/render_view.h3
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