Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(359)

Unified Diff: headless/lib/browser/headless_web_contents_impl.cc

Issue 1805983002: headless: Implement client API generation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Make PendingMessage moveable Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();
}

Powered by Google App Engine
This is Rietveld 408576698