| Index: chromecast/shell/browser/url_request_context_factory.h
|
| diff --git a/chromecast/shell/browser/url_request_context_factory.h b/chromecast/shell/browser/url_request_context_factory.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e094c0d9a9e3307dc97e0c6670965939c4f37d2b
|
| --- /dev/null
|
| +++ b/chromecast/shell/browser/url_request_context_factory.h
|
| @@ -0,0 +1,103 @@
|
| +// 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_SHELL_BROWSER_URL_REQUEST_CONTEXT_FACTORY_H_
|
| +#define CHROMECAST_SHELL_BROWSER_URL_REQUEST_CONTEXT_FACTORY_H_
|
| +
|
| +#include "content/public/browser/content_browser_client.h"
|
| +#include "net/http/http_network_session.h"
|
| +
|
| +namespace net {
|
| +class HttpTransactionFactory;
|
| +class HttpUserAgentSettings;
|
| +class URLRequestJobFactory;
|
| +} // namespace net
|
| +
|
| +namespace chromecast {
|
| +namespace shell {
|
| +
|
| +class URLRequestContextFactory {
|
| + public:
|
| + URLRequestContextFactory();
|
| + ~URLRequestContextFactory();
|
| +
|
| + // Some members must be initialized on UI thread.
|
| + void InitializeOnUIThread();
|
| +
|
| + // 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();
|
| +
|
| + private:
|
| + class URLRequestContextGetter;
|
| + class MainURLRequestContextGetter;
|
| + friend class URLRequestContextGetter;
|
| + friend class MainURLRequestContextGetter;
|
| +
|
| + void InitializeSystemContextDependencies();
|
| + void InitializeMainContextDependencies(
|
| + net::HttpTransactionFactory* factory,
|
| + content::ProtocolHandlerMap* protocol_handlers,
|
| + content::URLRequestInterceptorScopedVector request_interceptors);
|
| + void InitializeMediaContextDependencies(net::HttpTransactionFactory* factory);
|
| +
|
| + void PopulateNetworkSessionParams(bool ignore_certificate_errors,
|
| + net::HttpNetworkSession::Params* params);
|
| +
|
| + // 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(
|
| + content::BrowserContext* browser_context,
|
| + content::ProtocolHandlerMap* protocol_handlers,
|
| + content::URLRequestInterceptorScopedVector request_interceptors);
|
| +
|
| + scoped_refptr<net::URLRequestContextGetter> system_getter_;
|
| + scoped_refptr<net::URLRequestContextGetter> media_getter_;
|
| + scoped_refptr<net::URLRequestContextGetter> main_getter_;
|
| +
|
| + // 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_;
|
| + scoped_ptr<net::HostResolver> host_resolver_;
|
| + scoped_ptr<net::ServerBoundCertService> server_bound_cert_service_;
|
| + scoped_ptr<net::CertVerifier> cert_verifier_;
|
| + scoped_refptr<net::SSLConfigService> ssl_config_service_;
|
| + scoped_ptr<net::TransportSecurityState> transport_security_state_;
|
| + scoped_ptr<net::ProxyService> proxy_service_;
|
| + scoped_ptr<net::HttpAuthHandlerFactory> http_auth_handler_factory_;
|
| + scoped_ptr<net::HttpServerProperties> http_server_properties_;
|
| + scoped_ptr<net::HttpUserAgentSettings> http_user_agent_settings_;
|
| + scoped_ptr<net::HttpTransactionFactory> system_transaction_factory_;
|
| +
|
| + bool main_dependencies_initialized_;
|
| + scoped_ptr<net::HttpTransactionFactory> main_transaction_factory_;
|
| + scoped_ptr<net::URLRequestJobFactory> main_job_factory_;
|
| +
|
| + bool media_dependencies_initialized_;
|
| + scoped_ptr<net::HttpTransactionFactory> media_transaction_factory_;
|
| +};
|
| +
|
| +} // namespace shell
|
| +} // namespace chromecast
|
| +
|
| +#endif // CHROMECAST_SHELL_BROWSER_URL_REQUEST_CONTEXT_FACTORY_H_
|
|
|