url_request_context_getter.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. // Copyright (c) 2012 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-CHROMIUM file.
  4. #ifndef BRIGHTRAY_BROWSER_URL_REQUEST_CONTEXT_GETTER_H_
  5. #define BRIGHTRAY_BROWSER_URL_REQUEST_CONTEXT_GETTER_H_
  6. #include <string>
  7. #include <vector>
  8. #include "base/files/file_path.h"
  9. #include "content/public/browser/browser_context.h"
  10. #include "content/public/browser/content_browser_client.h"
  11. #include "net/cookies/cookie_store.h"
  12. #include "net/http/http_cache.h"
  13. #include "net/http/transport_security_state.h"
  14. #include "net/http/url_security_manager.h"
  15. #include "net/url_request/url_request_context.h"
  16. #include "net/url_request/url_request_context_getter.h"
  17. #if DCHECK_IS_ON()
  18. #include "base/debug/leak_tracker.h"
  19. #endif
  20. namespace base {
  21. class MessageLoop;
  22. }
  23. namespace net {
  24. class HostMappingRules;
  25. class HostResolver;
  26. class HttpAuthPreferences;
  27. class NetworkDelegate;
  28. class ProxyConfigService;
  29. class URLRequestContextStorage;
  30. class URLRequestJobFactory;
  31. } // namespace net
  32. namespace brightray {
  33. class RequireCTDelegate;
  34. class NetLog;
  35. class URLRequestContextGetter : public net::URLRequestContextGetter {
  36. public:
  37. class Delegate {
  38. public:
  39. Delegate() {}
  40. virtual ~Delegate() {}
  41. virtual std::unique_ptr<net::NetworkDelegate> CreateNetworkDelegate();
  42. virtual std::string GetUserAgent();
  43. virtual std::unique_ptr<net::URLRequestJobFactory>
  44. CreateURLRequestJobFactory(content::ProtocolHandlerMap* protocol_handlers);
  45. virtual net::HttpCache::BackendFactory* CreateHttpCacheBackendFactory(
  46. const base::FilePath& base_path);
  47. virtual std::unique_ptr<net::CertVerifier> CreateCertVerifier(
  48. RequireCTDelegate* ct_delegate);
  49. virtual net::SSLConfigService* CreateSSLConfigService();
  50. virtual std::vector<std::string> GetCookieableSchemes();
  51. virtual void NotifyCookieChange(const net::CanonicalCookie& cookie,
  52. bool removed,
  53. net::CookieStore::ChangeCause cause) {}
  54. };
  55. URLRequestContextGetter(
  56. Delegate* delegate,
  57. NetLog* net_log,
  58. const base::FilePath& base_path,
  59. bool in_memory,
  60. scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
  61. content::ProtocolHandlerMap* protocol_handlers,
  62. content::URLRequestInterceptorScopedVector protocol_interceptors);
  63. // net::CookieStore::CookieChangedCallback implementation.
  64. void OnCookieChanged(const net::CanonicalCookie& cookie,
  65. net::CookieStore::ChangeCause cause);
  66. // net::URLRequestContextGetter:
  67. net::URLRequestContext* GetURLRequestContext() override;
  68. scoped_refptr<base::SingleThreadTaskRunner> GetNetworkTaskRunner()
  69. const override;
  70. net::HostResolver* host_resolver();
  71. net::URLRequestJobFactory* job_factory() const { return job_factory_; }
  72. void NotifyContextShutdownOnIO();
  73. private:
  74. ~URLRequestContextGetter() override;
  75. Delegate* delegate_;
  76. NetLog* net_log_;
  77. base::FilePath base_path_;
  78. bool in_memory_;
  79. scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_;
  80. std::string user_agent_;
  81. #if DCHECK_IS_ON()
  82. base::debug::LeakTracker<URLRequestContextGetter> leak_tracker_;
  83. #endif
  84. std::unique_ptr<RequireCTDelegate> ct_delegate_;
  85. std::unique_ptr<net::ProxyConfigService> proxy_config_service_;
  86. std::unique_ptr<net::URLRequestContextStorage> storage_;
  87. std::unique_ptr<net::URLRequestContext> url_request_context_;
  88. std::unique_ptr<net::HostMappingRules> host_mapping_rules_;
  89. std::unique_ptr<net::HttpAuthPreferences> http_auth_preferences_;
  90. std::unique_ptr<net::HttpNetworkSession> http_network_session_;
  91. std::unique_ptr<net::CookieStore::CookieChangedSubscription>
  92. cookie_change_sub_;
  93. content::ProtocolHandlerMap protocol_handlers_;
  94. content::URLRequestInterceptorScopedVector protocol_interceptors_;
  95. net::URLRequestJobFactory* job_factory_; // weak ref
  96. bool context_shutting_down_;
  97. DISALLOW_COPY_AND_ASSIGN(URLRequestContextGetter);
  98. };
  99. } // namespace brightray
  100. #endif // BRIGHTRAY_BROWSER_URL_REQUEST_CONTEXT_GETTER_H_