| Index: headless/lib/browser/headless_web_contents_impl.cc
|
| diff --git a/headless/lib/browser/headless_web_contents_impl.cc b/headless/lib/browser/headless_web_contents_impl.cc
|
| index f58dfe0671c2b627794fc9b2540eb9624d134809..94eae962f1a04aa81654068f6cac6a745da490f9 100644
|
| --- a/headless/lib/browser/headless_web_contents_impl.cc
|
| +++ b/headless/lib/browser/headless_web_contents_impl.cc
|
| @@ -8,6 +8,7 @@
|
| #include "base/memory/ptr_util.h"
|
| #include "base/memory/weak_ptr.h"
|
| #include "base/trace_event/trace_event.h"
|
| +#include "content/public/browser/devtools_agent_host.h"
|
| #include "content/public/browser/navigation_handle.h"
|
| #include "content/public/browser/render_frame_host.h"
|
| #include "content/public/browser/render_process_host.h"
|
| @@ -19,6 +20,7 @@
|
| #include "content/public/common/bindings_policy.h"
|
| #include "content/public/common/service_registry.h"
|
| #include "content/public/renderer/render_frame.h"
|
| +#include "headless/lib/browser/headless_devtools_client_impl.h"
|
| #include "ui/aura/window.h"
|
|
|
| namespace headless {
|
| @@ -31,7 +33,10 @@ class WebContentsObserverAdapter : public content::WebContentsObserver {
|
|
|
| ~WebContentsObserverAdapter() override {}
|
|
|
| - void RenderViewReady() override { observer_->WebContentsReady(); }
|
| + void RenderViewReady() override {
|
| + DCHECK(web_contents()->GetMainFrame()->IsRenderFrameLive());
|
| + observer_->DevToolsTargetReady();
|
| + }
|
|
|
| void DocumentOnLoadCompletedInMainFrame() override {
|
| observer_->DocumentOnLoadCompletedInMainFrame();
|
| @@ -107,6 +112,21 @@ void HeadlessWebContentsImpl::RemoveObserver(Observer* observer) {
|
| observer_map_.erase(it);
|
| }
|
|
|
| +HeadlessDevToolsTarget* HeadlessWebContentsImpl::GetDevToolsTarget() {
|
| + return web_contents()->GetMainFrame()->IsRenderFrameLive() ? this : nullptr;
|
| +}
|
| +
|
| +void HeadlessWebContentsImpl::AttachClient(HeadlessDevToolsClient* client) {
|
| + if (!agent_host_)
|
| + agent_host_ = content::DevToolsAgentHost::GetOrCreateFor(web_contents());
|
| + HeadlessDevToolsClientImpl::From(client)->AttachToHost(agent_host_.get());
|
| +}
|
| +
|
| +void HeadlessWebContentsImpl::DetachClient(HeadlessDevToolsClient* client) {
|
| + DCHECK(agent_host_);
|
| + HeadlessDevToolsClientImpl::From(client)->DetachFromHost(agent_host_.get());
|
| +}
|
| +
|
| content::WebContents* HeadlessWebContentsImpl::web_contents() const {
|
| return web_contents_.get();
|
| }
|
|
|