AwContentsClient.java revision 0529e5d033099cbfc42635f6f6183833b09dff6e
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) 240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochimport java.security.Principal; 250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Base-class that an AwContents embedder derives from to receive callbacks. 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This extends ContentViewClient, as in many cases we want to pass-thru ContentViewCore 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * callbacks right to our embedder, and this setup facilities that. 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * For any other callbacks we need to make transformations of (e.g. adapt parameters 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * or perform filtering) we can provide final overrides for methods here, and then introduce 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * new abstract methods that the our own client must implement. 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * i.e.: all methods in this class should either be final, or abstract. 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)public abstract class AwContentsClient { 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) private final AwContentsClientCallbackHelper mCallbackHelper; 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private AwWebContentsObserver mWebContentsObserver; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 41a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch // Last background color reported from the renderer. Holds the sentinal value INVALID_COLOR 42a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch // if not valid. 43a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch private int mCachedRendererBackgroundColor = INVALID_COLOR; 44a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 45a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch private static final int INVALID_COLOR = 0; 46a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) public AwContentsClient() { 481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) this(Looper.myLooper()); 491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Alllow injection of the callback thread, for testing. 521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) public AwContentsClient(Looper looper) { 531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) mCallbackHelper = new AwContentsClientCallbackHelper(looper, this); 541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) class AwWebContentsObserver extends WebContentsObserverAndroid { 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public AwWebContentsObserver(ContentViewCore contentViewCore) { 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) super(contentViewCore); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public void didFinishLoad(long frameId, String validatedUrl, boolean isMainFrame) { 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (isMainFrame) { 64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) AwContentsClient.this.onPageFinished(validatedUrl); 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void didFailLoad(boolean isProvisionalLoad, 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) boolean isMainFrame, int errorCode, String description, String failingUrl) { 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (isMainFrame) { 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (errorCode != NetError.ERR_ABORTED) { 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // This error code is generated for the following reasons: 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // - WebView.stopLoading is called, 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // - the navigation is intercepted by the embedder via shouldOverrideNavigation. 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // The Android WebView does not notify the embedder of these situations using 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // this error code with the WebViewClient.onReceivedError callback. 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) AwContentsClient.this.onReceivedError( 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ErrorCodeConversionHelper.convertErrorCode(errorCode), description, 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) failingUrl); 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Need to call onPageFinished after onReceivedError (if there is an error) for 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // backwards compatibility with the classic webview. 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) AwContentsClient.this.onPageFinished(failingUrl); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) @Override 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public void didNavigateMainFrame(String url, String baseUrl, 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) boolean isNavigationToDifferentPage, boolean isNavigationInPage) { 925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // This is here to emulate the Classic WebView firing onPageFinished for main frame 935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // navigations where only the hash fragment changes. 945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (isNavigationInPage) { 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) AwContentsClient.this.onPageFinished(url); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Override 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public void didNavigateAnyFrame(String url, String baseUrl, boolean isReload) { 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AwContentsClient.this.doUpdateVisitedHistory(url, isReload); 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) final void installWebContentsObserver(ContentViewCore contentViewCore) { 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (mWebContentsObserver != null) { 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mWebContentsObserver.detachFromWebContents(); 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mWebContentsObserver = new AwWebContentsObserver(contentViewCore); 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) final AwContentsClientCallbackHelper getCallbackHelper() { 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mCallbackHelper; 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 117a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch final int getCachedRendererBackgroundColor() { 118a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch assert isCachedRendererBackgroundColorValid(); 119a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch return mCachedRendererBackgroundColor; 120a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch } 121a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 122a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch final boolean isCachedRendererBackgroundColorValid() { 123a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch return mCachedRendererBackgroundColor != INVALID_COLOR; 124a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch } 125a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 126f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) final void onBackgroundColorChanged(int color) { 127f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Avoid storing the sentinal INVALID_COLOR (note that both 0 and 1 are both 128f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // fully transparent so this transpose makes no visible difference). 129f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) mCachedRendererBackgroundColor = color == INVALID_COLOR ? 1 : color; 130f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 131f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) //-------------------------------------------------------------------------------------------- 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // WebView specific methods that map directly to WebViewClient / WebChromeClient 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) //-------------------------------------------------------------------------------------------- 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 1375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Parameters for the {@link AwContentsClient#showFileChooser} method. 1385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 139ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch public static class FileChooserParams { 140ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch public int mode; 141ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch public String acceptTypes; 142ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch public String title; 143ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch public String defaultFilename; 144ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch public boolean capture; 145ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch } 146ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void getVisitedHistory(ValueCallback<String[]> callback); 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void doUpdateVisitedHistory(String url, boolean isReload); 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onProgressChanged(int progress); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract InterceptedRequestData shouldInterceptRequest(String url); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public abstract boolean shouldOverrideKeyEvent(KeyEvent event); 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 157c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public abstract boolean shouldOverrideUrlLoading(String url); 158c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 159c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public abstract void onLoadResource(String url); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onUnhandledKeyEvent(KeyEvent event); 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract boolean onConsoleMessage(ConsoleMessage consoleMessage); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onReceivedHttpAuthRequest(AwHttpAuthHandler handler, 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) String host, String realm); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onReceivedSslError(ValueCallback<Boolean> callback, SslError error); 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1700529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // TODO(sgurun): Make abstract once this has rolled in downstream. 1710529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch public void onReceivedClientCertRequest( 1720529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch final AwContentsClientBridge.ClientCertificateRequestCallback callback, 1730529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch final String[] keyTypes, final Principal[] principals, final String host, 1740529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch final int port) { } 1750529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onReceivedLoginRequest(String realm, String account, String args); 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onFormResubmission(Message dontResend, Message resend); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onDownloadStart(String url, String userAgent, String contentDisposition, 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) String mimeType, long contentLength); 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 183ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // TODO(joth): Make abstract once this has rolled in downstream. 184ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch public /*abstract*/ void showFileChooser(ValueCallback<String[]> uploadFilePathsCallback, 185ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch FileChooserParams fileChooserParams) { } 186ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onGeolocationPermissionsShowPrompt(String origin, 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GeolocationPermissions.Callback callback); 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onGeolocationPermissionsHidePrompt(); 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onScaleChangedScaled(float oldScale, float newScale); 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected abstract void handleJsAlert(String url, String message, JsResultReceiver receiver); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected abstract void handleJsBeforeUnload(String url, String message, 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JsResultReceiver receiver); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected abstract void handleJsConfirm(String url, String message, JsResultReceiver receiver); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected abstract void handleJsPrompt(String url, String message, String defaultValue, 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) JsPromptResultReceiver receiver); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected abstract boolean onCreateWindow(boolean isDialog, boolean isUserGesture); 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected abstract void onCloseWindow(); 2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onReceivedTouchIconUrl(String url, boolean precomposed); 2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onReceivedIcon(Bitmap bitmap); 2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 212c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public abstract void onReceivedTitle(String title); 213c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected abstract void onRequestFocus(); 2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected abstract View getVideoLoadingProgressView(); 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onPageStarted(String url); 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onPageFinished(String url); 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public abstract void onReceivedError(int errorCode, String description, String failingUrl); 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 224c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // TODO (michaelbai): Remove this method once the same method remove from 225c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // WebViewContentsClientAdapter. 226c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void onShowCustomView(View view, 227c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int requestedOrientation, WebChromeClient.CustomViewCallback callback) { 228c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // TODO (michaelbai): This method should be abstract, having empty body here 2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // makes the merge to the Android easy. 232c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) { 233c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) onShowCustomView(view, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED, callback); 2342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 236c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public abstract void onHideCustomView(); 237c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 238c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public abstract Bitmap getDefaultVideoPoster(); 239c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) //-------------------------------------------------------------------------------------------- 2412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Other WebView-specific methods 2422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) //-------------------------------------------------------------------------------------------- 2432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // 2442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onFindResultReceived(int activeMatchOrdinal, int numberOfMatches, 2452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) boolean isDoneCounting); 2462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 2482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Called whenever there is a new content picture available. 2492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param picture New picture. 2502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 2512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public abstract void onNewPicture(Picture picture); 2522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 254