OLD | NEW |
(Empty) | |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #ifndef CHROMECAST_SHELL_BROWSER_URL_REQUEST_CONTEXT_FACTORY_H_ |
| 6 #define CHROMECAST_SHELL_BROWSER_URL_REQUEST_CONTEXT_FACTORY_H_ |
| 7 |
| 8 #include "content/public/browser/content_browser_client.h" |
| 9 #include "net/http/http_network_session.h" |
| 10 |
| 11 namespace net { |
| 12 class HttpTransactionFactory; |
| 13 class HttpUserAgentSettings; |
| 14 class URLRequestJobFactory; |
| 15 } // namespace net |
| 16 |
| 17 namespace chromecast { |
| 18 namespace shell { |
| 19 |
| 20 class URLRequestContextFactory { |
| 21 public: |
| 22 URLRequestContextFactory(); |
| 23 ~URLRequestContextFactory(); |
| 24 |
| 25 // Some members must be initialized on UI thread. |
| 26 void InitializeOnUIThread(); |
| 27 |
| 28 // Since main context requires a bunch of input params, if these get called |
| 29 // multiple times, either multiple main contexts should be supported/managed |
| 30 // or the input params need to be the same as before. So to be safe, |
| 31 // the CreateMainGetter function currently DCHECK to make sure it is not |
| 32 // called more than once. |
| 33 // The media and system getters however, do not need input, so it is actually |
| 34 // safe to call these multiple times. The impl create only 1 getter of each |
| 35 // type and return the same instance each time the methods are called, thus |
| 36 // the name difference. |
| 37 net::URLRequestContextGetter* GetSystemGetter(); |
| 38 net::URLRequestContextGetter* CreateMainGetter( |
| 39 content::BrowserContext* browser_context, |
| 40 content::ProtocolHandlerMap* protocol_handlers, |
| 41 content::URLRequestInterceptorScopedVector request_interceptors); |
| 42 net::URLRequestContextGetter* GetMainGetter(); |
| 43 net::URLRequestContextGetter* GetMediaGetter(); |
| 44 |
| 45 private: |
| 46 class URLRequestContextGetter; |
| 47 class MainURLRequestContextGetter; |
| 48 friend class URLRequestContextGetter; |
| 49 friend class MainURLRequestContextGetter; |
| 50 |
| 51 void InitializeSystemContextDependencies(); |
| 52 void InitializeMainContextDependencies( |
| 53 net::HttpTransactionFactory* factory, |
| 54 content::ProtocolHandlerMap* protocol_handlers, |
| 55 content::URLRequestInterceptorScopedVector request_interceptors); |
| 56 void InitializeMediaContextDependencies(net::HttpTransactionFactory* factory); |
| 57 |
| 58 void PopulateNetworkSessionParams(bool ignore_certificate_errors, |
| 59 net::HttpNetworkSession::Params* params); |
| 60 |
| 61 // These are called by the RequestContextGetters to create each |
| 62 // RequestContext. |
| 63 // They must be called on the IO thread. |
| 64 net::URLRequestContext* CreateSystemRequestContext(); |
| 65 net::URLRequestContext* CreateMediaRequestContext(); |
| 66 net::URLRequestContext* CreateMainRequestContext( |
| 67 content::BrowserContext* browser_context, |
| 68 content::ProtocolHandlerMap* protocol_handlers, |
| 69 content::URLRequestInterceptorScopedVector request_interceptors); |
| 70 |
| 71 scoped_refptr<net::URLRequestContextGetter> system_getter_; |
| 72 scoped_refptr<net::URLRequestContextGetter> media_getter_; |
| 73 scoped_refptr<net::URLRequestContextGetter> main_getter_; |
| 74 |
| 75 // Shared objects for all contexts. |
| 76 // The URLRequestContextStorage class is not used as owner to these objects |
| 77 // since they are shared between the different URLRequestContexts. |
| 78 // The URLRequestContextStorage class manages dependent resources for a single |
| 79 // instance of URLRequestContext only. |
| 80 bool system_dependencies_initialized_; |
| 81 scoped_ptr<net::HostResolver> host_resolver_; |
| 82 scoped_ptr<net::ServerBoundCertService> server_bound_cert_service_; |
| 83 scoped_ptr<net::CertVerifier> cert_verifier_; |
| 84 scoped_refptr<net::SSLConfigService> ssl_config_service_; |
| 85 scoped_ptr<net::TransportSecurityState> transport_security_state_; |
| 86 scoped_ptr<net::ProxyService> proxy_service_; |
| 87 scoped_ptr<net::HttpAuthHandlerFactory> http_auth_handler_factory_; |
| 88 scoped_ptr<net::HttpServerProperties> http_server_properties_; |
| 89 scoped_ptr<net::HttpUserAgentSettings> http_user_agent_settings_; |
| 90 scoped_ptr<net::HttpTransactionFactory> system_transaction_factory_; |
| 91 |
| 92 bool main_dependencies_initialized_; |
| 93 scoped_ptr<net::HttpTransactionFactory> main_transaction_factory_; |
| 94 scoped_ptr<net::URLRequestJobFactory> main_job_factory_; |
| 95 |
| 96 bool media_dependencies_initialized_; |
| 97 scoped_ptr<net::HttpTransactionFactory> media_transaction_factory_; |
| 98 }; |
| 99 |
| 100 } // namespace shell |
| 101 } // namespace chromecast |
| 102 |
| 103 #endif // CHROMECAST_SHELL_BROWSER_URL_REQUEST_CONTEXT_FACTORY_H_ |
OLD | NEW |