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 |