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

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: 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 c3e2ec9c556dab330b1a0c9ef6ed2ed4f95dd76e..1d9caebdb47d510a634c0e2ffc6f9ebe8528851d 100644
--- a/content/browser/devtools/render_frame_devtools_agent_host.cc
+++ b/content/browser/devtools/render_frame_devtools_agent_host.cc
@@ -304,7 +304,8 @@ RenderFrameDevToolsAgentHost::RenderFrameDevToolsAgentHost(
protocol_handler_(new DevToolsProtocolHandler(
this,
base::Bind(&RenderFrameDevToolsAgentHost::SendMessageToClient,
- base::Unretained(this)))) {
+ base::Unretained(this)))),
+ frame_crashed_(false) {
DevToolsProtocolDispatcher* dispatcher = protocol_handler_->dispatcher();
dispatcher->SetDOMHandler(dom_handler_.get());
dispatcher->SetInputHandler(input_handler_.get());
@@ -332,6 +333,7 @@ RenderFrameDevToolsAgentHost::RenderFrameDevToolsAgentHost(
void RenderFrameDevToolsAgentHost::SetPending(RenderFrameHostImpl* host) {
DCHECK(!pending_);
+ frame_crashed_ = false;
pending_.reset(new FrameHostHolder(this, host));
if (IsAttached())
pending_->Reattach(current_.get());
@@ -346,6 +348,7 @@ void RenderFrameDevToolsAgentHost::SetPending(RenderFrameHostImpl* host) {
void RenderFrameDevToolsAgentHost::CommitPending() {
DCHECK(pending_);
+ frame_crashed_ = false;
if (!ShouldCreateDevToolsFor(pending_->host())) {
DestroyOnRenderFrameGone();
@@ -361,6 +364,7 @@ void RenderFrameDevToolsAgentHost::CommitPending() {
void RenderFrameDevToolsAgentHost::DiscardPending() {
DCHECK(pending_);
DCHECK(current_);
+ frame_crashed_ = false;
nasko 2015/06/11 16:56:12 Does this boolean track the pending or the current
dgozman 2015/06/15 14:59:06 It's intended to be the current one. RenderProcess
pending_.reset();
UpdateProtocolHandlers(current_->host());
current_->Resume();
@@ -463,7 +467,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 && !frame_crashed_)
return;
DCHECK(!pending_);
SetPending(static_cast<RenderFrameHostImpl*>(new_host));
@@ -495,7 +499,8 @@ void RenderFrameDevToolsAgentHost::FrameDeleted(RenderFrameHost* rfh) {
}
void RenderFrameDevToolsAgentHost::RenderFrameDeleted(RenderFrameHost* rfh) {
- FrameDeleted(rfh);
+ if (!frame_crashed_)
+ FrameDeleted(rfh);
}
void RenderFrameDevToolsAgentHost::DestroyOnRenderFrameGone() {
@@ -522,6 +527,7 @@ void RenderFrameDevToolsAgentHost::RenderProcessGone(
case base::TERMINATION_STATUS_OOM_PROTECTED:
#endif
inspector_handler_->TargetCrashed();
+ frame_crashed_ = true;
break;
default:
break;
@@ -581,6 +587,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