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

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

Issue 2873283002: [Reland] Allow headless TabSocket in isolated worlds & remove obsolete logic (Closed)
Patch Set: Fix GN Issue 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_browser_context_impl.h" 5 #include "headless/lib/browser/headless_browser_context_impl.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 11 matching lines...) Expand all
22 #include "headless/lib/browser/headless_net_log.h" 22 #include "headless/lib/browser/headless_net_log.h"
23 #include "headless/lib/browser/headless_permission_manager.h" 23 #include "headless/lib/browser/headless_permission_manager.h"
24 #include "headless/lib/browser/headless_url_request_context_getter.h" 24 #include "headless/lib/browser/headless_url_request_context_getter.h"
25 #include "headless/public/util/black_hole_protocol_handler.h" 25 #include "headless/public/util/black_hole_protocol_handler.h"
26 #include "headless/public/util/in_memory_protocol_handler.h" 26 #include "headless/public/util/in_memory_protocol_handler.h"
27 #include "net/url_request/url_request_context.h" 27 #include "net/url_request/url_request_context.h"
28 #include "ui/base/resource/resource_bundle.h" 28 #include "ui/base/resource/resource_bundle.h"
29 29
30 namespace headless { 30 namespace headless {
31 31
32 namespace {
33 const char kHeadlessMojomProtocol[] = "headless-mojom";
34 }
35
36 // Contains net::URLRequestContextGetter required for resource loading. 32 // Contains net::URLRequestContextGetter required for resource loading.
37 // Must be destructed on the IO thread as per content::ResourceContext 33 // Must be destructed on the IO thread as per content::ResourceContext
38 // requirements. 34 // requirements.
39 class HeadlessResourceContext : public content::ResourceContext { 35 class HeadlessResourceContext : public content::ResourceContext {
40 public: 36 public:
41 HeadlessResourceContext(); 37 HeadlessResourceContext();
42 ~HeadlessResourceContext() override; 38 ~HeadlessResourceContext() override;
43 39
44 // ResourceContext implementation: 40 // ResourceContext implementation:
45 net::HostResolver* GetHostResolver() override; 41 net::HostResolver* GetHostResolver() override;
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 403
408 HeadlessBrowserContext::Builder& 404 HeadlessBrowserContext::Builder&
409 HeadlessBrowserContext::Builder::SetOverrideWebPreferencesCallback( 405 HeadlessBrowserContext::Builder::SetOverrideWebPreferencesCallback(
410 base::Callback<void(WebPreferences*)> callback) { 406 base::Callback<void(WebPreferences*)> callback) {
411 options_->override_web_preferences_callback_ = std::move(callback); 407 options_->override_web_preferences_callback_ = std::move(callback);
412 return *this; 408 return *this;
413 } 409 }
414 410
415 HeadlessBrowserContext* HeadlessBrowserContext::Builder::Build() { 411 HeadlessBrowserContext* HeadlessBrowserContext::Builder::Build() {
416 if (!mojo_bindings_.empty()) { 412 if (!mojo_bindings_.empty()) {
417 std::unique_ptr<InMemoryProtocolHandler> headless_mojom_protocol_handler(
418 new InMemoryProtocolHandler());
419 for (const MojoBindings& binding : mojo_bindings_) {
420 headless_mojom_protocol_handler->InsertResponse(
421 binding.mojom_name,
422 InMemoryProtocolHandler::Response(binding.js_bindings,
423 "application/javascript"));
424 }
425 DCHECK(options_->protocol_handlers_.find(kHeadlessMojomProtocol) ==
426 options_->protocol_handlers_.end());
427 options_->protocol_handlers_[kHeadlessMojomProtocol] =
428 std::move(headless_mojom_protocol_handler);
429
430 // Unless you know what you're doing it's unsafe to allow http/https for a 413 // Unless you know what you're doing it's unsafe to allow http/https for a
431 // context with mojo bindings. 414 // context with mojo bindings.
432 if (!enable_http_and_https_if_mojo_used_) { 415 if (!enable_http_and_https_if_mojo_used_) {
433 options_->protocol_handlers_[url::kHttpScheme] = 416 options_->protocol_handlers_[url::kHttpScheme] =
434 base::MakeUnique<BlackHoleProtocolHandler>(); 417 base::MakeUnique<BlackHoleProtocolHandler>();
435 options_->protocol_handlers_[url::kHttpsScheme] = 418 options_->protocol_handlers_[url::kHttpsScheme] =
436 base::MakeUnique<BlackHoleProtocolHandler>(); 419 base::MakeUnique<BlackHoleProtocolHandler>();
437 } 420 }
438 } 421 }
439 422
440 return browser_->CreateBrowserContext(this); 423 return browser_->CreateBrowserContext(this);
441 } 424 }
442 425
443 HeadlessBrowserContext::Builder::MojoBindings::MojoBindings() {} 426 HeadlessBrowserContext::Builder::MojoBindings::MojoBindings() {}
444 427
445 HeadlessBrowserContext::Builder::MojoBindings::MojoBindings( 428 HeadlessBrowserContext::Builder::MojoBindings::MojoBindings(
446 const std::string& mojom_name, 429 const std::string& mojom_name,
447 const std::string& js_bindings) 430 const std::string& js_bindings)
448 : mojom_name(mojom_name), js_bindings(js_bindings) {} 431 : mojom_name(mojom_name), js_bindings(js_bindings) {}
449 432
450 HeadlessBrowserContext::Builder::MojoBindings::~MojoBindings() {} 433 HeadlessBrowserContext::Builder::MojoBindings::~MojoBindings() {}
451 434
452 } // namespace headless 435 } // namespace headless
OLDNEW
« no previous file with comments | « content/renderer/render_frame_impl.cc ('k') | headless/lib/browser/headless_web_contents_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698