| 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..0b10161f5cc562fc0652cebb3ef6103a3541a80c 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, | 
| @@ -114,6 +122,7 @@ HeadlessWebContentsImpl::HeadlessWebContentsImpl( | 
| HeadlessBrowserImpl* browser) | 
| : web_contents_delegate_(new HeadlessWebContentsImpl::Delegate(browser)), | 
| web_contents_(web_contents), | 
| +      agent_host_(content::DevToolsAgentHost::GetOrCreateFor(web_contents)), | 
| browser_(browser) { | 
| web_contents_->SetDelegate(web_contents_delegate_.get()); | 
| } | 
| @@ -137,6 +146,10 @@ void HeadlessWebContentsImpl::Close() { | 
| browser_->DestroyWebContents(this); | 
| } | 
|  | 
| +std::string HeadlessWebContentsImpl::GetDevtoolsAgentHostId() { | 
| +  return agent_host_->GetId(); | 
| +} | 
| + | 
| void HeadlessWebContentsImpl::AddObserver(Observer* observer) { | 
| DCHECK(observer_map_.find(observer) == observer_map_.end()); | 
| observer_map_[observer] = base::WrapUnique( | 
| @@ -154,8 +167,6 @@ 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()); | 
| } | 
|  | 
|  |