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