Commit 49a73db5 authored by Junbo Ke's avatar Junbo Ke Committed by Commit Bot

[Chromecast] Delete unused network code.

Bug: b/129956026
Merge-With: eureka-internal/349523
Test: CQ
Change-Id: Iec5f242094c7eef34a7632cc4207ec8b3fb0af51
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1986959
Commit-Queue: Junbo Ke <juke@chromium.org>
Reviewed-by: default avatarSean Topping <seantopping@chromium.org>
Reviewed-by: default avatarLuke Halliwell (slow) <halliwell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#731746}
parent 2a8d9d75
...@@ -130,8 +130,8 @@ void SetExperimentIds(const base::ListValue& list) { ...@@ -130,8 +130,8 @@ void SetExperimentIds(const base::ListValue& list) {
// through getUserMedia API. // through getUserMedia API.
const base::Feature kAllowUserMediaAccess{"allow_user_media_access", const base::Feature kAllowUserMediaAccess{"allow_user_media_access",
base::FEATURE_DISABLED_BY_DEFAULT}; base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the use of QUIC in Cast-specific URLRequestContextGetters. See // Enables the use of QUIC in Cast-specific NetworkContexts. See
// chromecast/browser/url_request_context_factory.cc for usage. // chromecast/browser/cast_network_contexts.cc for usage.
const base::Feature kEnableQuic{"enable_quic", const base::Feature kEnableQuic{"enable_quic",
base::FEATURE_DISABLED_BY_DEFAULT}; base::FEATURE_DISABLED_BY_DEFAULT};
// Enables triple-buffer 720p graphics (overriding default graphics buffer // Enables triple-buffer 720p graphics (overriding default graphics buffer
...@@ -143,7 +143,7 @@ const base::Feature kTripleBuffer720{"enable_triple_buffer_720", ...@@ -143,7 +143,7 @@ const base::Feature kTripleBuffer720{"enable_triple_buffer_720",
const base::Feature kSingleBuffer{"enable_single_buffer", const base::Feature kSingleBuffer{"enable_single_buffer",
base::FEATURE_DISABLED_BY_DEFAULT}; base::FEATURE_DISABLED_BY_DEFAULT};
// Disable idle sockets closing on memory pressure. See // Disable idle sockets closing on memory pressure. See
// chromecast/browser/url_request_context_factory.cc for usage. // chromecast/browser/cast_network_contexts.cc for usage.
const base::Feature kDisableIdleSocketsCloseOnMemoryPressure{ const base::Feature kDisableIdleSocketsCloseOnMemoryPressure{
"disable_idle_sockets_close_on_memory_pressure", "disable_idle_sockets_close_on_memory_pressure",
base::FEATURE_DISABLED_BY_DEFAULT}; base::FEATURE_DISABLED_BY_DEFAULT};
......
...@@ -84,10 +84,6 @@ cast_source_set("browser") { ...@@ -84,10 +84,6 @@ cast_source_set("browser") {
"cast_navigation_ui_data.h", "cast_navigation_ui_data.h",
"cast_network_contexts.cc", "cast_network_contexts.cc",
"cast_network_contexts.h", "cast_network_contexts.h",
"cast_network_delegate.cc",
"cast_network_delegate.h",
"cast_network_request_interceptor.cc",
"cast_network_request_interceptor.h",
"cast_overlay_manifests.cc", "cast_overlay_manifests.cc",
"cast_overlay_manifests.h", "cast_overlay_manifests.h",
"cast_permission_manager.cc", "cast_permission_manager.cc",
...@@ -139,15 +135,12 @@ cast_source_set("browser") { ...@@ -139,15 +135,12 @@ cast_source_set("browser") {
"tts/tts_platform.h", "tts/tts_platform.h",
"tts/tts_platform_stub.cc", "tts/tts_platform_stub.cc",
"tts/tts_platform_stub.h", "tts/tts_platform_stub.h",
"url_request_context_factory.cc",
"url_request_context_factory.h",
] ]
if (chromecast_branding == "public") { if (chromecast_branding == "public") {
sources += [ sources += [
"cast_browser_main_parts_simple.cc", "cast_browser_main_parts_simple.cc",
"cast_content_browser_client_simple.cc", "cast_content_browser_client_simple.cc",
"cast_network_request_interceptor_simple.cc",
] ]
} }
......
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
#include "chromecast/base/cast_paths.h" #include "chromecast/base/cast_paths.h"
#include "chromecast/browser/cast_download_manager_delegate.h" #include "chromecast/browser/cast_download_manager_delegate.h"
#include "chromecast/browser/cast_permission_manager.h" #include "chromecast/browser/cast_permission_manager.h"
#include "chromecast/browser/url_request_context_factory.h"
#include "components/keyed_service/core/simple_key_map.h" #include "components/keyed_service/core/simple_key_map.h"
#include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
......
...@@ -46,7 +46,6 @@ ...@@ -46,7 +46,6 @@
#include "chromecast/browser/service_connector.h" #include "chromecast/browser/service_connector.h"
#include "chromecast/browser/tts/tts_controller_impl.h" #include "chromecast/browser/tts/tts_controller_impl.h"
#include "chromecast/browser/tts/tts_platform_stub.h" #include "chromecast/browser/tts/tts_platform_stub.h"
#include "chromecast/browser/url_request_context_factory.h"
#include "chromecast/chromecast_buildflags.h" #include "chromecast/chromecast_buildflags.h"
#include "chromecast/graphics/cast_window_manager.h" #include "chromecast/graphics/cast_window_manager.h"
#include "chromecast/media/base/key_systems_common.h" #include "chromecast/media/base/key_systems_common.h"
...@@ -70,6 +69,7 @@ ...@@ -70,6 +69,7 @@
#include "gpu/command_buffer/service/gpu_switches.h" #include "gpu/command_buffer/service/gpu_switches.h"
#include "media/base/media.h" #include "media/base/media.h"
#include "media/base/media_switches.h" #include "media/base/media_switches.h"
#include "net/base/network_change_notifier.h"
#include "services/network/public/cpp/shared_url_loader_factory.h" #include "services/network/public/cpp/shared_url_loader_factory.h"
#include "ui/base/ui_base_switches.h" #include "ui/base/ui_base_switches.h"
#include "ui/gl/gl_switches.h" #include "ui/gl/gl_switches.h"
...@@ -376,13 +376,12 @@ void AddDefaultCommandLineSwitches(base::CommandLine* command_line) { ...@@ -376,13 +376,12 @@ void AddDefaultCommandLineSwitches(base::CommandLine* command_line) {
CastBrowserMainParts::CastBrowserMainParts( CastBrowserMainParts::CastBrowserMainParts(
const content::MainFunctionParams& parameters, const content::MainFunctionParams& parameters,
URLRequestContextFactory* url_request_context_factory,
CastContentBrowserClient* cast_content_browser_client) CastContentBrowserClient* cast_content_browser_client)
: BrowserMainParts(), : BrowserMainParts(),
cast_browser_process_(new CastBrowserProcess()), cast_browser_process_(new CastBrowserProcess()),
parameters_(parameters), parameters_(parameters),
cast_content_browser_client_(cast_content_browser_client), cast_content_browser_client_(cast_content_browser_client),
url_request_context_factory_(url_request_context_factory),
media_caps_(new media::MediaCapsImpl()), media_caps_(new media::MediaCapsImpl()),
cast_system_memory_pressure_evaluator_adjuster_(nullptr) { cast_system_memory_pressure_evaluator_adjuster_(nullptr) {
DCHECK(cast_content_browser_client); DCHECK(cast_content_browser_client);
...@@ -525,8 +524,6 @@ void CastBrowserMainParts::PreMainMessageLoopRun() { ...@@ -525,8 +524,6 @@ void CastBrowserMainParts::PreMainMessageLoopRun() {
base::Unretained(this))); base::Unretained(this)));
#endif // defined(OS_ANDROID) #endif // defined(OS_ANDROID)
url_request_context_factory_->InitializeOnUIThread(nullptr);
cast_browser_process_->SetBrowserContext( cast_browser_process_->SetBrowserContext(
std::make_unique<CastBrowserContext>()); std::make_unique<CastBrowserContext>());
...@@ -640,7 +637,6 @@ void CastBrowserMainParts::PreMainMessageLoopRun() { ...@@ -640,7 +637,6 @@ void CastBrowserMainParts::PreMainMessageLoopRun() {
// initialized by cast service. // initialized by cast service.
cast_browser_process_->cast_browser_metrics()->Initialize(); cast_browser_process_->cast_browser_metrics()->Initialize();
cast_content_browser_client_->InitializeURLLoaderThrottleDelegate(); cast_content_browser_client_->InitializeURLLoaderThrottleDelegate();
url_request_context_factory_->InitializeNetworkDelegates();
cast_content_browser_client_->CreateGeneralAudienceBrowsingService(); cast_content_browser_client_->CreateGeneralAudienceBrowsingService();
......
...@@ -55,7 +55,6 @@ class VideoPlaneController; ...@@ -55,7 +55,6 @@ class VideoPlaneController;
namespace shell { namespace shell {
class CastBrowserProcess; class CastBrowserProcess;
class CastContentBrowserClient; class CastContentBrowserClient;
class URLRequestContextFactory;
class CastBrowserMainParts : public content::BrowserMainParts { class CastBrowserMainParts : public content::BrowserMainParts {
public: public:
...@@ -63,12 +62,10 @@ class CastBrowserMainParts : public content::BrowserMainParts { ...@@ -63,12 +62,10 @@ class CastBrowserMainParts : public content::BrowserMainParts {
// link in an implementation as needed. // link in an implementation as needed.
static std::unique_ptr<CastBrowserMainParts> Create( static std::unique_ptr<CastBrowserMainParts> Create(
const content::MainFunctionParams& parameters, const content::MainFunctionParams& parameters,
URLRequestContextFactory* url_request_context_factory,
CastContentBrowserClient* cast_content_browser_client); CastContentBrowserClient* cast_content_browser_client);
// This class does not take ownership of |url_request_content_factory|. // This class does not take ownership of |url_request_content_factory|.
CastBrowserMainParts(const content::MainFunctionParams& parameters, CastBrowserMainParts(const content::MainFunctionParams& parameters,
URLRequestContextFactory* url_request_context_factory,
CastContentBrowserClient* cast_content_browser_client); CastContentBrowserClient* cast_content_browser_client);
~CastBrowserMainParts() override; ~CastBrowserMainParts() override;
...@@ -92,7 +89,6 @@ class CastBrowserMainParts : public content::BrowserMainParts { ...@@ -92,7 +89,6 @@ class CastBrowserMainParts : public content::BrowserMainParts {
const content::MainFunctionParams parameters_; // For running browser tests. const content::MainFunctionParams parameters_; // For running browser tests.
// Caches a pointer of the CastContentBrowserClient. // Caches a pointer of the CastContentBrowserClient.
CastContentBrowserClient* const cast_content_browser_client_ = nullptr; CastContentBrowserClient* const cast_content_browser_client_ = nullptr;
URLRequestContextFactory* const url_request_context_factory_;
std::unique_ptr<media::VideoPlaneController> video_plane_controller_; std::unique_ptr<media::VideoPlaneController> video_plane_controller_;
std::unique_ptr<media::MediaCapsImpl> media_caps_; std::unique_ptr<media::MediaCapsImpl> media_caps_;
std::unique_ptr<ServiceConnector> service_connector_; std::unique_ptr<ServiceConnector> service_connector_;
......
...@@ -10,10 +10,9 @@ namespace shell { ...@@ -10,10 +10,9 @@ namespace shell {
// static // static
std::unique_ptr<CastBrowserMainParts> CastBrowserMainParts::Create( std::unique_ptr<CastBrowserMainParts> CastBrowserMainParts::Create(
const content::MainFunctionParams& parameters, const content::MainFunctionParams& parameters,
URLRequestContextFactory* url_request_context_factory,
CastContentBrowserClient* cast_content_browser_client) { CastContentBrowserClient* cast_content_browser_client) {
return std::make_unique<CastBrowserMainParts>( return std::make_unique<CastBrowserMainParts>(parameters,
parameters, url_request_context_factory, cast_content_browser_client); cast_content_browser_client);
} }
} // namespace shell } // namespace shell
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
#include "chromecast/browser/cast_http_user_agent_settings.h" #include "chromecast/browser/cast_http_user_agent_settings.h"
#include "chromecast/browser/cast_navigation_ui_data.h" #include "chromecast/browser/cast_navigation_ui_data.h"
#include "chromecast/browser/cast_network_contexts.h" #include "chromecast/browser/cast_network_contexts.h"
#include "chromecast/browser/cast_network_delegate.h"
#include "chromecast/browser/cast_overlay_manifests.h" #include "chromecast/browser/cast_overlay_manifests.h"
#include "chromecast/browser/cast_quota_permission_context.h" #include "chromecast/browser/cast_quota_permission_context.h"
#include "chromecast/browser/cast_session_id_map.h" #include "chromecast/browser/cast_session_id_map.h"
...@@ -48,7 +47,6 @@ ...@@ -48,7 +47,6 @@
#include "chromecast/browser/service/cast_service_simple.h" #include "chromecast/browser/service/cast_service_simple.h"
#include "chromecast/browser/service_connector.h" #include "chromecast/browser/service_connector.h"
#include "chromecast/browser/tts/tts_controller.h" #include "chromecast/browser/tts/tts_controller.h"
#include "chromecast/browser/url_request_context_factory.h"
#include "chromecast/common/cast_content_client.h" #include "chromecast/common/cast_content_client.h"
#include "chromecast/common/global_descriptors.h" #include "chromecast/common/global_descriptors.h"
#include "chromecast/media/audio/cast_audio_manager.h" #include "chromecast/media/audio/cast_audio_manager.h"
...@@ -151,7 +149,6 @@ CastContentBrowserClient::CastContentBrowserClient( ...@@ -151,7 +149,6 @@ CastContentBrowserClient::CastContentBrowserClient(
cast_browser_main_parts_(nullptr), cast_browser_main_parts_(nullptr),
cast_network_contexts_( cast_network_contexts_(
std::make_unique<CastNetworkContexts>(GetCorsExemptHeadersList())), std::make_unique<CastNetworkContexts>(GetCorsExemptHeadersList())),
url_request_context_factory_(new URLRequestContextFactory()),
cast_feature_list_creator_(cast_feature_list_creator) { cast_feature_list_creator_(cast_feature_list_creator) {
cast_feature_list_creator_->SetExtraEnableFeatures({ cast_feature_list_creator_->SetExtraEnableFeatures({
::media::kInternalMediaSession, features::kNetworkServiceInProcess, ::media::kInternalMediaSession, features::kNetworkServiceInProcess,
...@@ -171,8 +168,6 @@ CastContentBrowserClient::~CastContentBrowserClient() { ...@@ -171,8 +168,6 @@ CastContentBrowserClient::~CastContentBrowserClient() {
DCHECK(!media_resource_tracker_) DCHECK(!media_resource_tracker_)
<< "ResetMediaResourceTracker was not called"; << "ResetMediaResourceTracker was not called";
cast_network_contexts_.reset(); cast_network_contexts_.reset();
base::DeleteSoon(FROM_HERE, {content::BrowserThread::IO},
url_request_context_factory_.release());
} }
std::unique_ptr<ServiceConnector> std::unique_ptr<ServiceConnector>
...@@ -325,8 +320,7 @@ CastContentBrowserClient::CreateBrowserMainParts( ...@@ -325,8 +320,7 @@ CastContentBrowserClient::CreateBrowserMainParts(
const content::MainFunctionParams& parameters) { const content::MainFunctionParams& parameters) {
DCHECK(!cast_browser_main_parts_); DCHECK(!cast_browser_main_parts_);
auto main_parts = CastBrowserMainParts::Create( auto main_parts = CastBrowserMainParts::Create(parameters, this);
parameters, url_request_context_factory_.get(), this);
cast_browser_main_parts_ = main_parts.get(); cast_browser_main_parts_ = main_parts.get();
CastBrowserProcess::GetInstance()->SetCastContentBrowserClient(this); CastBrowserProcess::GetInstance()->SetCastContentBrowserClient(this);
...@@ -584,7 +578,7 @@ base::OnceClosure CastContentBrowserClient::SelectClientCertificate( ...@@ -584,7 +578,7 @@ base::OnceClosure CastContentBrowserClient::SelectClientCertificate(
// we need to return (if permitted) is the Cast device cert, which we can // we need to return (if permitted) is the Cast device cert, which we can
// access directly through the ClientAuthSigner instance. However, we need to // access directly through the ClientAuthSigner instance. However, we need to
// be on the IO thread to determine whether the app is whitelisted to return // be on the IO thread to determine whether the app is whitelisted to return
// it, because CastNetworkDelegate is bound to the IO thread. // it.
// Subsequently, the callback must then itself be performed back here // Subsequently, the callback must then itself be performed back here
// on the UI thread. // on the UI thread.
// //
...@@ -606,6 +600,15 @@ base::OnceClosure CastContentBrowserClient::SelectClientCertificate( ...@@ -606,6 +600,15 @@ base::OnceClosure CastContentBrowserClient::SelectClientCertificate(
return base::OnceClosure(); return base::OnceClosure();
} }
bool CastContentBrowserClient::IsWhitelisted(
const GURL& /* gurl */,
const std::string& /* session_id */,
int /* render_process_id */,
int /* render_frame_id */,
bool /* for_device_auth */) {
return false;
}
void CastContentBrowserClient::SelectClientCertificateOnIOThread( void CastContentBrowserClient::SelectClientCertificateOnIOThread(
GURL requesting_url, GURL requesting_url,
const std::string& session_id, const std::string& session_id,
...@@ -616,11 +619,8 @@ void CastContentBrowserClient::SelectClientCertificateOnIOThread( ...@@ -616,11 +619,8 @@ void CastContentBrowserClient::SelectClientCertificateOnIOThread(
scoped_refptr<net::SSLPrivateKey>)> scoped_refptr<net::SSLPrivateKey>)>
continue_callback) { continue_callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO); DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
CastNetworkDelegate* network_delegate = if (IsWhitelisted(requesting_url, session_id, render_process_id,
url_request_context_factory_->app_network_delegate(); render_frame_id, false)) {
if (network_delegate->IsWhitelisted(requesting_url, session_id,
render_process_id, render_frame_id,
false)) {
original_runner->PostTask( original_runner->PostTask(
FROM_HERE, base::BindOnce(std::move(continue_callback), DeviceCert(), FROM_HERE, base::BindOnce(std::move(continue_callback), DeviceCert(),
DeviceKey())); DeviceKey()));
......
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
#include "media/mojo/mojom/media_service.mojom.h" #include "media/mojo/mojom/media_service.mojom.h"
#include "media/mojo/mojom/renderer.mojom.h" #include "media/mojo/mojom/renderer.mojom.h"
#include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_receiver.h"
#include "net/url_request/url_request_context.h"
#include "services/service_manager/public/cpp/binder_registry.h" #include "services/service_manager/public/cpp/binder_registry.h"
#include "services/service_manager/public/mojom/interface_provider.mojom-forward.h" #include "services/service_manager/public/mojom/interface_provider.mojom-forward.h"
#include "services/service_manager/public/mojom/service.mojom-forward.h" #include "services/service_manager/public/mojom/service.mojom-forward.h"
...@@ -79,7 +78,6 @@ class VideoResolutionPolicy; ...@@ -79,7 +78,6 @@ class VideoResolutionPolicy;
namespace shell { namespace shell {
class CastBrowserMainParts; class CastBrowserMainParts;
class CastNetworkContexts; class CastNetworkContexts;
class URLRequestContextFactory;
class CastContentBrowserClient class CastContentBrowserClient
: public content::ContentBrowserClient, : public content::ContentBrowserClient,
...@@ -273,10 +271,6 @@ class CastContentBrowserClient ...@@ -273,10 +271,6 @@ class CastContentBrowserClient
explicit CastContentBrowserClient( explicit CastContentBrowserClient(
CastFeatureListCreator* cast_feature_list_creator); CastFeatureListCreator* cast_feature_list_creator);
URLRequestContextFactory* url_request_context_factory() const {
return url_request_context_factory_.get();
}
void BindMediaRenderer( void BindMediaRenderer(
mojo::PendingReceiver<::media::mojom::Renderer> receiver); mojo::PendingReceiver<::media::mojom::Renderer> receiver);
...@@ -289,6 +283,12 @@ class CastContentBrowserClient ...@@ -289,6 +283,12 @@ class CastContentBrowserClient
virtual scoped_refptr<net::X509Certificate> DeviceCert(); virtual scoped_refptr<net::X509Certificate> DeviceCert();
virtual scoped_refptr<net::SSLPrivateKey> DeviceKey(); virtual scoped_refptr<net::SSLPrivateKey> DeviceKey();
virtual bool IsWhitelisted(const GURL& gurl,
const std::string& session_id,
int render_process_id,
int render_frame_id,
bool for_device_auth);
void SelectClientCertificateOnIOThread( void SelectClientCertificateOnIOThread(
GURL requesting_url, GURL requesting_url,
const std::string& session_id, const std::string& session_id,
...@@ -340,7 +340,6 @@ class CastContentBrowserClient ...@@ -340,7 +340,6 @@ class CastContentBrowserClient
// Created by CastContentBrowserClient but owned by BrowserMainLoop. // Created by CastContentBrowserClient but owned by BrowserMainLoop.
CastBrowserMainParts* cast_browser_main_parts_; CastBrowserMainParts* cast_browser_main_parts_;
std::unique_ptr<CastNetworkContexts> cast_network_contexts_; std::unique_ptr<CastNetworkContexts> cast_network_contexts_;
std::unique_ptr<URLRequestContextFactory> url_request_context_factory_;
std::unique_ptr<media::CmaBackendFactory> cma_backend_factory_; std::unique_ptr<media::CmaBackendFactory> cma_backend_factory_;
std::unique_ptr<GeneralAudienceBrowsingService> std::unique_ptr<GeneralAudienceBrowsingService>
general_audience_browsing_service_; general_audience_browsing_service_;
......
...@@ -14,7 +14,6 @@ ...@@ -14,7 +14,6 @@
#include "chromecast/browser/cast_browser_context.h" #include "chromecast/browser/cast_browser_context.h"
#include "chromecast/browser/cast_browser_process.h" #include "chromecast/browser/cast_browser_process.h"
#include "chromecast/browser/cast_http_user_agent_settings.h" #include "chromecast/browser/cast_http_user_agent_settings.h"
#include "chromecast/browser/url_request_context_factory.h"
#include "chromecast/common/cast_content_client.h" #include "chromecast/common/cast_content_client.h"
#include "components/proxy_config/pref_proxy_config_tracker_impl.h" #include "components/proxy_config/pref_proxy_config_tracker_impl.h"
#include "components/variations/net/variations_http_headers.h" #include "components/variations/net/variations_http_headers.h"
......
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chromecast/browser/cast_network_delegate.h"
#include <utility>
#include "base/command_line.h"
#include "base/files/file_path.h"
#include "chromecast/base/chromecast_switches.h"
#include "chromecast/browser/cast_navigation_ui_data.h"
#include "chromecast/browser/cast_network_request_interceptor.h"
#include "content/public/common/child_process_host.h"
#include "net/base/net_errors.h"
namespace chromecast {
namespace shell {
std::unique_ptr<CastNetworkDelegate> CastNetworkDelegate::Create() {
return std::make_unique<CastNetworkDelegate>(
CastNetworkRequestInterceptor::Create());
}
CastNetworkDelegate::CastNetworkDelegate(
std::unique_ptr<CastNetworkRequestInterceptor> network_request_interceptor)
: network_request_interceptor_(std::move(network_request_interceptor)) {
DCHECK(network_request_interceptor_);
DETACH_FROM_THREAD(thread_checker_);
}
CastNetworkDelegate::~CastNetworkDelegate() {
}
void CastNetworkDelegate::Initialize() {
network_request_interceptor_->Initialize();
}
bool CastNetworkDelegate::IsWhitelisted(const GURL& gurl,
const std::string& session_id,
int render_process_id,
int render_frame_id,
bool for_device_auth) const {
return network_request_interceptor_->IsWhiteListed(
gurl, session_id, render_process_id, render_frame_id, for_device_auth);
}
int CastNetworkDelegate::OnBeforeURLRequest(
net::URLRequest* request,
net::CompletionOnceCallback callback,
GURL* new_url) {
return net::OK;
}
int CastNetworkDelegate::OnBeforeStartTransaction(
net::URLRequest* request,
net::CompletionOnceCallback callback,
net::HttpRequestHeaders* headers) {
if (!network_request_interceptor_->IsInitialized())
return net::OK;
return network_request_interceptor_->OnBeforeStartTransaction(
request, std::move(callback), headers);
}
void CastNetworkDelegate::OnURLRequestDestroyed(net::URLRequest* request) {
if (network_request_interceptor_->IsInitialized())
network_request_interceptor_->OnURLRequestDestroyed(request);
}
} // namespace shell
} // namespace chromecast
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROMECAST_BROWSER_CAST_NETWORK_DELEGATE_H_
#define CHROMECAST_BROWSER_CAST_NETWORK_DELEGATE_H_
#include <memory>
#include <string>
#include "base/macros.h"
#include "net/base/network_delegate_impl.h"
namespace chromecast {
class CastNetworkRequestInterceptor;
namespace shell {
class CastNetworkDelegate : public net::NetworkDelegateImpl {
public:
static std::unique_ptr<CastNetworkDelegate> Create();
explicit CastNetworkDelegate(std::unique_ptr<CastNetworkRequestInterceptor>
network_request_interceptor);
~CastNetworkDelegate() override;
void Initialize();
bool IsWhitelisted(const GURL& gurl,
const std::string& session_id,
int render_process_id,
int render_frame_id,
bool for_device_auth) const;
private:
// net::NetworkDelegate implementation:
int OnBeforeURLRequest(net::URLRequest* request,
net::CompletionOnceCallback callback,
GURL* new_url) override;
int OnBeforeStartTransaction(net::URLRequest* request,
net::CompletionOnceCallback callback,
net::HttpRequestHeaders* headers) override;
void OnURLRequestDestroyed(net::URLRequest* request) override;
const std::unique_ptr<CastNetworkRequestInterceptor>
network_request_interceptor_;
DISALLOW_COPY_AND_ASSIGN(CastNetworkDelegate);
};
} // namespace shell
} // namespace chromecast
#endif // CHROMECAST_BROWSER_CAST_NETWORK_DELEGATE_H_
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chromecast/browser/cast_network_request_interceptor.h"
#include "net/base/net_errors.h"
namespace chromecast {
CastNetworkRequestInterceptor::CastNetworkRequestInterceptor() = default;
CastNetworkRequestInterceptor::~CastNetworkRequestInterceptor() = default;
bool CastNetworkRequestInterceptor::IsWhiteListed(
const GURL& /* gurl */,
const std::string& /* session_id */,
int /* render_process_id */,
int /* render_frame_id */,
bool /* for_device_auth */) const {
return false;
}
void CastNetworkRequestInterceptor::Initialize() {}
bool CastNetworkRequestInterceptor::IsInitialized() {
return true;
}
int CastNetworkRequestInterceptor::OnBeforeURLRequest(
net::URLRequest* /* request */,
const std::string& /* session_id */,
int /* render_process_id */,
int /* render_frame_id */,
net::CompletionOnceCallback /* callback */,
GURL* /* new_url */) {
return net::OK;
}
int CastNetworkRequestInterceptor::OnBeforeStartTransaction(
net::URLRequest* /* request */,
net::CompletionOnceCallback /* callback */,
net::HttpRequestHeaders* headers) {
return net::OK;
}
void CastNetworkRequestInterceptor::OnURLRequestDestroyed(
net::URLRequest* /* request */) {}
} // namespace chromecast
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROMECAST_BROWSER_CAST_NETWORK_REQUEST_INTERCEPTOR_H_
#define CHROMECAST_BROWSER_CAST_NETWORK_REQUEST_INTERCEPTOR_H_
#include <memory>
#include <string>
#include "base/macros.h"
#include "base/sequence_checker.h"
#include "net/base/completion_once_callback.h"
class GURL;
namespace net {
class HttpRequestHeaders;
class URLRequest;
} // namespace net
namespace chromecast {
// Used to intercept the network request and modify the headers.
class CastNetworkRequestInterceptor {
public:
static std::unique_ptr<CastNetworkRequestInterceptor> Create();
CastNetworkRequestInterceptor();
virtual ~CastNetworkRequestInterceptor();
// TODO(juke): Remove render_process_id.
virtual bool IsWhiteListed(const GURL& gurl,
const std::string& session_id,
int render_process_id,
int render_frame_id,
bool for_device_auth) const;
virtual void Initialize();
virtual bool IsInitialized();
virtual int OnBeforeURLRequest(net::URLRequest* request,
const std::string& session_id,
int render_process_id,
int render_frame_id,
net::CompletionOnceCallback callback,
GURL* new_url);
virtual int OnBeforeStartTransaction(net::URLRequest* request,
net::CompletionOnceCallback callback,
net::HttpRequestHeaders* headers);
virtual void OnURLRequestDestroyed(net::URLRequest* request);
private:
DISALLOW_COPY_AND_ASSIGN(CastNetworkRequestInterceptor);
};
} // namespace chromecast
#endif // CHROMECAST_BROWSER_CAST_NETWORK_REQUEST_INTERCEPTOR_H_
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chromecast/browser/cast_network_request_interceptor.h"
namespace chromecast {
std::unique_ptr<CastNetworkRequestInterceptor>
CastNetworkRequestInterceptor::Create() {
return std::make_unique<CastNetworkRequestInterceptor>();
}
} // namespace chromecast
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chromecast/browser/url_request_context_factory.h"
#include <algorithm>
#include <utility>
#include "base/command_line.h"
#include "base/files/file_path.h"
#include "base/macros.h"
#include "base/single_thread_task_runner.h"
#include "base/task/post_task.h"
#include "chromecast/base/cast_features.h"
#include "chromecast/base/chromecast_switches.h"
#include "chromecast/browser/cast_browser_process.h"
#include "chromecast/browser/cast_http_user_agent_settings.h"
#include "chromecast/browser/cast_network_delegate.h"
#include "chromecast/chromecast_buildflags.h"
#include "components/network_session_configurator/common/network_switches.h"
#include "components/proxy_config/pref_proxy_config_tracker_impl.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/cookie_store_factory.h"
#include "content/public/common/url_constants.h"
#include "net/base/network_change_notifier.h"
#include "net/cert/cert_verifier.h"
#include "net/cert/ct_policy_enforcer.h"
#include "net/cert/ct_policy_status.h"
#include "net/cert/multi_log_ct_verifier.h"
#include "net/cookies/cookie_store.h"
#include "net/dns/host_resolver.h"
#include "net/dns/host_resolver_manager.h"
#include "net/http/http_auth_handler_factory.h"
#include "net/http/http_network_layer.h"
#include "net/http/http_server_properties.h"
#include "net/http/http_stream_factory.h"
#include "net/proxy_resolution/proxy_resolution_service.h"
#include "net/quic/quic_context.h"
#include "net/ssl/ssl_config_service_defaults.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_builder.h"
#include "net/url_request/url_request_context_getter.h"
#include "net/url_request/url_request_intercepting_job_factory.h"
#include "net/url_request/url_request_job_factory_impl.h"
namespace chromecast {
namespace shell {
namespace {
const char kCookieStoreFile[] = "Cookies";
bool IgnoreCertificateErrors() {
base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
return cmd_line->HasSwitch(switches::kIgnoreCertificateErrors);
}
} // namespace
// Private classes to expose URLRequestContextGetter that call back to the
// URLRequestContextFactory to create the URLRequestContext on demand.
//
// The URLRequestContextFactory::URLRequestContextGetter class is used for both
// the system and media URLRequestCotnexts.
class URLRequestContextFactory::URLRequestContextGetter
: public net::URLRequestContextGetter {
public:
URLRequestContextGetter(URLRequestContextFactory* factory, bool is_media)
: is_media_(is_media),
factory_(factory) {
}
net::URLRequestContext* GetURLRequestContext() override {
if (!request_context_) {
if (is_media_) {
request_context_.reset(factory_->CreateMediaRequestContext());
} else {
request_context_.reset(factory_->CreateSystemRequestContext());
}
}
return request_context_.get();
}
scoped_refptr<base::SingleThreadTaskRunner>
GetNetworkTaskRunner() const override {
return base::CreateSingleThreadTaskRunner({content::BrowserThread::IO});
}
private:
~URLRequestContextGetter() override {}
const bool is_media_;
URLRequestContextFactory* const factory_;
std::unique_ptr<net::URLRequestContext> request_context_;
DISALLOW_COPY_AND_ASSIGN(URLRequestContextGetter);
};
// The URLRequestContextFactory::MainURLRequestContextGetter class is used for
// the main URLRequestContext.
class URLRequestContextFactory::MainURLRequestContextGetter
: public net::URLRequestContextGetter {
public:
MainURLRequestContextGetter(
URLRequestContextFactory* factory,
content::BrowserContext* browser_context,
content::ProtocolHandlerMap* protocol_handlers,
content::URLRequestInterceptorScopedVector request_interceptors)
: factory_(factory),
cookie_path_(browser_context->GetPath().Append(kCookieStoreFile)),
request_interceptors_(std::move(request_interceptors)) {
std::swap(protocol_handlers_, *protocol_handlers);
}
net::URLRequestContext* GetURLRequestContext() override {
if (!request_context_) {
request_context_.reset(factory_->CreateMainRequestContext(
cookie_path_, &protocol_handlers_, std::move(request_interceptors_)));
protocol_handlers_.clear();
}
return request_context_.get();
}
scoped_refptr<base::SingleThreadTaskRunner>
GetNetworkTaskRunner() const override {
return base::CreateSingleThreadTaskRunner({content::BrowserThread::IO});
}
private:
~MainURLRequestContextGetter() override {}
URLRequestContextFactory* const factory_;
base::FilePath cookie_path_;
content::ProtocolHandlerMap protocol_handlers_;
content::URLRequestInterceptorScopedVector request_interceptors_;
std::unique_ptr<net::URLRequestContext> request_context_;
DISALLOW_COPY_AND_ASSIGN(MainURLRequestContextGetter);
};
URLRequestContextFactory::URLRequestContextFactory()
: app_network_delegate_(CastNetworkDelegate::Create()),
system_network_delegate_(CastNetworkDelegate::Create()),
system_dependencies_initialized_(false),
main_dependencies_initialized_(false),
media_dependencies_initialized_(false) {}
URLRequestContextFactory::~URLRequestContextFactory() {
pref_proxy_config_tracker_impl_->DetachFromPrefService();
}
void URLRequestContextFactory::InitializeOnUIThread(net::NetLog* net_log) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
// Cast http user agent settings must be initialized in UI thread
// because it registers itself to pref notification observer which is not
// thread safe.
http_user_agent_settings_.reset(new CastHttpUserAgentSettings());
// Proxy config service should be initialized in UI thread, since
// ProxyConfigServiceDelegate on Android expects UI thread.
pref_proxy_config_tracker_impl_ =
std::make_unique<PrefProxyConfigTrackerImpl>(
CastBrowserProcess::GetInstance()->pref_service(),
base::CreateSingleThreadTaskRunner({content::BrowserThread::IO}));
proxy_config_service_ =
pref_proxy_config_tracker_impl_->CreateTrackingProxyConfigService(
nullptr);
DCHECK(proxy_config_service_.get());
net_log_ = net_log;
}
net::URLRequestContextGetter* URLRequestContextFactory::CreateMainGetter(
content::BrowserContext* browser_context,
content::ProtocolHandlerMap* protocol_handlers,
content::URLRequestInterceptorScopedVector request_interceptors) {
DCHECK(!main_getter_.get())
<< "Main URLRequestContextGetter already initialized";
main_getter_ =
new MainURLRequestContextGetter(this, browser_context, protocol_handlers,
std::move(request_interceptors));
return main_getter_.get();
}
net::URLRequestContextGetter* URLRequestContextFactory::GetMainGetter() {
CHECK(main_getter_.get());
return main_getter_.get();
}
net::URLRequestContextGetter* URLRequestContextFactory::GetSystemGetter() {
if (!system_getter_.get()) {
system_getter_ = new URLRequestContextGetter(this, false);
}
return system_getter_.get();
}
net::URLRequestContextGetter* URLRequestContextFactory::GetMediaGetter() {
if (!media_getter_.get()) {
media_getter_ = new URLRequestContextGetter(this, true);
}
return media_getter_.get();
}
void URLRequestContextFactory::InitializeSystemContextDependencies() {
if (system_dependencies_initialized_)
return;
host_resolver_manager_ = std::make_unique<net::HostResolverManager>(
net::HostResolver::ManagerOptions(),
net::NetworkChangeNotifier::GetSystemDnsConfigNotifier(),
/*net_log=*/nullptr);
cert_verifier_ =
net::CertVerifier::CreateDefault(/*cert_net_fetcher=*/nullptr);
ssl_config_service_.reset(new net::SSLConfigServiceDefaults);
transport_security_state_.reset(new net::TransportSecurityState());
cert_transparency_verifier_.reset(new net::MultiLogCTVerifier());
ct_policy_enforcer_.reset(new net::DefaultCTPolicyEnforcer());
http_auth_handler_factory_ = net::HttpAuthHandlerFactory::CreateDefault();
// Use in-memory HttpServerProperties. Disk-based can improve performance
// but benefit seems small (only helps 1st request to a server).
http_server_properties_ = std::make_unique<net::HttpServerProperties>();
DCHECK(proxy_config_service_);
proxy_resolution_service_ =
net::ProxyResolutionService::CreateUsingSystemProxyResolver(
std::move(proxy_config_service_), nullptr);
system_host_resolver_ =
net::HostResolver::CreateResolver(host_resolver_manager_.get());
quic_context_ = std::make_unique<net::QuicContext>();
system_dependencies_initialized_ = true;
}
void URLRequestContextFactory::InitializeMainContextDependencies(
content::ProtocolHandlerMap* protocol_handlers,
content::URLRequestInterceptorScopedVector request_interceptors) {
if (main_dependencies_initialized_)
return;
std::unique_ptr<net::URLRequestJobFactoryImpl> job_factory(
new net::URLRequestJobFactoryImpl());
// Keep ProtocolHandlers added in sync with
// CastContentBrowserClient::IsHandledURL().
for (content::ProtocolHandlerMap::iterator it = protocol_handlers->begin();
it != protocol_handlers->end();
++it) {
bool set_protocol =
job_factory->SetProtocolHandler(it->first, std::move(it->second));
DCHECK(set_protocol);
}
// Set up interceptors in the reverse order.
std::unique_ptr<net::URLRequestJobFactory> top_job_factory =
std::move(job_factory);
for (auto i = request_interceptors.rbegin(); i != request_interceptors.rend();
++i) {
top_job_factory.reset(new net::URLRequestInterceptingJobFactory(
std::move(top_job_factory), std::move(*i)));
}
request_interceptors.clear();
main_job_factory_ = std::move(top_job_factory);
main_host_resolver_ =
net::HostResolver::CreateResolver(host_resolver_manager_.get());
main_dependencies_initialized_ = true;
}
void URLRequestContextFactory::InitializeMediaContextDependencies() {
if (media_dependencies_initialized_)
return;
media_host_resolver_ =
net::HostResolver::CreateResolver(host_resolver_manager_.get());
media_dependencies_initialized_ = true;
}
void URLRequestContextFactory::PopulateNetworkSessionParams(
bool ignore_certificate_errors,
net::HttpNetworkSession::Params* session_params) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
session_params->ignore_certificate_errors = ignore_certificate_errors;
// Enable QUIC if instructed by DCS. This remains constant for the lifetime of
// the process.
session_params->enable_quic = chromecast::IsFeatureEnabled(kEnableQuic);
LOG(INFO) << "Set HttpNetworkSessionParams.enable_quic = "
<< session_params->enable_quic;
// Disable idle sockets close on memory pressure, if instructed by DCS. On
// memory constrained devices:
// 1. if idle sockets are closed when memory pressure happens, cast_shell will
// close and re-open lots of connections to server.
// 2. if idle sockets are kept alive when memory pressure happens, this may
// cause JS engine gc frequently, leading to JS suspending.
session_params->disable_idle_sockets_close_on_memory_pressure =
chromecast::IsFeatureEnabled(kDisableIdleSocketsCloseOnMemoryPressure);
LOG(INFO) << "Set HttpNetworkSessionParams."
<< "disable_idle_sockets_close_on_memory_pressure = "
<< session_params->disable_idle_sockets_close_on_memory_pressure;
}
std::unique_ptr<net::HttpNetworkSession>
URLRequestContextFactory::CreateNetworkSession(
const net::URLRequestContext* context) {
net::HttpNetworkSession::Params session_params;
net::HttpNetworkSession::Context session_context;
PopulateNetworkSessionParams(IgnoreCertificateErrors(), &session_params);
net::URLRequestContextBuilder::SetHttpNetworkSessionComponents(
context, &session_context);
return std::make_unique<net::HttpNetworkSession>(session_params,
session_context);
}
net::URLRequestContext* URLRequestContextFactory::CreateSystemRequestContext() {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
InitializeSystemContextDependencies();
system_job_factory_.reset(new net::URLRequestJobFactoryImpl());
system_cookie_store_ =
content::CreateCookieStore(content::CookieStoreConfig(), net_log_);
net::URLRequestContext* system_context = new net::URLRequestContext();
ConfigureURLRequestContext(system_context, system_job_factory_,
system_cookie_store_, system_network_delegate_,
system_host_resolver_);
system_network_session_ = CreateNetworkSession(system_context);
system_transaction_factory_ =
std::make_unique<net::HttpNetworkLayer>(system_network_session_.get());
system_context->set_http_transaction_factory(
system_transaction_factory_.get());
return system_context;
}
net::URLRequestContext* URLRequestContextFactory::CreateMediaRequestContext() {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
DCHECK(main_getter_.get())
<< "Getting MediaRequestContext before MainRequestContext";
InitializeSystemContextDependencies();
InitializeMediaContextDependencies();
// Reuse main context dependencies except HostResolver and
// HttpTransactionFactory.
net::URLRequestContext* media_context = new net::URLRequestContext();
ConfigureURLRequestContext(media_context, main_job_factory_,
main_cookie_store_, app_network_delegate_,
media_host_resolver_);
media_network_session_ = CreateNetworkSession(media_context);
media_transaction_factory_ =
std::make_unique<net::HttpNetworkLayer>(media_network_session_.get());
media_context->set_http_transaction_factory(media_transaction_factory_.get());
return media_context;
}
net::URLRequestContext* URLRequestContextFactory::CreateMainRequestContext(
const base::FilePath& cookie_path,
content::ProtocolHandlerMap* protocol_handlers,
content::URLRequestInterceptorScopedVector request_interceptors) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
InitializeSystemContextDependencies();
InitializeMainContextDependencies(
protocol_handlers, std::move(request_interceptors));
content::CookieStoreConfig cookie_config(cookie_path, false, true, nullptr);
main_cookie_store_ = content::CreateCookieStore(cookie_config, net_log_);
net::URLRequestContext* main_context = new net::URLRequestContext();
ConfigureURLRequestContext(main_context, main_job_factory_,
main_cookie_store_, app_network_delegate_,
main_host_resolver_);
main_network_session_ = CreateNetworkSession(main_context);
main_transaction_factory_ =
std::make_unique<net::HttpNetworkLayer>(main_network_session_.get());
main_context->set_http_transaction_factory(main_transaction_factory_.get());
return main_context;
}
void URLRequestContextFactory::ConfigureURLRequestContext(
net::URLRequestContext* context,
const std::unique_ptr<net::URLRequestJobFactory>& job_factory,
const std::unique_ptr<net::CookieStore>& cookie_store,
const std::unique_ptr<CastNetworkDelegate>& network_delegate,
const std::unique_ptr<net::HostResolver>& host_resolver) {
// common settings
context->set_cert_verifier(cert_verifier_.get());
context->set_cert_transparency_verifier(cert_transparency_verifier_.get());
context->set_ct_policy_enforcer(ct_policy_enforcer_.get());
context->set_proxy_resolution_service(proxy_resolution_service_.get());
context->set_ssl_config_service(ssl_config_service_.get());
context->set_transport_security_state(transport_security_state_.get());
context->set_http_auth_handler_factory(http_auth_handler_factory_.get());
context->set_http_server_properties(http_server_properties_.get());
context->set_http_user_agent_settings(http_user_agent_settings_.get());
context->set_net_log(net_log_);
context->set_quic_context(quic_context_.get());
// settings from the caller
context->set_job_factory(job_factory.get());
context->set_cookie_store(cookie_store.get());
context->set_network_delegate(network_delegate.get());
context->set_host_resolver(host_resolver.get());
host_resolver->SetRequestContext(context);
}
void URLRequestContextFactory::InitializeNetworkDelegates() {
app_network_delegate_->Initialize();
LOG(INFO) << "Initialized app network delegate.";
system_network_delegate_->Initialize();
LOG(INFO) << "Initialized system network delegate.";
}
} // namespace shell
} // namespace chromecast
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROMECAST_BROWSER_URL_REQUEST_CONTEXT_FACTORY_H_
#define CHROMECAST_BROWSER_URL_REQUEST_CONTEXT_FACTORY_H_
#include <memory>
#include "content/public/browser/browser_context.h"
#include "content/public/browser/content_browser_client.h"
#include "net/http/http_network_session.h"
class PrefProxyConfigTracker;
namespace base {
class FilePath;
}
namespace net {
class CookieStore;
class HostResolver;
class HostResolverManager;
class HttpTransactionFactory;
class HttpUserAgentSettings;
class NetLog;
class ProxyConfigService;
class QuicContext;
class URLRequestContextGetter;
class URLRequestJobFactory;
} // namespace net
namespace chromecast {
namespace shell {
class CastNetworkDelegate;
class URLRequestContextFactory {
public:
URLRequestContextFactory();
~URLRequestContextFactory();
// Some members must be initialized on UI thread.
void InitializeOnUIThread(net::NetLog* net_log);
// Since main context requires a bunch of input params, if these get called
// multiple times, either multiple main contexts should be supported/managed
// or the input params need to be the same as before. So to be safe,
// the CreateMainGetter function currently DCHECK to make sure it is not
// called more than once.
// The media and system getters however, do not need input, so it is actually
// safe to call these multiple times. The impl create only 1 getter of each
// type and return the same instance each time the methods are called, thus
// the name difference.
net::URLRequestContextGetter* GetSystemGetter();
net::URLRequestContextGetter* CreateMainGetter(
content::BrowserContext* browser_context,
content::ProtocolHandlerMap* protocol_handlers,
content::URLRequestInterceptorScopedVector request_interceptors);
net::URLRequestContextGetter* GetMainGetter();
net::URLRequestContextGetter* GetMediaGetter();
CastNetworkDelegate* app_network_delegate() const {
return app_network_delegate_.get();
}
// Initialize the CastNetworkDelegate objects. This needs to be done
// after the CastService is created, but before any URL requests are made.
void InitializeNetworkDelegates();
private:
class URLRequestContextGetter;
class MainURLRequestContextGetter;
friend class URLRequestContextGetter;
friend class MainURLRequestContextGetter;
void InitializeSystemContextDependencies();
void InitializeMainContextDependencies(
content::ProtocolHandlerMap* protocol_handlers,
content::URLRequestInterceptorScopedVector request_interceptors);
void InitializeMediaContextDependencies();
void PopulateNetworkSessionParams(
bool ignore_certificate_errors,
net::HttpNetworkSession::Params* session_params);
std::unique_ptr<net::HttpNetworkSession> CreateNetworkSession(
const net::URLRequestContext* context);
// These are called by the RequestContextGetters to create each
// RequestContext.
// They must be called on the IO thread.
net::URLRequestContext* CreateSystemRequestContext();
net::URLRequestContext* CreateMediaRequestContext();
net::URLRequestContext* CreateMainRequestContext(
const base::FilePath& cookie_path,
content::ProtocolHandlerMap* protocol_handlers,
content::URLRequestInterceptorScopedVector request_interceptors);
// Helper function for configuring the settings of URLRequestContext
void ConfigureURLRequestContext(
net::URLRequestContext* context,
const std::unique_ptr<net::URLRequestJobFactory>& job_factory,
const std::unique_ptr<net::CookieStore>& cookie_store,
const std::unique_ptr<CastNetworkDelegate>& network_delegate,
const std::unique_ptr<net::HostResolver>& host_resolver);
scoped_refptr<net::URLRequestContextGetter> system_getter_;
scoped_refptr<net::URLRequestContextGetter> media_getter_;
scoped_refptr<net::URLRequestContextGetter> main_getter_;
std::unique_ptr<CastNetworkDelegate> app_network_delegate_;
std::unique_ptr<CastNetworkDelegate> system_network_delegate_;
// Shared objects for all contexts.
// The URLRequestContextStorage class is not used as owner to these objects
// since they are shared between the different URLRequestContexts.
// The URLRequestContextStorage class manages dependent resources for a single
// instance of URLRequestContext only.
bool system_dependencies_initialized_;
std::unique_ptr<net::HostResolverManager> host_resolver_manager_;
std::unique_ptr<net::CertVerifier> cert_verifier_;
std::unique_ptr<net::SSLConfigService> ssl_config_service_;
std::unique_ptr<net::TransportSecurityState> transport_security_state_;
std::unique_ptr<net::CTVerifier> cert_transparency_verifier_;
std::unique_ptr<net::CTPolicyEnforcer> ct_policy_enforcer_;
std::unique_ptr<net::ProxyConfigService> proxy_config_service_;
std::unique_ptr<net::ProxyResolutionService> proxy_resolution_service_;
std::unique_ptr<net::HttpAuthHandlerFactory> http_auth_handler_factory_;
std::unique_ptr<net::HttpServerProperties> http_server_properties_;
std::unique_ptr<net::HttpUserAgentSettings> http_user_agent_settings_;
std::unique_ptr<net::HttpNetworkSession> system_network_session_;
std::unique_ptr<net::HttpTransactionFactory> system_transaction_factory_;
std::unique_ptr<net::CookieStore> system_cookie_store_;
std::unique_ptr<net::URLRequestJobFactory> system_job_factory_;
std::unique_ptr<net::HostResolver> system_host_resolver_;
std::unique_ptr<net::QuicContext> quic_context_;
bool main_dependencies_initialized_;
std::unique_ptr<net::HttpNetworkSession> main_network_session_;
std::unique_ptr<net::HttpTransactionFactory> main_transaction_factory_;
std::unique_ptr<net::CookieStore> main_cookie_store_;
std::unique_ptr<net::URLRequestJobFactory> main_job_factory_;
std::unique_ptr<net::HostResolver> main_host_resolver_;
bool media_dependencies_initialized_;
std::unique_ptr<net::HttpNetworkSession> media_network_session_;
std::unique_ptr<net::HttpTransactionFactory> media_transaction_factory_;
std::unique_ptr<net::HostResolver> media_host_resolver_;
std::unique_ptr<PrefProxyConfigTracker> pref_proxy_config_tracker_impl_;
net::NetLog* net_log_;
};
} // namespace shell
} // namespace chromecast
#endif // CHROMECAST_BROWSER_URL_REQUEST_CONTEXT_FACTORY_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment