| 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_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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |