Index: headless/test/headless_browser_test.cc |
diff --git a/headless/test/headless_browser_test.cc b/headless/test/headless_browser_test.cc |
index 090a7045e4927819ae13e8528580dcc02b2bee52..3e1f0f23949adabe35e264950254903221dbd939 100644 |
--- a/headless/test/headless_browser_test.cc |
+++ b/headless/test/headless_browser_test.cc |
@@ -17,6 +17,7 @@ |
#include "headless/public/headless_devtools_client.h" |
#include "headless/public/headless_devtools_target.h" |
#include "headless/public/headless_web_contents.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
#include "ui/gfx/geometry/size.h" |
#include "url/gurl.h" |
@@ -184,7 +185,8 @@ void HeadlessBrowserTest::FinishAsynchronousTest() { |
HeadlessAsyncDevTooledBrowserTest::HeadlessAsyncDevTooledBrowserTest() |
: web_contents_(nullptr), |
- devtools_client_(HeadlessDevToolsClient::Create()) {} |
+ devtools_client_(HeadlessDevToolsClient::Create()), |
+ render_process_exited_(false) {} |
HeadlessAsyncDevTooledBrowserTest::~HeadlessAsyncDevTooledBrowserTest() {} |
@@ -194,6 +196,17 @@ void HeadlessAsyncDevTooledBrowserTest::DevToolsTargetReady() { |
RunDevTooledTest(); |
} |
+void HeadlessAsyncDevTooledBrowserTest::RenderProcessExited( |
+ base::TerminationStatus status, |
+ int exit_code) { |
+ if (status == base::TERMINATION_STATUS_NORMAL_TERMINATION) |
+ return; |
+ |
+ FAIL() << "Abnormal renderer termination"; |
+ FinishAsynchronousTest(); |
+ render_process_exited_ = true; |
+} |
+ |
void HeadlessAsyncDevTooledBrowserTest::RunTest() { |
browser_context_ = browser()->CreateBrowserContextBuilder().Build(); |
@@ -202,7 +215,8 @@ void HeadlessAsyncDevTooledBrowserTest::RunTest() { |
RunAsynchronousTest(); |
- web_contents_->GetDevToolsTarget()->DetachClient(devtools_client_.get()); |
+ if (!render_process_exited_) |
+ web_contents_->GetDevToolsTarget()->DetachClient(devtools_client_.get()); |
web_contents_->RemoveObserver(this); |
web_contents_->Close(); |
web_contents_ = nullptr; |