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 b07cb2c7edef0e809b0bd0e3b756426ba09f6c88..a9bc987f434361aa1c7c24041936f1bf3578dcfd 100644 |
--- a/headless/lib/browser/headless_web_contents_impl.cc |
+++ b/headless/lib/browser/headless_web_contents_impl.cc |
@@ -27,6 +27,14 @@ |
namespace headless { |
+// static |
+HeadlessWebContentsImpl* HeadlessWebContentsImpl::From( |
+ HeadlessWebContents* web_contents) { |
+ // This downcast is safe because there is only one implementation of |
+ // HeadlessWebContents. |
+ return static_cast<HeadlessWebContentsImpl*>(web_contents); |
+} |
+ |
class WebContentsObserverAdapter : public content::WebContentsObserver { |
public: |
WebContentsObserverAdapter(content::WebContents* web_contents, |
@@ -122,6 +130,12 @@ HeadlessWebContentsImpl::~HeadlessWebContentsImpl() { |
web_contents_->Close(); |
} |
+content::DevToolsAgentHost* HeadlessWebContentsImpl::EnsureDevToolsAgentHost() { |
+ if (!agent_host_) |
+ agent_host_ = content::DevToolsAgentHost::GetOrCreateFor(web_contents()); |
+ return agent_host_.get(); |
+} |
+ |
bool HeadlessWebContentsImpl::OpenURL(const GURL& url) { |
if (!url.is_valid()) |
return false; |
@@ -137,6 +151,10 @@ void HeadlessWebContentsImpl::Close() { |
browser_->DestroyWebContents(this); |
} |
+std::string HeadlessWebContentsImpl::GetAgentHostId() { |
+ return EnsureDevToolsAgentHost()->GetId(); |
+} |
+ |
void HeadlessWebContentsImpl::AddObserver(Observer* observer) { |
DCHECK(observer_map_.find(observer) == observer_map_.end()); |
observer_map_[observer] = base::WrapUnique( |
@@ -154,9 +172,8 @@ HeadlessDevToolsTarget* HeadlessWebContentsImpl::GetDevToolsTarget() { |
} |
void HeadlessWebContentsImpl::AttachClient(HeadlessDevToolsClient* client) { |
- if (!agent_host_) |
- agent_host_ = content::DevToolsAgentHost::GetOrCreateFor(web_contents()); |
- HeadlessDevToolsClientImpl::From(client)->AttachToHost(agent_host_.get()); |
+ HeadlessDevToolsClientImpl::From(client)->AttachToHost( |
+ EnsureDevToolsAgentHost()); |
} |
void HeadlessWebContentsImpl::DetachClient(HeadlessDevToolsClient* client) { |