Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(112)

Side by Side Diff: android_webview/glue/java/src/com/android/webview/chromium/WebViewContentsClientAdapter.java

Issue 976403003: Make shouldInterceptRequest thinner in glue (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 package com.android.webview.chromium; 5 package com.android.webview.chromium;
6 6
7 import android.app.Activity; 7 import android.app.Activity;
8 import android.content.ActivityNotFoundException; 8 import android.content.ActivityNotFoundException;
9 import android.content.Context; 9 import android.content.Context;
10 import android.content.Intent; 10 import android.content.Intent;
(...skipping 16 matching lines...) Expand all
27 import android.webkit.DownloadListener; 27 import android.webkit.DownloadListener;
28 import android.webkit.GeolocationPermissions; 28 import android.webkit.GeolocationPermissions;
29 import android.webkit.JsDialogHelper; 29 import android.webkit.JsDialogHelper;
30 import android.webkit.JsPromptResult; 30 import android.webkit.JsPromptResult;
31 import android.webkit.JsResult; 31 import android.webkit.JsResult;
32 import android.webkit.PermissionRequest; 32 import android.webkit.PermissionRequest;
33 import android.webkit.SslErrorHandler; 33 import android.webkit.SslErrorHandler;
34 import android.webkit.ValueCallback; 34 import android.webkit.ValueCallback;
35 import android.webkit.WebChromeClient; 35 import android.webkit.WebChromeClient;
36 import android.webkit.WebChromeClient.CustomViewCallback; 36 import android.webkit.WebChromeClient.CustomViewCallback;
37 import android.webkit.WebResourceRequest;
38 import android.webkit.WebResourceResponse; 37 import android.webkit.WebResourceResponse;
39 import android.webkit.WebView; 38 import android.webkit.WebView;
40 import android.webkit.WebViewClient; 39 import android.webkit.WebViewClient;
41 40
42 import com.android.webview.chromium.WebViewDelegateFactory.WebViewDelegate; 41 import com.android.webview.chromium.WebViewDelegateFactory.WebViewDelegate;
43 42
44 import org.chromium.android_webview.AwContentsClient; 43 import org.chromium.android_webview.AwContentsClient;
45 import org.chromium.android_webview.AwContentsClientBridge; 44 import org.chromium.android_webview.AwContentsClientBridge;
46 import org.chromium.android_webview.AwHttpAuthHandler; 45 import org.chromium.android_webview.AwHttpAuthHandler;
47 import org.chromium.android_webview.AwWebResourceResponse;
48 import org.chromium.android_webview.JsPromptResultReceiver; 46 import org.chromium.android_webview.JsPromptResultReceiver;
49 import org.chromium.android_webview.JsResultReceiver; 47 import org.chromium.android_webview.JsResultReceiver;
50 import org.chromium.android_webview.permission.AwPermissionRequest; 48 import org.chromium.android_webview.permission.AwPermissionRequest;
51 import org.chromium.base.ThreadUtils; 49 import org.chromium.base.ThreadUtils;
52 import org.chromium.base.TraceEvent; 50 import org.chromium.base.TraceEvent;
53 import org.chromium.content.browser.ContentView; 51 import org.chromium.content.browser.ContentView;
54 import org.chromium.content.browser.ContentViewClient; 52 import org.chromium.content.browser.ContentViewClient;
55 import org.chromium.content.browser.ContentViewCore; 53 import org.chromium.content.browser.ContentViewCore;
56 54
57 import java.lang.ref.WeakReference; 55 import java.lang.ref.WeakReference;
58 import java.net.URISyntaxException; 56 import java.net.URISyntaxException;
59 import java.security.Principal; 57 import java.security.Principal;
60 import java.security.PrivateKey; 58 import java.security.PrivateKey;
61 import java.security.cert.X509Certificate; 59 import java.security.cert.X509Certificate;
62 import java.util.ArrayList; 60 import java.util.ArrayList;
63 import java.util.HashMap;
64 import java.util.Map;
65 import java.util.WeakHashMap; 61 import java.util.WeakHashMap;
66 62
67 /** 63 /**
68 * An adapter class that forwards the callbacks from {@link ContentViewClient} 64 * An adapter class that forwards the callbacks from {@link ContentViewClient}
69 * to the appropriate {@link WebViewClient} or {@link WebChromeClient}. 65 * to the appropriate {@link WebViewClient} or {@link WebChromeClient}.
70 * 66 *
71 * An instance of this class is associated with one {@link WebViewChromium} 67 * An instance of this class is associated with one {@link WebViewChromium}
72 * instance. A WebViewChromium is a WebView implementation provider (that is 68 * instance. A WebViewChromium is a WebView implementation provider (that is
73 * android.webkit.WebView delegates all functionality to it) and has exactly 69 * android.webkit.WebView delegates all functionality to it) and has exactly
74 * one corresponding {@link ContentView} instance. 70 * one corresponding {@link ContentView} instance.
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 TraceEvent.begin("WebViewContentsClientAdapter.onProgressChanged"); 273 TraceEvent.begin("WebViewContentsClientAdapter.onProgressChanged");
278 if (mWebChromeClient != null) { 274 if (mWebChromeClient != null) {
279 if (TRACE) Log.d(TAG, "onProgressChanged=" + progress); 275 if (TRACE) Log.d(TAG, "onProgressChanged=" + progress);
280 mWebChromeClient.onProgressChanged(mWebView, progress); 276 mWebChromeClient.onProgressChanged(mWebView, progress);
281 } 277 }
282 } finally { 278 } finally {
283 TraceEvent.end("WebViewContentsClientAdapter.onProgressChanged"); 279 TraceEvent.end("WebViewContentsClientAdapter.onProgressChanged");
284 } 280 }
285 } 281 }
286 282
287 private static class WebResourceRequestImpl implements WebResourceRequest {
288 private final AwWebResourceRequest mRequest;
289
290 public WebResourceRequestImpl(AwWebResourceRequest request) {
291 mRequest = request;
292 }
293
294 @Override
295 public Uri getUrl() {
296 return Uri.parse(mRequest.url);
297 }
298
299 @Override
300 public boolean isForMainFrame() {
301 return mRequest.isMainFrame;
302 }
303
304 @Override
305 public boolean hasGesture() {
306 return mRequest.hasUserGesture;
307 }
308
309 @Override
310 public String getMethod() {
311 return mRequest.method;
312 }
313
314 @Override
315 public Map<String, String> getRequestHeaders() {
316 return mRequest.requestHeaders;
317 }
318 }
319
320 /** 283 /**
321 * @see AwContentsClient#shouldInterceptRequest(java.lang.String) 284 * @see AwContentsClient#shouldInterceptRequest(java.lang.String)
322 */ 285 */
323 @Override 286 @Override
324 public AwWebResourceResponse shouldInterceptRequest(AwWebResourceRequest req uest) { 287 public WebResourceResponse shouldInterceptRequest(WebResourceRequestImpl req uest) {
mnaganov (inactive) 2015/03/06 12:47:40 Hmm... I'm actually not sure that we should pass a
325 try { 288 try {
326 TraceEvent.begin("WebViewContentsClientAdapter.shouldInterceptReques t"); 289 TraceEvent.begin("WebViewContentsClientAdapter.shouldInterceptReques t");
327 if (TRACE) Log.d(TAG, "shouldInterceptRequest=" + request.url); 290 if (TRACE) Log.d(TAG, "shouldInterceptRequest=" + request.getUrl());
328 WebResourceResponse response = mWebViewClient.shouldInterceptRequest (mWebView, 291 return mWebViewClient.shouldInterceptRequest(mWebView, request);
329 new WebResourceRequestImpl(request));
330 if (response == null) return null;
331
332 // AwWebResourceResponse should support null headers. b/16332774.
333 Map<String, String> responseHeaders = response.getResponseHeaders();
334 if (responseHeaders == null) responseHeaders = new HashMap<String, S tring>();
335
336 return new AwWebResourceResponse(
337 response.getMimeType(),
338 response.getEncoding(),
339 response.getData(),
340 response.getStatusCode(),
341 response.getReasonPhrase(),
342 responseHeaders);
343 } finally { 292 } finally {
344 TraceEvent.end("WebViewContentsClientAdapter.shouldInterceptRequest" ); 293 TraceEvent.end("WebViewContentsClientAdapter.shouldInterceptRequest" );
345 } 294 }
346 } 295 }
347 296
348 /** 297 /**
349 * @see AwContentsClient#shouldOverrideUrlLoading(java.lang.String) 298 * @see AwContentsClient#shouldOverrideUrlLoading(java.lang.String)
350 */ 299 */
351 @Override 300 @Override
352 public boolean shouldOverrideUrlLoading(String url) { 301 public boolean shouldOverrideUrlLoading(String url) {
(...skipping 893 matching lines...) Expand 10 before | Expand all | Expand 10 after
1246 else 1195 else
1247 mAwPermissionRequest.deny(); 1196 mAwPermissionRequest.deny();
1248 } 1197 }
1249 1198
1250 @Override 1199 @Override
1251 public void deny() { 1200 public void deny() {
1252 mAwPermissionRequest.deny(); 1201 mAwPermissionRequest.deny();
1253 } 1202 }
1254 } 1203 }
1255 } 1204 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698