WebViewChromium.java revision f37548d6d8e2a73c65d675a26706a38f52960800
146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)/* 246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * Copyright (C) 2012 The Android Open Source Project 346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * 446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * Licensed under the Apache License, Version 2.0 (the "License"); 546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * you may not use this file except in compliance with the License. 646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * You may obtain a copy of the License at 746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * 846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * http://www.apache.org/licenses/LICENSE-2.0 946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * 1046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * Unless required by applicable law or agreed to in writing, software 1146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * distributed under the License is distributed on an "AS IS" BASIS, 1246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * See the License for the specific language governing permissions and 1446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * limitations under the License. 1546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) */ 1646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 1746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)package com.android.webview.chromium; 1846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 1946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.content.res.Configuration; 2046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.graphics.Bitmap; 2146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.graphics.Canvas; 2246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.graphics.Paint; 2346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.graphics.Picture; 2446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.graphics.Rect; 2546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.graphics.drawable.Drawable; 2646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.net.http.SslCertificate; 2746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.os.Build; 2846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.os.Bundle; 2946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.os.Message; 30e78d6e40e4e78671e6621ba8cf49835568704899Jonathan Dixonimport android.util.Log; 31a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixonimport android.view.HardwareCanvas; 3246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.view.KeyEvent; 3346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.view.MotionEvent; 3446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.view.View; 353411fdf2737f3f0dd0c1fa20045356cf89f34eddBo Liuimport android.view.View.MeasureSpec; 3646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.view.ViewGroup; 3746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.view.accessibility.AccessibilityEvent; 3846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.view.accessibility.AccessibilityNodeInfo; 3946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.view.inputmethod.EditorInfo; 4046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.view.inputmethod.InputConnection; 4146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.webkit.DownloadListener; 426d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdochimport android.webkit.FindActionModeCallback; 437db34d3dcaac936566f912e1b0b21f3f103029ffJonathan Dixonimport android.webkit.JavascriptInterface; 4446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.webkit.ValueCallback; 4546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.webkit.WebBackForwardList; 4646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.webkit.WebChromeClient; 4746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.webkit.WebSettings; 4846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.webkit.WebView; 4946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.webkit.WebViewClient; 5046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.webkit.WebViewProvider; 5146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 52aa8b39f3e3f208586f3750d7278f1239a09ebd32Kristian Monsenimport org.chromium.android_webview.AwBrowserContext; 5346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import org.chromium.android_webview.AwContents; 5446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import org.chromium.content.browser.LoadUrlParams; 5546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import org.chromium.net.NetworkChangeNotifier; 5646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 5746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import java.io.BufferedWriter; 5846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import java.io.File; 59ea844f60b1b559788566fe6e004b1eeca53a8039Jonathan Dixonimport java.lang.annotation.Annotation; 6046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import java.util.Map; 6146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 6246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)/** 6346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * This class is the delegate to which WebViewProxy forwards all API calls. 6446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * 651cc4c3210fd2ea027bd6d883a15c3951476642bbJonathan Dixon * Most of the actual functionality is implemented by AwContents (or ContentViewCore within 661cc4c3210fd2ea027bd6d883a15c3951476642bbJonathan Dixon * it). This class also contains WebView-specific APIs that require the creation of other 671cc4c3210fd2ea027bd6d883a15c3951476642bbJonathan Dixon * adapters (otherwise org.chromium.content would depend on the webview.chromium package) 681cc4c3210fd2ea027bd6d883a15c3951476642bbJonathan Dixon * and a small set of no-op deprecated APIs. 6946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) */ 7046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)class WebViewChromium implements WebViewProvider, 7146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) WebViewProvider.ScrollDelegate, WebViewProvider.ViewDelegate { 72e78d6e40e4e78671e6621ba8cf49835568704899Jonathan Dixon 73e78d6e40e4e78671e6621ba8cf49835568704899Jonathan Dixon private static final String TAG = WebViewChromium.class.getSimpleName(); 74e78d6e40e4e78671e6621ba8cf49835568704899Jonathan Dixon 7546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // The WebView that this WebViewChromium is the provider for. 7646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) WebView mWebView; 7746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // Lets us access protected View-derived methods on the WebView instance we're backing. 7846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) WebView.PrivateAccess mWebViewPrivate; 7946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // The client adapter class. 8046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) private WebViewContentsClientAdapter mContentsClientAdapter; 8146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 8246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // Variables for functionality provided by this adapter --------------------------------------- 8346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // WebSettings adapter, lazily initialized in the getter 8446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) private WebSettings mWebSettings; 853949435b480cb71106f65b237025da359cf8a8caBen Murdoch // The WebView wrapper for ContentViewCore and required browser compontents. 8646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) private AwContents mAwContents; 87a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon // Non-null if this webview is using the GL accelerated draw path. 88a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon private DrawGLFunctor mGLfunctor; 8946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 90aa8b39f3e3f208586f3750d7278f1239a09ebd32Kristian Monsen private AwBrowserContext mBrowserContext; 91aa8b39f3e3f208586f3750d7278f1239a09ebd32Kristian Monsen 92c3fbc0fea57ba0dd4cf9eb8cc4d12f1b0edbcc5cBo Liu private final WebView.HitTestResult mHitTestResult; 93c3fbc0fea57ba0dd4cf9eb8cc4d12f1b0edbcc5cBo Liu 94aa8b39f3e3f208586f3750d7278f1239a09ebd32Kristian Monsen public WebViewChromium(WebView webView, WebView.PrivateAccess webViewPrivate, 95aa8b39f3e3f208586f3750d7278f1239a09ebd32Kristian Monsen AwBrowserContext browserContext) { 9646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mWebView = webView; 9746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mWebViewPrivate = webViewPrivate; 98c3fbc0fea57ba0dd4cf9eb8cc4d12f1b0edbcc5cBo Liu mHitTestResult = new WebView.HitTestResult(); 99aa8b39f3e3f208586f3750d7278f1239a09ebd32Kristian Monsen mBrowserContext = browserContext; 10046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 10146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 1021ee9dd0420198429115c3fe8cf0b0502fab9cf62Ben Murdoch static void completeWindowCreation(WebView parent, WebView child) { 1031ee9dd0420198429115c3fe8cf0b0502fab9cf62Ben Murdoch AwContents parentContents = ((WebViewChromium) parent.getWebViewProvider()).mAwContents; 1041ee9dd0420198429115c3fe8cf0b0502fab9cf62Ben Murdoch AwContents childContents = ((WebViewChromium) child.getWebViewProvider()).mAwContents; 1051ee9dd0420198429115c3fe8cf0b0502fab9cf62Ben Murdoch parentContents.supplyContentsForPopup(childContents); 10646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 10746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 10846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // WebViewProvider methods -------------------------------------------------------------------- 10946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 11046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 11146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void init(Map<String, Object> javaScriptInterfaces, boolean privateBrowsing) { 11246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // TODO: BUG=6790250 javaScriptInterfaces were only ever used by DumpRenderTree and should 11346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // probably be implemented as a hidden hook in WebViewClassic. 1145a25477f4323996be9d5cc32935066c73b47061bBen Murdoch if (privateBrowsing) { 1155a25477f4323996be9d5cc32935066c73b47061bBen Murdoch throw new IllegalArgumentException( 1165a25477f4323996be9d5cc32935066c73b47061bBen Murdoch "Private browsing is not supported in this version of the WebView."); 1175a25477f4323996be9d5cc32935066c73b47061bBen Murdoch } 11846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 11946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) final boolean isAccessFromFileURLsGrantedByDefault = 12046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mWebView.getContext().getApplicationInfo().targetSdkVersion < 12146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) Build.VERSION_CODES.JELLY_BEAN; 12246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mContentsClientAdapter = new WebViewContentsClientAdapter(mWebView); 123aa8b39f3e3f208586f3750d7278f1239a09ebd32Kristian Monsen mAwContents = new AwContents(mBrowserContext, mWebView, new InternalAccessAdapter(), 124aa8b39f3e3f208586f3750d7278f1239a09ebd32Kristian Monsen mContentsClientAdapter, isAccessFromFileURLsGrantedByDefault); 12546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 12646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 12746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 12846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setHorizontalScrollbarOverlay(boolean overlay) { 12946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 13046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 13146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 13246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 13346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setVerticalScrollbarOverlay(boolean overlay) { 13446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 13546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 13646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 13746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 13846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean overlayHorizontalScrollbar() { 13946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 14046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 14146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 14246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 14346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 14446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean overlayVerticalScrollbar() { 14546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 14646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 14746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 14846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 14946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 15046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public int getVisibleTitleHeight() { 15146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // This is deprecated in WebView and should always return 0. 15246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return 0; 15346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 15446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 15546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 15646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public SslCertificate getCertificate() { 15746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return mAwContents.getCertificate(); 15846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 15946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 16046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 16146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setCertificate(SslCertificate certificate) { 16246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 16346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 16446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 16546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 16646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void savePassword(String host, String username, String password) { 167adc6c4d74c77a617100bdfeb174ab0c314b24ea8Selim Gurun // This is a deprecated API: intentional no-op. 16846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 16946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 17046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 17146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setHttpAuthUsernamePassword(String host, String realm, String username, 17246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) String password) { 17346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.setHttpAuthUsernamePassword(host, realm, username, password); 17446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 17546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 17646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 17746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public String[] getHttpAuthUsernamePassword(String host, String realm) { 17846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return mAwContents.getHttpAuthUsernamePassword(host, realm); 17946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 18046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 18146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 18246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void destroy() { 1833949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.destroy(); 184a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon if (mGLfunctor != null) { 185a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon mGLfunctor.destroy(); 186a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon mGLfunctor = null; 187a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon } 18846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 18946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 19046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 19146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setNetworkAvailable(boolean networkUp) { 19246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) NetworkChangeNotifier.forceConnectivityState(networkUp); 19346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 19446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 19546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 19646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public WebBackForwardList saveState(Bundle outState) { 197a08e8aada16dc4dbfb8745532169fb4a8347541dBo Liu if (outState == null) return null; 198a08e8aada16dc4dbfb8745532169fb4a8347541dBo Liu if (!mAwContents.saveState(outState)) return null; 199a08e8aada16dc4dbfb8745532169fb4a8347541dBo Liu return copyBackForwardList(); 20046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 20146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 20246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 20346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean savePicture(Bundle b, File dest) { 2049405536501747e2d7b4fc46a33e5f0a1e7fd47acJonathan Dixon // Intentional no-op: hidden method on WebView. 20546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 20646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 20746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 20846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 20946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean restorePicture(Bundle b, File src) { 2109405536501747e2d7b4fc46a33e5f0a1e7fd47acJonathan Dixon // Intentional no-op: hidden method on WebView. 21146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 21246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 21346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 21446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 21546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public WebBackForwardList restoreState(Bundle inState) { 216a08e8aada16dc4dbfb8745532169fb4a8347541dBo Liu if (inState == null) return null; 217a08e8aada16dc4dbfb8745532169fb4a8347541dBo Liu if (!mAwContents.restoreState(inState)) return null; 218a08e8aada16dc4dbfb8745532169fb4a8347541dBo Liu return copyBackForwardList(); 21946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 22046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 22146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 22246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void loadUrl(String url, Map<String, String> additionalHttpHeaders) { 22346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // TODO: We may actually want to do some sanity checks here (like filter about://chrome). 22446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) LoadUrlParams params = new LoadUrlParams(url); 22546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) if (additionalHttpHeaders != null) params.setExtraHeaders(additionalHttpHeaders); 22646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.loadUrl(params); 22746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 22846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 22946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 23046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void loadUrl(String url) { 23146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) loadUrl(url, null); 23246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 23346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 23446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 23546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void postUrl(String url, byte[] postData) { 23646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.loadUrl(LoadUrlParams.createLoadHttpPostParams( 23746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) url, postData)); 23846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 23946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 24046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) private static boolean isBase64Encoded(String encoding) { 24146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return "base64".equals(encoding); 24246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 24346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 24446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 24546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void loadData(String data, String mimeType, String encoding) { 24646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.loadUrl(LoadUrlParams.createLoadDataParams( 24746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) data, mimeType, isBase64Encoded(encoding))); 24846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 24946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 25046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 25146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, 25246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) String historyUrl) { 25346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) if (baseUrl == null || baseUrl.length() == 0) baseUrl = "about:blank"; 2541127e126a25f26d7d255c73e19d2e07f1c854781Ben Murdoch boolean isBase64 = isBase64Encoded(encoding); 2551127e126a25f26d7d255c73e19d2e07f1c854781Ben Murdoch // For backwards compatibility with WebViewClassic, we use the value of |encoding| 2561127e126a25f26d7d255c73e19d2e07f1c854781Ben Murdoch // as the charset, as long as it's not "base64". 25746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.loadUrl(LoadUrlParams.createLoadDataParamsWithBaseUrl( 2581127e126a25f26d7d255c73e19d2e07f1c854781Ben Murdoch data, mimeType, isBase64, baseUrl, historyUrl, isBase64 ? null : encoding)); 25946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 26046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 26146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 26246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void saveWebArchive(String filename) { 26346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) saveWebArchive(filename, false, null); 26446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 26546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 26646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 26746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void saveWebArchive(String basename, boolean autoname, ValueCallback<String> callback) { 26846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.saveWebArchive(basename, autoname, callback); 26946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 27046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 27146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 27246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void stopLoading() { 2737cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba mAwContents.stopLoading(); 27446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 27546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 27646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 27746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void reload() { 2787cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba mAwContents.reload(); 27946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 28046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 28146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 28246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean canGoBack() { 2837cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba return mAwContents.canGoBack(); 28446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 28546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 28646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 28746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void goBack() { 2887cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba mAwContents.goBack(); 28946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 29046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 29146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 29246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean canGoForward() { 2937cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba return mAwContents.canGoForward(); 29446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 29546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 29646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 29746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void goForward() { 2987cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba mAwContents.goForward(); 29946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 30046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 30146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 30246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean canGoBackOrForward(int steps) { 3037cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba return mAwContents.canGoBackOrForward(steps); 30446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 30546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 30646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 30746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void goBackOrForward(int steps) { 3087cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba mAwContents.goBackOrForward(steps); 30946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 31046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 31146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 31246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean isPrivateBrowsingEnabled() { 3136d58f78e7fc0412a58b163559cb8e9c4af5c6fe1Jonathan Dixon // Not supported in this WebView implementation. 31446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 31546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 31646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 31746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 31846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean pageUp(boolean top) { 3197cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba return mAwContents.pageUp(top); 32046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 32146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 32246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 32346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean pageDown(boolean bottom) { 3247cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba return mAwContents.pageDown(bottom); 32546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 32646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 32746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 32846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void clearView() { 32946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 33046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 33146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 33246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 33346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public Picture capturePicture() { 3349c5a40623b62737244deb2d04a98830d7ffa8404Leandro Gracia Gil return mAwContents.capturePicture(); 33546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 33646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 33746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 33846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public float getScale() { 3393520eb778d668dc76ca4541c69abd568b9d02691Mikhail Naganov return mAwContents.getScale(); 34046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 34146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 34246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 34346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setInitialScale(int scaleInPercent) { 3443520eb778d668dc76ca4541c69abd568b9d02691Mikhail Naganov mAwContents.getSettings().setInitialPageScale(scaleInPercent); 34546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 34646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 34746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 34846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void invokeZoomPicker() { 3497cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba mAwContents.invokeZoomPicker(); 35046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 35146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 35246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 35346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public WebView.HitTestResult getHitTestResult() { 354c3fbc0fea57ba0dd4cf9eb8cc4d12f1b0edbcc5cBo Liu AwContents.HitTestData data = mAwContents.getLastHitTestResult(); 355c3fbc0fea57ba0dd4cf9eb8cc4d12f1b0edbcc5cBo Liu mHitTestResult.setType(data.hitTestResultType); 356c3fbc0fea57ba0dd4cf9eb8cc4d12f1b0edbcc5cBo Liu mHitTestResult.setExtra(data.hitTestResultExtraData); 357c3fbc0fea57ba0dd4cf9eb8cc4d12f1b0edbcc5cBo Liu return mHitTestResult; 35846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 35946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 36046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 36146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void requestFocusNodeHref(Message hrefMsg) { 362c3fbc0fea57ba0dd4cf9eb8cc4d12f1b0edbcc5cBo Liu mAwContents.requestFocusNodeHref(hrefMsg); 36346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 36446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 36546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 36646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void requestImageRef(Message msg) { 367c3fbc0fea57ba0dd4cf9eb8cc4d12f1b0edbcc5cBo Liu mAwContents.requestImageRef(msg); 36846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 36946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 37046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 37146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public String getUrl() { 3727cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba String url = mAwContents.getUrl(); 37346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) if (url == null || url.trim().isEmpty()) return null; 37446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return url; 37546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 37646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 37746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 37846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public String getOriginalUrl() { 37946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) String url = mAwContents.getOriginalUrl(); 38046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) if (url == null || url.trim().isEmpty()) return null; 38146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return url; 38246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 38346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 38446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 38546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public String getTitle() { 3867cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba return mAwContents.getTitle(); 38746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 38846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 38946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 39046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public Bitmap getFavicon() { 3919405536501747e2d7b4fc46a33e5f0a1e7fd47acJonathan Dixon return mAwContents.getFavicon(); 39246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 39346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 39446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 39546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public String getTouchIconUrl() { 3969405536501747e2d7b4fc46a33e5f0a1e7fd47acJonathan Dixon // Intentional no-op: hidden method on WebView. 39746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return null; 39846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 39946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 40046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 40146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public int getProgress() { 40246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return mAwContents.getMostRecentProgress(); 40346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 40446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 40546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 40646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public int getContentHeight() { 4076b5f3d1546ae2a9c712cde60c54ec027582bc4e6Martin Kosiba return mAwContents.getContentHeightCss(); 40846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 40946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 41046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 41146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public int getContentWidth() { 4126b5f3d1546ae2a9c712cde60c54ec027582bc4e6Martin Kosiba return mAwContents.getContentWidthCss(); 41346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 41446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 41546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 41646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void pauseTimers() { 417531e68a2b50a5e542eeede13907f29e463a99ebfBen Murdoch mAwContents.pauseTimers(); 41846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 41946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 42046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 42146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void resumeTimers() { 422531e68a2b50a5e542eeede13907f29e463a99ebfBen Murdoch mAwContents.resumeTimers(); 42346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 42446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 42546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 42646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onPause() { 4271cc4c3210fd2ea027bd6d883a15c3951476642bbJonathan Dixon mAwContents.onPause(); 42846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 42946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 43046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 43146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onResume() { 4321cc4c3210fd2ea027bd6d883a15c3951476642bbJonathan Dixon mAwContents.onResume(); 43346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 43446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 43546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 43646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean isPaused() { 4371cc4c3210fd2ea027bd6d883a15c3951476642bbJonathan Dixon return mAwContents.isPaused(); 43846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 43946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 44046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 44146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void freeMemory() { 44246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 44346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 44446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 44546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 44646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void clearCache(boolean includeDiskFiles) { 44746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.clearCache(includeDiskFiles); 44846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 44946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 45046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 45146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void clearFormData() { 45246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 45346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 45446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 45546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 45646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void clearHistory() { 4577cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba mAwContents.clearHistory(); 45846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 45946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 46046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 46146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void clearSslPreferences() { 4627cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba mAwContents.clearSslPreferences(); 46346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 46446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 46546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 46646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public WebBackForwardList copyBackForwardList() { 46708a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu return new WebBackForwardListChromium( 4687cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba mAwContents.getNavigationHistory()); 46946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 47046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 47146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 47246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setFindListener(WebView.FindListener listener) { 47346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mContentsClientAdapter.setFindListener(listener); 47446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 47546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 47646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 47746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void findNext(boolean forwards) { 47846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.findNext(forwards); 47946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 48046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 48146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 48246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public int findAll(String searchString) { 483f37548d6d8e2a73c65d675a26706a38f52960800Jonathan Dixon mAwContents.findAllAsync(searchString); 484f37548d6d8e2a73c65d675a26706a38f52960800Jonathan Dixon return 0; 48546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 48646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 48746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 48846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void findAllAsync(String searchString) { 48946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.findAllAsync(searchString); 49046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 49146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 49246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 49346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean showFindDialog(String text, boolean showIme) { 4946d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch if (mWebView.getParent() == null) { 4956d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch return false; 4966d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch } 4976d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch 4986d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch FindActionModeCallback findAction = new FindActionModeCallback(mWebView.getContext()); 4996d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch if (findAction == null) { 5006d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch return false; 5016d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch } 5026d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch 5036d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch mWebView.startActionMode(findAction); 5046d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch findAction.setWebView(mWebView); 5056d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch if (showIme) { 5066d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch findAction.showSoftInput(); 5076d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch } 5086d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch 5096d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch if (text != null) { 5106d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch findAction.setText(text); 5116d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch findAction.findAll(); 5126d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch } 5136d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch 5146d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch return true; 51546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 51646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 5176d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch @Override 518fde8dae44f74be3de69ce6dd07b0023279b485a0Ben Murdoch public void notifyFindDialogDismissed() { 5196d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch clearMatches(); 520fde8dae44f74be3de69ce6dd07b0023279b485a0Ben Murdoch } 521fde8dae44f74be3de69ce6dd07b0023279b485a0Ben Murdoch 52246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 52346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void clearMatches() { 52446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.clearMatches(); 52546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 52646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 52746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 52846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void documentHasImages(Message response) { 52946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.documentHasImages(response); 53046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 53146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 53246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 53346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setWebViewClient(WebViewClient client) { 53446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mContentsClientAdapter.setWebViewClient(client); 53546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 53646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 53746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 53846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setDownloadListener(DownloadListener listener) { 5394320e428efc3bf69387f3b9d5a0589b2b8746409Bo Liu mContentsClientAdapter.setDownloadListener(listener); 54046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 54146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 54246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 54346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setWebChromeClient(WebChromeClient client) { 54446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mContentsClientAdapter.setWebChromeClient(client); 54546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 54646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 54746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 54846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setPictureListener(WebView.PictureListener listener) { 54946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mContentsClientAdapter.setPictureListener(listener); 5509c5a40623b62737244deb2d04a98830d7ffa8404Leandro Gracia Gil mAwContents.enableOnNewPicture(listener != null, 5519c5a40623b62737244deb2d04a98830d7ffa8404Leandro Gracia Gil mWebView.getContext().getApplicationInfo().targetSdkVersion >= 552edb98e3c667e37b00f338b51fb2e5d6bece4c447Ben Murdoch Build.VERSION_CODES.JELLY_BEAN_MR2); 55346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 55446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 55546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 55646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void addJavascriptInterface(Object obj, String interfaceName) { 557ea844f60b1b559788566fe6e004b1eeca53a8039Jonathan Dixon Class<? extends Annotation> requiredAnnotation = null; 5587db34d3dcaac936566f912e1b0b21f3f103029ffJonathan Dixon if (mWebView.getContext().getApplicationInfo().targetSdkVersion >= 5597db34d3dcaac936566f912e1b0b21f3f103029ffJonathan Dixon Build.VERSION_CODES.JELLY_BEAN_MR1) { 5607db34d3dcaac936566f912e1b0b21f3f103029ffJonathan Dixon requiredAnnotation = JavascriptInterface.class; 5617db34d3dcaac936566f912e1b0b21f3f103029ffJonathan Dixon } 5627cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba mAwContents.addPossiblyUnsafeJavascriptInterface(obj, interfaceName, requiredAnnotation); 56346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 56446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 56546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 56646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void removeJavascriptInterface(String interfaceName) { 5677cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba mAwContents.removeJavascriptInterface(interfaceName); 56846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 56946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 57046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 57146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public WebSettings getSettings() { 57246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) if (mWebSettings == null) { 573420c0da3a4e06e1ac5574091e7c9c286ef012369Mikhail Naganov mWebSettings = new ContentSettingsAdapter(mAwContents.getSettings()); 57446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 57546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return mWebSettings; 57646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 57746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 57846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 57946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setMapTrackballToArrowKeys(boolean setMap) { 58046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // This is a deprecated API: intentional no-op. 58146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 58246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 58346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 58446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void flingScroll(int vx, int vy) { 5857cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba mAwContents.flingScroll(vx, vy); 58646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 58746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 58846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 58946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public View getZoomControls() { 590e78d6e40e4e78671e6621ba8cf49835568704899Jonathan Dixon // This was deprecated in 2009 and hidden in JB MR1, so just provide the minimum needed 591e78d6e40e4e78671e6621ba8cf49835568704899Jonathan Dixon // to stop very out-dated applications from crashing. 592e78d6e40e4e78671e6621ba8cf49835568704899Jonathan Dixon Log.w(TAG, "WebView doesn't support getZoomControls"); 593420c0da3a4e06e1ac5574091e7c9c286ef012369Mikhail Naganov return mAwContents.getSettings().supportZoom() ? new View(mWebView.getContext()) : null; 59446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 59546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 59646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 59746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean canZoomIn() { 5987cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba return mAwContents.canZoomIn(); 59946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 60046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 60146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 60246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean canZoomOut() { 6037cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba return mAwContents.canZoomOut(); 60446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 60546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 60646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 60746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean zoomIn() { 6087cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba return mAwContents.zoomIn(); 60946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 61046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 61146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 61246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean zoomOut() { 6137cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba return mAwContents.zoomOut(); 61446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 61546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 616d2dcef4d9edfb7af7abff85b0867c3d6a363feb7Jonathan Dixon @Override 61746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void dumpViewHierarchyWithProperties(BufferedWriter out, int level) { 61846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 61946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 62046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 621d2dcef4d9edfb7af7abff85b0867c3d6a363feb7Jonathan Dixon @Override 62246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public View findHierarchyView(String className, int hashCode) { 62346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 62446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return null; 62546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 62646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 62746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // WebViewProvider glue methods --------------------------------------------------------------- 62846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 62946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 63046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public WebViewProvider.ViewDelegate getViewDelegate() { 63146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return this; 63246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 63346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 63446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 63546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public WebViewProvider.ScrollDelegate getScrollDelegate() { 63646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return this; 63746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 63846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 63946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 64046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // WebViewProvider.ViewDelegate implementation ------------------------------------------------ 64146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 64246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 64346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean shouldDelayChildPressedState() { 64446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 64546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 64646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 64746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 64846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 64946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { 6507cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba mAwContents.onInitializeAccessibilityNodeInfo(info); 65146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 65246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 65346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 65446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onInitializeAccessibilityEvent(AccessibilityEvent event) { 6557cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba mAwContents.onInitializeAccessibilityEvent(event); 65646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 65746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 65846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 65946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean performAccessibilityAction(int action, Bundle arguments) { 660b7b706b2ed5cbb77dd690f5405b626a429989714Ben Murdoch if (mAwContents.supportsAccessibilityAction(action)) { 661b7b706b2ed5cbb77dd690f5405b626a429989714Ben Murdoch return mAwContents.performAccessibilityAction(action, arguments); 662b7b706b2ed5cbb77dd690f5405b626a429989714Ben Murdoch } 663b7b706b2ed5cbb77dd690f5405b626a429989714Ben Murdoch return mWebViewPrivate.super_performAccessibilityAction(action, arguments); 66446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 66546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 66646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 66746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setOverScrollMode(int mode) { 66846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 66946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 67046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 67146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 67246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setScrollBarStyle(int style) { 67346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 67446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 67546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 67646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 67746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onDrawVerticalScrollBar(Canvas canvas, Drawable scrollBar, 67846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) int l, int t, int r, int b) { 67946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 68046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 68146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 68246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 68346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) { 68446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 68546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 68646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 68746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 68846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onWindowVisibilityChanged(int visibility) { 6891cc4c3210fd2ea027bd6d883a15c3951476642bbJonathan Dixon mAwContents.onWindowVisibilityChanged(visibility); 69046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 69146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 69246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 69346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onDraw(Canvas canvas) { 6947ab33360e331e04f515d532064670e210d174a7aTao Bai mAwContents.onDraw(canvas); 69546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 69646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 69746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 69846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setLayoutParams(ViewGroup.LayoutParams layoutParams) { 69946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // TODO: This is the minimum implementation for HTMLViewer 70046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // bringup. Likely will need to go up to ContentViewCore for 70146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // a complete implementation. 70246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mWebViewPrivate.super_setLayoutParams(layoutParams); 70346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 70446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 70546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 70646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean performLongClick() { 707decc147cebc8f73d355c024d92c60d3f727cab31Bo Liu return mWebViewPrivate.super_performLongClick(); 70846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 70946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 71046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 71146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onConfigurationChanged(Configuration newConfig) { 7121cc4c3210fd2ea027bd6d883a15c3951476642bbJonathan Dixon mAwContents.onConfigurationChanged(newConfig); 71346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 71446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 71546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 71646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public InputConnection onCreateInputConnection(EditorInfo outAttrs) { 7177cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba return mAwContents.onCreateInputConnection(outAttrs); 71846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 71946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 72046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 72146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) { 72246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 72346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 72446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 72546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 72646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 72746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean onKeyDown(int keyCode, KeyEvent event) { 72846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 72946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 73046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 73146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 73246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 73346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean onKeyUp(int keyCode, KeyEvent event) { 7347cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba return mAwContents.onKeyUp(keyCode, event); 73546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 73646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 73746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 73846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onAttachedToWindow() { 7391cc4c3210fd2ea027bd6d883a15c3951476642bbJonathan Dixon mAwContents.onAttachedToWindow(); 74046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 74146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 74246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 74346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onDetachedFromWindow() { 7441cc4c3210fd2ea027bd6d883a15c3951476642bbJonathan Dixon mAwContents.onDetachedFromWindow(); 745a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon if (mGLfunctor != null) { 746a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon mGLfunctor.detach(); 747a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon } 74846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 74946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 75046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 75146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onVisibilityChanged(View changedView, int visibility) { 752c346a83062dfbf50ac2275813ccb2e36f9e778e9Martin Kosiba // The AwContents will find out the container view visibility before the first draw so we 753c346a83062dfbf50ac2275813ccb2e36f9e778e9Martin Kosiba // can safely ignore onVisibilityChanged callbacks that happen before init(). 754c346a83062dfbf50ac2275813ccb2e36f9e778e9Martin Kosiba if (mAwContents != null) { 755c346a83062dfbf50ac2275813ccb2e36f9e778e9Martin Kosiba mAwContents.onVisibilityChanged(changedView, visibility); 756c346a83062dfbf50ac2275813ccb2e36f9e778e9Martin Kosiba } 75746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 75846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 75946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 76046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onWindowFocusChanged(boolean hasWindowFocus) { 7611cc4c3210fd2ea027bd6d883a15c3951476642bbJonathan Dixon mAwContents.onWindowFocusChanged(hasWindowFocus); 76246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 76346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 76446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 76546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { 7661cc4c3210fd2ea027bd6d883a15c3951476642bbJonathan Dixon mAwContents.onFocusChanged(focused, direction, previouslyFocusedRect); 76746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 76846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 76946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 77046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean setFrame(int left, int top, int right, int bottom) { 7711cc4c3210fd2ea027bd6d883a15c3951476642bbJonathan Dixon // TODO(joth): This is the minimum implementation for initial 7721cc4c3210fd2ea027bd6d883a15c3951476642bbJonathan Dixon // bringup. Likely will need to go up to AwContents for a complete 7731cc4c3210fd2ea027bd6d883a15c3951476642bbJonathan Dixon // implementation, e.g. setting the compositor visible region (to 7741cc4c3210fd2ea027bd6d883a15c3951476642bbJonathan Dixon // avoid painting tiles that are offscreen due to the view's position). 77546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return mWebViewPrivate.super_setFrame(left, top, right, bottom); 77646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 77746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 77846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 77946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onSizeChanged(int w, int h, int ow, int oh) { 7801cc4c3210fd2ea027bd6d883a15c3951476642bbJonathan Dixon mAwContents.onSizeChanged(w, h, ow, oh); 78146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 78246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 78346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 78446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onScrollChanged(int l, int t, int oldl, int oldt) { 78546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 78646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 78746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 78846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean dispatchKeyEvent(KeyEvent event) { 7897cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba return mAwContents.dispatchKeyEvent(event); 79046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 79146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 79246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 79346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean onTouchEvent(MotionEvent ev) { 794c3fbc0fea57ba0dd4cf9eb8cc4d12f1b0edbcc5cBo Liu return mAwContents.onTouchEvent(ev); 79546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 79646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 79746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 79846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean onHoverEvent(MotionEvent event) { 799c3fbc0fea57ba0dd4cf9eb8cc4d12f1b0edbcc5cBo Liu return mAwContents.onHoverEvent(event); 80046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 80146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 80246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 80346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean onGenericMotionEvent(MotionEvent event) { 804c3fbc0fea57ba0dd4cf9eb8cc4d12f1b0edbcc5cBo Liu return mAwContents.onGenericMotionEvent(event); 80546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 80646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 80746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 80846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean onTrackballEvent(MotionEvent ev) { 80946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // Trackball event not handled, which eventually gets converted to DPAD keyevents 81046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 81146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 81246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 81346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 81446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean requestFocus(int direction, Rect previouslyFocusedRect) { 8154cee3bf50c125a52a49323aa999f4b619fa18c10Ben Murdoch mAwContents.requestFocus(); 81646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return mWebViewPrivate.super_requestFocus(direction, previouslyFocusedRect); 81746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 81846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 81946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 82046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 821d7bf6ab0cd8cc4005b112e4358eb797bb178a85fMarcin Kosiba mAwContents.onMeasure(widthMeasureSpec, heightMeasureSpec); 82246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 82346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 82446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 82546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean requestChildRectangleOnScreen(View child, Rect rect, boolean immediate) { 82646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 82746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 82846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 82946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 83046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 83146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setBackgroundColor(int color) { 83246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 83346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 83446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 83546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 83646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setLayerType(int layerType, Paint paint) { 83746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 83846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 83946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 8400b528e4924a7c14687181185bc66173ad18f00eaLeandro Gracia Gil @Override 84146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void preDispatchDraw(Canvas canvas) { 8420b528e4924a7c14687181185bc66173ad18f00eaLeandro Gracia Gil // TODO(leandrogracia): remove this method from WebViewProvider if we think 8430b528e4924a7c14687181185bc66173ad18f00eaLeandro Gracia Gil // we won't need it again. 84446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 84546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 84646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // WebViewProvider.ScrollDelegate implementation ---------------------------------------------- 84746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 84846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 84946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public int computeHorizontalScrollRange() { 8507cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba return mAwContents.computeHorizontalScrollRange(); 85146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 85246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 85346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 85446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public int computeHorizontalScrollOffset() { 8557cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba return mAwContents.computeHorizontalScrollOffset(); 85646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 85746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 85846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 85946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public int computeVerticalScrollRange() { 8607cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba return mAwContents.computeVerticalScrollRange(); 86146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 86246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 86346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 86446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public int computeVerticalScrollOffset() { 8657cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba return mAwContents.computeVerticalScrollOffset(); 86646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 86746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 86846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 86946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public int computeVerticalScrollExtent() { 8707cb3dd1c0aca371b628b80afa69c58638de30fa1Martin Kosiba return mAwContents.computeVerticalScrollExtent(); 87146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 87246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 87346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 87446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void computeScroll() { 87546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // BUG=http://b/6029133 8764a0a38f783cb93f6a600da3ab296b72499239ffbJonathan Dixon // Too much log spam: UnimplementedWebViewApi.invoke(); 87746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 87846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 8794702a6de6031477029de5e6f5777c8b3e7846d35Marcin Kosiba // AwContents.InternalAccessDelegate implementation -------------------------------------- 8804702a6de6031477029de5e6f5777c8b3e7846d35Marcin Kosiba private class InternalAccessAdapter implements AwContents.InternalAccessDelegate { 88146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 88246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean drawChild(Canvas arg0, View arg1, long arg2) { 88346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 88446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 88546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 88646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 88746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 88846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean super_onKeyUp(int arg0, KeyEvent arg1) { 88946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 89046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 89146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 89246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 89346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 89446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean super_dispatchKeyEventPreIme(KeyEvent arg0) { 89546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 89646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 89746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 89846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 89946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 90046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean super_dispatchKeyEvent(KeyEvent event) { 90146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return mWebViewPrivate.super_dispatchKeyEvent(event); 90246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 90346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 90446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 90546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean super_onGenericMotionEvent(MotionEvent arg0) { 90646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 90746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 90846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 90946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 91046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 91146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void super_onConfigurationChanged(Configuration arg0) { 91246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 91346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 91446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 91546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 91646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onScrollChanged(int l, int t, int oldl, int oldt) { 91746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mWebViewPrivate.setScrollXRaw(l); 91846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mWebViewPrivate.setScrollYRaw(t); 91946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mWebViewPrivate.onScrollChanged(l, t, oldl, oldt); 92046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 92146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 92246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 92346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean awakenScrollBars() { 92446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mWebViewPrivate.awakenScrollBars(0); 92546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // TODO: modify the WebView.PrivateAccess to provide a return value. 92646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return true; 92746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 92846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 92946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 93046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean super_awakenScrollBars(int arg0, boolean arg1) { 93146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // TODO: need method on WebView.PrivateAccess? 93246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 93346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 93446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 9354702a6de6031477029de5e6f5777c8b3e7846d35Marcin Kosiba 936d7bf6ab0cd8cc4005b112e4358eb797bb178a85fMarcin Kosiba @Override 9374702a6de6031477029de5e6f5777c8b3e7846d35Marcin Kosiba public void setMeasuredDimension(int measuredWidth, int measuredHeight) { 9384702a6de6031477029de5e6f5777c8b3e7846d35Marcin Kosiba mWebViewPrivate.setMeasuredDimension(measuredWidth, measuredHeight); 9394702a6de6031477029de5e6f5777c8b3e7846d35Marcin Kosiba } 94051f7cf16cd02f14050bb723175a2a57570e8486dTao Bai 9417ab33360e331e04f515d532064670e210d174a7aTao Bai @Override 94251f7cf16cd02f14050bb723175a2a57570e8486dTao Bai public boolean requestDrawGL(Canvas canvas) { 9437ab33360e331e04f515d532064670e210d174a7aTao Bai if (mGLfunctor == null) { 9447ab33360e331e04f515d532064670e210d174a7aTao Bai mGLfunctor = new DrawGLFunctor(mAwContents.getAwDrawGLViewContext()); 9457ab33360e331e04f515d532064670e210d174a7aTao Bai } 94651f7cf16cd02f14050bb723175a2a57570e8486dTao Bai return mGLfunctor.requestDrawGL((HardwareCanvas)canvas, mWebView.getViewRootImpl()); 94751f7cf16cd02f14050bb723175a2a57570e8486dTao Bai } 94846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 94946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)} 950