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 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 HeadlessWebContents::Builder* builder) { | 151 HeadlessWebContents::Builder* builder) { |
152 content::WebContents::CreateParams create_params(builder->browser_context_, | 152 content::WebContents::CreateParams create_params(builder->browser_context_, |
153 nullptr); | 153 nullptr); |
154 create_params.initial_size = builder->window_size_; | 154 create_params.initial_size = builder->window_size_; |
155 | 155 |
156 std::unique_ptr<HeadlessWebContentsImpl> headless_web_contents = | 156 std::unique_ptr<HeadlessWebContentsImpl> headless_web_contents = |
157 base::WrapUnique(new HeadlessWebContentsImpl( | 157 base::WrapUnique(new HeadlessWebContentsImpl( |
158 content::WebContents::Create(create_params), | 158 content::WebContents::Create(create_params), |
159 builder->browser_context_)); | 159 builder->browser_context_)); |
160 | 160 |
161 if (builder->create_tab_socket_) { | 161 if (builder->tab_socket_type_ != Builder::TabSocketType::NONE) { |
162 headless_web_contents->headless_tab_socket_ = | 162 headless_web_contents->headless_tab_socket_ = |
163 base::MakeUnique<HeadlessTabSocketImpl>(); | 163 base::MakeUnique<HeadlessTabSocketImpl>(); |
| 164 headless_web_contents->inject_mojo_services_into_isolated_world_ = |
| 165 builder->tab_socket_type_ == Builder::TabSocketType::ISOLATED_WORLD; |
164 | 166 |
165 builder->mojo_services_.emplace_back( | 167 builder->mojo_services_.emplace_back( |
166 TabSocket::Name_, | 168 TabSocket::Name_, |
167 base::Bind( | 169 base::Bind( |
168 &ForwardToServiceFactory, | 170 &ForwardToServiceFactory, |
169 base::Bind( | 171 base::Bind( |
170 &HeadlessTabSocketImpl::CreateMojoService, | 172 &HeadlessTabSocketImpl::CreateMojoService, |
171 base::Unretained( | 173 base::Unretained( |
172 headless_web_contents->headless_tab_socket_.get())))); | 174 headless_web_contents->headless_tab_socket_.get())))); |
173 } | 175 } |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 | 217 |
216 HeadlessWebContentsImpl::~HeadlessWebContentsImpl() { | 218 HeadlessWebContentsImpl::~HeadlessWebContentsImpl() { |
217 agent_host_->RemoveObserver(this); | 219 agent_host_->RemoveObserver(this); |
218 if (render_process_host_) | 220 if (render_process_host_) |
219 render_process_host_->RemoveObserver(this); | 221 render_process_host_->RemoveObserver(this); |
220 } | 222 } |
221 | 223 |
222 void HeadlessWebContentsImpl::RenderFrameCreated( | 224 void HeadlessWebContentsImpl::RenderFrameCreated( |
223 content::RenderFrameHost* render_frame_host) { | 225 content::RenderFrameHost* render_frame_host) { |
224 if (!mojo_services_.empty()) { | 226 if (!mojo_services_.empty()) { |
225 render_frame_host->AllowBindings(content::BINDINGS_POLICY_HEADLESS); | 227 render_frame_host->AllowBindings( |
| 228 inject_mojo_services_into_isolated_world_ |
| 229 ? content::BINDINGS_POLICY_HEADLESS_ISOLATED_WORLD |
| 230 : content::BINDINGS_POLICY_HEADLESS_MAIN_WORLD); |
226 } | 231 } |
227 | 232 |
228 service_manager::BinderRegistry* interface_registry = | 233 service_manager::BinderRegistry* interface_registry = |
229 render_frame_host->GetInterfaceRegistry(); | 234 render_frame_host->GetInterfaceRegistry(); |
230 | 235 |
231 for (const MojoService& service : mojo_services_) { | 236 for (const MojoService& service : mojo_services_) { |
232 interface_registry->AddInterface(service.service_name, | 237 interface_registry->AddInterface(service.service_name, |
233 service.service_factory, | 238 service.service_factory, |
234 browser()->BrowserMainThread()); | 239 browser()->BrowserMainThread()); |
235 } | 240 } |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
377 initial_url_ = initial_url; | 382 initial_url_ = initial_url; |
378 return *this; | 383 return *this; |
379 } | 384 } |
380 | 385 |
381 HeadlessWebContents::Builder& HeadlessWebContents::Builder::SetWindowSize( | 386 HeadlessWebContents::Builder& HeadlessWebContents::Builder::SetWindowSize( |
382 const gfx::Size& size) { | 387 const gfx::Size& size) { |
383 window_size_ = size; | 388 window_size_ = size; |
384 return *this; | 389 return *this; |
385 } | 390 } |
386 | 391 |
387 HeadlessWebContents::Builder& HeadlessWebContents::Builder::CreateTabSocket( | 392 HeadlessWebContents::Builder& HeadlessWebContents::Builder::SetTabSocketType( |
388 bool create_tab_socket) { | 393 TabSocketType type) { |
389 create_tab_socket_ = create_tab_socket; | 394 tab_socket_type_ = type; |
390 return *this; | 395 return *this; |
391 } | 396 } |
392 | 397 |
393 HeadlessWebContents* HeadlessWebContents::Builder::Build() { | 398 HeadlessWebContents* HeadlessWebContents::Builder::Build() { |
394 return browser_context_->CreateWebContents(this); | 399 return browser_context_->CreateWebContents(this); |
395 } | 400 } |
396 | 401 |
397 HeadlessWebContents::Builder::MojoService::MojoService() {} | 402 HeadlessWebContents::Builder::MojoService::MojoService() {} |
398 | 403 |
399 HeadlessWebContents::Builder::MojoService::MojoService( | 404 HeadlessWebContents::Builder::MojoService::MojoService( |
400 const std::string& service_name, | 405 const std::string& service_name, |
401 const base::Callback<void(mojo::ScopedMessagePipeHandle)>& service_factory) | 406 const base::Callback<void(mojo::ScopedMessagePipeHandle)>& service_factory) |
402 : service_name(service_name), service_factory(service_factory) {} | 407 : service_name(service_name), service_factory(service_factory) {} |
403 | 408 |
404 HeadlessWebContents::Builder::MojoService::~MojoService() {} | 409 HeadlessWebContents::Builder::MojoService::~MojoService() {} |
405 | 410 |
406 } // namespace headless | 411 } // namespace headless |
OLD | NEW |