OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 "android_webview/browser/net/aw_url_request_context_getter.h" | 5 #include "android_webview/browser/net/aw_url_request_context_getter.h" |
6 | 6 |
| 7 #include <utility> |
7 #include <vector> | 8 #include <vector> |
8 | 9 |
9 #include "android_webview/browser/aw_browser_context.h" | 10 #include "android_webview/browser/aw_browser_context.h" |
10 #include "android_webview/browser/aw_content_browser_client.h" | 11 #include "android_webview/browser/aw_content_browser_client.h" |
11 #include "android_webview/browser/net/aw_http_user_agent_settings.h" | 12 #include "android_webview/browser/net/aw_http_user_agent_settings.h" |
12 #include "android_webview/browser/net/aw_network_delegate.h" | 13 #include "android_webview/browser/net/aw_network_delegate.h" |
13 #include "android_webview/browser/net/aw_request_interceptor.h" | 14 #include "android_webview/browser/net/aw_request_interceptor.h" |
14 #include "android_webview/browser/net/aw_url_request_job_factory.h" | 15 #include "android_webview/browser/net/aw_url_request_job_factory.h" |
15 #include "android_webview/browser/net/init_native_callback.h" | 16 #include "android_webview/browser/net/init_native_callback.h" |
16 #include "android_webview/common/aw_content_client.h" | 17 #include "android_webview/common/aw_content_client.h" |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 // factories. This for WebViewClassic compatibility where it was not | 137 // factories. This for WebViewClassic compatibility where it was not |
137 // possible to intercept resource loads to resolvable content:// and | 138 // possible to intercept resource loads to resolvable content:// and |
138 // file:// URIs. | 139 // file:// URIs. |
139 // This logical dependency is also the reason why the Content | 140 // This logical dependency is also the reason why the Content |
140 // URLRequestInterceptor has to be added as an interceptor rather than as a | 141 // URLRequestInterceptor has to be added as an interceptor rather than as a |
141 // ProtocolHandler. | 142 // ProtocolHandler. |
142 request_interceptors.push_back(new AwRequestInterceptor()); | 143 request_interceptors.push_back(new AwRequestInterceptor()); |
143 | 144 |
144 // The chain of responsibility will execute the handlers in reverse to the | 145 // The chain of responsibility will execute the handlers in reverse to the |
145 // order in which the elements of the chain are created. | 146 // order in which the elements of the chain are created. |
146 scoped_ptr<net::URLRequestJobFactory> job_factory(aw_job_factory.Pass()); | 147 scoped_ptr<net::URLRequestJobFactory> job_factory(std::move(aw_job_factory)); |
147 for (content::URLRequestInterceptorScopedVector::reverse_iterator i = | 148 for (content::URLRequestInterceptorScopedVector::reverse_iterator i = |
148 request_interceptors.rbegin(); | 149 request_interceptors.rbegin(); |
149 i != request_interceptors.rend(); | 150 i != request_interceptors.rend(); |
150 ++i) { | 151 ++i) { |
151 job_factory.reset(new net::URLRequestInterceptingJobFactory( | 152 job_factory.reset(new net::URLRequestInterceptingJobFactory( |
152 job_factory.Pass(), make_scoped_ptr(*i))); | 153 std::move(job_factory), make_scoped_ptr(*i))); |
153 } | 154 } |
154 request_interceptors.weak_clear(); | 155 request_interceptors.weak_clear(); |
155 | 156 |
156 return job_factory.Pass(); | 157 return job_factory; |
157 } | 158 } |
158 | 159 |
159 } // namespace | 160 } // namespace |
160 | 161 |
161 AwURLRequestContextGetter::AwURLRequestContextGetter( | 162 AwURLRequestContextGetter::AwURLRequestContextGetter( |
162 const base::FilePath& cache_path, | 163 const base::FilePath& cache_path, |
163 net::CookieStore* cookie_store, | 164 net::CookieStore* cookie_store, |
164 scoped_ptr<net::ProxyConfigService> config_service, | 165 scoped_ptr<net::ProxyConfigService> config_service, |
165 PrefService* user_pref_service) | 166 PrefService* user_pref_service) |
166 : cache_path_(cache_path), | 167 : cache_path_(cache_path), |
167 net_log_(new net::NetLog()), | 168 net_log_(new net::NetLog()), |
168 proxy_config_service_(config_service.Pass()), | 169 proxy_config_service_(std::move(config_service)), |
169 cookie_store_(cookie_store), | 170 cookie_store_(cookie_store), |
170 http_user_agent_settings_(new AwHttpUserAgentSettings()) { | 171 http_user_agent_settings_(new AwHttpUserAgentSettings()) { |
171 // CreateSystemProxyConfigService for Android must be called on main thread. | 172 // CreateSystemProxyConfigService for Android must be called on main thread. |
172 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 173 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
173 | 174 |
174 scoped_refptr<base::SingleThreadTaskRunner> io_thread_proxy = | 175 scoped_refptr<base::SingleThreadTaskRunner> io_thread_proxy = |
175 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO); | 176 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO); |
176 | 177 |
177 auth_server_whitelist_.Init( | 178 auth_server_whitelist_.Init( |
178 prefs::kAuthServerWhitelist, user_pref_service, | 179 prefs::kAuthServerWhitelist, user_pref_service, |
(...skipping 16 matching lines...) Expand all Loading... |
195 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 196 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
196 DCHECK(!url_request_context_); | 197 DCHECK(!url_request_context_); |
197 | 198 |
198 net::URLRequestContextBuilder builder; | 199 net::URLRequestContextBuilder builder; |
199 scoped_ptr<AwNetworkDelegate> aw_network_delegate(new AwNetworkDelegate()); | 200 scoped_ptr<AwNetworkDelegate> aw_network_delegate(new AwNetworkDelegate()); |
200 | 201 |
201 AwBrowserContext* browser_context = AwBrowserContext::GetDefault(); | 202 AwBrowserContext* browser_context = AwBrowserContext::GetDefault(); |
202 DCHECK(browser_context); | 203 DCHECK(browser_context); |
203 | 204 |
204 builder.set_network_delegate( | 205 builder.set_network_delegate( |
205 browser_context->GetDataReductionProxyIOData() | 206 browser_context->GetDataReductionProxyIOData()->CreateNetworkDelegate( |
206 ->CreateNetworkDelegate( | 207 std::move(aw_network_delegate), |
207 aw_network_delegate.Pass(), | 208 false /* No UMA is produced to track bypasses. */)); |
208 false /* No UMA is produced to track bypasses. */) | |
209 .Pass()); | |
210 #if !defined(DISABLE_FTP_SUPPORT) | 209 #if !defined(DISABLE_FTP_SUPPORT) |
211 builder.set_ftp_enabled(false); // Android WebView does not support ftp yet. | 210 builder.set_ftp_enabled(false); // Android WebView does not support ftp yet. |
212 #endif | 211 #endif |
213 DCHECK(proxy_config_service_.get()); | 212 DCHECK(proxy_config_service_.get()); |
214 // Android provides a local HTTP proxy that handles all the proxying. | 213 // Android provides a local HTTP proxy that handles all the proxying. |
215 // Create the proxy without a resolver since we rely on this local HTTP proxy. | 214 // Create the proxy without a resolver since we rely on this local HTTP proxy. |
216 // TODO(sgurun) is this behavior guaranteed through SDK? | 215 // TODO(sgurun) is this behavior guaranteed through SDK? |
217 builder.set_proxy_service(net::ProxyService::CreateWithoutProxyResolver( | 216 builder.set_proxy_service(net::ProxyService::CreateWithoutProxyResolver( |
218 proxy_config_service_.Pass(), net_log_.get())); | 217 std::move(proxy_config_service_), net_log_.get())); |
219 builder.set_net_log(net_log_.get()); | 218 builder.set_net_log(net_log_.get()); |
220 builder.SetCookieAndChannelIdStores(cookie_store_, NULL); | 219 builder.SetCookieAndChannelIdStores(cookie_store_, NULL); |
221 | 220 |
222 net::URLRequestContextBuilder::HttpCacheParams cache_params; | 221 net::URLRequestContextBuilder::HttpCacheParams cache_params; |
223 cache_params.type = | 222 cache_params.type = |
224 net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE; | 223 net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE; |
225 cache_params.max_size = 20 * 1024 * 1024; // 20M | 224 cache_params.max_size = 20 * 1024 * 1024; // 20M |
226 cache_params.path = cache_path_; | 225 cache_params.path = cache_path_; |
227 builder.EnableHttpCache(cache_params); | 226 builder.EnableHttpCache(cache_params); |
228 builder.SetFileTaskRunner( | 227 builder.SetFileTaskRunner( |
229 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::CACHE)); | 228 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::CACHE)); |
230 | 229 |
231 net::URLRequestContextBuilder::HttpNetworkSessionParams | 230 net::URLRequestContextBuilder::HttpNetworkSessionParams |
232 network_session_params; | 231 network_session_params; |
233 ApplyCmdlineOverridesToNetworkSessionParams(&network_session_params); | 232 ApplyCmdlineOverridesToNetworkSessionParams(&network_session_params); |
234 builder.set_http_network_session_params(network_session_params); | 233 builder.set_http_network_session_params(network_session_params); |
235 builder.SetSpdyAndQuicEnabled(true, false); | 234 builder.SetSpdyAndQuicEnabled(true, false); |
236 | 235 |
237 scoped_ptr<net::MappedHostResolver> host_resolver(new net::MappedHostResolver( | 236 scoped_ptr<net::MappedHostResolver> host_resolver(new net::MappedHostResolver( |
238 net::HostResolver::CreateDefaultResolver(nullptr))); | 237 net::HostResolver::CreateDefaultResolver(nullptr))); |
239 ApplyCmdlineOverridesToHostResolver(host_resolver.get()); | 238 ApplyCmdlineOverridesToHostResolver(host_resolver.get()); |
240 builder.SetHttpAuthHandlerFactory( | 239 builder.SetHttpAuthHandlerFactory( |
241 CreateAuthHandlerFactory(host_resolver.get()).Pass()); | 240 CreateAuthHandlerFactory(host_resolver.get())); |
242 builder.set_host_resolver(host_resolver.Pass()); | 241 builder.set_host_resolver(std::move(host_resolver)); |
243 | 242 |
244 url_request_context_ = builder.Build().Pass(); | 243 url_request_context_ = builder.Build(); |
245 | 244 |
246 job_factory_ = CreateJobFactory(&protocol_handlers_, | 245 job_factory_ = |
247 request_interceptors_.Pass()); | 246 CreateJobFactory(&protocol_handlers_, std::move(request_interceptors_)); |
248 job_factory_.reset(new net::URLRequestInterceptingJobFactory( | 247 job_factory_.reset(new net::URLRequestInterceptingJobFactory( |
249 job_factory_.Pass(), | 248 std::move(job_factory_), |
250 browser_context->GetDataReductionProxyIOData()->CreateInterceptor())); | 249 browser_context->GetDataReductionProxyIOData()->CreateInterceptor())); |
251 url_request_context_->set_job_factory(job_factory_.get()); | 250 url_request_context_->set_job_factory(job_factory_.get()); |
252 url_request_context_->set_http_user_agent_settings( | 251 url_request_context_->set_http_user_agent_settings( |
253 http_user_agent_settings_.get()); | 252 http_user_agent_settings_.get()); |
254 } | 253 } |
255 | 254 |
256 net::URLRequestContext* AwURLRequestContextGetter::GetURLRequestContext() { | 255 net::URLRequestContext* AwURLRequestContextGetter::GetURLRequestContext() { |
257 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 256 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
258 if (!url_request_context_) | 257 if (!url_request_context_) |
259 InitializeURLRequestContext(); | 258 InitializeURLRequestContext(); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
304 http_auth_preferences_->set_server_whitelist( | 303 http_auth_preferences_->set_server_whitelist( |
305 auth_server_whitelist_.GetValue()); | 304 auth_server_whitelist_.GetValue()); |
306 } | 305 } |
307 | 306 |
308 void AwURLRequestContextGetter::UpdateAndroidAuthNegotiateAccountType() { | 307 void AwURLRequestContextGetter::UpdateAndroidAuthNegotiateAccountType() { |
309 http_auth_preferences_->set_auth_android_negotiate_account_type( | 308 http_auth_preferences_->set_auth_android_negotiate_account_type( |
310 auth_android_negotiate_account_type_.GetValue()); | 309 auth_android_negotiate_account_type_.GetValue()); |
311 } | 310 } |
312 | 311 |
313 } // namespace android_webview | 312 } // namespace android_webview |
OLD | NEW |