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 13ed5e1076c6626517f1e329687d6b4678a92286..96c90ae99dadcb266392a12af636e1b76b2faabc 100644 |
--- a/headless/lib/browser/headless_web_contents_impl.cc |
+++ b/headless/lib/browser/headless_web_contents_impl.cc |
@@ -20,7 +20,9 @@ |
#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_browser_context_impl.h" |
#include "headless/lib/browser/headless_browser_impl.h" |
+#include "headless/lib/browser/headless_browser_main_parts.h" |
#include "headless/lib/browser/headless_devtools_client_impl.h" |
#include "ui/aura/window.h" |
@@ -65,19 +67,21 @@ class HeadlessWebContentsImpl::Delegate : public content::WebContentsDelegate { |
// static |
std::unique_ptr<HeadlessWebContentsImpl> HeadlessWebContentsImpl::Create( |
- content::BrowserContext* context, |
+ HeadlessWebContents::Builder* builder, |
aura::Window* parent_window, |
- const gfx::Size& initial_size, |
HeadlessBrowserImpl* browser) { |
+ content::BrowserContext* context = |
+ HeadlessBrowserContextImpl::From(builder->browser_context_); |
content::WebContents::CreateParams create_params(context, nullptr); |
- create_params.initial_size = initial_size; |
+ create_params.initial_size = builder->window_size_; |
std::unique_ptr<HeadlessWebContentsImpl> headless_web_contents = |
base::WrapUnique(new HeadlessWebContentsImpl( |
content::WebContents::Create(create_params), browser)); |
- headless_web_contents->InitializeScreen(parent_window, initial_size); |
- |
+ headless_web_contents->InitializeScreen(parent_window, builder->window_size_); |
+ if (!headless_web_contents->OpenURL(builder->initial_url_)) |
+ return nullptr; |
return headless_web_contents; |
} |
@@ -165,4 +169,35 @@ content::WebContents* HeadlessWebContentsImpl::web_contents() const { |
return web_contents_.get(); |
} |
+HeadlessWebContents::Builder::Builder(HeadlessBrowserImpl* browser) |
+ : browser_(browser), |
+ browser_context_( |
+ browser->browser_main_parts()->default_browser_context()) {} |
+ |
+HeadlessWebContents::Builder::~Builder() = default; |
+ |
+HeadlessWebContents::Builder::Builder(Builder&&) = default; |
+ |
+HeadlessWebContents::Builder& HeadlessWebContents::Builder::SetInitialURL( |
+ const GURL& initial_url) { |
+ initial_url_ = initial_url; |
+ return *this; |
+} |
+ |
+HeadlessWebContents::Builder& HeadlessWebContents::Builder::SetWindowSize( |
+ const gfx::Size& size) { |
+ window_size_ = size; |
+ return *this; |
+} |
+ |
+HeadlessWebContents::Builder& HeadlessWebContents::Builder::SetBrowserContext( |
+ HeadlessBrowserContext* browser_context) { |
+ browser_context_ = browser_context; |
+ return *this; |
+} |
+ |
+HeadlessWebContents* HeadlessWebContents::Builder::Build() { |
+ return browser_->CreateWebContents(this); |
+} |
+ |
} // namespace headless |