// Copyright (c) 2012 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-CHROMIUM file. #ifndef BRIGHTRAY_BROWSER_URL_REQUEST_CONTEXT_GETTER_H_ #define BRIGHTRAY_BROWSER_URL_REQUEST_CONTEXT_GETTER_H_ #include "base/files/file_path.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/content_browser_client.h" #include "net/http/http_cache.h" #include "net/http/url_security_manager.h" #include "net/url_request/url_request_context_getter.h" namespace base { class MessageLoop; } namespace net { class HostMappingRules; class HostResolver; class HttpAuthPreferences; class NetworkDelegate; class ProxyConfigService; class URLRequestContextStorage; class URLRequestJobFactory; } namespace brightray { class DevToolsNetworkControllerHandle; class NetLog; class URLRequestContextGetter : public net::URLRequestContextGetter { public: class Delegate { public: Delegate(); virtual ~Delegate() {} virtual net::NetworkDelegate* CreateNetworkDelegate() { return NULL; } virtual std::string GetUserAgent(); virtual std::unique_ptr CreateURLRequestJobFactory( content::ProtocolHandlerMap* protocol_handlers, content::URLRequestInterceptorScopedVector* protocol_interceptors); virtual net::HttpCache::BackendFactory* CreateHttpCacheBackendFactory( const base::FilePath& base_path); virtual std::unique_ptr CreateCertVerifier(); virtual net::SSLConfigService* CreateSSLConfigService(); virtual bool AllowNTLMCredentialsForDomain(const GURL& auth_origin); virtual bool CanDelegateURLSecurity(const GURL& auth_origin); private: std::unique_ptr orig_url_sec_mgr_; }; class DelegateURLSecurityManager : public net::URLSecurityManager { public: DelegateURLSecurityManager(URLRequestContextGetter::Delegate* delegate); bool CanUseDefaultCredentials(const GURL& auth_origin) const override; bool CanDelegate(const GURL& auth_origin) const override; void SetDefaultWhitelist( std::unique_ptr whitelist_default) override; void SetDelegateWhitelist( std::unique_ptr whitelist_delegate) override; private: URLRequestContextGetter::Delegate* delegate_; DISALLOW_COPY_AND_ASSIGN(DelegateURLSecurityManager); }; URLRequestContextGetter( Delegate* delegate, DevToolsNetworkControllerHandle* handle, NetLog* net_log, const base::FilePath& base_path, bool in_memory, base::MessageLoop* io_loop, base::MessageLoop* file_loop, content::ProtocolHandlerMap* protocol_handlers, content::URLRequestInterceptorScopedVector protocol_interceptors); virtual ~URLRequestContextGetter(); // net::URLRequestContextGetter: net::URLRequestContext* GetURLRequestContext() override; scoped_refptr GetNetworkTaskRunner() const override; net::HostResolver* host_resolver(); private: Delegate* delegate_; DevToolsNetworkControllerHandle* network_controller_handle_; NetLog* net_log_; base::FilePath base_path_; bool in_memory_; base::MessageLoop* io_loop_; base::MessageLoop* file_loop_; std::unique_ptr proxy_config_service_; std::unique_ptr network_delegate_; std::unique_ptr storage_; std::unique_ptr url_request_context_; std::unique_ptr host_mapping_rules_; std::unique_ptr http_auth_preferences_; std::unique_ptr http_network_session_; content::ProtocolHandlerMap protocol_handlers_; content::URLRequestInterceptorScopedVector protocol_interceptors_; DISALLOW_COPY_AND_ASSIGN(URLRequestContextGetter); }; } // namespace brightray #endif