AwContentsClient.java revision a3f7b4e666c476898878fa745f637129375cd889
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)package org.chromium.android_webview; 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)import android.content.Context; 8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)import android.content.pm.ActivityInfo; 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.graphics.Bitmap; 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.graphics.Picture; 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.graphics.Rect; 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.graphics.RectF; 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.net.http.SslError; 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.os.Handler; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.os.Looper; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.os.Message; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.util.Log; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.view.KeyEvent; 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.view.View; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.webkit.ConsoleMessage; 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.webkit.GeolocationPermissions; 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.webkit.SslErrorHandler; 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.webkit.ValueCallback; 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.webkit.WebChromeClient; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)import org.chromium.content.browser.ContentVideoView; 27868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)import org.chromium.content.browser.ContentVideoViewClient; 287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochimport org.chromium.content.browser.ContentVideoViewControls; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.content.browser.ContentViewClient; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.content.browser.ContentViewCore; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.content.browser.WebContentsObserverAndroid; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.net.NetError; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Base-class that an AwContents embedder derives from to receive callbacks. 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This extends ContentViewClient, as in many cases we want to pass-thru ContentViewCore 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * callbacks right to our embedder, and this setup facilities that. 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * For any other callbacks we need to make transformations of (e.g. adapt parameters 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * or perform filtering) we can provide final overrides for methods here, and then introduce 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * new abstract methods that the our own client must implement. 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * i.e.: all methods in this class should either be final, or abstract. 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)public abstract class AwContentsClient { 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private static final String TAG = "AwContentsClient"; 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private final AwContentsClientCallbackHelper mCallbackHelper = 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) new AwContentsClientCallbackHelper(this); 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private AwWebContentsObserver mWebContentsObserver; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private AwContentViewClient mContentViewClient = new AwContentViewClient(); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private double mDIPScale; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch // Last background color reported from the renderer. Holds the sentinal value INVALID_COLOR 56a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch // if not valid. 57a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch private int mCachedRendererBackgroundColor = INVALID_COLOR; 58a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 59a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch private static final int INVALID_COLOR = 0; 60a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) class AwWebContentsObserver extends WebContentsObserverAndroid { 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public AwWebContentsObserver(ContentViewCore contentViewCore) { 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) super(contentViewCore); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void didStopLoading(String url) { 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AwContentsClient.this.onPageFinished(url); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void didFailLoad(boolean isProvisionalLoad, 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) boolean isMainFrame, int errorCode, String description, String failingUrl) { 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (errorCode == NetError.ERR_ABORTED) { 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This error code is generated for the following reasons: 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // - WebView.stopLoading is called, 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // - the navigation is intercepted by the embedder via shouldOverrideNavigation. 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The Android WebView does not notify the embedder of these situations using this 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // error code with the WebViewClient.onReceivedError callback. 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!isMainFrame) { 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The Android WebView does not notify the embedder of sub-frame failures. 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AwContentsClient.this.onReceivedError( 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ErrorCodeConversionHelper.convertErrorCode(errorCode), description, failingUrl); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Override 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public void didNavigateAnyFrame(String url, String baseUrl, boolean isReload) { 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AwContentsClient.this.doUpdateVisitedHistory(url, isReload); 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private class AwContentViewClient extends ContentViewClient { 99a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch @Override 100a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch public void onBackgroundColorChanged(int color) { 101a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch // Avoid storing the sentinal INVALID_COLOR (note that both 0 and 1 are both 102a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch // fully transparent so this transpose makes no visible difference). 103a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch mCachedRendererBackgroundColor = color == INVALID_COLOR ? 1 : color; 104a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch } 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) @Override 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void onScaleChanged(float oldScale, float newScale) { 108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AwContentsClient.this.onScaleChangedScaled((float)(oldScale * mDIPScale), 109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) (float)(newScale * mDIPScale)); 110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 112c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) @Override 113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void onStartContentIntent(Context context, String contentUrl) { 114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Callback when detecting a click on a content link. 115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AwContentsClient.this.shouldOverrideUrlLoading(contentUrl); 116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 118c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) @Override 119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void onTabCrash() { 120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // This is not possible so long as the webview is run single process! 121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) throw new RuntimeException("Renderer crash reported."); 122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) @Override 125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void onUpdateTitle(String title) { 126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AwContentsClient.this.onReceivedTitle(title); 127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) @Override 130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public boolean shouldOverrideKeyEvent(KeyEvent event) { 131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return AwContentsClient.this.shouldOverrideKeyEvent(event); 132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 134868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) @Override 135868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) final public ContentVideoViewClient getContentVideoViewClient() { 136868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return new AwContentVideoViewClient(); 137868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 140c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) final void installWebContentsObserver(ContentViewCore contentViewCore) { 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (mWebContentsObserver != null) { 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mWebContentsObserver.detachFromWebContents(); 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mWebContentsObserver = new AwWebContentsObserver(contentViewCore); 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 147868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) private class AwContentVideoViewClient implements ContentVideoViewClient { 148868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) @Override 149868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) public void onShowCustomView(View view) { 150868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) WebChromeClient.CustomViewCallback cb = new WebChromeClient.CustomViewCallback() { 151868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) @Override 152868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) public void onCustomViewHidden() { 153868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ContentVideoView contentVideoView = ContentVideoView.getContentVideoView(); 154868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (contentVideoView != null) 155868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) contentVideoView.exitFullscreen(false); 156868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 157868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) }; 158868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) AwContentsClient.this.onShowCustomView(view, cb); 159868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 160868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 161868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) @Override 162868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) public void onDestroyContentVideoView() { 163868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) AwContentsClient.this.onHideCustomView(); 164868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 165868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 166868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) @Override 167868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) public View getVideoLoadingProgressView() { 168868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return AwContentsClient.this.getVideoLoadingProgressView(); 169868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 170868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 171868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) @Override 1727dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch public ContentVideoViewControls createControls() { 1737dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return null; 1747dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 175868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 176868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 177c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) final void setDIPScale(double dipScale) { 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mDIPScale = dipScale; 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) final AwContentsClientCallbackHelper getCallbackHelper() { 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mCallbackHelper; 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) final ContentViewClient getContentViewClient() { 186c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return mContentViewClient; 187c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 189a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch final int getCachedRendererBackgroundColor() { 190a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch assert isCachedRendererBackgroundColorValid(); 191a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch return mCachedRendererBackgroundColor; 192a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch } 193a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 194a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch final boolean isCachedRendererBackgroundColorValid() { 195a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch return mCachedRendererBackgroundColor != INVALID_COLOR; 196a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch } 197a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) //-------------------------------------------------------------------------------------------- 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // WebView specific methods that map directly to WebViewClient / WebChromeClient 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) //-------------------------------------------------------------------------------------------- 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void getVisitedHistory(ValueCallback<String[]> callback); 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void doUpdateVisitedHistory(String url, boolean isReload); 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onProgressChanged(int progress); 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract InterceptedRequestData shouldInterceptRequest(String url); 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 210c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public abstract boolean shouldOverrideKeyEvent(KeyEvent event); 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 212c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public abstract boolean shouldOverrideUrlLoading(String url); 213c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 214c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public abstract void onLoadResource(String url); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onUnhandledKeyEvent(KeyEvent event); 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract boolean onConsoleMessage(ConsoleMessage consoleMessage); 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onReceivedHttpAuthRequest(AwHttpAuthHandler handler, 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) String host, String realm); 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onReceivedSslError(ValueCallback<Boolean> callback, SslError error); 2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onReceivedLoginRequest(String realm, String account, String args); 2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onFormResubmission(Message dontResend, Message resend); 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onDownloadStart(String url, String userAgent, String contentDisposition, 2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) String mimeType, long contentLength); 2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onGeolocationPermissionsShowPrompt(String origin, 2332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GeolocationPermissions.Callback callback); 2342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onGeolocationPermissionsHidePrompt(); 2362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onScaleChangedScaled(float oldScale, float newScale); 2382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected abstract void handleJsAlert(String url, String message, JsResultReceiver receiver); 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected abstract void handleJsBeforeUnload(String url, String message, 2422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JsResultReceiver receiver); 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected abstract void handleJsConfirm(String url, String message, JsResultReceiver receiver); 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected abstract void handleJsPrompt(String url, String message, String defaultValue, 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) JsPromptResultReceiver receiver); 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected abstract boolean onCreateWindow(boolean isDialog, boolean isUserGesture); 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected abstract void onCloseWindow(); 2522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onReceivedTouchIconUrl(String url, boolean precomposed); 2542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onReceivedIcon(Bitmap bitmap); 2562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 257c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public abstract void onReceivedTitle(String title); 258c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected abstract void onRequestFocus(); 2602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected abstract View getVideoLoadingProgressView(); 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onPageStarted(String url); 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onPageFinished(String url); 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onReceivedError(int errorCode, String description, String failingUrl); 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 269c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // TODO (michaelbai): Remove this method once the same method remove from 270c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // WebViewContentsClientAdapter. 271c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void onShowCustomView(View view, 272c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int requestedOrientation, WebChromeClient.CustomViewCallback callback) { 273c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 2742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // TODO (michaelbai): This method should be abstract, having empty body here 2762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // makes the merge to the Android easy. 277c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) { 278c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) onShowCustomView(view, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED, callback); 2792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 281c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public abstract void onHideCustomView(); 282c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 283c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public abstract Bitmap getDefaultVideoPoster(); 284c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) //-------------------------------------------------------------------------------------------- 2862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Other WebView-specific methods 2872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) //-------------------------------------------------------------------------------------------- 2882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // 2892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onFindResultReceived(int activeMatchOrdinal, int numberOfMatches, 2902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) boolean isDoneCounting); 2912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 2932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Called whenever there is a new content picture available. 2942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param picture New picture. 2952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 2962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onNewPicture(Picture picture); 2972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 299