13c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon/*
23c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon * Copyright (C) 2012 The Android Open Source Project
33c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon *
43c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon * Licensed under the Apache License, Version 2.0 (the "License");
53c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon * you may not use this file except in compliance with the License.
63c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon * You may obtain a copy of the License at
73c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon *
83c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon *      http://www.apache.org/licenses/LICENSE-2.0
93c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon *
103c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon * Unless required by applicable law or agreed to in writing, software
113c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon * distributed under the License is distributed on an "AS IS" BASIS,
123c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon * See the License for the specific language governing permissions and
143c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon * limitations under the License.
153c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon */
163c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
173c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonpackage android.webkit;
183c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
19cf49a23b3c3028776a238ac10331e7bc64f94842Tima Vaisburdimport android.annotation.NonNull;
20cf49a23b3c3028776a238ac10331e7bc64f94842Tima Vaisburdimport android.annotation.Nullable;
21451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Sollaimport android.annotation.SystemApi;
223c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport android.content.res.Configuration;
23f119c5208f5f3c54a174086f585a609a222a3d2dHui Shuimport android.content.Intent;
243c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport android.graphics.Bitmap;
253c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport android.graphics.Canvas;
26a5408e619a0d9f4b516d76ee053da05a5d94227dJohn Reckimport android.graphics.Paint;
273c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport android.graphics.Picture;
283c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport android.graphics.Rect;
293c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport android.graphics.drawable.Drawable;
303c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport android.net.http.SslCertificate;
314c8093afe3da4f6d3b9a43510d0b6601aeadb582Selim Gurunimport android.net.Uri;
323c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport android.os.Bundle;
33e319dadaa9970ecfd1dd9dbfd455400153ba5c7bSelim Gurunimport android.os.Handler;
343c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport android.os.Message;
35da7d64225366b40dd10376116bbe19dd8c0b20dbSelim Gurunimport android.print.PrintDocumentAdapter;
36a5717331d1120324728d1aa79fb902b9945afa02Tao Baiimport android.util.SparseArray;
37ecdce961ea1082508b5022fe0c12bf3578e7f34aHui Shuimport android.view.DragEvent;
383c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport android.view.KeyEvent;
393c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport android.view.MotionEvent;
403c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport android.view.View;
413c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport android.view.ViewGroup.LayoutParams;
423c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport android.view.accessibility.AccessibilityEvent;
433c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport android.view.accessibility.AccessibilityNodeInfo;
44e3f9071e0daef6e5fe38aa4d40aabd3716eb3e54Ben Murdochimport android.view.accessibility.AccessibilityNodeProvider;
45a5717331d1120324728d1aa79fb902b9945afa02Tao Baiimport android.view.autofill.AutofillValue;
463c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport android.view.inputmethod.EditorInfo;
473c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport android.view.inputmethod.InputConnection;
48cf49a23b3c3028776a238ac10331e7bc64f94842Tima Vaisburdimport android.view.textclassifier.TextClassifier;
493c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport android.webkit.WebView.HitTestResult;
503c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport android.webkit.WebView.PictureListener;
51a8352f40316fb265c74d42e908eb30284259b47dTobias Sargeantimport android.webkit.WebView.VisualStateCallback;
52a8352f40316fb265c74d42e908eb30284259b47dTobias Sargeant
533c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
54926cf56676d760579573470c7848dbf119a86779John Reckimport java.io.BufferedWriter;
553c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport java.io.File;
563c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonimport java.util.Map;
573c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
583c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon/**
593c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon * WebView backend provider interface: this interface is the abstract backend to a WebView
603c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon * instance; each WebView object is bound to exactly one WebViewProvider object which implements
613c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon * the runtime behavior of that WebView.
623c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon *
633c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon * All methods must behave as per their namesake in {@link WebView}, unless otherwise noted.
643c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon *
653c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon * @hide Not part of the public API; only required by system implementors.
663c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon */
67451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Solla@SystemApi
683c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixonpublic interface WebViewProvider {
693c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    //-------------------------------------------------------------------------
703c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    // Main interface for backend provider of the WebView class.
713c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    //-------------------------------------------------------------------------
723c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    /**
733c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     * Initialize this WebViewProvider instance. Called after the WebView has fully constructed.
743c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     * @param javaScriptInterfaces is a Map of interface names, as keys, and
753c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     * object implementing those interfaces, as values.
763c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     * @param privateBrowsing If true the web view will be initialized in private / incognito mode.
773c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     */
783c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void init(Map<String, Object> javaScriptInterfaces,
793c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon            boolean privateBrowsing);
803c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
81c8694a082ab4870d9f148ac98a5e1b3b07d75cc0Paul Miller    // Deprecated - should never be called
823c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void setHorizontalScrollbarOverlay(boolean overlay);
833c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
84c8694a082ab4870d9f148ac98a5e1b3b07d75cc0Paul Miller    // Deprecated - should never be called
853c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void setVerticalScrollbarOverlay(boolean overlay);
863c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
87c8694a082ab4870d9f148ac98a5e1b3b07d75cc0Paul Miller    // Deprecated - should never be called
883c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public boolean overlayHorizontalScrollbar();
893c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
90c8694a082ab4870d9f148ac98a5e1b3b07d75cc0Paul Miller    // Deprecated - should never be called
913c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public boolean overlayVerticalScrollbar();
923c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
933c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public int getVisibleTitleHeight();
943c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
953c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public SslCertificate getCertificate();
963c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
973c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void setCertificate(SslCertificate certificate);
983c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
993c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void savePassword(String host, String username, String password);
1003c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1013c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void setHttpAuthUsernamePassword(String host, String realm,
1023c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon            String username, String password);
1033c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1043c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public String[] getHttpAuthUsernamePassword(String host, String realm);
1053c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1063c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    /**
1073c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     * See {@link WebView#destroy()}.
1083c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     * As well as releasing the internal state and resources held by the implementation,
1093c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     * the provider should null all references it holds on the WebView proxy class, and ensure
1103c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     * no further method calls are made to it.
1113c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     */
1123c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void destroy();
1133c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1143c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void setNetworkAvailable(boolean networkUp);
1153c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1163c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public WebBackForwardList saveState(Bundle outState);
1173c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1183c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public boolean savePicture(Bundle b, final File dest);
1193c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1203c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public boolean restorePicture(Bundle b, File src);
1213c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1223c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public WebBackForwardList restoreState(Bundle inState);
1233c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1243c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void loadUrl(String url, Map<String, String> additionalHttpHeaders);
1253c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1263c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void loadUrl(String url);
1273c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1283c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void postUrl(String url, byte[] postData);
1293c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1303c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void loadData(String data, String mimeType, String encoding);
1313c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1323c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void loadDataWithBaseURL(String baseUrl, String data,
1333c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon            String mimeType, String encoding, String historyUrl);
1343c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
135a5cdd51cb7dc3acd608b67186bdef1d2a12bdbe7Ben Murdoch    public void evaluateJavaScript(String script, ValueCallback<String> resultCallback);
136a5cdd51cb7dc3acd608b67186bdef1d2a12bdbe7Ben Murdoch
1373c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void saveWebArchive(String filename);
1383c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1393c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void saveWebArchive(String basename, boolean autoname, ValueCallback<String> callback);
1403c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1413c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void stopLoading();
1423c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1433c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void reload();
1443c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1453c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public boolean canGoBack();
1463c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1473c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void goBack();
1483c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1493c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public boolean canGoForward();
1503c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1513c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void goForward();
1523c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1533c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public boolean canGoBackOrForward(int steps);
1543c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1553c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void goBackOrForward(int steps);
1563c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1573c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public boolean isPrivateBrowsingEnabled();
1583c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1593c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public boolean pageUp(boolean top);
1603c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1613c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public boolean pageDown(boolean bottom);
1623c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
163a8352f40316fb265c74d42e908eb30284259b47dTobias Sargeant    public void insertVisualStateCallback(long requestId, VisualStateCallback callback);
164a8352f40316fb265c74d42e908eb30284259b47dTobias Sargeant
1653c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void clearView();
1663c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1673c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public Picture capturePicture();
1683c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
16923a1af6f83bb51478689020890582f500c73e6baSelim Gurun    public PrintDocumentAdapter createPrintDocumentAdapter(String documentName);
1702167c0be56cc859e38f69df150747055d67b1ea0Selim Gurun
1713c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public float getScale();
1723c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1733c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void setInitialScale(int scaleInPercent);
1743c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1753c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void invokeZoomPicker();
1763c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1773c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public HitTestResult getHitTestResult();
1783c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1793c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void requestFocusNodeHref(Message hrefMsg);
1803c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1813c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void requestImageRef(Message msg);
1823c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1833c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public String getUrl();
1843c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1853c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public String getOriginalUrl();
1863c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1873c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public String getTitle();
1883c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1893c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public Bitmap getFavicon();
1903c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1913c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public String getTouchIconUrl();
1923c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1933c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public int getProgress();
1943c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1953c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public int getContentHeight();
1963c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1973c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public int getContentWidth();
1983c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
1993c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void pauseTimers();
2003c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2013c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void resumeTimers();
2023c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2033c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void onPause();
2043c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2053c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void onResume();
2063c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2073c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public boolean isPaused();
2083c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2093c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void freeMemory();
2103c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2113c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void clearCache(boolean includeDiskFiles);
2123c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2133c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void clearFormData();
2143c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2153c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void clearHistory();
2163c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2173c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void clearSslPreferences();
2183c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2193c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public WebBackForwardList copyBackForwardList();
2203c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
221d405a433e66a7bff086c5ba5653ae4268b2b994dVictoria Lease    public void setFindListener(WebView.FindListener listener);
222abeb6a791501151308d06db6aebb438e16c1a784Victoria Lease
2233c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void findNext(boolean forward);
2243c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2253c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public int findAll(String find);
2263c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
227abeb6a791501151308d06db6aebb438e16c1a784Victoria Lease    public void findAllAsync(String find);
228abeb6a791501151308d06db6aebb438e16c1a784Victoria Lease
2293c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public boolean showFindDialog(String text, boolean showIme);
2303c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2313c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void clearMatches();
2323c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2333c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void documentHasImages(Message response);
2343c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2353c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void setWebViewClient(WebViewClient client);
2363c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2376e585844a0d8c4a559e3aa3b4a4050d7e9eda422Nate Fischer    public WebViewClient getWebViewClient();
2386e585844a0d8c4a559e3aa3b4a4050d7e9eda422Nate Fischer
2393c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void setDownloadListener(DownloadListener listener);
2403c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2413c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void setWebChromeClient(WebChromeClient client);
2423c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2436e585844a0d8c4a559e3aa3b4a4050d7e9eda422Nate Fischer    public WebChromeClient getWebChromeClient();
2446e585844a0d8c4a559e3aa3b4a4050d7e9eda422Nate Fischer
2453c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void setPictureListener(PictureListener listener);
2463c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2473c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void addJavascriptInterface(Object obj, String interfaceName);
2483c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2493c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void removeJavascriptInterface(String interfaceName);
2503c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2514c8093afe3da4f6d3b9a43510d0b6601aeadb582Selim Gurun    public WebMessagePort[] createWebMessageChannel();
2524c8093afe3da4f6d3b9a43510d0b6601aeadb582Selim Gurun
2534c8093afe3da4f6d3b9a43510d0b6601aeadb582Selim Gurun    public void postMessageToMainFrame(WebMessage message, Uri targetOrigin);
2544c8093afe3da4f6d3b9a43510d0b6601aeadb582Selim Gurun
2553c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public WebSettings getSettings();
2563c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2573c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void setMapTrackballToArrowKeys(boolean setMap);
2583c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2593c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public void flingScroll(int vx, int vy);
2603c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2613c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public View getZoomControls();
2623c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2633c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public boolean canZoomIn();
2643c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2653c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public boolean canZoomOut();
2663c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2673ee06efef34b7f619b6b31b58447c64eda9fc0e7Marcin Kosiba    public boolean zoomBy(float zoomFactor);
2683ee06efef34b7f619b6b31b58447c64eda9fc0e7Marcin Kosiba
2693c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public boolean zoomIn();
2703c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2713c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    public boolean zoomOut();
2723c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
273926cf56676d760579573470c7848dbf119a86779John Reck    public void dumpViewHierarchyWithProperties(BufferedWriter out, int level);
274926cf56676d760579573470c7848dbf119a86779John Reck
275926cf56676d760579573470c7848dbf119a86779John Reck    public View findHierarchyView(String className, int hashCode);
276926cf56676d760579573470c7848dbf119a86779John Reck
277d10e4af0988b478f57dd90196ee105a94129a93bTobias Sargeant    public void setRendererPriorityPolicy(int rendererRequestedPriority, boolean waivedWhenNotVisible);
278d10e4af0988b478f57dd90196ee105a94129a93bTobias Sargeant
279d10e4af0988b478f57dd90196ee105a94129a93bTobias Sargeant    public int getRendererRequestedPriority();
280d10e4af0988b478f57dd90196ee105a94129a93bTobias Sargeant
281d10e4af0988b478f57dd90196ee105a94129a93bTobias Sargeant    public boolean getRendererPriorityWaivedWhenNotVisible();
282d10e4af0988b478f57dd90196ee105a94129a93bTobias Sargeant
283cf49a23b3c3028776a238ac10331e7bc64f94842Tima Vaisburd    @SuppressWarnings("unused")
284cf49a23b3c3028776a238ac10331e7bc64f94842Tima Vaisburd    public default void setTextClassifier(@Nullable TextClassifier textClassifier) {}
285cf49a23b3c3028776a238ac10331e7bc64f94842Tima Vaisburd
286cf49a23b3c3028776a238ac10331e7bc64f94842Tima Vaisburd    @NonNull
287cf49a23b3c3028776a238ac10331e7bc64f94842Tima Vaisburd    public default TextClassifier getTextClassifier() { return TextClassifier.NO_OP; }
288cf49a23b3c3028776a238ac10331e7bc64f94842Tima Vaisburd
2893c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    //-------------------------------------------------------------------------
29052c9f7f95083a9d041b9261522e929073cb52fd5Ben Murdoch    // Provider internal methods
2913c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    //-------------------------------------------------------------------------
2923c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2933c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    /**
2943c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     * @return the ViewDelegate implementation. This provides the functionality to back all of
2953c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     * the name-sake functions from the View and ViewGroup base classes of WebView.
2963c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     */
2973c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    /* package */ ViewDelegate getViewDelegate();
2983c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
2993c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    /**
3003c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     * @return a ScrollDelegate implementation. Normally this would be same object as is
3013c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     * returned by getViewDelegate().
3023c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     */
3033c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    /* package */ ScrollDelegate getScrollDelegate();
3043c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
30552c9f7f95083a9d041b9261522e929073cb52fd5Ben Murdoch    /**
30652c9f7f95083a9d041b9261522e929073cb52fd5Ben Murdoch     * Only used by FindActionModeCallback to inform providers that the find dialog has
30752c9f7f95083a9d041b9261522e929073cb52fd5Ben Murdoch     * been dismissed.
30852c9f7f95083a9d041b9261522e929073cb52fd5Ben Murdoch     */
30952c9f7f95083a9d041b9261522e929073cb52fd5Ben Murdoch    public void notifyFindDialogDismissed();
31052c9f7f95083a9d041b9261522e929073cb52fd5Ben Murdoch
3113c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    //-------------------------------------------------------------------------
3123c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    // View / ViewGroup delegation methods
3133c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    //-------------------------------------------------------------------------
3143c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3153c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    /**
3163c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     * Provides mechanism for the name-sake methods declared in View and ViewGroup to be delegated
3173c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     * into the WebViewProvider instance.
3183c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     * NOTE For many of these methods, the WebView will provide a super.Foo() call before or after
3193c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     * making the call into the provider instance. This is done for convenience in the common case
3203c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     * of maintaining backward compatibility. For remaining super class calls (e.g. where the
3213c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     * provider may need to only conditionally make the call based on some internal state) see the
3223c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     * {@link WebView.PrivateAccess} callback class.
3233c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon     */
3243c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    // TODO: See if the pattern of the super-class calls can be rationalized at all, and document
3253c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    // the remainder on the methods below.
3263c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    interface ViewDelegate {
3273c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public boolean shouldDelayChildPressedState();
3283c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
32950b26a5c27296ef20c3930213ece8a911ec85104Selim Gurun        public void onProvideVirtualStructure(android.view.ViewStructure structure);
3301b650cb6f99e0481ed20795ec19fc62bbf1191baSelim Gurun
3311ca634a544a47193dd9e57f9b3eb3e42ab0dbbf1Felipe Leme        @SuppressWarnings("unused")
332640f30a7763b0a4b80c767acb84c740aac04768bFelipe Leme        public default void onProvideAutofillVirtualStructure(android.view.ViewStructure structure,
3331ca634a544a47193dd9e57f9b3eb3e42ab0dbbf1Felipe Leme                int flags) {
3341ca634a544a47193dd9e57f9b3eb3e42ab0dbbf1Felipe Leme        }
3351ca634a544a47193dd9e57f9b3eb3e42ab0dbbf1Felipe Leme
336a5717331d1120324728d1aa79fb902b9945afa02Tao Bai        @SuppressWarnings("unused")
337a5717331d1120324728d1aa79fb902b9945afa02Tao Bai        public default void autofill(SparseArray<AutofillValue>values) {
338a5717331d1120324728d1aa79fb902b9945afa02Tao Bai        }
339a5717331d1120324728d1aa79fb902b9945afa02Tao Bai
340e3f9071e0daef6e5fe38aa4d40aabd3716eb3e54Ben Murdoch        public AccessibilityNodeProvider getAccessibilityNodeProvider();
341e3f9071e0daef6e5fe38aa4d40aabd3716eb3e54Ben Murdoch
3423e853fb1d27eede6f90ae8af164acdc310d472ceMarcin Kosiba        public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info);
3433c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3443e853fb1d27eede6f90ae8af164acdc310d472ceMarcin Kosiba        public void onInitializeAccessibilityEvent(AccessibilityEvent event);
3453c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3463e853fb1d27eede6f90ae8af164acdc310d472ceMarcin Kosiba        public boolean performAccessibilityAction(int action, Bundle arguments);
347448902d757bb5d5f0284a06b0193549f1e1f369falanv
3483c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public void setOverScrollMode(int mode);
3493c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3503c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public void setScrollBarStyle(int style);
3513c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3523c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public void onDrawVerticalScrollBar(Canvas canvas, Drawable scrollBar, int l, int t,
3533c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon                int r, int b);
3543c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3553c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY);
3563c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3573c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public void onWindowVisibilityChanged(int visibility);
3583c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3593c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public void onDraw(Canvas canvas);
3603c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3613c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public void setLayoutParams(LayoutParams layoutParams);
3623c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3633c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public boolean performLongClick();
3643c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3653c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public void onConfigurationChanged(Configuration newConfig);
3663c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3673c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public InputConnection onCreateInputConnection(EditorInfo outAttrs);
3683c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
369ecdce961ea1082508b5022fe0c12bf3578e7f34aHui Shu        public boolean onDragEvent(DragEvent event);
370ecdce961ea1082508b5022fe0c12bf3578e7f34aHui Shu
3713c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event);
3723c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3733c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public boolean onKeyDown(int keyCode, KeyEvent event);
3743c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3753c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public boolean onKeyUp(int keyCode, KeyEvent event);
3763c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3773c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public void onAttachedToWindow();
3783c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3793c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public void onDetachedFromWindow();
3803c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
381134752b47128466b11d399de388d8aa3f7266683Tima Vaisburd        public default void onMovedToDisplay(int displayId, Configuration config) {}
382134752b47128466b11d399de388d8aa3f7266683Tima Vaisburd
3833c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public void onVisibilityChanged(View changedView, int visibility);
3843c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3853c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public void onWindowFocusChanged(boolean hasWindowFocus);
3863c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3873c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect);
3883c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3893c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public boolean setFrame(int left, int top, int right, int bottom);
3903c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3913c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public void onSizeChanged(int w, int h, int ow, int oh);
3923c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3933c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public void onScrollChanged(int l, int t, int oldl, int oldt);
3943c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3953c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public boolean dispatchKeyEvent(KeyEvent event);
3963c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3973c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public boolean onTouchEvent(MotionEvent ev);
3983c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
3993c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public boolean onHoverEvent(MotionEvent event);
4003c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
4013c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public boolean onGenericMotionEvent(MotionEvent event);
4023c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
4033c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public boolean onTrackballEvent(MotionEvent ev);
4043c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
4053c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public boolean requestFocus(int direction, Rect previouslyFocusedRect);
4063c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
4073c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public void onMeasure(int widthMeasureSpec, int heightMeasureSpec);
4083c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
4093c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public boolean requestChildRectangleOnScreen(View child, Rect rect, boolean immediate);
4103c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
4113c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public void setBackgroundColor(int color);
412a5408e619a0d9f4b516d76ee053da05a5d94227dJohn Reck
413a5408e619a0d9f4b516d76ee053da05a5d94227dJohn Reck        public void setLayerType(int layerType, Paint paint);
414e623e2448436d5496d5a28b7cec1b746ed0dc5e2Ben Murdoch
415e623e2448436d5496d5a28b7cec1b746ed0dc5e2Ben Murdoch        public void preDispatchDraw(Canvas canvas);
4167302f4f8f7d0e92fcdf0a068eab2b6a47810e926Ben Murdoch
4177302f4f8f7d0e92fcdf0a068eab2b6a47810e926Ben Murdoch        public void onStartTemporaryDetach();
4187302f4f8f7d0e92fcdf0a068eab2b6a47810e926Ben Murdoch
4197302f4f8f7d0e92fcdf0a068eab2b6a47810e926Ben Murdoch        public void onFinishTemporaryDetach();
420f119c5208f5f3c54a174086f585a609a222a3d2dHui Shu
421f119c5208f5f3c54a174086f585a609a222a3d2dHui Shu        public void onActivityResult(int requestCode, int resultCode, Intent data);
422e319dadaa9970ecfd1dd9dbfd455400153ba5c7bSelim Gurun
423e319dadaa9970ecfd1dd9dbfd455400153ba5c7bSelim Gurun        public Handler getHandler(Handler originalHandler);
424e319dadaa9970ecfd1dd9dbfd455400153ba5c7bSelim Gurun
425e319dadaa9970ecfd1dd9dbfd455400153ba5c7bSelim Gurun        public View findFocus(View originalFocusedView);
4263c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    }
4273c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
4283c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    interface ScrollDelegate {
4293c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        // These methods are declared protected in the ViewGroup base class. This interface
4303c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        // exists to promote them to public so they may be called by the WebView proxy class.
4313c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        // TODO: Combine into ViewDelegate?
4323c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        /**
4333c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon         * See {@link android.webkit.WebView#computeHorizontalScrollRange}
4343c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon         */
4353c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public int computeHorizontalScrollRange();
4363c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
4373c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        /**
4383c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon         * See {@link android.webkit.WebView#computeHorizontalScrollOffset}
4393c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon         */
4403c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public int computeHorizontalScrollOffset();
4413c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
4423c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        /**
4433c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon         * See {@link android.webkit.WebView#computeVerticalScrollRange}
4443c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon         */
4453c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public int computeVerticalScrollRange();
4463c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
4473c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        /**
4483c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon         * See {@link android.webkit.WebView#computeVerticalScrollOffset}
4493c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon         */
4503c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public int computeVerticalScrollOffset();
4513c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
4523c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        /**
4533c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon         * See {@link android.webkit.WebView#computeVerticalScrollExtent}
4543c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon         */
4553c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public int computeVerticalScrollExtent();
4563c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon
4573c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        /**
4583c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon         * See {@link android.webkit.WebView#computeScroll}
4593c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon         */
4603c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon        public void computeScroll();
4613c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon    }
4623c90952036a5ff7ddb2946c643f1a0bf1c31d53aJonathan Dixon}
463