WebViewChromium.java revision a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3
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; 30a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixonimport android.view.HardwareCanvas; 3146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.view.KeyEvent; 3246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.view.MotionEvent; 3346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.view.View; 3446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.view.ViewGroup; 3546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.view.accessibility.AccessibilityEvent; 3646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.view.accessibility.AccessibilityNodeInfo; 3746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.view.inputmethod.EditorInfo; 3846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.view.inputmethod.InputConnection; 3946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.webkit.DownloadListener; 4046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.webkit.ValueCallback; 4146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.webkit.WebBackForwardList; 4246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.webkit.WebChromeClient; 4346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.webkit.WebSettings; 4446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.webkit.WebView; 4546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.webkit.WebViewClient; 4646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.webkit.WebViewProvider; 4746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 4846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import org.chromium.android_webview.AwContents; 4946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import org.chromium.android_webview.AwNativeWindow; 5046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import org.chromium.content.browser.ContentViewCore; 5146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import org.chromium.content.browser.ContentViewDownloadDelegate; 5246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import org.chromium.content.browser.LoadUrlParams; 5346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import org.chromium.net.NetworkChangeNotifier; 5446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 5546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import java.io.BufferedWriter; 5646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import java.io.File; 5746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import java.util.Map; 5846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 5946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)/** 6046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * This class is the delegate to which WebViewProxy forwards all API calls. 6146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * 6246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * Most of the actual functionality is implemented by ContentViewCore. This 6346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * class also contains WebView-specific APIs that require the creation of other 6446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * adapters (otherwise org.chromium.content would depend on the webview.chromium 6546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * package) some simple APIs (like is Paused) and a small set of no-op 6646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * deprecated APIs. 6746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) */ 6846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)class WebViewChromium implements WebViewProvider, 6946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) WebViewProvider.ScrollDelegate, WebViewProvider.ViewDelegate { 7046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // The WebView that this WebViewChromium is the provider for. 7146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) WebView mWebView; 7246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // Lets us access protected View-derived methods on the WebView instance we're backing. 7346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) WebView.PrivateAccess mWebViewPrivate; 7446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // The client adapter class. 7546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) private WebViewContentsClientAdapter mContentsClientAdapter; 7646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 7746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // Variables for functionality provided by this adapter --------------------------------------- 7846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // Is the WebView paused? 7946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) private boolean mIsPaused; 8046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // WebSettings adapter, lazily initialized in the getter 8146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) private WebSettings mWebSettings; 823949435b480cb71106f65b237025da359cf8a8caBen Murdoch // The WebView wrapper for ContentViewCore and required browser compontents. 8346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) private AwContents mAwContents; 84a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon // Non-null if this webview is using the GL accelerated draw path. 85a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon private DrawGLFunctor mGLfunctor; 8646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 8746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public WebViewChromium(WebView webView, WebView.PrivateAccess webViewPrivate) { 8846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mWebView = webView; 8946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mWebViewPrivate = webViewPrivate; 9046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 9146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 9246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // WebViewProvider methods -------------------------------------------------------------------- 9346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 9446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 9546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void init(Map<String, Object> javaScriptInterfaces, boolean privateBrowsing) { 9646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // TODO: BUG=6790250 javaScriptInterfaces were only ever used by DumpRenderTree and should 9746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // probably be implemented as a hidden hook in WebViewClassic. 9846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 9946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) final boolean isAccessFromFileURLsGrantedByDefault = 10046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mWebView.getContext().getApplicationInfo().targetSdkVersion < 10146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) Build.VERSION_CODES.JELLY_BEAN; 10246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mContentsClientAdapter = new WebViewContentsClientAdapter(mWebView); 1033949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents = new AwContents(mWebView, new InternalAccessAdapter(), mContentsClientAdapter, 1043949435b480cb71106f65b237025da359cf8a8caBen Murdoch new AwNativeWindow(mWebView.getContext()), privateBrowsing, 10546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) isAccessFromFileURLsGrantedByDefault); 10646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 1073949435b480cb71106f65b237025da359cf8a8caBen Murdoch // At this point we now have the native AwContents and WebContents created and code 10846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // that requires them can now be called. 10946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 11046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 11146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 11246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setHorizontalScrollbarOverlay(boolean overlay) { 11346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 11446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 11546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 11646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 11746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setVerticalScrollbarOverlay(boolean overlay) { 11846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 11946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 12046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 12146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 12246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean overlayHorizontalScrollbar() { 12346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 12446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 12546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 12646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 12746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 12846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean overlayVerticalScrollbar() { 12946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 13046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 13146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 13246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 13346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 13446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public int getVisibleTitleHeight() { 13546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // This is deprecated in WebView and should always return 0. 13646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return 0; 13746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 13846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 13946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 14046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public SslCertificate getCertificate() { 14146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return mAwContents.getCertificate(); 14246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 14346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 14446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 14546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setCertificate(SslCertificate certificate) { 14646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 14746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 14846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 14946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 15046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void savePassword(String host, String username, String password) { 15146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 15246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 15346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 15446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 15546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setHttpAuthUsernamePassword(String host, String realm, String username, 15646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) String password) { 15746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.setHttpAuthUsernamePassword(host, realm, username, password); 15846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 15946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 16046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 16146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public String[] getHttpAuthUsernamePassword(String host, String realm) { 16246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return mAwContents.getHttpAuthUsernamePassword(host, realm); 16346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 16446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 16546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 16646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void destroy() { 1673949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.destroy(); 168a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon if (mGLfunctor != null) { 169a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon mGLfunctor.destroy(); 170a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon mGLfunctor = null; 171a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon } 17246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 17346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 17446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 17546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setNetworkAvailable(boolean networkUp) { 17646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) NetworkChangeNotifier.forceConnectivityState(networkUp); 17746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 17846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 17946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 18046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public WebBackForwardList saveState(Bundle outState) { 18146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 18246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return null; 18346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 18446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 18546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 18646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean savePicture(Bundle b, File dest) { 18746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 18846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 18946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 19046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 19146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 19246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean restorePicture(Bundle b, File src) { 19346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 19446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 19546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 19646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 19746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 19846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public WebBackForwardList restoreState(Bundle inState) { 19946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 20046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return null; 20146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 20246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 20346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 20446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void loadUrl(String url, Map<String, String> additionalHttpHeaders) { 20546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // TODO: We may actually want to do some sanity checks here (like filter about://chrome). 20646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) LoadUrlParams params = new LoadUrlParams(url); 20746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) if (additionalHttpHeaders != null) params.setExtraHeaders(additionalHttpHeaders); 20846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.loadUrl(params); 20946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 21046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 21146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 21246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void loadUrl(String url) { 21346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) loadUrl(url, null); 21446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 21546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 21646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 21746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void postUrl(String url, byte[] postData) { 21846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.loadUrl(LoadUrlParams.createLoadHttpPostParams( 21946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) url, postData)); 22046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 22146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 22246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) private static boolean isBase64Encoded(String encoding) { 22346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return "base64".equals(encoding); 22446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 22546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 22646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 22746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void loadData(String data, String mimeType, String encoding) { 22846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.loadUrl(LoadUrlParams.createLoadDataParams( 22946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) data, mimeType, isBase64Encoded(encoding))); 23046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 23146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 23246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 23346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, 23446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) String historyUrl) { 23546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) if (baseUrl == null || baseUrl.length() == 0) baseUrl = "about:blank"; 23646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.loadUrl(LoadUrlParams.createLoadDataParamsWithBaseUrl( 23746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) data, mimeType, isBase64Encoded(encoding), baseUrl, historyUrl)); 23846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 23946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 24046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 24146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void saveWebArchive(String filename) { 24246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) saveWebArchive(filename, false, null); 24346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 24446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 24546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 24646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void saveWebArchive(String basename, boolean autoname, ValueCallback<String> callback) { 24746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.saveWebArchive(basename, autoname, callback); 24846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 24946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 25046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 25146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void stopLoading() { 2523949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().stopLoading(); 25346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 25446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 25546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 25646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void reload() { 2573949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().reload(); 25846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 25946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 26046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 26146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean canGoBack() { 2623949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().canGoBack(); 26346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 26446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 26546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 26646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void goBack() { 2673949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().goBack(); 26846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 26946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 27046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 27146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean canGoForward() { 2723949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().canGoForward(); 27346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 27446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 27546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 27646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void goForward() { 2773949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().goForward(); 27846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 27946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 28046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 28146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean canGoBackOrForward(int steps) { 2823949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().canGoToOffset(steps); 28346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 28446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 28546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 28646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void goBackOrForward(int steps) { 2873949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().goToOffset(steps); 28846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 28946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 29046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 29146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean isPrivateBrowsingEnabled() { 29246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 29346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 29446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 29546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 29646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 29746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean pageUp(boolean top) { 2983949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().pageUp(top); 29946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 30046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 30146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 30246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean pageDown(boolean bottom) { 3033949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().pageDown(bottom); 30446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 30546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 30646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 30746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void clearView() { 30846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 30946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 31046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 31146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 31246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public Picture capturePicture() { 31346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 31446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return null; 31546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 31646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 31746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 31846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public float getScale() { 3193949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().getScale(); 32046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 32146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 32246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 32346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setInitialScale(int scaleInPercent) { 32446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 32546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 32646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 32746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 32846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void invokeZoomPicker() { 3293949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().invokeZoomPicker(); 33046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 33146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 33246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 33346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public WebView.HitTestResult getHitTestResult() { 33446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 33546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return null; 33646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 33746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 33846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 33946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void requestFocusNodeHref(Message hrefMsg) { 34046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 34146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 34246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 34346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 34446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void requestImageRef(Message msg) { 34546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 34646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 34746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 34846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 34946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public String getUrl() { 3503949435b480cb71106f65b237025da359cf8a8caBen Murdoch String url = mAwContents.getContentViewCore().getUrl(); 35146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) if (url == null || url.trim().isEmpty()) return null; 35246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return url; 35346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 35446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 35546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 35646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public String getOriginalUrl() { 35746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) String url = mAwContents.getOriginalUrl(); 35846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) if (url == null || url.trim().isEmpty()) return null; 35946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return url; 36046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 36146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 36246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 36346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public String getTitle() { 3643949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().getTitle(); 36546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 36646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 36746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 36846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public Bitmap getFavicon() { 36946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 37046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return null; 37146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 37246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 37346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 37446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public String getTouchIconUrl() { 37546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 37646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return null; 37746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 37846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 37946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 38046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public int getProgress() { 38146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return mAwContents.getMostRecentProgress(); 38246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 38346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 38446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 38546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public int getContentHeight() { 3863949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().getContentHeight(); 38746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 38846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 38946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 39046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public int getContentWidth() { 3913949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().getContentWidth(); 39246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 39346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 39446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 39546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void pauseTimers() { 3963949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().onActivityPause(); 39746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 39846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 39946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 40046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void resumeTimers() { 4013949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().onActivityResume(); 40246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 40346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 40446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 40546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onPause() { 40646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mIsPaused = true; 4073949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().onHide(); 40846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 40946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 41046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 41146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onResume() { 4123949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().onShow(); 41346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mIsPaused = false; 41446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 41546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 41646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 41746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean isPaused() { 41846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return mIsPaused; 41946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 42046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 42146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 42246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void freeMemory() { 42346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 42446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 42546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 42646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 42746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void clearCache(boolean includeDiskFiles) { 42846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.clearCache(includeDiskFiles); 42946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 43046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 43146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 43246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void clearFormData() { 43346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 43446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 43546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 43646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 43746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void clearHistory() { 4383949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().clearHistory(); 43946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 44046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 44146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 44246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void clearSslPreferences() { 4433949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().clearSslPreferences(); 44446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 44546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 44646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 44746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public WebBackForwardList copyBackForwardList() { 44846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 44946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return null; 45046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 45146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 45246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 45346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setFindListener(WebView.FindListener listener) { 45446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mContentsClientAdapter.setFindListener(listener); 45546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 45646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 45746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 45846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void findNext(boolean forwards) { 45946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.findNext(forwards); 46046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 46146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 46246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 46346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public int findAll(String searchString) { 46446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return mAwContents.findAllSync(searchString); 46546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 46646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 46746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 46846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void findAllAsync(String searchString) { 46946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.findAllAsync(searchString); 47046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 47146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 47246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 47346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean showFindDialog(String text, boolean showIme) { 47446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 47546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 47646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 47746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 47846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 47946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void clearMatches() { 48046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.clearMatches(); 48146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 48246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 48346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 48446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void documentHasImages(Message response) { 48546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.documentHasImages(response); 48646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 48746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 48846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 48946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setWebViewClient(WebViewClient client) { 49046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mContentsClientAdapter.setWebViewClient(client); 49146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 49246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 49346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) static class DownloadListenerAdapter implements ContentViewDownloadDelegate { 49446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) private DownloadListener mListener; 49546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 49646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public DownloadListenerAdapter(DownloadListener listener) { 49746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mListener = listener; 49846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 49946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 50046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 50146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void requestHttpGetDownload(String url, String userAgent, String contentDisposition, 50246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) String mimetype, String cookie, String referer, long contentLength) { 50346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mListener.onDownloadStart(url, userAgent, contentDisposition, mimetype, contentLength); 50446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 50546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 50646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 50746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onHttpPostDownloadStarted() {} 50846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 50946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 51046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onHttpPostDownloadCompleted(String url, String mimetype, String path, 51146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) long contentLength, boolean successful) {} 51246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 51346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 51446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 51546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setDownloadListener(DownloadListener listener) { 5163949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().setDownloadDelegate(new DownloadListenerAdapter(listener)); 51746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 51846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 51946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 52046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setWebChromeClient(WebChromeClient client) { 52146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mContentsClientAdapter.setWebChromeClient(client); 52246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 52346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 52446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 52546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setPictureListener(WebView.PictureListener listener) { 52646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mContentsClientAdapter.setPictureListener(listener); 52746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 52846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 52946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 53046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void addJavascriptInterface(Object obj, String interfaceName) { 53146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // We do not require the @JavascriptInterface annotation on injected methods 53246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // for WebView API compatibility. 5333949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().addJavascriptInterface(obj, interfaceName, false); 53446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 53546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 53646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 53746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void removeJavascriptInterface(String interfaceName) { 5383949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().removeJavascriptInterface(interfaceName); 53946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 54046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 54146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 54246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public WebSettings getSettings() { 54346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) if (mWebSettings == null) { 54446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mWebSettings = new ContentSettingsAdapter( 5453949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().getContentSettings(), 54646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mAwContents.getSettings()); 54746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 54846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return mWebSettings; 54946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 55046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 55146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 55246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setMapTrackballToArrowKeys(boolean setMap) { 55346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // This is a deprecated API: intentional no-op. 55446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 55546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 55646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 55746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void flingScroll(int vx, int vy) { 5583949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().flingScroll(vx, vy); 55946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 56046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 56146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 56246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public View getZoomControls() { 56346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 56446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return null; 56546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 56646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 56746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 56846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean canZoomIn() { 5693949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().canZoomIn(); 57046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 57146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 57246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 57346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean canZoomOut() { 5743949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().canZoomOut(); 57546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 57646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 57746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 57846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean zoomIn() { 5793949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().zoomIn(); 58046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 58146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 58246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 58346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean zoomOut() { 5843949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().zoomOut(); 58546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 58646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 58746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // TODO: This should @Override the base class method, but the method 58846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // exists only in the Android-master source. So to keep compiling on both 58946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // Android-master and Android-jb-dev, omit the annotation. When we no longer 59046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // need to build with jb-dev, add the annotation. 59146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void dumpViewHierarchyWithProperties(BufferedWriter out, int level) { 59246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 59346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 59446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 59546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // TODO: This should @Override the base class method, but the method 59646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // exists only in the Android-master source. So to keep compiling on both 59746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // Android-master and Android-jb-dev, omit the annotation. When we no longer 59846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // need to build with jb-dev, add the annotation. 59946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public View findHierarchyView(String className, int hashCode) { 60046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 60146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return null; 60246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 60346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 60446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // WebViewProvider glue methods --------------------------------------------------------------- 60546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 60646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 60746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public WebViewProvider.ViewDelegate getViewDelegate() { 60846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return this; 60946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 61046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 61146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 61246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public WebViewProvider.ScrollDelegate getScrollDelegate() { 61346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return this; 61446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 61546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 61646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 61746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // WebViewProvider JB migration methods ------------------------------------------------------- 61846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 61946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // TODO: These methods are removed from the base class in 62046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // Android-master, but we keep them here to ensure that the glue 62146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // layer builds in an Android-jb-dev tree. Once we no longer 62246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // need to compile the glue against jb-dev, remove this method. 62346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 62446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void debugDump() { 62546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // This is deprecated and now does nothing. 62646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 62746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 62846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void emulateShiftHeld() { 62946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // This is deprecated and now does nothing. 63046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 63146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 63246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // WebViewProvider.ViewDelegate implementation ------------------------------------------------ 63346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 63446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 63546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean shouldDelayChildPressedState() { 63646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 63746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 63846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 63946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 64046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 64146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { 6423949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().onInitializeAccessibilityNodeInfo(info); 64346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 64446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 64546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 64646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onInitializeAccessibilityEvent(AccessibilityEvent event) { 6473949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().onInitializeAccessibilityEvent(event); 64846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 64946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 65046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // TODO: Update WebView to mimic ContentView implementation for the 65146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // real View#performAccessibilityAction(int, Bundle). This method has different behavior. 65246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // See ContentViewCore#performAccessibilityAction(int, Bundle) for more details. 65346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 65446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean performAccessibilityAction(int action, Bundle arguments) { 6553949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().performAccessibilityAction(action, arguments); 65646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 65746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 65846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 65946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setOverScrollMode(int mode) { 66046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 66146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 66246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 66346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 66446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setScrollBarStyle(int style) { 66546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 66646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 66746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 66846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 66946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onDrawVerticalScrollBar(Canvas canvas, Drawable scrollBar, 67046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) int l, int t, int r, int b) { 67146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 67246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 67346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 67446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 67546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) { 67646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 67746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 67846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 67946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 68046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onWindowVisibilityChanged(int visibility) { 68146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 68246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 68346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 68446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 68546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onDraw(Canvas canvas) { 686a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon if (canvas.isHardwareAccelerated() && mAwContents.onPrepareDrawGL(canvas)) { 687a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon if (mGLfunctor == null) { 688a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon mGLfunctor = new DrawGLFunctor(mAwContents.getAwDrawGLViewContext()); 689a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon } 690a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon mGLfunctor.requestDrawGL((HardwareCanvas) canvas, mWebView.getViewRootImpl()); 691a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon } else { 692a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon mAwContents.onDraw(canvas); 693a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon } 69446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 69546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 69646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 69746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setLayoutParams(ViewGroup.LayoutParams layoutParams) { 69846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // TODO: This is the minimum implementation for HTMLViewer 69946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // bringup. Likely will need to go up to ContentViewCore for 70046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // a complete implementation. 70146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mWebViewPrivate.super_setLayoutParams(layoutParams); 70246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 70346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 70446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 70546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean performLongClick() { 70646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 70746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 70846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 70946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 71046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 71146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onConfigurationChanged(Configuration newConfig) { 7123949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().onConfigurationChanged(newConfig); 71346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 71446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 71546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 71646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public InputConnection onCreateInputConnection(EditorInfo outAttrs) { 7173949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().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) { 7343949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().onKeyUp(keyCode, event); 73546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 73646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 73746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 73846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onAttachedToWindow() { 7393949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().onAttachedToWindow(); 74046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 74146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 74246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 74346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onDetachedFromWindow() { 7443949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().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) { 75246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 75346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 75446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 75546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 75646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onWindowFocusChanged(boolean hasWindowFocus) { 75746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 75846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 75946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 76046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 76146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { 7623949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().onFocusChanged(focused, direction, previouslyFocusedRect); 76346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 76446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 76546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 76646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean setFrame(int left, int top, int right, int bottom) { 76746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // TODO(benm): This is the minimum implementation for HTMLViewer 76846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // bringup. Likely will need to go up to ContentViewCore for 76946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // a complete implementation. 77046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return mWebViewPrivate.super_setFrame(left, top, right, bottom); 77146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 77246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 77346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 77446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onSizeChanged(int w, int h, int ow, int oh) { 7753949435b480cb71106f65b237025da359cf8a8caBen Murdoch mAwContents.getContentViewCore().onSizeChanged(w, h, ow, oh); 77646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 77746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 77846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 77946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onScrollChanged(int l, int t, int oldl, int oldt) { 78046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 78146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 78246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 78346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean dispatchKeyEvent(KeyEvent event) { 7843949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().dispatchKeyEvent(event); 78546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 78646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 78746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 78846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean onTouchEvent(MotionEvent ev) { 7893949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().onTouchEvent(ev); 79046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 79146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 79246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 79346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean onHoverEvent(MotionEvent event) { 79446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 79546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 79646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 79746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 79846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 79946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean onGenericMotionEvent(MotionEvent event) { 80046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 80146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 80246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 80346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 80446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 80546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean onTrackballEvent(MotionEvent ev) { 80646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // Trackball event not handled, which eventually gets converted to DPAD keyevents 80746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 80846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 80946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 81046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 81146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean requestFocus(int direction, Rect previouslyFocusedRect) { 81246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return mWebViewPrivate.super_requestFocus(direction, previouslyFocusedRect); 81346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 81446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 81546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 81646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 81746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 81846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 81946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 82046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 82146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean requestChildRectangleOnScreen(View child, Rect rect, boolean immediate) { 82246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 82346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 82446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 82546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 82646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 82746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setBackgroundColor(int color) { 82846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 82946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 83046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 83146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 83246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void setLayerType(int layerType, Paint paint) { 83346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 83446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 83546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 83646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // No @Override for now to keep bots happy. 83746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void preDispatchDraw(Canvas canvas) { 83846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // ContentViewCore handles drawing the scroll internally, therefore 83946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // we need to compensate for the canvas transform already applied 84046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // by the framework due to changes to the WebView's scrollX/Y. 84146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) canvas.translate(mWebView.getScrollX(), mWebView.getScrollY()); 84246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 84346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 84446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // WebViewProvider.ScrollDelegate implementation ---------------------------------------------- 84546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 84646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 84746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public int computeHorizontalScrollRange() { 8483949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().computeHorizontalScrollRange(); 84946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 85046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 85146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 85246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public int computeHorizontalScrollOffset() { 8533949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().computeHorizontalScrollOffset(); 85446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 85546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 85646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 85746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public int computeVerticalScrollRange() { 8583949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().computeVerticalScrollRange(); 85946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 86046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 86146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 86246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public int computeVerticalScrollOffset() { 8633949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().computeVerticalScrollOffset(); 86446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 86546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 86646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 86746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public int computeVerticalScrollExtent() { 8683949435b480cb71106f65b237025da359cf8a8caBen Murdoch return mAwContents.getContentViewCore().computeVerticalScrollExtent(); 86946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 87046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 87146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 87246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void computeScroll() { 87346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // BUG=http://b/6029133 87446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 87546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 87646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 87746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // ContentViewCore.InternalAccessDelegate implementation -------------------------------------- 87846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) private class InternalAccessAdapter implements ContentViewCore.InternalAccessDelegate { 87946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 88046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 88146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean drawChild(Canvas arg0, View arg1, long arg2) { 88246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 88346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 88446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 88546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 88646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 88746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean super_onKeyUp(int arg0, KeyEvent arg1) { 88846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 88946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 89046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 89146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 89246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 89346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean super_dispatchKeyEventPreIme(KeyEvent arg0) { 89446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 89546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 89646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 89746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 89846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 89946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean super_dispatchKeyEvent(KeyEvent event) { 90046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return mWebViewPrivate.super_dispatchKeyEvent(event); 90146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 90246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 90346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 90446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean super_onGenericMotionEvent(MotionEvent arg0) { 90546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 90646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 90746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 90846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 90946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 91046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void super_onConfigurationChanged(Configuration arg0) { 91146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 91246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 91346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 91446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 91546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onScrollChanged(int l, int t, int oldl, int oldt) { 91646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mWebViewPrivate.setScrollXRaw(l); 91746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mWebViewPrivate.setScrollYRaw(t); 91846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mWebViewPrivate.onScrollChanged(l, t, oldl, oldt); 91946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 92046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 92146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 92246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean awakenScrollBars() { 92346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) mWebViewPrivate.awakenScrollBars(0); 92446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // TODO: modify the WebView.PrivateAccess to provide a return value. 92546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return true; 92646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 92746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 92846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) @Override 92946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public boolean super_awakenScrollBars(int arg0, boolean arg1) { 93046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // TODO: need method on WebView.PrivateAccess? 93146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) UnimplementedWebViewApi.invoke(); 93246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) return false; 93346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 93446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 93546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // TODO: Remove this method. It is not planned to get upstreamed. 93646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) // @Override 93746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) public void onSurfaceTextureUpdated() { 93846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 93946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) } 94046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)} 941