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

Side by Side Diff: headless/lib/browser/headless_web_contents_impl.cc

Issue 2873283002: [Reland] Allow headless TabSocket in isolated worlds & remove obsolete logic (Closed)
Patch Set: Try and fix build with a dep Created 3 years, 7 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 unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698