Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(990)

Unified Diff: content/browser/devtools/render_frame_devtools_agent_host.cc

Issue 1181673002: [DevTools] Preserve DevTools for crashed page. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comment Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/devtools/render_frame_devtools_agent_host.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/devtools/render_frame_devtools_agent_host.cc
diff --git a/content/browser/devtools/render_frame_devtools_agent_host.cc b/content/browser/devtools/render_frame_devtools_agent_host.cc
index ceba15516fcc711135178acc80171ecac6d040be..152ce7787b73bef26f4f8a080f50431d70a403e1 100644
--- a/content/browser/devtools/render_frame_devtools_agent_host.cc
+++ b/content/browser/devtools/render_frame_devtools_agent_host.cc
@@ -306,7 +306,8 @@ RenderFrameDevToolsAgentHost::RenderFrameDevToolsAgentHost(
protocol_handler_(new DevToolsProtocolHandler(
this,
base::Bind(&RenderFrameDevToolsAgentHost::SendMessageToClient,
- base::Unretained(this)))) {
+ base::Unretained(this)))),
+ current_frame_crashed_(false) {
DevToolsProtocolDispatcher* dispatcher = protocol_handler_->dispatcher();
dispatcher->SetDOMHandler(dom_handler_.get());
dispatcher->SetInputHandler(input_handler_.get());
@@ -336,6 +337,7 @@ RenderFrameDevToolsAgentHost::RenderFrameDevToolsAgentHost(
void RenderFrameDevToolsAgentHost::SetPending(RenderFrameHostImpl* host) {
DCHECK(!pending_);
+ current_frame_crashed_ = false;
pending_.reset(new FrameHostHolder(this, host));
if (IsAttached())
pending_->Reattach(current_.get());
@@ -350,6 +352,7 @@ void RenderFrameDevToolsAgentHost::SetPending(RenderFrameHostImpl* host) {
void RenderFrameDevToolsAgentHost::CommitPending() {
DCHECK(pending_);
+ current_frame_crashed_ = false;
if (!ShouldCreateDevToolsFor(pending_->host())) {
DestroyOnRenderFrameGone();
@@ -467,7 +470,7 @@ void RenderFrameDevToolsAgentHost::AboutToNavigateRenderFrame(
DCHECK(!pending_ || pending_->host() != old_host);
if (!current_ || current_->host() != old_host)
return;
- if (old_host == new_host)
+ if (old_host == new_host && !current_frame_crashed_)
nasko 2015/06/15 22:25:49 Will it really make a difference whether the curre
dgozman 2015/06/16 13:30:36 Yes, because if the current frame has crashed, ren
return;
DCHECK(!pending_);
SetPending(static_cast<RenderFrameHostImpl*>(new_host));
@@ -499,7 +502,8 @@ void RenderFrameDevToolsAgentHost::FrameDeleted(RenderFrameHost* rfh) {
}
void RenderFrameDevToolsAgentHost::RenderFrameDeleted(RenderFrameHost* rfh) {
- FrameDeleted(rfh);
+ if (!current_frame_crashed_)
+ FrameDeleted(rfh);
}
void RenderFrameDevToolsAgentHost::DestroyOnRenderFrameGone() {
@@ -526,6 +530,7 @@ void RenderFrameDevToolsAgentHost::RenderProcessGone(
case base::TERMINATION_STATUS_OOM_PROTECTED:
#endif
inspector_handler_->TargetCrashed();
+ current_frame_crashed_ = true;
break;
default:
break;
@@ -585,6 +590,8 @@ void RenderFrameDevToolsAgentHost::DidCommitProvisionalLoadForFrame(
RenderFrameHost* render_frame_host,
const GURL& url,
ui::PageTransition transition_type) {
+ if (pending_ && pending_->host() == render_frame_host)
+ CommitPending();
service_worker_handler_->UpdateHosts();
}
« no previous file with comments | « content/browser/devtools/render_frame_devtools_agent_host.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698