ContentView.java revision 5821806d5e7f356e8fa4b058a389a808ea183019
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)package org.chromium.content.browser; 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.app.Activity; 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.content.Context; 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.content.res.Configuration; 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.graphics.Bitmap; 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.graphics.Canvas; 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.graphics.Rect; 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.os.Build; 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.util.AttributeSet; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.view.KeyEvent; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.view.MotionEvent; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.view.View; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.view.accessibility.AccessibilityEvent; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.view.accessibility.AccessibilityNodeInfo; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.view.inputmethod.EditorInfo; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.view.inputmethod.InputConnection; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.widget.FrameLayout; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.content.common.TraceEvent; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.ui.gfx.NativeWindow; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import java.util.ArrayList; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The containing view for {@link ContentViewCore} that exists in the Android UI hierarchy and 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * exposes the various {@link View} functionality to it. 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * TODO(joth): Remove any methods overrides from this class that were added for WebView 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * compatibility. 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)public class ContentView extends FrameLayout implements ContentViewCore.InternalAccessDelegate { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The following constants match the ones in chrome/common/page_transition_types.h. 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add more if you need them. 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public static final int PAGE_TRANSITION_LINK = 0; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public static final int PAGE_TRANSITION_TYPED = 1; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public static final int PAGE_TRANSITION_AUTO_BOOKMARK = 2; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public static final int PAGE_TRANSITION_GENERATED = 5; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public static final int PAGE_TRANSITION_START_PAGE = 6; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Flag that should be ORed to the page transition when a navigation is initiated from the 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // omnibox. 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public static final int PAGE_TRANSITION_FROM_ADDRESS_BAR = 0x02000000; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Used when ContentView implements a standalone View. 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public static final int PERSONALITY_VIEW = ContentViewCore.PERSONALITY_VIEW; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Used for Chrome. 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public static final int PERSONALITY_CHROME = ContentViewCore.PERSONALITY_CHROME; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Automatically decide the number of renderer processes to use based on device memory class. 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * */ 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public static final int MAX_RENDERERS_AUTOMATIC = AndroidBrowserProcess.MAX_RENDERERS_AUTOMATIC; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use single-process mode that runs the renderer on a separate thread in the main application. 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public static final int MAX_RENDERERS_SINGLE_PROCESS = 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AndroidBrowserProcess.MAX_RENDERERS_SINGLE_PROCESS; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Cap on the maximum number of renderer processes that can be requested. 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public static final int MAX_RENDERERS_LIMIT = AndroidBrowserProcess.MAX_RENDERERS_LIMIT; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Allow a callback to be notified when the SurfaceTexture of the TextureView has been 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * updated. 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * TODO(nileshagrawal): Remove this interface. 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public static interface SurfaceTextureUpdatedListener { 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Called when the {@link android.graphics.SurfaceTexture} of the 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * {@link android.view.TextureView} held in this ContentView has been updated. 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param view The ContentView that was updated. 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void onSurfaceTextureUpdated(ContentView view); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Enable multi-process ContentView. This should be called by the application before 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * constructing any ContentView instances. If enabled, ContentView will run renderers in 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * separate processes up to the number of processes specified by maxRenderProcesses. If this is 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * not called then the default is to run the renderer in the main application on a separate 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * thread. 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param context Context used to obtain the application context. 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param maxRendererProcesses Limit on the number of renderers to use. Each tab runs in its own 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * process until the maximum number of processes is reached. The special value of 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * MAX_RENDERERS_SINGLE_PROCESS requests single-process mode where the renderer will run in the 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * application process in a separate thread. If the special value MAX_RENDERERS_AUTOMATIC is 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * used then the number of renderers will be determined based on the device memory class. The 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * maximum number of allowed renderers is capped by MAX_RENDERERS_LIMIT. 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Whether the process actually needed to be initialized (false if already running). 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public static boolean enableMultiProcess(Context context, int maxRendererProcesses) { 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ContentViewCore.enableMultiProcess(context, maxRendererProcesses); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Initialize the process as the platform browser. This must be called before accessing 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ContentView in order to treat this as a Chromium browser process. 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param context Context used to obtain the application context. 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param maxRendererProcesses Same as ContentView.enableMultiProcess() 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Whether the process actually needed to be initialized (false if already running). 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public static boolean initChromiumBrowserProcess(Context context, int maxRendererProcesses) { 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ContentViewCore.initChromiumBrowserProcess(context, maxRendererProcesses); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Used for showing a temporary bitmap while the actual texture is being drawn. 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private final ArrayList<SurfaceTextureUpdatedListener> mSurfaceTextureUpdatedListeners = 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new ArrayList<SurfaceTextureUpdatedListener>(); 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private ContentViewCore mContentViewCore; 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Creates an instance of a ContentView. 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param context The Context the view is running in, through which it can 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * access the current theme, resources, etc. 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param nativeWebContents A pointer to the native web contents. 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param nativeWindow An instance of the NativeWindow. 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param personality One of {@link #PERSONALITY_CHROME} or {@link #PERSONALITY_VIEW}. 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A ContentView instance. 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public static ContentView newInstance(Context context, int nativeWebContents, 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NativeWindow nativeWindow, int personality) { 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return newInstance(context, nativeWebContents, nativeWindow, null, 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) android.R.attr.webViewStyle, personality); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Creates an instance of a ContentView. 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param context The Context the view is running in, through which it can 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * access the current theme, resources, etc. 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param nativeWebContents A pointer to the native web contents. 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param nativeWindow An instance of the NativeWindow. 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param attrs The attributes of the XML tag that is inflating the view. 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A ContentView instance. 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public static ContentView newInstance(Context context, int nativeWebContents, 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NativeWindow nativeWindow, AttributeSet attrs) { 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(klobag): use the WebViewStyle as the default style for now. It enables scrollbar. 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // When ContentView is moved to framework, we can define its own style in the res. 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return newInstance(context, nativeWebContents, nativeWindow, attrs, 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) android.R.attr.webViewStyle); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Creates an instance of a ContentView. 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param context The Context the view is running in, through which it can 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * access the current theme, resources, etc. 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param nativeWebContents A pointer to the native web contents. 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param nativeWindow An instance of the NativeWindow. 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param attrs The attributes of the XML tag that is inflating the view. 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param defStyle The default style to apply to this view. 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A ContentView instance. 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public static ContentView newInstance(Context context, int nativeWebContents, 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NativeWindow nativeWindow, AttributeSet attrs, int defStyle) { 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return newInstance(context, nativeWebContents, nativeWindow, attrs, defStyle, 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PERSONALITY_VIEW); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private static ContentView newInstance(Context context, int nativeWebContents, 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NativeWindow nativeWindow, AttributeSet attrs, int defStyle, int personality) { 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return new ContentView(context, nativeWebContents, nativeWindow, attrs, defStyle, 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) personality); 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return new JellyBeanContentView(context, nativeWebContents, nativeWindow, attrs, 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) defStyle, personality); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected ContentView(Context context, int nativeWebContents, NativeWindow nativeWindow, 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AttributeSet attrs, int defStyle, int personality) { 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) super(context, attrs, defStyle); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore = new ContentViewCore(context, personality); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.initialize(this, this, nativeWebContents, nativeWindow, false); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return The core component of the ContentView that handles JNI communication. Should only be 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * used for passing to native. 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public ContentViewCore getContentViewCore() { 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore; 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Allows an external source to listen to SurfaceTexture updates. 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param listener 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void registerSurfaceTextureListener(SurfaceTextureUpdatedListener listener) { 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!mSurfaceTextureUpdatedListeners.contains(listener)) { 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mSurfaceTextureUpdatedListeners.add(listener); 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Unregisters the current external listener that waits for SurfaceTexture updates. 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void unregisterSurfaceTextureListener(SurfaceTextureUpdatedListener listener) { 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mSurfaceTextureUpdatedListeners.remove(listener); 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns true if the given Activity has hardware acceleration enabled 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * in its manifest, or in its foreground window. 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * TODO(husky): Remove when ContentViewCore.initialize() is refactored (see TODO there) 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * TODO(dtrainor) This is still used by other classes. Make sure to pull some version of this 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * out before removing it. 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public static boolean hasHardwareAcceleration(Activity activity) { 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ContentViewCore.hasHardwareAcceleration(activity); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Whether the configured personality of this ContentView is {@link #PERSONALITY_VIEW}. 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) boolean isPersonalityView() { 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.isPersonalityView(); 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Destroy the internal state of the WebView. This method may only be called 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * after the WebView has been removed from the view system. No other methods 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * may be called on this WebView after this method has been called. 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void destroy() { 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.destroy(); 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns true initially, false after destroy() has been called. 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * It is illegal to call any other public method after destroy(). 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean isAlive() { 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.isAlive(); 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * For internal use. Throws IllegalStateException if mNativeContentView is 0. 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use this to ensure we get a useful Java stack trace, rather than a native 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * crash dump, from use-after-destroy bugs in Java code. 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void checkIsAlive() throws IllegalStateException { 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.checkIsAlive(); 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void setContentViewClient(ContentViewClient client) { 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.setContentViewClient(client); 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentViewClient getContentViewClient() { 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.getContentViewClient(); 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public int getBackgroundColor() { 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.getBackgroundColor(); 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Load url without fixing up the url string. Consumers of ContentView are responsible for 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ensuring the URL passed in is properly formatted (i.e. the scheme has been added if left 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * off during user input). 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param pararms Parameters for this load. 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void loadUrl(LoadUrlParams params) { 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.loadUrl(params); 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void setAllUserAgentOverridesInHistory() { 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.setAllUserAgentOverridesInHistory(); 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Stops loading the current web contents. 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void stopLoading() { 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.stopLoading(); 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Get the URL of the current page. 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return The URL of the current page. 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public String getUrl() { 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.getUrl(); 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Get the title of the current page. 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return The title of the current page. 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public String getTitle() { 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.getTitle(); 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public Bitmap getBitmap() { 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return getBitmap(getWidth(), getHeight()); 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public Bitmap getBitmap(int width, int height) { 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.getBitmap(width, height); 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Whether the ContentView is covered by an overlay that is more than half 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * of it's surface. This is used to determine if we need to do a slow bitmap capture or 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * to show the ContentView without them. 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean hasLargeOverlay() { 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.hasLargeOverlay(); 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Whether the current WebContents has a previous navigation entry. 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean canGoBack() { 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.canGoBack(); 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Whether the current WebContents has a navigation entry after the current one. 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean canGoForward() { 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.canGoForward(); 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param offset The offset into the navigation history. 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Whether we can move in history by given offset 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean canGoToOffset(int offset) { 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.canGoToOffset(offset); 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Navigates to the specified offset from the "current entry". Does nothing if the offset is out 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * of bounds. 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param offset The offset into the navigation history. 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void goToOffset(int offset) { 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.goToOffset(offset); 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Goes to the navigation entry before the current one. 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void goBack() { 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.goBack(); 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Goes to the navigation entry following the current one. 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void goForward() { 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.goForward(); 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Reload the current page. 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void reload() { 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.reload(); 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Clears the WebView's page history in both the backwards and forwards 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * directions. 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void clearHistory() { 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.clearHistory(); 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) String getSelectedText() { 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.getSelectedText(); 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Start profiling the update speed. You must call {@link #stopFpsProfiling} 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * to stop profiling. 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @VisibleForTesting 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void startFpsProfiling() { 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(nileshagrawal): Implement this. 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Stop profiling the update speed. 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @VisibleForTesting 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public float stopFpsProfiling() { 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(nileshagrawal): Implement this. 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0.0f; 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Fling the ContentView from the current position. 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param x Fling touch starting position 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param y Fling touch starting position 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param velocityX Initial velocity of the fling (X) measured in pixels per second. 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param velocityY Initial velocity of the fling (Y) measured in pixels per second. 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @VisibleForTesting 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void fling(long timeMs, int x, int y, int velocityX, int velocityY) { 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.getContentViewGestureHandler().fling(timeMs, x, y, velocityX, velocityY); 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void endFling(long timeMs) { 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.getContentViewGestureHandler().endFling(timeMs); 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Start pinch zoom. You must call {@link #pinchEnd} to stop. 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @VisibleForTesting 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void pinchBegin(long timeMs, int x, int y) { 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.getContentViewGestureHandler().pinchBegin(timeMs, x, y); 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Stop pinch zoom. 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @VisibleForTesting 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void pinchEnd(long timeMs) { 4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.getContentViewGestureHandler().pinchEnd(timeMs); 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void setIgnoreSingleTap(boolean value) { 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.getContentViewGestureHandler().setIgnoreSingleTap(value); 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Modify the ContentView magnification level. The effect of calling this 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * method is exactly as after "pinch zoom". 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param timeMs The event time in milliseconds. 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param delta The ratio of the new magnification level over the current 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * magnification level. 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param anchorX The magnification anchor (X) in the current view 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * coordinate. 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param anchorY The magnification anchor (Y) in the current view 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * coordinate. 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @VisibleForTesting 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void pinchBy(long timeMs, int anchorX, int anchorY, float delta) { 4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.getContentViewGestureHandler().pinchBy(timeMs, anchorX, anchorY, delta); 4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Injects the passed JavaScript code in the current page and evaluates it. 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Once evaluated, an asynchronous call to 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ContentViewClient.onJavaScriptEvaluationResult is made. Used in automation 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * tests. 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return an id that is passed along in the asynchronous onJavaScriptEvaluationResult callback 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @throws IllegalStateException If the ContentView has been destroyed. 4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * TODO(nileshagrawal): Remove this method from the public interface. 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public int evaluateJavaScript(String script) throws IllegalStateException { 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.evaluateJavaScript(script); 4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This method should be called when the containing activity is paused. 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) **/ 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void onActivityPause() { 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.onActivityPause(); 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This method should be called when the containing activity is resumed. 4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) **/ 4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void onActivityResume() { 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.onActivityResume(); 4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * To be called when the ContentView is shown. 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) **/ 5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void onShow() { 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.onShow(); 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * To be called when the ContentView is hidden. 5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) **/ 5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void onHide() { 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.onHide(); 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Return the ContentSettings object used to control the settings for this 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * WebView. 5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Note that when ContentView is used in the PERSONALITY_CHROME role, 5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ContentSettings can only be used for retrieving settings values. For 5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * modifications, ChromeNativePreferences is to be used. 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A ContentSettings object that can be used to control this WebView's 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * settings. 5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public ContentSettings getContentSettings() { 5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.getContentSettings(); 5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Hides the select action bar. 5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void hideSelectActionBar() { 5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.hideSelectActionBar(); 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // FrameLayout overrides. 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Needed by ContentViewCore.InternalAccessDelegate 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean drawChild(Canvas canvas, View child, long drawingTime) { 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return super.drawChild(canvas, child, drawingTime); 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Needed by ContentViewCore.InternalAccessDelegate 5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void onScrollChanged(int l, int t, int oldl, int oldt) { 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) super.onScrollChanged(l, t, oldl, oldt); 5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected void onSizeChanged(int w, int h, int ow, int oh) { 5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TraceEvent.begin(); 5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) super.onSizeChanged(w, h, ow, oh); 5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.onSizeChanged(w, h, ow, oh); 5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TraceEvent.end(); 5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public InputConnection onCreateInputConnection(EditorInfo outAttrs) { 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.onCreateInputConnection(outAttrs); 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean onCheckIsTextEditor() { 5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.onCheckIsTextEditor(); 5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) { 5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TraceEvent.begin(); 5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) super.onFocusChanged(gainFocus, direction, previouslyFocusedRect); 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.onFocusChanged(gainFocus, direction, previouslyFocusedRect); 5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TraceEvent.end(); 5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean onKeyUp(int keyCode, KeyEvent event) { 5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.onKeyUp(keyCode, event); 5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean dispatchKeyEventPreIme(KeyEvent event) { 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.dispatchKeyEventPreIme(event); 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean dispatchKeyEvent(KeyEvent event) { 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.dispatchKeyEvent(event); 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean onTouchEvent(MotionEvent event) { 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.onTouchEvent(event); 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Mouse move events are sent on hover enter, hover move and hover exit. 5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * They are sent on hover exit because sometimes it acts as both a hover 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * move and hover exit. 5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean onHoverEvent(MotionEvent event) { 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.onHoverEvent(event); 6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean onGenericMotionEvent(MotionEvent event) { 6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.onGenericMotionEvent(event); 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected void onConfigurationChanged(Configuration newConfig) { 6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.onConfigurationChanged(newConfig); 6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Currently the ContentView scrolling happens in the native side. In 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the Java view system, it is always pinned at (0, 0). scrollBy() and scrollTo() 6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * are overridden, so that View's mScrollX and mScrollY will be unchanged at 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * (0, 0). This is critical for drawing ContentView correctly. 6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void scrollBy(int x, int y) { 6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.scrollBy(x, y); 6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void scrollTo(int x, int y) { 6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.scrollTo(x, y); 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected int computeHorizontalScrollExtent() { 6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO (dtrainor): Need to expose scroll events properly to public. Either make getScroll* 6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // work or expose computeHorizontalScrollOffset()/computeVerticalScrollOffset as public. 6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.computeHorizontalScrollExtent(); 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected int computeHorizontalScrollOffset() { 6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.computeHorizontalScrollOffset(); 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected int computeHorizontalScrollRange() { 6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.computeHorizontalScrollRange(); 6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected int computeVerticalScrollExtent() { 6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.computeVerticalScrollExtent(); 6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected int computeVerticalScrollOffset() { 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.computeVerticalScrollOffset(); 6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected int computeVerticalScrollRange() { 6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.computeVerticalScrollRange(); 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // End FrameLayout overrides. 6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean awakenScrollBars(int startDelay, boolean invalidate) { 6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.awakenScrollBars(startDelay, invalidate); 6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean awakenScrollBars() { 6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return super.awakenScrollBars(); 6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public int getSingleTapX() { 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.getContentViewGestureHandler().getSingleTapX(); 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public int getSingleTapY() { 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.getContentViewGestureHandler().getSingleTapY(); 6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) super.onInitializeAccessibilityNodeInfo(info); 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.onInitializeAccessibilityNodeInfo(info); 6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Fills in scrolling values for AccessibilityEvents. 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param event Event being fired. 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void onInitializeAccessibilityEvent(AccessibilityEvent event) { 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) super.onInitializeAccessibilityEvent(event); 6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.onInitializeAccessibilityEvent(event); 6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected void onAttachedToWindow() { 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) super.onAttachedToWindow(); 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.onAttachedToWindow(); 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected void onDetachedFromWindow() { 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) super.onDetachedFromWindow(); 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.onDetachedFromWindow(); 7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected void onVisibilityChanged(View changedView, int visibility) { 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) super.onVisibilityChanged(changedView, visibility); 7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.onVisibilityChanged(changedView, visibility); 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void updateMultiTouchZoomSupport() { 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.updateMultiTouchZoomSupport(); 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean isMultiTouchZoomSupported() { 7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.isMultiTouchZoomSupported(); 7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Register the delegate to be used when content can not be handled by 7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the rendering engine, and should be downloaded instead. This will replace 7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the current delegate. 7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param delegate An implementation of ContentViewDownloadDelegate. 7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void setDownloadDelegate(ContentViewDownloadDelegate delegate) { 7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.setDownloadDelegate(delegate); 7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called by DownloadController. 7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentViewDownloadDelegate getDownloadDelegate() { 7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.getDownloadDelegate(); 7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean getUseDesktopUserAgent() { 7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.getUseDesktopUserAgent(); 7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Set whether or not we're using a desktop user agent for the currently loaded page. 7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param override If true, use a desktop user agent. Use a mobile one otherwise. 7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param reloadOnChange Reload the page if the UA has changed. 7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void setUseDesktopUserAgent(boolean override, boolean reloadOnChange) { 7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.setUseDesktopUserAgent(override, reloadOnChange); 7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Whether the native ContentView has crashed. 7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean isCrashed() { 7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.isCrashed(); 7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Whether a reload happens when this ContentView is activated. 7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean needsReload() { 7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.needsReload(); 7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Checks whether the WebView can be zoomed in. 7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return True if the WebView can be zoomed in. 7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This method uses the term 'zoom' for legacy reasons, but relates 7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // to what chrome calls the 'page scale factor'. 7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean canZoomIn() { 7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.canZoomIn(); 7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Checks whether the WebView can be zoomed out. 7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return True if the WebView can be zoomed out. 7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This method uses the term 'zoom' for legacy reasons, but relates 7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // to what chrome calls the 'page scale factor'. 7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean canZoomOut() { 7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.canZoomOut(); 7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Zooms in the WebView by 25% (or less if that would result in zooming in 7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * more than possible). 7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return True if there was a zoom change, false otherwise. 7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This method uses the term 'zoom' for legacy reasons, but relates 7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // to what chrome calls the 'page scale factor'. 7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean zoomIn() { 7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.zoomIn(); 7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Zooms out the WebView by 20% (or less if that would result in zooming out 8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * more than possible). 8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return True if there was a zoom change, false otherwise. 8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This method uses the term 'zoom' for legacy reasons, but relates 8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // to what chrome calls the 'page scale factor'. 8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean zoomOut() { 8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.zoomOut(); 8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Resets the zoom factor of the WebView. 8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return True if there was a zoom change, false otherwise. 8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This method uses the term 'zoom' for legacy reasons, but relates 8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // to what chrome calls the 'page scale factor'. 8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean zoomReset() { 8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.zoomReset(); 8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Invokes the graphical zoom picker widget for this ContentView. 8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void invokeZoomPicker() { 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.invokeZoomPicker(); 8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Unlike legacy WebView getZoomControls which returns external zoom controls, 8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // this method returns built-in zoom controls. This method is used in tests. 8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public View getZoomControlsForTest() { 8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.getZoomControlsForTest(); 8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Return the current scale of the WebView 8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return The current scale. 8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public float getScale() { 8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.getScale(); 8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * If the view is ready to draw contents to the screen. In hardware mode, 8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the initialization of the surface texture may not occur until after the 8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * view has been added to the layout. This method will return {@code true} 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * once the texture is actually ready. 8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean isReady() { 8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.isReady(); 8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Whether or not the texture view is available or not. 8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean isAvailable() { 8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.isAvailable(); 8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns whether or not accessibility injection is being used. 8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean isInjectingAccessibilityScript() { 8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mContentViewCore.isInjectingAccessibilityScript(); 8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Enable or disable accessibility features. 8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void setAccessibilityState(boolean state) { 8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.setAccessibilityState(state); 8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Stop any TTS notifications that are currently going on. 8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void stopCurrentAccessibilityNotifications() { 8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mContentViewCore.stopCurrentAccessibilityNotifications(); 8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /////////////////////////////////////////////////////////////////////////////////////////////// 8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Start Implementation of ContentViewCore.InternalAccessDelegate // 8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /////////////////////////////////////////////////////////////////////////////////////////////// 8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean super_onKeyUp(int keyCode, KeyEvent event) { 8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return super.onKeyUp(keyCode, event); 8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean super_dispatchKeyEventPreIme(KeyEvent event) { 8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return super.dispatchKeyEventPreIme(event); 8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean super_dispatchKeyEvent(KeyEvent event) { 8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return super.dispatchKeyEvent(event); 8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean super_onGenericMotionEvent(MotionEvent event) { 9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return super.onGenericMotionEvent(event); 9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void super_onConfigurationChanged(Configuration newConfig) { 9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) super.onConfigurationChanged(newConfig); 9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean super_awakenScrollBars(int startDelay, boolean invalidate) { 9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return super.awakenScrollBars(startDelay, invalidate); 9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /////////////////////////////////////////////////////////////////////////////////////////////// 9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // End Implementation of ContentViewCore.InternalAccessDelegate // 9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /////////////////////////////////////////////////////////////////////////////////////////////// 9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 918