| Index: android_webview/browser/net/aw_url_request_context_getter.cc
|
| diff --git a/android_webview/browser/net/aw_url_request_context_getter.cc b/android_webview/browser/net/aw_url_request_context_getter.cc
|
| index 7882eea35d878c84abc6fc8e47bb6a77069b4076..50ea9f9e8a37789ccd2182903f11e35955a7b7c6 100644
|
| --- a/android_webview/browser/net/aw_url_request_context_getter.cc
|
| +++ b/android_webview/browser/net/aw_url_request_context_getter.cc
|
| @@ -101,7 +101,8 @@ void PopulateNetworkSessionParams(
|
| }
|
|
|
| scoped_ptr<net::URLRequestJobFactory> CreateJobFactory(
|
| - content::ProtocolHandlerMap* protocol_handlers) {
|
| + content::ProtocolHandlerMap* protocol_handlers,
|
| + content::URLRequestInterceptorScopedVector request_interceptors) {
|
| scoped_ptr<AwURLRequestJobFactory> aw_job_factory(new AwURLRequestJobFactory);
|
| bool set_protocol = aw_job_factory->SetProtocolHandler(
|
| url::kFileScheme,
|
| @@ -131,12 +132,6 @@ scoped_ptr<net::URLRequestJobFactory> CreateJobFactory(
|
| DCHECK(set_protocol);
|
| protocol_handlers->clear();
|
|
|
| - // Create a chain of URLRequestJobFactories. The handlers will be invoked
|
| - // in the order in which they appear in the |request_interceptors| vector.
|
| - typedef std::vector<net::URLRequestInterceptor*>
|
| - URLRequestInterceptorVector;
|
| - URLRequestInterceptorVector request_interceptors;
|
| -
|
| // Note that even though the content:// scheme handler is created here,
|
| // it cannot be used by child processes until access to it is granted via
|
| // ChildProcessSecurityPolicy::GrantScheme(). This is done in
|
| @@ -157,13 +152,14 @@ scoped_ptr<net::URLRequestJobFactory> CreateJobFactory(
|
| // The chain of responsibility will execute the handlers in reverse to the
|
| // order in which the elements of the chain are created.
|
| scoped_ptr<net::URLRequestJobFactory> job_factory(aw_job_factory.Pass());
|
| - for (URLRequestInterceptorVector::reverse_iterator
|
| - i = request_interceptors.rbegin();
|
| + for (content::URLRequestInterceptorScopedVector::reverse_iterator i =
|
| + request_interceptors.rbegin();
|
| i != request_interceptors.rend();
|
| ++i) {
|
| job_factory.reset(new net::URLRequestInterceptingJobFactory(
|
| job_factory.Pass(), make_scoped_ptr(*i)));
|
| }
|
| + request_interceptors.weak_clear();
|
|
|
| return job_factory.Pass();
|
| }
|
| @@ -246,7 +242,8 @@ void AwURLRequestContextGetter::InitializeURLRequestContext() {
|
| url_request_context_->set_http_transaction_factory(main_cache);
|
| url_request_context_->set_cookie_store(cookie_store_);
|
|
|
| - job_factory_ = CreateJobFactory(&protocol_handlers_);
|
| + job_factory_ = CreateJobFactory(&protocol_handlers_,
|
| + request_interceptors_.Pass());
|
| url_request_context_->set_job_factory(job_factory_.get());
|
| }
|
|
|
| @@ -263,9 +260,11 @@ AwURLRequestContextGetter::GetNetworkTaskRunner() const {
|
| return BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO);
|
| }
|
|
|
| -void AwURLRequestContextGetter::SetProtocolHandlers(
|
| - content::ProtocolHandlerMap* protocol_handlers) {
|
| +void AwURLRequestContextGetter::SetHandlersAndInterceptors(
|
| + content::ProtocolHandlerMap* protocol_handlers,
|
| + content::URLRequestInterceptorScopedVector request_interceptors) {
|
| std::swap(protocol_handlers_, *protocol_handlers);
|
| + request_interceptors_.swap(request_interceptors);
|
| }
|
|
|
| DataReductionProxyConfigService*
|
|
|