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

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

Issue 2902953003: Revert of Allow headless TabSocket in isolated worlds & remove obsolete logic (Closed)
Patch Set: Created 3 years, 6 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->tab_socket_type_ != Builder::TabSocketType::NONE) { 161 if (builder->create_tab_socket_) {
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;
166 164
167 builder->mojo_services_.emplace_back( 165 builder->mojo_services_.emplace_back(
168 TabSocket::Name_, 166 TabSocket::Name_,
169 base::Bind( 167 base::Bind(
170 &ForwardToServiceFactory, 168 &ForwardToServiceFactory,
171 base::Bind( 169 base::Bind(
172 &HeadlessTabSocketImpl::CreateMojoService, 170 &HeadlessTabSocketImpl::CreateMojoService,
173 base::Unretained( 171 base::Unretained(
174 headless_web_contents->headless_tab_socket_.get())))); 172 headless_web_contents->headless_tab_socket_.get()))));
175 } 173 }
(...skipping 22 matching lines...) Expand all
198 } 196 }
199 197
200 HeadlessWebContentsImpl::HeadlessWebContentsImpl( 198 HeadlessWebContentsImpl::HeadlessWebContentsImpl(
201 content::WebContents* web_contents, 199 content::WebContents* web_contents,
202 HeadlessBrowserContextImpl* browser_context) 200 HeadlessBrowserContextImpl* browser_context)
203 : content::WebContentsObserver(web_contents), 201 : content::WebContentsObserver(web_contents),
204 web_contents_delegate_( 202 web_contents_delegate_(
205 new HeadlessWebContentsImpl::Delegate(browser_context)), 203 new HeadlessWebContentsImpl::Delegate(browser_context)),
206 web_contents_(web_contents), 204 web_contents_(web_contents),
207 agent_host_(content::DevToolsAgentHost::GetOrCreateFor(web_contents)), 205 agent_host_(content::DevToolsAgentHost::GetOrCreateFor(web_contents)),
208 inject_mojo_services_into_isolated_world_(false),
209 browser_context_(browser_context), 206 browser_context_(browser_context),
210 render_process_host_(web_contents->GetRenderProcessHost()) { 207 render_process_host_(web_contents->GetRenderProcessHost()) {
211 #if BUILDFLAG(ENABLE_BASIC_PRINTING) && !defined(CHROME_MULTIPLE_DLL_CHILD) 208 #if BUILDFLAG(ENABLE_BASIC_PRINTING) && !defined(CHROME_MULTIPLE_DLL_CHILD)
212 printing::HeadlessPrintManager::CreateForWebContents(web_contents); 209 printing::HeadlessPrintManager::CreateForWebContents(web_contents);
213 #endif 210 #endif
214 web_contents_->SetDelegate(web_contents_delegate_.get()); 211 web_contents_->SetDelegate(web_contents_delegate_.get());
215 render_process_host_->AddObserver(this); 212 render_process_host_->AddObserver(this);
216 agent_host_->AddObserver(this); 213 agent_host_->AddObserver(this);
217 } 214 }
218 215
219 HeadlessWebContentsImpl::~HeadlessWebContentsImpl() { 216 HeadlessWebContentsImpl::~HeadlessWebContentsImpl() {
220 agent_host_->RemoveObserver(this); 217 agent_host_->RemoveObserver(this);
221 if (render_process_host_) 218 if (render_process_host_)
222 render_process_host_->RemoveObserver(this); 219 render_process_host_->RemoveObserver(this);
223 } 220 }
224 221
225 void HeadlessWebContentsImpl::RenderFrameCreated( 222 void HeadlessWebContentsImpl::RenderFrameCreated(
226 content::RenderFrameHost* render_frame_host) { 223 content::RenderFrameHost* render_frame_host) {
227 if (!mojo_services_.empty()) { 224 if (!mojo_services_.empty()) {
228 render_frame_host->AllowBindings( 225 render_frame_host->AllowBindings(content::BINDINGS_POLICY_HEADLESS);
229 inject_mojo_services_into_isolated_world_
230 ? content::BINDINGS_POLICY_HEADLESS_ISOLATED_WORLD
231 : content::BINDINGS_POLICY_HEADLESS_MAIN_WORLD);
232 } 226 }
233 227
234 service_manager::BinderRegistry* interface_registry = 228 service_manager::BinderRegistry* interface_registry =
235 render_frame_host->GetInterfaceRegistry(); 229 render_frame_host->GetInterfaceRegistry();
236 230
237 for (const MojoService& service : mojo_services_) { 231 for (const MojoService& service : mojo_services_) {
238 interface_registry->AddInterface(service.service_name, 232 interface_registry->AddInterface(service.service_name,
239 service.service_factory, 233 service.service_factory,
240 browser()->BrowserMainThread()); 234 browser()->BrowserMainThread());
241 } 235 }
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 initial_url_ = initial_url; 377 initial_url_ = initial_url;
384 return *this; 378 return *this;
385 } 379 }
386 380
387 HeadlessWebContents::Builder& HeadlessWebContents::Builder::SetWindowSize( 381 HeadlessWebContents::Builder& HeadlessWebContents::Builder::SetWindowSize(
388 const gfx::Size& size) { 382 const gfx::Size& size) {
389 window_size_ = size; 383 window_size_ = size;
390 return *this; 384 return *this;
391 } 385 }
392 386
393 HeadlessWebContents::Builder& HeadlessWebContents::Builder::SetTabSocketType( 387 HeadlessWebContents::Builder& HeadlessWebContents::Builder::CreateTabSocket(
394 TabSocketType type) { 388 bool create_tab_socket) {
395 tab_socket_type_ = type; 389 create_tab_socket_ = create_tab_socket;
396 return *this; 390 return *this;
397 } 391 }
398 392
399 HeadlessWebContents* HeadlessWebContents::Builder::Build() { 393 HeadlessWebContents* HeadlessWebContents::Builder::Build() {
400 return browser_context_->CreateWebContents(this); 394 return browser_context_->CreateWebContents(this);
401 } 395 }
402 396
403 HeadlessWebContents::Builder::MojoService::MojoService() {} 397 HeadlessWebContents::Builder::MojoService::MojoService() {}
404 398
405 HeadlessWebContents::Builder::MojoService::MojoService( 399 HeadlessWebContents::Builder::MojoService::MojoService(
406 const std::string& service_name, 400 const std::string& service_name,
407 const base::Callback<void(mojo::ScopedMessagePipeHandle)>& service_factory) 401 const base::Callback<void(mojo::ScopedMessagePipeHandle)>& service_factory)
408 : service_name(service_name), service_factory(service_factory) {} 402 : service_name(service_name), service_factory(service_factory) {}
409 403
410 HeadlessWebContents::Builder::MojoService::~MojoService() {} 404 HeadlessWebContents::Builder::MojoService::~MojoService() {}
411 405
412 } // namespace headless 406 } // namespace headless
OLDNEW
« no previous file with comments | « headless/lib/browser/headless_web_contents_impl.h ('k') | headless/lib/headless_web_contents_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698