OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "headless/lib/browser/headless_url_request_context_getter.h" | 5 #include "headless/lib/browser/headless_url_request_context_getter.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
10 #include "base/single_thread_task_runner.h" | 10 #include "base/single_thread_task_runner.h" |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 } // namespace | 51 } // namespace |
52 | 52 |
53 HeadlessURLRequestContextGetter::HeadlessURLRequestContextGetter( | 53 HeadlessURLRequestContextGetter::HeadlessURLRequestContextGetter( |
54 bool ignore_certificate_errors, | 54 bool ignore_certificate_errors, |
55 const base::FilePath& base_path, | 55 const base::FilePath& base_path, |
56 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, | 56 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, |
57 scoped_refptr<base::SingleThreadTaskRunner> file_task_runner, | 57 scoped_refptr<base::SingleThreadTaskRunner> file_task_runner, |
58 content::ProtocolHandlerMap* protocol_handlers, | 58 content::ProtocolHandlerMap* protocol_handlers, |
59 content::URLRequestInterceptorScopedVector request_interceptors, | 59 content::URLRequestInterceptorScopedVector request_interceptors, |
60 net::NetLog* net_log, | 60 net::NetLog* net_log, |
61 const HeadlessBrowser::Options& options) | 61 HeadlessBrowser::Options* options) |
62 : ignore_certificate_errors_(ignore_certificate_errors), | 62 : ignore_certificate_errors_(ignore_certificate_errors), |
63 base_path_(base_path), | 63 base_path_(base_path), |
64 io_task_runner_(std::move(io_task_runner)), | 64 io_task_runner_(std::move(io_task_runner)), |
65 file_task_runner_(std::move(file_task_runner)), | 65 file_task_runner_(std::move(file_task_runner)), |
66 net_log_(net_log), | 66 net_log_(net_log), |
67 options_(options), | 67 user_agent_(options->user_agent), |
| 68 host_resolver_rules_(options->host_resolver_rules), |
| 69 proxy_server_(options->proxy_server), |
68 request_interceptors_(std::move(request_interceptors)) { | 70 request_interceptors_(std::move(request_interceptors)) { |
69 // Must first be created on the UI thread. | 71 // Must first be created on the UI thread. |
70 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 72 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
71 | 73 |
72 std::swap(protocol_handlers_, *protocol_handlers); | 74 std::swap(protocol_handlers_, *protocol_handlers); |
73 | 75 |
74 // We must create the proxy config service on the UI loop on Linux because it | 76 // We must create the proxy config service on the UI loop on Linux because it |
75 // must synchronously run on the glib message loop. This will be passed to | 77 // must synchronously run on the glib message loop. This will be passed to |
76 // the URLRequestContextStorage on the IO thread in GetURLRequestContext(). | 78 // the URLRequestContextStorage on the IO thread in GetURLRequestContext(). |
77 if (options_.proxy_server.IsEmpty()) | 79 if (proxy_server_.IsEmpty()) |
78 proxy_config_service_ = GetProxyConfigService(); | 80 proxy_config_service_ = GetProxyConfigService(); |
79 } | 81 } |
80 | 82 |
81 HeadlessURLRequestContextGetter::~HeadlessURLRequestContextGetter() {} | 83 HeadlessURLRequestContextGetter::~HeadlessURLRequestContextGetter() {} |
82 | 84 |
83 std::unique_ptr<net::NetworkDelegate> | 85 std::unique_ptr<net::NetworkDelegate> |
84 HeadlessURLRequestContextGetter::CreateNetworkDelegate() { | 86 HeadlessURLRequestContextGetter::CreateNetworkDelegate() { |
85 return nullptr; | 87 return nullptr; |
86 } | 88 } |
87 | 89 |
88 std::unique_ptr<net::ProxyConfigService> | 90 std::unique_ptr<net::ProxyConfigService> |
89 HeadlessURLRequestContextGetter::GetProxyConfigService() { | 91 HeadlessURLRequestContextGetter::GetProxyConfigService() { |
90 return net::ProxyService::CreateSystemProxyConfigService(io_task_runner_, | 92 return net::ProxyService::CreateSystemProxyConfigService(io_task_runner_, |
91 file_task_runner_); | 93 file_task_runner_); |
92 } | 94 } |
93 | 95 |
94 std::unique_ptr<net::ProxyService> | 96 std::unique_ptr<net::ProxyService> |
95 HeadlessURLRequestContextGetter::GetProxyService() { | 97 HeadlessURLRequestContextGetter::GetProxyService() { |
96 if (!options_.proxy_server.IsEmpty()) | 98 if (!proxy_server_.IsEmpty()) |
97 return net::ProxyService::CreateFixed(options_.proxy_server.ToString()); | 99 return net::ProxyService::CreateFixed(proxy_server_.ToString()); |
98 return net::ProxyService::CreateUsingSystemProxyResolver( | 100 return net::ProxyService::CreateUsingSystemProxyResolver( |
99 std::move(proxy_config_service_), 0, url_request_context_->net_log()); | 101 std::move(proxy_config_service_), 0, url_request_context_->net_log()); |
100 } | 102 } |
101 | 103 |
102 net::URLRequestContext* | 104 net::URLRequestContext* |
103 HeadlessURLRequestContextGetter::GetURLRequestContext() { | 105 HeadlessURLRequestContextGetter::GetURLRequestContext() { |
104 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); | 106 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
105 | 107 |
106 if (!url_request_context_) { | 108 if (!url_request_context_) { |
107 url_request_context_.reset(new net::URLRequestContext()); | 109 url_request_context_.reset(new net::URLRequestContext()); |
108 url_request_context_->set_net_log(net_log_); | 110 url_request_context_->set_net_log(net_log_); |
109 network_delegate_ = CreateNetworkDelegate(); | 111 network_delegate_ = CreateNetworkDelegate(); |
110 url_request_context_->set_network_delegate(network_delegate_.get()); | 112 url_request_context_->set_network_delegate(network_delegate_.get()); |
111 storage_.reset( | 113 storage_.reset( |
112 new net::URLRequestContextStorage(url_request_context_.get())); | 114 new net::URLRequestContextStorage(url_request_context_.get())); |
113 storage_->set_cookie_store( | 115 storage_->set_cookie_store( |
114 content::CreateCookieStore(content::CookieStoreConfig())); | 116 content::CreateCookieStore(content::CookieStoreConfig())); |
115 storage_->set_channel_id_service(base::WrapUnique( | 117 storage_->set_channel_id_service(base::WrapUnique( |
116 new net::ChannelIDService(new net::DefaultChannelIDStore(nullptr), | 118 new net::ChannelIDService(new net::DefaultChannelIDStore(nullptr), |
117 base::WorkerPool::GetTaskRunner(true)))); | 119 base::WorkerPool::GetTaskRunner(true)))); |
118 // TODO(skyostil): Make language settings configurable. | 120 // TODO(skyostil): Make language settings configurable. |
119 storage_->set_http_user_agent_settings(base::WrapUnique( | 121 storage_->set_http_user_agent_settings(base::WrapUnique( |
120 new net::StaticHttpUserAgentSettings("en-us,en", options_.user_agent))); | 122 new net::StaticHttpUserAgentSettings("en-us,en", user_agent_))); |
121 | 123 |
122 std::unique_ptr<net::HostResolver> host_resolver( | 124 std::unique_ptr<net::HostResolver> host_resolver( |
123 net::HostResolver::CreateDefaultResolver( | 125 net::HostResolver::CreateDefaultResolver( |
124 url_request_context_->net_log())); | 126 url_request_context_->net_log())); |
125 | 127 |
126 storage_->set_cert_verifier(net::CertVerifier::CreateDefault()); | 128 storage_->set_cert_verifier(net::CertVerifier::CreateDefault()); |
127 storage_->set_transport_security_state( | 129 storage_->set_transport_security_state( |
128 base::WrapUnique(new net::TransportSecurityState)); | 130 base::WrapUnique(new net::TransportSecurityState)); |
129 storage_->set_proxy_service(GetProxyService()); | 131 storage_->set_proxy_service(GetProxyService()); |
130 storage_->set_ssl_config_service(new net::SSLConfigServiceDefaults); | 132 storage_->set_ssl_config_service(new net::SSLConfigServiceDefaults); |
(...skipping 20 matching lines...) Expand all Loading... |
151 url_request_context_->proxy_service(); | 153 url_request_context_->proxy_service(); |
152 network_session_params.ssl_config_service = | 154 network_session_params.ssl_config_service = |
153 url_request_context_->ssl_config_service(); | 155 url_request_context_->ssl_config_service(); |
154 network_session_params.http_auth_handler_factory = | 156 network_session_params.http_auth_handler_factory = |
155 url_request_context_->http_auth_handler_factory(); | 157 url_request_context_->http_auth_handler_factory(); |
156 network_session_params.http_server_properties = | 158 network_session_params.http_server_properties = |
157 url_request_context_->http_server_properties(); | 159 url_request_context_->http_server_properties(); |
158 network_session_params.net_log = url_request_context_->net_log(); | 160 network_session_params.net_log = url_request_context_->net_log(); |
159 network_session_params.ignore_certificate_errors = | 161 network_session_params.ignore_certificate_errors = |
160 ignore_certificate_errors_; | 162 ignore_certificate_errors_; |
161 if (!options_.host_resolver_rules.empty()) { | 163 if (!host_resolver_rules_.empty()) { |
162 std::unique_ptr<net::MappedHostResolver> mapped_host_resolver( | 164 std::unique_ptr<net::MappedHostResolver> mapped_host_resolver( |
163 new net::MappedHostResolver(std::move(host_resolver))); | 165 new net::MappedHostResolver(std::move(host_resolver))); |
164 mapped_host_resolver->SetRulesFromString(options_.host_resolver_rules); | 166 mapped_host_resolver->SetRulesFromString(host_resolver_rules_); |
165 host_resolver = std::move(mapped_host_resolver); | 167 host_resolver = std::move(mapped_host_resolver); |
166 } | 168 } |
167 | 169 |
168 // Give |storage_| ownership at the end in case it's |mapped_host_resolver|. | 170 // Give |storage_| ownership at the end in case it's |mapped_host_resolver|. |
169 storage_->set_host_resolver(std::move(host_resolver)); | 171 storage_->set_host_resolver(std::move(host_resolver)); |
170 network_session_params.host_resolver = | 172 network_session_params.host_resolver = |
171 url_request_context_->host_resolver(); | 173 url_request_context_->host_resolver(); |
172 | 174 |
173 storage_->set_http_network_session( | 175 storage_->set_http_network_session( |
174 base::WrapUnique(new net::HttpNetworkSession(network_session_params))); | 176 base::WrapUnique(new net::HttpNetworkSession(network_session_params))); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 HeadlessURLRequestContextGetter::GetNetworkTaskRunner() const { | 214 HeadlessURLRequestContextGetter::GetNetworkTaskRunner() const { |
213 return content::BrowserThread::GetMessageLoopProxyForThread( | 215 return content::BrowserThread::GetMessageLoopProxyForThread( |
214 content::BrowserThread::IO); | 216 content::BrowserThread::IO); |
215 } | 217 } |
216 | 218 |
217 net::HostResolver* HeadlessURLRequestContextGetter::host_resolver() const { | 219 net::HostResolver* HeadlessURLRequestContextGetter::host_resolver() const { |
218 return url_request_context_->host_resolver(); | 220 return url_request_context_->host_resolver(); |
219 } | 221 } |
220 | 222 |
221 } // namespace headless | 223 } // namespace headless |
OLD | NEW |