Commit dc9251bd authored by Pavel Feldman's avatar Pavel Feldman Committed by Commit Bot

Reapply "Headless: don't run unload hooks upon web contents close."

Change-Id: Ic98de1070c3cee34a926ee0a95eb05cd62345ce6
Reviewed-on: https://chromium-review.googlesource.com/1113309Reviewed-by: default avatarAndrey Kosyakov <caseq@chromium.org>
Commit-Queue: Pavel Feldman <pfeldman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#570003}
parent c0327d09
...@@ -95,7 +95,7 @@ class HeadlessWebContentsImpl::Delegate : public content::WebContentsDelegate { ...@@ -95,7 +95,7 @@ class HeadlessWebContentsImpl::Delegate : public content::WebContentsDelegate {
auto* const headless_contents = auto* const headless_contents =
HeadlessWebContentsImpl::From(browser(), source); HeadlessWebContentsImpl::From(browser(), source);
DCHECK(headless_contents); DCHECK(headless_contents);
headless_contents->DelegateRequestsClose(); headless_contents->Close();
} }
void AddNewContents(content::WebContents* source, void AddNewContents(content::WebContents* source,
...@@ -379,29 +379,9 @@ bool HeadlessWebContentsImpl::OpenURL(const GURL& url) { ...@@ -379,29 +379,9 @@ bool HeadlessWebContentsImpl::OpenURL(const GURL& url) {
void HeadlessWebContentsImpl::Close() { void HeadlessWebContentsImpl::Close() {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
if (quit_closure_)
return;
if (!render_process_exited_) {
web_contents_->ClosePage();
base::RunLoop run_loop(base::RunLoop::Type::kNestableTasksAllowed);
quit_closure_ = run_loop.QuitClosure();
run_loop.Run();
}
browser_context()->DestroyWebContents(this); browser_context()->DestroyWebContents(this);
} }
void HeadlessWebContentsImpl::DelegateRequestsClose() {
if (quit_closure_) {
quit_closure_.Run();
quit_closure_ = base::Closure();
} else {
browser_context()->DestroyWebContents(this);
}
}
std::string HeadlessWebContentsImpl::GetDevToolsAgentHostId() { std::string HeadlessWebContentsImpl::GetDevToolsAgentHostId() {
return agent_host_->GetId(); return agent_host_->GetId();
} }
......
...@@ -99,8 +99,6 @@ class HEADLESS_EXPORT HeadlessWebContentsImpl ...@@ -99,8 +99,6 @@ class HEADLESS_EXPORT HeadlessWebContentsImpl
void Close() override; void Close() override;
void DelegateRequestsClose();
std::string GetDevToolsAgentHostId(); std::string GetDevToolsAgentHostId();
HeadlessBrowserImpl* browser() const; HeadlessBrowserImpl* browser() const;
...@@ -178,8 +176,6 @@ class HEADLESS_EXPORT HeadlessWebContentsImpl ...@@ -178,8 +176,6 @@ class HEADLESS_EXPORT HeadlessWebContentsImpl
base::ObserverList<HeadlessWebContents::Observer> observers_; base::ObserverList<HeadlessWebContents::Observer> observers_;
base::Closure quit_closure_;
base::WeakPtrFactory<HeadlessWebContentsImpl> weak_ptr_factory_; base::WeakPtrFactory<HeadlessWebContentsImpl> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(HeadlessWebContentsImpl); DISALLOW_COPY_AND_ASSIGN(HeadlessWebContentsImpl);
......
...@@ -456,84 +456,6 @@ class TargetDomainCreateAndDeletePageTest ...@@ -456,84 +456,6 @@ class TargetDomainCreateAndDeletePageTest
HEADLESS_ASYNC_DEVTOOLED_TEST_F(TargetDomainCreateAndDeletePageTest); HEADLESS_ASYNC_DEVTOOLED_TEST_F(TargetDomainCreateAndDeletePageTest);
class TargetDomainCreateAndDeleteBrowserContextTest
: public HeadlessAsyncDevTooledBrowserTest {
void RunDevTooledTest() override {
EXPECT_TRUE(embedded_test_server()->Start());
EXPECT_EQ(1u, GetAllWebContents(browser()).size());
devtools_client_->GetTarget()->GetExperimental()->CreateBrowserContext(
target::CreateBrowserContextParams::Builder().Build(),
base::BindOnce(&TargetDomainCreateAndDeleteBrowserContextTest::
OnCreateContextResult,
base::Unretained(this)));
}
void OnCreateContextResult(
std::unique_ptr<target::CreateBrowserContextResult> result) {
browser_context_id_ = result->GetBrowserContextId();
devtools_client_->GetTarget()->GetExperimental()->CreateTarget(
target::CreateTargetParams::Builder()
.SetUrl(embedded_test_server()->GetURL("/hello.html").spec())
.SetBrowserContextId(result->GetBrowserContextId())
.SetWidth(1)
.SetHeight(1)
.Build(),
base::BindOnce(&TargetDomainCreateAndDeleteBrowserContextTest::
OnCreateTargetResult,
base::Unretained(this)));
}
void OnCreateTargetResult(
std::unique_ptr<target::CreateTargetResult> result) {
EXPECT_EQ(2u, GetAllWebContents(browser()).size());
devtools_client_->GetTarget()->GetExperimental()->CloseTarget(
target::CloseTargetParams::Builder()
.SetTargetId(result->GetTargetId())
.Build(),
base::BindOnce(
&TargetDomainCreateAndDeleteBrowserContextTest::OnCloseTargetResult,
base::Unretained(this)));
}
void OnCloseTargetResult(std::unique_ptr<target::CloseTargetResult> result) {
EXPECT_EQ(1u, GetAllWebContents(browser()).size());
EXPECT_TRUE(result->GetSuccess());
devtools_client_->GetTarget()->GetExperimental()->DisposeBrowserContext(
target::DisposeBrowserContextParams::Builder()
.SetBrowserContextId(browser_context_id_)
.Build(),
base::BindOnce(&TargetDomainCreateAndDeleteBrowserContextTest::
OnDisposeBrowserContextResult,
base::Unretained(this)));
}
void OnDisposeBrowserContextResult(
std::unique_ptr<target::DisposeBrowserContextResult> result) {
devtools_client_->GetTarget()->GetExperimental()->GetBrowserContexts(
target::GetBrowserContextsParams::Builder().Build(),
base::BindOnce(&TargetDomainCreateAndDeleteBrowserContextTest::
OnGetBrowserContexts,
base::Unretained(this)));
}
void OnGetBrowserContexts(
std::unique_ptr<target::GetBrowserContextsResult> result) {
const std::vector<std::string>* contexts = result->GetBrowserContextIds();
EXPECT_EQ(0u, contexts->size());
FinishAsynchronousTest();
}
private:
std::string browser_context_id_;
};
HEADLESS_ASYNC_DEVTOOLED_TEST_F(TargetDomainCreateAndDeleteBrowserContextTest);
class TargetDomainDisposeContextSucceedsIfInUse class TargetDomainDisposeContextSucceedsIfInUse
: public target::Observer, : public target::Observer,
public HeadlessAsyncDevTooledBrowserTest { public HeadlessAsyncDevTooledBrowserTest {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment