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

Unified Diff: headless/lib/browser/headless_devtools_client_impl.cc

Issue 2509813006: HeadlessWebContents:Observer to observe render process exit status (Closed)
Patch Set: Make it safe to call Shutdown() Created 4 years, 1 month 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
Index: headless/lib/browser/headless_devtools_client_impl.cc
diff --git a/headless/lib/browser/headless_devtools_client_impl.cc b/headless/lib/browser/headless_devtools_client_impl.cc
index 833b9dc49afb1d85c386d64865b20448c98cfa57..010d3d113da09e661e20e5a558a5b0d0e8064494 100644
--- a/headless/lib/browser/headless_devtools_client_impl.cc
+++ b/headless/lib/browser/headless_devtools_client_impl.cc
@@ -32,6 +32,7 @@ HeadlessDevToolsClientImpl* HeadlessDevToolsClientImpl::From(
HeadlessDevToolsClientImpl::HeadlessDevToolsClientImpl()
: agent_host_(nullptr),
next_message_id_(0),
+ renderer_crashed_(false),
accessibility_domain_(this),
animation_domain_(this),
application_cache_domain_(this),
@@ -78,7 +79,8 @@ void HeadlessDevToolsClientImpl::AttachToHost(
void HeadlessDevToolsClientImpl::DetachFromHost(
content::DevToolsAgentHost* agent_host) {
DCHECK_EQ(agent_host_, agent_host);
- agent_host_->DetachClient(this);
+ if (!renderer_crashed_)
+ agent_host_->DetachClient(this);
agent_host_ = nullptr;
pending_messages_.clear();
}
@@ -133,6 +135,13 @@ bool HeadlessDevToolsClientImpl::DispatchEvent(
return false;
EventHandlerMap::const_iterator it = event_handlers_.find(method);
if (it == event_handlers_.end()) {
+ // Silently swallow errors related to the target crashing. This can be
+ // observed via HeadlessWebContents::Observer::RenderProcessExited.
+ if (method == "Inspector.targetCrashed") {
Sami 2016/11/18 18:37:22 Shouldn't we still emit this event in Headless She
alex clarke (OOO till 29th) 2016/11/21 10:44:01 Hmm so we do actually have an inspector domain - I
+ renderer_crashed_ = true;
+ return true;
+ }
+
NOTREACHED() << "Unknown event: " << method;
return false;
}
@@ -292,6 +301,8 @@ template <typename CallbackType>
void HeadlessDevToolsClientImpl::FinalizeAndSendMessage(
base::DictionaryValue* message,
CallbackType callback) {
+ if (renderer_crashed_)
+ return;
DCHECK(agent_host_);
int id = next_message_id_++;
message->SetInteger("id", id);
« no previous file with comments | « headless/lib/browser/headless_devtools_client_impl.h ('k') | headless/lib/browser/headless_web_contents_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698