AwContentsClient.java revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 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) 7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)import android.content.pm.ActivityInfo; 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.graphics.Bitmap; 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.graphics.Picture; 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.net.http.SslError; 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.os.Looper; 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.os.Message; 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.view.KeyEvent; 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.view.View; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.webkit.ConsoleMessage; 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.webkit.GeolocationPermissions; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.webkit.ValueCallback; 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.webkit.WebChromeClient; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.content.browser.ContentViewCore; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.content.browser.WebContentsObserverAndroid; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.net.NetError; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Base-class that an AwContents embedder derives from to receive callbacks. 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This extends ContentViewClient, as in many cases we want to pass-thru ContentViewCore 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * callbacks right to our embedder, and this setup facilities that. 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * For any other callbacks we need to make transformations of (e.g. adapt parameters 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * or perform filtering) we can provide final overrides for methods here, and then introduce 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * new abstract methods that the our own client must implement. 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * i.e.: all methods in this class should either be final, or abstract. 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)public abstract class AwContentsClient { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) private final AwContentsClientCallbackHelper mCallbackHelper; 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private AwWebContentsObserver mWebContentsObserver; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch // Last background color reported from the renderer. Holds the sentinal value INVALID_COLOR 40a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch // if not valid. 41a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch private int mCachedRendererBackgroundColor = INVALID_COLOR; 42a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 43a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch private static final int INVALID_COLOR = 0; 44a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) public AwContentsClient() { 461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) this(Looper.myLooper()); 471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Alllow injection of the callback thread, for testing. 501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) public AwContentsClient(Looper looper) { 511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) mCallbackHelper = new AwContentsClientCallbackHelper(looper, this); 521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) class AwWebContentsObserver extends WebContentsObserverAndroid { 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public AwWebContentsObserver(ContentViewCore contentViewCore) { 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) super(contentViewCore); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public void didFinishLoad(long frameId, String validatedUrl, boolean isMainFrame) { 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (isMainFrame) 62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) AwContentsClient.this.onPageFinished(validatedUrl); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void didFailLoad(boolean isProvisionalLoad, 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) boolean isMainFrame, int errorCode, String description, String failingUrl) { 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (errorCode == NetError.ERR_ABORTED) { 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This error code is generated for the following reasons: 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // - WebView.stopLoading is called, 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // - the navigation is intercepted by the embedder via shouldOverrideNavigation. 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The Android WebView does not notify the embedder of these situations using this 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // error code with the WebViewClient.onReceivedError callback. 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!isMainFrame) { 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The Android WebView does not notify the embedder of sub-frame failures. 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AwContentsClient.this.onReceivedError( 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ErrorCodeConversionHelper.convertErrorCode(errorCode), description, failingUrl); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Override 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public void didNavigateAnyFrame(String url, String baseUrl, boolean isReload) { 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AwContentsClient.this.doUpdateVisitedHistory(url, isReload); 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) final void installWebContentsObserver(ContentViewCore contentViewCore) { 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (mWebContentsObserver != null) { 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mWebContentsObserver.detachFromWebContents(); 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mWebContentsObserver = new AwWebContentsObserver(contentViewCore); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) final AwContentsClientCallbackHelper getCallbackHelper() { 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mCallbackHelper; 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 103a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch final int getCachedRendererBackgroundColor() { 104a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch assert isCachedRendererBackgroundColorValid(); 105a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch return mCachedRendererBackgroundColor; 106a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch } 107a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 108a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch final boolean isCachedRendererBackgroundColorValid() { 109a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch return mCachedRendererBackgroundColor != INVALID_COLOR; 110a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch } 111a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 112f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) final void onBackgroundColorChanged(int color) { 113f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Avoid storing the sentinal INVALID_COLOR (note that both 0 and 1 are both 114f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // fully transparent so this transpose makes no visible difference). 115f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) mCachedRendererBackgroundColor = color == INVALID_COLOR ? 1 : color; 116f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 117f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) //-------------------------------------------------------------------------------------------- 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // WebView specific methods that map directly to WebViewClient / WebChromeClient 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) //-------------------------------------------------------------------------------------------- 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 122ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch public static class FileChooserParams { 123ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch public int mode; 124ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch public String acceptTypes; 125ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch public String title; 126ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch public String defaultFilename; 127ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch public boolean capture; 128ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch } 129ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void getVisitedHistory(ValueCallback<String[]> callback); 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void doUpdateVisitedHistory(String url, boolean isReload); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onProgressChanged(int progress); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract InterceptedRequestData shouldInterceptRequest(String url); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public abstract boolean shouldOverrideKeyEvent(KeyEvent event); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 140c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public abstract boolean shouldOverrideUrlLoading(String url); 141c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public abstract void onLoadResource(String url); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onUnhandledKeyEvent(KeyEvent event); 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract boolean onConsoleMessage(ConsoleMessage consoleMessage); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onReceivedHttpAuthRequest(AwHttpAuthHandler handler, 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) String host, String realm); 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onReceivedSslError(ValueCallback<Boolean> callback, SslError error); 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onReceivedLoginRequest(String realm, String account, String args); 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onFormResubmission(Message dontResend, Message resend); 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onDownloadStart(String url, String userAgent, String contentDisposition, 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) String mimeType, long contentLength); 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 160ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // TODO(joth): Make abstract once this has rolled in downstream. 161ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch public /*abstract*/ void showFileChooser(ValueCallback<String[]> uploadFilePathsCallback, 162ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch FileChooserParams fileChooserParams) { } 163ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onGeolocationPermissionsShowPrompt(String origin, 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GeolocationPermissions.Callback callback); 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onGeolocationPermissionsHidePrompt(); 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onScaleChangedScaled(float oldScale, float newScale); 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected abstract void handleJsAlert(String url, String message, JsResultReceiver receiver); 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected abstract void handleJsBeforeUnload(String url, String message, 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JsResultReceiver receiver); 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected abstract void handleJsConfirm(String url, String message, JsResultReceiver receiver); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected abstract void handleJsPrompt(String url, String message, String defaultValue, 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) JsPromptResultReceiver receiver); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected abstract boolean onCreateWindow(boolean isDialog, boolean isUserGesture); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected abstract void onCloseWindow(); 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onReceivedTouchIconUrl(String url, boolean precomposed); 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onReceivedIcon(Bitmap bitmap); 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 189c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public abstract void onReceivedTitle(String title); 190c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected abstract void onRequestFocus(); 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected abstract View getVideoLoadingProgressView(); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onPageStarted(String url); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onPageFinished(String url); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onReceivedError(int errorCode, String description, String failingUrl); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // TODO (michaelbai): Remove this method once the same method remove from 202c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // WebViewContentsClientAdapter. 203c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void onShowCustomView(View view, 204c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int requestedOrientation, WebChromeClient.CustomViewCallback callback) { 205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // TODO (michaelbai): This method should be abstract, having empty body here 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // makes the merge to the Android easy. 209c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) { 210c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) onShowCustomView(view, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED, callback); 2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 213c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public abstract void onHideCustomView(); 214c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 215c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public abstract Bitmap getDefaultVideoPoster(); 216c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) //-------------------------------------------------------------------------------------------- 2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Other WebView-specific methods 2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) //-------------------------------------------------------------------------------------------- 2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // 2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onFindResultReceived(int activeMatchOrdinal, int numberOfMatches, 2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) boolean isDoneCounting); 2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Called whenever there is a new content picture available. 2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param picture New picture. 2272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onNewPicture(Picture picture); 2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 231