| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "headless/lib/browser/headless_web_contents_impl.h" | 5 #include "headless/lib/browser/headless_web_contents_impl.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 #include "content/public/browser/render_view_host.h" | 24 #include "content/public/browser/render_view_host.h" |
| 25 #include "content/public/browser/render_widget_host.h" | 25 #include "content/public/browser/render_widget_host.h" |
| 26 #include "content/public/browser/web_contents.h" | 26 #include "content/public/browser/web_contents.h" |
| 27 #include "content/public/browser/web_contents_delegate.h" | 27 #include "content/public/browser/web_contents_delegate.h" |
| 28 #include "content/public/common/bindings_policy.h" | 28 #include "content/public/common/bindings_policy.h" |
| 29 #include "content/public/common/origin_util.h" | 29 #include "content/public/common/origin_util.h" |
| 30 #include "headless/lib/browser/headless_browser_context_impl.h" | 30 #include "headless/lib/browser/headless_browser_context_impl.h" |
| 31 #include "headless/lib/browser/headless_browser_impl.h" | 31 #include "headless/lib/browser/headless_browser_impl.h" |
| 32 #include "headless/lib/browser/headless_browser_main_parts.h" | 32 #include "headless/lib/browser/headless_browser_main_parts.h" |
| 33 #include "headless/lib/browser/headless_devtools_client_impl.h" | 33 #include "headless/lib/browser/headless_devtools_client_impl.h" |
| 34 #include "headless/lib/browser/headless_tab_socket_impl.h" |
| 34 #include "printing/features/features.h" | 35 #include "printing/features/features.h" |
| 35 #include "services/service_manager/public/cpp/interface_registry.h" | 36 #include "services/service_manager/public/cpp/interface_registry.h" |
| 36 | 37 |
| 37 #if BUILDFLAG(ENABLE_BASIC_PRINTING) | 38 #if BUILDFLAG(ENABLE_BASIC_PRINTING) |
| 38 #include "headless/lib/browser/headless_print_manager.h" | 39 #include "headless/lib/browser/headless_print_manager.h" |
| 39 #endif | 40 #endif |
| 40 | 41 |
| 41 namespace headless { | 42 namespace headless { |
| 42 | 43 |
| 43 // static | 44 // static |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 HeadlessWebContents::Builder* builder) { | 139 HeadlessWebContents::Builder* builder) { |
| 139 content::WebContents::CreateParams create_params(builder->browser_context_, | 140 content::WebContents::CreateParams create_params(builder->browser_context_, |
| 140 nullptr); | 141 nullptr); |
| 141 create_params.initial_size = builder->window_size_; | 142 create_params.initial_size = builder->window_size_; |
| 142 | 143 |
| 143 std::unique_ptr<HeadlessWebContentsImpl> headless_web_contents = | 144 std::unique_ptr<HeadlessWebContentsImpl> headless_web_contents = |
| 144 base::WrapUnique(new HeadlessWebContentsImpl( | 145 base::WrapUnique(new HeadlessWebContentsImpl( |
| 145 content::WebContents::Create(create_params), | 146 content::WebContents::Create(create_params), |
| 146 builder->browser_context_)); | 147 builder->browser_context_)); |
| 147 | 148 |
| 149 if (builder->create_tab_socket_) { |
| 150 headless_web_contents->headless_tab_socket_ = |
| 151 base::MakeUnique<HeadlessTabSocketImpl>(); |
| 152 builder->AddMojoService(base::Bind( |
| 153 &HeadlessTabSocketImpl::CreateMojoService, |
| 154 base::Unretained(headless_web_contents->headless_tab_socket_.get()))); |
| 155 } |
| 156 |
| 148 headless_web_contents->mojo_services_ = std::move(builder->mojo_services_); | 157 headless_web_contents->mojo_services_ = std::move(builder->mojo_services_); |
| 149 headless_web_contents->InitializeScreen(builder->window_size_); | 158 headless_web_contents->InitializeScreen(builder->window_size_); |
| 150 if (!headless_web_contents->OpenURL(builder->initial_url_)) | 159 if (!headless_web_contents->OpenURL(builder->initial_url_)) |
| 151 return nullptr; | 160 return nullptr; |
| 152 return headless_web_contents; | 161 return headless_web_contents; |
| 153 } | 162 } |
| 154 | 163 |
| 155 // static | 164 // static |
| 156 std::unique_ptr<HeadlessWebContentsImpl> | 165 std::unique_ptr<HeadlessWebContentsImpl> |
| 157 HeadlessWebContentsImpl::CreateFromWebContents( | 166 HeadlessWebContentsImpl::CreateFromWebContents( |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 285 } | 294 } |
| 286 | 295 |
| 287 HeadlessBrowserImpl* HeadlessWebContentsImpl::browser() const { | 296 HeadlessBrowserImpl* HeadlessWebContentsImpl::browser() const { |
| 288 return browser_context_->browser(); | 297 return browser_context_->browser(); |
| 289 } | 298 } |
| 290 | 299 |
| 291 HeadlessBrowserContextImpl* HeadlessWebContentsImpl::browser_context() const { | 300 HeadlessBrowserContextImpl* HeadlessWebContentsImpl::browser_context() const { |
| 292 return browser_context_; | 301 return browser_context_; |
| 293 } | 302 } |
| 294 | 303 |
| 304 HeadlessTabSocket* HeadlessWebContentsImpl::GetHeadlessTabSocket() const { |
| 305 return headless_tab_socket_.get(); |
| 306 } |
| 307 |
| 295 HeadlessWebContents::Builder::Builder( | 308 HeadlessWebContents::Builder::Builder( |
| 296 HeadlessBrowserContextImpl* browser_context) | 309 HeadlessBrowserContextImpl* browser_context) |
| 297 : browser_context_(browser_context), | 310 : browser_context_(browser_context), |
| 298 window_size_(browser_context->options()->window_size()) {} | 311 window_size_(browser_context->options()->window_size()) {} |
| 299 | 312 |
| 300 HeadlessWebContents::Builder::~Builder() = default; | 313 HeadlessWebContents::Builder::~Builder() = default; |
| 301 | 314 |
| 302 HeadlessWebContents::Builder::Builder(Builder&&) = default; | 315 HeadlessWebContents::Builder::Builder(Builder&&) = default; |
| 303 | 316 |
| 304 HeadlessWebContents::Builder& HeadlessWebContents::Builder::SetInitialURL( | 317 HeadlessWebContents::Builder& HeadlessWebContents::Builder::SetInitialURL( |
| 305 const GURL& initial_url) { | 318 const GURL& initial_url) { |
| 306 initial_url_ = initial_url; | 319 initial_url_ = initial_url; |
| 307 return *this; | 320 return *this; |
| 308 } | 321 } |
| 309 | 322 |
| 310 HeadlessWebContents::Builder& HeadlessWebContents::Builder::SetWindowSize( | 323 HeadlessWebContents::Builder& HeadlessWebContents::Builder::SetWindowSize( |
| 311 const gfx::Size& size) { | 324 const gfx::Size& size) { |
| 312 window_size_ = size; | 325 window_size_ = size; |
| 313 return *this; | 326 return *this; |
| 314 } | 327 } |
| 315 | 328 |
| 316 HeadlessWebContents::Builder& HeadlessWebContents::Builder::AddMojoService( | 329 HeadlessWebContents::Builder& HeadlessWebContents::Builder::AddMojoService( |
| 317 const std::string& service_name, | 330 const std::string& service_name, |
| 318 const base::Callback<void(mojo::ScopedMessagePipeHandle)>& | 331 const base::Callback<void(mojo::ScopedMessagePipeHandle)>& |
| 319 service_factory) { | 332 service_factory) { |
| 320 mojo_services_.emplace_back(service_name, service_factory); | 333 mojo_services_.emplace_back(service_name, service_factory); |
| 321 return *this; | 334 return *this; |
| 322 } | 335 } |
| 323 | 336 |
| 337 HeadlessWebContents::Builder& HeadlessWebContents::Builder::CreateTabSocket( |
| 338 bool create_tab_socket) { |
| 339 create_tab_socket_ = create_tab_socket; |
| 340 return *this; |
| 341 } |
| 342 |
| 324 HeadlessWebContents* HeadlessWebContents::Builder::Build() { | 343 HeadlessWebContents* HeadlessWebContents::Builder::Build() { |
| 325 return browser_context_->CreateWebContents(this); | 344 return browser_context_->CreateWebContents(this); |
| 326 } | 345 } |
| 327 | 346 |
| 328 HeadlessWebContents::Builder::MojoService::MojoService() {} | 347 HeadlessWebContents::Builder::MojoService::MojoService() {} |
| 329 | 348 |
| 330 HeadlessWebContents::Builder::MojoService::MojoService( | 349 HeadlessWebContents::Builder::MojoService::MojoService( |
| 331 const std::string& service_name, | 350 const std::string& service_name, |
| 332 const base::Callback<void(mojo::ScopedMessagePipeHandle)>& service_factory) | 351 const base::Callback<void(mojo::ScopedMessagePipeHandle)>& service_factory) |
| 333 : service_name(service_name), service_factory(service_factory) {} | 352 : service_name(service_name), service_factory(service_factory) {} |
| 334 | 353 |
| 335 HeadlessWebContents::Builder::MojoService::~MojoService() {} | 354 HeadlessWebContents::Builder::MojoService::~MojoService() {} |
| 336 | 355 |
| 337 } // namespace headless | 356 } // namespace headless |
| OLD | NEW |