Chromium Code Reviews| Index: android_webview/browser/aw_request_interceptor.cc |
| diff --git a/android_webview/browser/aw_request_interceptor.cc b/android_webview/browser/aw_request_interceptor.cc |
| index ee39a6594e896936918ecb56ba87a3ae1ac93d57..bb12442dd838bb4b2b2932e0fead51b59de7f66b 100644 |
| --- a/android_webview/browser/aw_request_interceptor.cc |
| +++ b/android_webview/browser/aw_request_interceptor.cc |
| @@ -4,28 +4,16 @@ |
| #include "android_webview/browser/aw_request_interceptor.h" |
| -#include "android_webview/browser/aw_contents_io_thread_client.h" |
| -#include "android_webview/browser/aw_web_resource_response.h" |
| -#include "base/android/jni_string.h" |
| -#include "base/memory/scoped_ptr.h" |
| +#include "android_webview/browser/aw_request_handler.h" |
| +#include "base/supports_user_data.h" |
| #include "content/public/browser/browser_thread.h" |
| -#include "content/public/browser/render_view_host.h" |
| -#include "content/public/browser/resource_request_info.h" |
| #include "net/url_request/url_request.h" |
| -#include "net/url_request/url_request_context.h" |
| -#include "net/url_request/url_request_context_getter.h" |
| -#include "net/url_request/url_request_job.h" |
| - |
| -using content::BrowserThread; |
| -using content::RenderViewHost; |
| -using content::ResourceRequestInfo; |
| namespace android_webview { |
| namespace { |
| -const void* const kRequestAlreadyQueriedDataKey = |
| - &kRequestAlreadyQueriedDataKey; |
| +const void* const kRequestHandlerDataKey = &kRequestHandlerDataKey; |
| } // namespace |
| @@ -35,56 +23,19 @@ AwRequestInterceptor::AwRequestInterceptor() { |
| AwRequestInterceptor::~AwRequestInterceptor() { |
| } |
| -scoped_ptr<AwWebResourceResponse> |
| -AwRequestInterceptor::QueryForAwWebResourceResponse( |
| - net::URLRequest* request) const { |
| - DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| - int render_process_id, render_frame_id; |
| - if (!ResourceRequestInfo::GetRenderFrameForRequest( |
| - request, &render_process_id, &render_frame_id)) |
| - return scoped_ptr<AwWebResourceResponse>(); |
| - |
| - scoped_ptr<AwContentsIoThreadClient> io_thread_client = |
| - AwContentsIoThreadClient::FromID(render_process_id, render_frame_id); |
| - |
| - if (!io_thread_client.get()) |
| - return scoped_ptr<AwWebResourceResponse>(); |
| - |
| - GURL referrer(request->referrer()); |
| - if (referrer.is_valid() && |
| - (!request->is_pending() || request->is_redirecting())) { |
| - request->SetExtraRequestHeaderByName(net::HttpRequestHeaders::kReferer, |
| - referrer.spec(), true); |
| - } |
| - return io_thread_client->ShouldInterceptRequest(request).Pass(); |
| -} |
| - |
| net::URLRequestJob* AwRequestInterceptor::MaybeInterceptRequest( |
| net::URLRequest* request, |
| net::NetworkDelegate* network_delegate) const { |
| - DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| - |
| - // See if we've already found out the aw_web_resource_response for this |
| - // request. |
| - // This is done not only for efficiency reasons, but also for correctness |
| - // as it is possible for the Interceptor chain to be invoked more than once |
| - // in which case we don't want to query the embedder multiple times. |
| - // Note: The Interceptor chain is not invoked more than once if we create a |
| - // URLRequestJob in this method, so this is only caching negative hits. |
| - if (request->GetUserData(kRequestAlreadyQueriedDataKey)) |
| - return NULL; |
| - request->SetUserData(kRequestAlreadyQueriedDataKey, |
| - new base::SupportsUserData::Data()); |
| - |
| - scoped_ptr<AwWebResourceResponse> aw_web_resource_response = |
| - QueryForAwWebResourceResponse(request); |
| - |
| - if (!aw_web_resource_response) |
| - return NULL; |
| - |
| - // The newly created job will own the AwWebResourceResponse. |
| - return AwWebResourceResponse::CreateJobFor( |
| - aw_web_resource_response.Pass(), request, network_delegate); |
| + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
| + |
| + AwRequestHandler* handler = base::UserDataAdapter<AwRequestHandler>::Get( |
|
boliu
2015/09/28 23:26:28
nit: typedef
mnaganov (inactive)
2015/09/29 00:14:06
Done.
|
| + request, kRequestHandlerDataKey); |
| + if (!handler) { |
| + handler = new AwRequestHandler(); |
| + request->SetUserData(kRequestHandlerDataKey, |
| + new base::UserDataAdapter<AwRequestHandler>(handler)); |
| + } |
| + return handler->MaybeInterceptRequest(request, network_delegate); |
| } |
| } // namespace android_webview |