FileDocCategorySizeDatePackage
WebView.javaAPI DocAndroid 5.1 API96118Thu Mar 12 22:22:10 GMT 2015android.webkit

WebView

public class WebView extends android.widget.AbsoluteLayout implements ViewDebug.HierarchyHandler, ViewTreeObserver.OnGlobalFocusChangeListener, ViewGroup.OnHierarchyChangeListener

A View that displays web pages. This class is the basis upon which you can roll your own web browser or simply display some online content within your Activity. It uses the WebKit rendering engine to display web pages and includes methods to navigate forward and backward through a history, zoom in and out, perform text searches and more.

Note that, in order for your Activity to access the Internet and load web pages in a WebView, you must add the {@code INTERNET} permissions to your Android Manifest file:

<uses-permission android:name="android.permission.INTERNET" />

This must be a child of the {@code } element.

For more information, read Building Web Apps in WebView.

Basic usage

By default, a WebView provides no browser-like widgets, does not enable JavaScript and web page errors are ignored. If your goal is only to display some HTML as a part of your UI, this is probably fine; the user won't need to interact with the web page beyond reading it, and the web page won't need to interact with the user. If you actually want a full-blown web browser, then you probably want to invoke the Browser application with a URL Intent rather than show it with a WebView. For example:

Uri uri = Uri.parse("http://www.example.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

See {@link android.content.Intent} for more information.

To provide a WebView in your own Activity, include a {@code <WebView>} in your layout, or set the entire Activity window as a WebView during {@link android.app.Activity#onCreate(Bundle) onCreate()}:

WebView webview = new WebView(this);
setContentView(webview);

Then load the desired web page:

// Simplest usage: note that an exception will NOT be thrown
// if there is an error loading this page (see below).
webview.loadUrl("http://slashdot.org/");

// OR, you can also load from an HTML string:
String summary = "<html><body>You scored <b>192</b> points.</body></html>";
webview.loadData(summary, "text/html", null);
// ... although note that there are restrictions on what this HTML can do.
// See the JavaDocs for {@link #loadData(String,String,String) loadData()} and {@link
#loadDataWithBaseURL(String,String,String,String,String) loadDataWithBaseURL()} for more info.

A WebView has several customization points where you can add your own behavior. These are:

  • Creating and setting a {@link android.webkit.WebChromeClient} subclass. This class is called when something that might impact a browser UI happens, for instance, progress updates and JavaScript alerts are sent here (see Debugging Tasks).
  • Creating and setting a {@link android.webkit.WebViewClient} subclass. It will be called when things happen that impact the rendering of the content, eg, errors or form submissions. You can also intercept URL loading here (via {@link android.webkit.WebViewClient#shouldOverrideUrlLoading(WebView,String) shouldOverrideUrlLoading()}).
  • Modifying the {@link android.webkit.WebSettings}, such as enabling JavaScript with {@link android.webkit.WebSettings#setJavaScriptEnabled(boolean) setJavaScriptEnabled()}.
  • Injecting Java objects into the WebView using the {@link android.webkit.WebView#addJavascriptInterface} method. This method allows you to inject Java objects into a page's JavaScript context, so that they can be accessed by JavaScript in the page.

Here's a more complicated example, showing error handling, settings, and progress notification:

// Let's display the progress in the activity title bar, like the
// browser app does.
getWindow().requestFeature(Window.FEATURE_PROGRESS);

webview.getSettings().setJavaScriptEnabled(true);

final Activity activity = this;
webview.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
// Activities and WebViews measure progress with different scales.
// The progress meter will automatically disappear when we reach 100%
activity.setProgress(progress * 1000);
}
});
webview.setWebViewClient(new WebViewClient() {
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
}
});

webview.loadUrl("http://developer.android.com/");

Zoom

To enable the built-in zoom, set {@link #getSettings() WebSettings}.{@link WebSettings#setBuiltInZoomControls(boolean)} (introduced in API level {@link android.os.Build.VERSION_CODES#CUPCAKE}).

NOTE: Using zoom if either the height or width is set to {@link android.view.ViewGroup.LayoutParams#WRAP_CONTENT} may lead to undefined behavior and should be avoided.

Cookie and window management

For obvious security reasons, your application has its own cache, cookie store etc.—it does not share the Browser application's data.

By default, requests by the HTML to open new windows are ignored. This is true whether they be opened by JavaScript or by the target attribute on a link. You can customize your {@link WebChromeClient} to provide your own behaviour for opening multiple windows, and render them in whatever manner you want.

The standard behavior for an Activity is to be destroyed and recreated when the device orientation or any other configuration changes. This will cause the WebView to reload the current page. If you don't want that, you can set your Activity to handle the {@code orientation} and {@code keyboardHidden} changes, and then just leave the WebView alone. It'll automatically re-orient itself as appropriate. Read Handling Runtime Changes for more information about how to handle configuration changes during runtime.

Building web pages to support different screen densities

The screen density of a device is based on the screen resolution. A screen with low density has fewer available pixels per inch, where a screen with high density has more — sometimes significantly more — pixels per inch. The density of a screen is important because, other things being equal, a UI element (such as a button) whose height and width are defined in terms of screen pixels will appear larger on the lower density screen and smaller on the higher density screen. For simplicity, Android collapses all actual screen densities into three generalized densities: high, medium, and low.

By default, WebView scales a web page so that it is drawn at a size that matches the default appearance on a medium density screen. So, it applies 1.5x scaling on a high density screen (because its pixels are smaller) and 0.75x scaling on a low density screen (because its pixels are bigger). Starting with API level {@link android.os.Build.VERSION_CODES#ECLAIR}, WebView supports DOM, CSS, and meta tag features to help you (as a web developer) target screens with different screen densities.

Here's a summary of the features you can use to handle different screen densities:

  • The {@code window.devicePixelRatio} DOM property. The value of this property specifies the default scaling factor used for the current device. For example, if the value of {@code window.devicePixelRatio} is "1.0", then the device is considered a medium density (mdpi) device and default scaling is not applied to the web page; if the value is "1.5", then the device is considered a high density device (hdpi) and the page content is scaled 1.5x; if the value is "0.75", then the device is considered a low density device (ldpi) and the content is scaled 0.75x.
  • The {@code -webkit-device-pixel-ratio} CSS media query. Use this to specify the screen densities for which this style sheet is to be used. The corresponding value should be either "0.75", "1", or "1.5", to indicate that the styles are for devices with low density, medium density, or high density screens, respectively. For example:
    <link rel="stylesheet" media="screen and (-webkit-device-pixel-ratio:1.5)" href="hdpi.css" />

    The {@code hdpi.css} stylesheet is only used for devices with a screen pixel ration of 1.5, which is the high density pixel ratio.

HTML5 Video support

In order to support inline HTML5 video in your application, you need to have hardware acceleration turned on, and set a {@link android.webkit.WebChromeClient}. For full screen support, implementations of {@link WebChromeClient#onShowCustomView(View, WebChromeClient.CustomViewCallback)} and {@link WebChromeClient#onHideCustomView()} are required, {@link WebChromeClient#getVideoLoadingProgressView()} is optional.

Fields Summary
public static final String
DATA_REDUCTION_PROXY_SETTING_CHANGED
Broadcast Action: Indicates the data reduction proxy setting changed. Sent by the settings app when user changes the data reduction proxy value. This intent will always stay as a hidden API.
private static final String
LOGTAG
private static final boolean
TRACE
private static volatile boolean
sEnforceThreadChecking
public static final String
SCHEME_TEL
URI scheme for telephone number.
public static final String
SCHEME_MAILTO
URI scheme for email address.
public static final String
SCHEME_GEO
URI scheme for map address.
private WebViewProvider
mProvider
private FindListenerDistributor
mFindListener
private final android.os.Looper
mWebViewThread
Constructors Summary
public WebView(android.content.Context context)
Constructs a new WebView with a Context object.

param
context a Context object used to access application assets

        this(context, null);
    
public WebView(android.content.Context context, android.util.AttributeSet attrs)
Constructs a new WebView with layout parameters.

param
context a Context object used to access application assets
param
attrs an AttributeSet passed to our parent

        this(context, attrs, com.android.internal.R.attr.webViewStyle);
    
public WebView(android.content.Context context, android.util.AttributeSet attrs, int defStyleAttr)
Constructs a new WebView with layout parameters and a default style.

param
context a Context object used to access application assets
param
attrs an AttributeSet passed to our parent
param
defStyleAttr an attribute in the current theme that contains a reference to a style resource that supplies default values for the view. Can be 0 to not look for defaults.

        this(context, attrs, defStyleAttr, 0);
    
public WebView(android.content.Context context, android.util.AttributeSet attrs, int defStyleAttr, int defStyleRes)
Constructs a new WebView with layout parameters and a default style.

param
context a Context object used to access application assets
param
attrs an AttributeSet passed to our parent
param
defStyleAttr an attribute in the current theme that contains a reference to a style resource that supplies default values for the view. Can be 0 to not look for defaults.
param
defStyleRes a resource identifier of a style resource that supplies default values for the view, used only if defStyleAttr is 0 or can not be found in the theme. Can be 0 to not look for defaults.

        this(context, attrs, defStyleAttr, defStyleRes, null, false);
    
public WebView(android.content.Context context, android.util.AttributeSet attrs, int defStyleAttr, boolean privateBrowsing)
Constructs a new WebView with layout parameters and a default style.

param
context a Context object used to access application assets
param
attrs an AttributeSet passed to our parent
param
defStyleAttr an attribute in the current theme that contains a reference to a style resource that supplies default values for the view. Can be 0 to not look for defaults.
param
privateBrowsing whether this WebView will be initialized in private mode
deprecated
Private browsing is no longer supported directly via WebView and will be removed in a future release. Prefer using {@link WebSettings}, {@link WebViewDatabase}, {@link CookieManager} and {@link WebStorage} for fine-grained control of privacy data.

        this(context, attrs, defStyleAttr, 0, null, privateBrowsing);
    
protected WebView(android.content.Context context, android.util.AttributeSet attrs, int defStyleAttr, Map javaScriptInterfaces, boolean privateBrowsing)
Constructs a new WebView with layout parameters, a default style and a set of custom Javscript interfaces to be added to this WebView at initialization time. This guarantees that these interfaces will be available when the JS context is initialized.

param
context a Context object used to access application assets
param
attrs an AttributeSet passed to our parent
param
defStyleAttr an attribute in the current theme that contains a reference to a style resource that supplies default values for the view. Can be 0 to not look for defaults.
param
javaScriptInterfaces a Map of interface names, as keys, and object implementing those interfaces, as values
param
privateBrowsing whether this WebView will be initialized in private mode
hide
This is used internally by dumprendertree, as it requires the javaScript interfaces to be added synchronously, before a subsequent loadUrl call takes effect.

        this(context, attrs, defStyleAttr, 0, javaScriptInterfaces, privateBrowsing);
    
protected WebView(android.content.Context context, android.util.AttributeSet attrs, int defStyleAttr, int defStyleRes, Map javaScriptInterfaces, boolean privateBrowsing)

hide

        super(context, attrs, defStyleAttr, defStyleRes);
        if (context == null) {
            throw new IllegalArgumentException("Invalid context argument");
        }
        sEnforceThreadChecking = context.getApplicationInfo().targetSdkVersion >=
                Build.VERSION_CODES.JELLY_BEAN_MR2;
        checkThread();
        if (TRACE) Log.d(LOGTAG, "WebView<init>");

        ensureProviderCreated();
        mProvider.init(javaScriptInterfaces, privateBrowsing);
        // Post condition of creating a webview is the CookieSyncManager.getInstance() is allowed.
        CookieSyncManager.setGetInstanceIsAllowed();
    
Methods Summary
public voidaddJavascriptInterface(java.lang.Object object, java.lang.String name)
Injects the supplied Java object into this WebView. The object is injected into the JavaScript context of the main frame, using the supplied name. This allows the Java object's methods to be accessed from JavaScript. For applications targeted to API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1} and above, only public methods that are annotated with {@link android.webkit.JavascriptInterface} can be accessed from JavaScript. For applications targeted to API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN} or below, all public methods (including the inherited ones) can be accessed, see the important security note below for implications.

Note that injected objects will not appear in JavaScript until the page is next (re)loaded. For example:

class JsObject {
{@literal @}JavascriptInterface
public String toString() { return "injectedObject"; }
}
webView.addJavascriptInterface(new JsObject(), "injectedObject");
webView.loadData("", "text/html", null);
webView.loadUrl("javascript:alert(injectedObject.toString())");

IMPORTANT:

  • This method can be used to allow JavaScript to control the host application. This is a powerful feature, but also presents a security risk for apps targeting {@link android.os.Build.VERSION_CODES#JELLY_BEAN} or earlier. Apps that target a version later than {@link android.os.Build.VERSION_CODES#JELLY_BEAN} are still vulnerable if the app runs on a device running Android earlier than 4.2. The most secure way to use this method is to target {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1} and to ensure the method is called only when running on Android 4.2 or later. With these older versions, JavaScript could use reflection to access an injected object's public fields. Use of this method in a WebView containing untrusted content could allow an attacker to manipulate the host application in unintended ways, executing Java code with the permissions of the host application. Use extreme care when using this method in a WebView which could contain untrusted content.
  • JavaScript interacts with Java object on a private, background thread of this WebView. Care is therefore required to maintain thread safety.
  • The Java object's fields are not accessible.
  • For applications targeted to API level {@link android.os.Build.VERSION_CODES#LOLLIPOP} and above, methods of injected Java objects are enumerable from JavaScript.

param
object the Java object to inject into this WebView's JavaScript context. Null values are ignored.
param
name the name used to expose the object in JavaScript

        checkThread();
        if (TRACE) Log.d(LOGTAG, "addJavascriptInterface=" + name);
        mProvider.addJavascriptInterface(object, name);
    
public booleancanGoBack()
Gets whether this WebView has a back history item.

return
true iff this WebView has a back history item

        checkThread();
        return mProvider.canGoBack();
    
public booleancanGoBackOrForward(int steps)
Gets whether the page can go back or forward the given number of steps.

param
steps the negative or positive number of steps to move the history

        checkThread();
        return mProvider.canGoBackOrForward(steps);
    
public booleancanGoForward()
Gets whether this WebView has a forward history item.

return
true iff this Webview has a forward history item

        checkThread();
        return mProvider.canGoForward();
    
public booleancanZoomIn()
Gets whether this WebView can be zoomed in.

return
true if this WebView can be zoomed in
deprecated
This method is prone to inaccuracy due to race conditions between the web rendering and UI threads; prefer {@link WebViewClient#onScaleChanged}.

        checkThread();
        return mProvider.canZoomIn();
    
public booleancanZoomOut()
Gets whether this WebView can be zoomed out.

return
true if this WebView can be zoomed out
deprecated
This method is prone to inaccuracy due to race conditions between the web rendering and UI threads; prefer {@link WebViewClient#onScaleChanged}.

        checkThread();
        return mProvider.canZoomOut();
    
public android.graphics.PicturecapturePicture()
Gets a new picture that captures the current contents of this WebView. The picture is of the entire document being displayed, and is not limited to the area currently displayed by this WebView. Also, the picture is a static copy and is unaffected by later changes to the content being displayed.

Note that due to internal changes, for API levels between {@link android.os.Build.VERSION_CODES#HONEYCOMB} and {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH} inclusive, the picture does not include fixed position elements or scrollable divs.

Note that from {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1} the returned picture should only be drawn into bitmap-backed Canvas - using any other type of Canvas will involve additional conversion at a cost in memory and performance. Also the {@link android.graphics.Picture#createFromStream} and {@link android.graphics.Picture#writeToStream} methods are not supported on the returned object.

deprecated
Use {@link #onDraw} to obtain a bitmap snapshot of the WebView, or {@link #saveWebArchive} to save the content to a file.
return
a picture that captures the current contents of this WebView

        checkThread();
        if (TRACE) Log.d(LOGTAG, "capturePicture");
        return mProvider.capturePicture();
    
private voidcheckThread()


       
        // Ignore mWebViewThread == null because this can be called during in the super class
        // constructor, before this class's own constructor has even started.
        if (mWebViewThread != null && Looper.myLooper() != mWebViewThread) {
            Throwable throwable = new Throwable(
                    "A WebView method was called on thread '" +
                    Thread.currentThread().getName() + "'. " +
                    "All WebView methods must be called on the same thread. " +
                    "(Expected Looper " + mWebViewThread + " called on " + Looper.myLooper() +
                    ", FYI main Looper is " + Looper.getMainLooper() + ")");
            Log.w(LOGTAG, Log.getStackTraceString(throwable));
            StrictMode.onWebViewMethodCalledOnWrongThread(throwable);

            if (sEnforceThreadChecking) {
                throw new RuntimeException(throwable);
            }
        }
    
public voidclearCache(boolean includeDiskFiles)
Clears the resource cache. Note that the cache is per-application, so this will clear the cache for all WebViews used.

param
includeDiskFiles if false, only the RAM cache is cleared

        checkThread();
        if (TRACE) Log.d(LOGTAG, "clearCache");
        mProvider.clearCache(includeDiskFiles);
    
public static voidclearClientCertPreferences(java.lang.Runnable onCleared)
Clears the client certificate preferences stored in response to proceeding/cancelling client cert requests. Note that Webview automatically clears these preferences when it receives a {@link KeyChain#ACTION_STORAGE_CHANGED} intent. The preferences are shared by all the webviews that are created by the embedder application.

param
onCleared A runnable to be invoked when client certs are cleared. The embedder can pass null if not interested in the callback. The runnable will be called in UI thread.

        if (TRACE) Log.d(LOGTAG, "clearClientCertPreferences");
        getFactory().getStatics().clearClientCertPreferences(onCleared);
    
public voidclearFormData()
Removes the autocomplete popup from the currently focused form field, if present. Note this only affects the display of the autocomplete popup, it does not remove any saved form data from this WebView's store. To do that, use {@link WebViewDatabase#clearFormData}.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "clearFormData");
        mProvider.clearFormData();
    
public voidclearHistory()
Tells this WebView to clear its internal back/forward list.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "clearHistory");
        mProvider.clearHistory();
    
public voidclearMatches()
Clears the highlighting surrounding text matches created by {@link #findAllAsync}.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "clearMatches");
        mProvider.clearMatches();
    
public voidclearSslPreferences()
Clears the SSL preferences table stored in response to proceeding with SSL certificate errors.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "clearSslPreferences");
        mProvider.clearSslPreferences();
    
public voidclearView()
Clears this WebView so that onDraw() will draw nothing but white background, and onMeasure() will return 0 if MeasureSpec is not MeasureSpec.EXACTLY.

deprecated
Use WebView.loadUrl("about:blank") to reliably reset the view state and release page resources (including any running JavaScript).

        checkThread();
        if (TRACE) Log.d(LOGTAG, "clearView");
        mProvider.clearView();
    
protected intcomputeHorizontalScrollOffset()

        return mProvider.getScrollDelegate().computeHorizontalScrollOffset();
    
protected intcomputeHorizontalScrollRange()

        return mProvider.getScrollDelegate().computeHorizontalScrollRange();
    
public voidcomputeScroll()

        mProvider.getScrollDelegate().computeScroll();
    
protected intcomputeVerticalScrollExtent()

        return mProvider.getScrollDelegate().computeVerticalScrollExtent();
    
protected intcomputeVerticalScrollOffset()

        return mProvider.getScrollDelegate().computeVerticalScrollOffset();
    
protected intcomputeVerticalScrollRange()

        return mProvider.getScrollDelegate().computeVerticalScrollRange();
    
public WebBackForwardListcopyBackForwardList()
Gets the WebBackForwardList for this WebView. This contains the back/forward list for use in querying each item in the history stack. This is a copy of the private WebBackForwardList so it contains only a snapshot of the current state. Multiple calls to this method may return different objects. The object returned from this method will not be updated to reflect any new state.

        checkThread();
        return mProvider.copyBackForwardList();

    
public android.print.PrintDocumentAdaptercreatePrintDocumentAdapter()

deprecated
Use {@link #createPrintDocumentAdapter(String)} which requires user to provide a print document name.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "createPrintDocumentAdapter");
        return mProvider.createPrintDocumentAdapter("default");
    
public android.print.PrintDocumentAdaptercreatePrintDocumentAdapter(java.lang.String documentName)
Creates a PrintDocumentAdapter that provides the content of this Webview for printing. The adapter works by converting the Webview contents to a PDF stream. The Webview cannot be drawn during the conversion process - any such draws are undefined. It is recommended to use a dedicated off screen Webview for the printing. If necessary, an application may temporarily hide a visible WebView by using a custom PrintDocumentAdapter instance wrapped around the object returned and observing the onStart and onFinish methods. See {@link android.print.PrintDocumentAdapter} for more information.

param
documentName The user-facing name of the printed document. See {@link android.print.PrintDocumentInfo}

        checkThread();
        if (TRACE) Log.d(LOGTAG, "createPrintDocumentAdapter");
        return mProvider.createPrintDocumentAdapter(documentName);
    
public voiddebugDump()

deprecated
This method is now obsolete.
hide
Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}

        checkThread();
    
public voiddestroy()
Destroys the internal state of this WebView. This method should be called after this WebView has been removed from the view system. No other methods may be called on this WebView after destroy.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "destroy");
        mProvider.destroy();
    
public static voiddisablePlatformNotifications()
Disables platform notifications of data state and proxy changes. Notifications are enabled by default.

deprecated
This method is now obsolete.
hide
Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}

        // noop
    
protected voiddispatchDraw(android.graphics.Canvas canvas)

        mProvider.getViewDelegate().preDispatchDraw(canvas);
        super.dispatchDraw(canvas);
    
public booleandispatchKeyEvent(android.view.KeyEvent event)

        return mProvider.getViewDelegate().dispatchKeyEvent(event);
    
public voiddocumentHasImages(android.os.Message response)
Queries the document to see if it contains any image references. The message object will be dispatched with arg1 being set to 1 if images were found and 0 if the document does not reference any images.

param
response the message that will be dispatched with the result

        checkThread();
        mProvider.documentHasImages(response);
    
public voiddumpViewHierarchyWithProperties(java.io.BufferedWriter out, int level)
See {@link ViewDebug.HierarchyHandler#dumpViewHierarchyWithProperties(BufferedWriter, int)}

hide

        mProvider.dumpViewHierarchyWithProperties(out, level);
    
public voidemulateShiftHeld()
Puts this WebView into text selection mode. Do not rely on this functionality; it will be deprecated in the future.

deprecated
This method is now obsolete.
hide
Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}

        checkThread();
    
public static voidenablePlatformNotifications()
Enables platform notifications of data state and proxy changes. Notifications are enabled by default.

deprecated
This method is now obsolete.
hide
Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}

        // noop
    
public static voidenableSlowWholeDocumentDraw()
For apps targeting the L release, WebView has a new default behavior that reduces memory footprint and increases performance by intelligently choosing the portion of the HTML document that needs to be drawn. These optimizations are transparent to the developers. However, under certain circumstances, an App developer may want to disable them:
  1. When an app uses {@link #onDraw} to do own drawing and accesses portions of the page that is way outside the visible portion of the page.
  2. When an app uses {@link #capturePicture} to capture a very large HTML document. Note that capturePicture is a deprecated API.
Enabling drawing the entire HTML document has a significant performance cost. This method should be called before any WebViews are created.

        getFactory().getStatics().enableSlowWholeDocumentDraw();
    
private voidensureProviderCreated()

        checkThread();
        if (mProvider == null) {
            // As this can get called during the base class constructor chain, pass the minimum
            // number of dependencies here; the rest are deferred to init().
            mProvider = getFactory().createWebView(this, new PrivateAccess());
        }
    
public voidevaluateJavascript(java.lang.String script, ValueCallback resultCallback)
Asynchronously evaluates JavaScript in the context of the currently displayed page. If non-null, |resultCallback| will be invoked with any result returned from that execution. This method must be called on the UI thread and the callback will be made on the UI thread.

param
script the JavaScript to execute.
param
resultCallback A callback to be invoked when the script execution completes with the result of the execution (if any). May be null if no notificaion of the result is required.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "evaluateJavascript=" + script);
        mProvider.evaluateJavaScript(script, resultCallback);
    
public static java.lang.StringfindAddress(java.lang.String addr)
Gets the first substring consisting of the address of a physical location. Currently, only addresses in the United States are detected, and consist of:
  • a house number
  • a street name
  • a street type (Road, Circle, etc), either spelled out or abbreviated
  • a city name
  • a state or territory, either spelled out or two-letter abbr
  • an optional 5 digit or 9 digit zip code
All names must be correctly capitalized, and the zip code, if present, must be valid for the state. The street type must be a standard USPS spelling or abbreviation. The state or territory must also be spelled or abbreviated using USPS standards. The house number may not exceed five digits.

param
addr the string to search for addresses
return
the address, or if no address is found, null

        // TODO: Rewrite this in Java so it is not needed to start up chromium
        // Could also be deprecated
        return getFactory().getStatics().findAddress(addr);
    
public intfindAll(java.lang.String find)
Finds all instances of find on the page and highlights them. Notifies any registered {@link FindListener}.

param
find the string to find
return
the number of occurances of the String "find" that were found
deprecated
{@link #findAllAsync} is preferred.
see
#setFindListener

        checkThread();
        if (TRACE) Log.d(LOGTAG, "findAll");
        StrictMode.noteSlowCall("findAll blocks UI: prefer findAllAsync");
        return mProvider.findAll(find);
    
public voidfindAllAsync(java.lang.String find)
Finds all instances of find on the page and highlights them, asynchronously. Notifies any registered {@link FindListener}. Successive calls to this will cancel any pending searches.

param
find the string to find.
see
#setFindListener

        checkThread();
        if (TRACE) Log.d(LOGTAG, "findAllAsync");
        mProvider.findAllAsync(find);
    
public android.view.ViewfindHierarchyView(java.lang.String className, int hashCode)
See {@link ViewDebug.HierarchyHandler#findHierarchyView(String, int)}

hide

        return mProvider.findHierarchyView(className, hashCode);
    
public voidfindNext(boolean forward)
Highlights and scrolls to the next match found by {@link #findAllAsync}, wrapping around page boundaries as necessary. Notifies any registered {@link FindListener}. If {@link #findAllAsync(String)} has not been called yet, or if {@link #clearMatches} has been called since the last find operation, this function does nothing.

param
forward the direction to search
see
#setFindListener

        checkThread();
        if (TRACE) Log.d(LOGTAG, "findNext");
        mProvider.findNext(forward);
    
public voidflingScroll(int vx, int vy)

        checkThread();
        if (TRACE) Log.d(LOGTAG, "flingScroll");
        mProvider.flingScroll(vx, vy);
    
public voidfreeMemory()
Informs this WebView that memory is low so that it can free any available memory.

deprecated
Memory caches are automatically dropped when no longer needed, and in response to system memory pressure.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "freeMemory");
        mProvider.freeMemory();
    
public static voidfreeMemoryForTests()
Used only by internal tests to free up memory.

hide

        getFactory().getStatics().freeMemoryForTests();
    
public android.view.accessibility.AccessibilityNodeProvidergetAccessibilityNodeProvider()

        AccessibilityNodeProvider provider =
                mProvider.getViewDelegate().getAccessibilityNodeProvider();
        return provider == null ? super.getAccessibilityNodeProvider() : provider;
    
public android.net.http.SslCertificategetCertificate()
Gets the SSL certificate for the main top-level page or null if there is no certificate (the site is not secure).

return
the SSL certificate for the main top-level page

        checkThread();
        return mProvider.getCertificate();
    
public intgetContentHeight()
Gets the height of the HTML content.

return
the height of the HTML content

        checkThread();
        return mProvider.getContentHeight();
    
public intgetContentWidth()
Gets the width of the HTML content.

return
the width of the HTML content
hide

        return mProvider.getContentWidth();
    
private static synchronized WebViewFactoryProvidergetFactory()

        return WebViewFactory.getProvider();
    
public android.graphics.BitmapgetFavicon()
Gets the favicon for the current page. This is the favicon of the current page until WebViewClient.onReceivedIcon is called.

return
the favicon for the current page

        checkThread();
        return mProvider.getFavicon();
    
public android.webkit.WebView$HitTestResultgetHitTestResult()
Gets a HitTestResult based on the current cursor node. If a HTML::a tag is found and the anchor has a non-JavaScript URL, the HitTestResult type is set to SRC_ANCHOR_TYPE and the URL is set in the "extra" field. If the anchor does not have a URL or if it is a JavaScript URL, the type will be UNKNOWN_TYPE and the URL has to be retrieved through {@link #requestFocusNodeHref} asynchronously. If a HTML::img tag is found, the HitTestResult type is set to IMAGE_TYPE and the URL is set in the "extra" field. A type of SRC_IMAGE_ANCHOR_TYPE indicates an anchor with a URL that has an image as a child node. If a phone number is found, the HitTestResult type is set to PHONE_TYPE and the phone number is set in the "extra" field of HitTestResult. If a map address is found, the HitTestResult type is set to GEO_TYPE and the address is set in the "extra" field of HitTestResult. If an email address is found, the HitTestResult type is set to EMAIL_TYPE and the email is set in the "extra" field of HitTestResult. Otherwise, HitTestResult type is set to UNKNOWN_TYPE.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "getHitTestResult");
        return mProvider.getHitTestResult();
    
public java.lang.String[]getHttpAuthUsernamePassword(java.lang.String host, java.lang.String realm)
Retrieves HTTP authentication credentials for a given host and realm. This method is intended to be used with {@link WebViewClient#onReceivedHttpAuthRequest}.

param
host the host to which the credentials apply
param
realm the realm to which the credentials apply
return
the credentials as a String array, if found. The first element is the username and the second element is the password. Null if no credentials are found.
see
#setHttpAuthUsernamePassword
see
WebViewDatabase#hasHttpAuthUsernamePassword
see
WebViewDatabase#clearHttpAuthUsernamePassword

        checkThread();
        return mProvider.getHttpAuthUsernamePassword(host, realm);
    
public java.lang.StringgetOriginalUrl()
Gets the original URL for the current page. This is not always the same as the URL passed to WebViewClient.onPageStarted because although the load for that URL has begun, the current page may not have changed. Also, there may have been redirects resulting in a different URL to that originally requested.

return
the URL that was originally requested for the current page

        checkThread();
        return mProvider.getOriginalUrl();
    
public static synchronized PluginListgetPluginList()
Gets the list of currently loaded plugins.

return
the list of currently loaded plugins
deprecated
This was used for Gears, which has been deprecated.
hide

        return new PluginList();
    
public intgetProgress()
Gets the progress for the current page.

return
the progress for the current page between 0 and 100

        checkThread();
        return mProvider.getProgress();
    
public floatgetScale()
Gets the current scale of this WebView.

return
the current scale
deprecated
This method is prone to inaccuracy due to race conditions between the web rendering and UI threads; prefer {@link WebViewClient#onScaleChanged}.

        checkThread();
        return mProvider.getScale();
    
public WebSettingsgetSettings()
Gets the WebSettings object used to control the settings for this WebView.

return
a WebSettings object that can be used to control this WebView's settings

        checkThread();
        return mProvider.getSettings();
    
public java.lang.StringgetTitle()
Gets the title for the current page. This is the title of the current page until WebViewClient.onReceivedTitle is called.

return
the title for the current page

        checkThread();
        return mProvider.getTitle();
    
public java.lang.StringgetTouchIconUrl()
Gets the touch icon URL for the apple-touch-icon element, or a URL on this site's server pointing to the standard location of a touch icon.

hide

        return mProvider.getTouchIconUrl();
    
public java.lang.StringgetUrl()
Gets the URL for the current page. This is not always the same as the URL passed to WebViewClient.onPageStarted because although the load for that URL has begun, the current page may not have changed.

return
the URL for the current page

        checkThread();
        return mProvider.getUrl();
    
public intgetVisibleTitleHeight()
Gets the visible height (in pixels) of the embedded title bar (if any).

deprecated
This method is now obsolete.
hide
Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}

        checkThread();
        return mProvider.getVisibleTitleHeight();
    
public WebViewProvidergetWebViewProvider()
Gets the WebViewProvider. Used by providers to obtain the underlying implementation, e.g. when the appliction responds to WebViewClient.onCreateWindow() request.

hide
WebViewProvider is not public API.

        return mProvider;
    
public android.view.ViewgetZoomControls()
Gets the zoom controls for this WebView, as a separate View. The caller is responsible for inserting this View into the layout hierarchy.

API level {@link android.os.Build.VERSION_CODES#CUPCAKE} introduced built-in zoom mechanisms for the WebView, as opposed to these separate zoom controls. The built-in mechanisms are preferred and can be enabled using {@link WebSettings#setBuiltInZoomControls}.

deprecated
the built-in zoom mechanisms are preferred
hide
Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN}

        checkThread();
        return mProvider.getZoomControls();
    
public voidgoBack()
Goes back in the history of this WebView.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "goBack");
        mProvider.goBack();
    
public voidgoBackOrForward(int steps)
Goes to the history item that is the number of steps away from the current item. Steps is negative if backward and positive if forward.

param
steps the number of steps to take back or forward in the back forward list

        checkThread();
        if (TRACE) Log.d(LOGTAG, "goBackOrForwad=" + steps);
        mProvider.goBackOrForward(steps);
    
public voidgoForward()
Goes forward in the history of this WebView.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "goForward");
        mProvider.goForward();
    
public voidinvokeZoomPicker()
Invokes the graphical zoom picker widget for this WebView. This will result in the zoom widget appearing on the screen to control the zoom level of this WebView.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "invokeZoomPicker");
        mProvider.invokeZoomPicker();
    
public booleanisPaused()
Gets whether this WebView is paused, meaning onPause() was called. Calling onResume() sets the paused state back to false.

hide

        return mProvider.isPaused();
    
public booleanisPrivateBrowsingEnabled()
Gets whether private browsing is enabled in this WebView.

        checkThread();
        return mProvider.isPrivateBrowsingEnabled();
    
public voidloadData(java.lang.String data, java.lang.String mimeType, java.lang.String encoding)
Loads the given data into this WebView using a 'data' scheme URL.

Note that JavaScript's same origin policy means that script running in a page loaded using this method will be unable to access content loaded using any scheme other than 'data', including 'http(s)'. To avoid this restriction, use {@link #loadDataWithBaseURL(String,String,String,String,String) loadDataWithBaseURL()} with an appropriate base URL.

The encoding parameter specifies whether the data is base64 or URL encoded. If the data is base64 encoded, the value of the encoding parameter must be 'base64'. For all other values of the parameter, including null, it is assumed that the data uses ASCII encoding for octets inside the range of safe URL characters and use the standard %xx hex encoding of URLs for octets outside that range. For example, '#', '%', '\', '?' should be replaced by %23, %25, %27, %3f respectively.

The 'data' scheme URL formed by this method uses the default US-ASCII charset. If you need need to set a different charset, you should form a 'data' scheme URL which explicitly specifies a charset parameter in the mediatype portion of the URL and call {@link #loadUrl(String)} instead. Note that the charset obtained from the mediatype portion of a data URL always overrides that specified in the HTML or XML document itself.

param
data a String of data in the given encoding
param
mimeType the MIME type of the data, e.g. 'text/html'
param
encoding the encoding of the data

        checkThread();
        if (TRACE) Log.d(LOGTAG, "loadData");
        mProvider.loadData(data, mimeType, encoding);
    
public voidloadDataWithBaseURL(java.lang.String baseUrl, java.lang.String data, java.lang.String mimeType, java.lang.String encoding, java.lang.String historyUrl)
Loads the given data into this WebView, using baseUrl as the base URL for the content. The base URL is used both to resolve relative URLs and when applying JavaScript's same origin policy. The historyUrl is used for the history entry.

Note that content specified in this way can access local device files (via 'file' scheme URLs) only if baseUrl specifies a scheme other than 'http', 'https', 'ftp', 'ftps', 'about' or 'javascript'.

If the base URL uses the data scheme, this method is equivalent to calling {@link #loadData(String,String,String) loadData()} and the historyUrl is ignored, and the data will be treated as part of a data: URL. If the base URL uses any other scheme, then the data will be loaded into the WebView as a plain string (i.e. not part of a data URL) and any URL-encoded entities in the string will not be decoded.

param
baseUrl the URL to use as the page's base URL. If null defaults to 'about:blank'.
param
data a String of data in the given encoding
param
mimeType the MIMEType of the data, e.g. 'text/html'. If null, defaults to 'text/html'.
param
encoding the encoding of the data
param
historyUrl the URL to use as the history entry. If null defaults to 'about:blank'. If non-null, this must be a valid URL.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "loadDataWithBaseURL=" + baseUrl);
        mProvider.loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl);
    
public voidloadUrl(java.lang.String url, java.util.Map additionalHttpHeaders)
Loads the given URL with the specified additional HTTP headers.

param
url the URL of the resource to load
param
additionalHttpHeaders the additional headers to be used in the HTTP request for this URL, specified as a map from name to value. Note that if this map contains any of the headers that are set by default by this WebView, such as those controlling caching, accept types or the User-Agent, their values may be overriden by this WebView's defaults.

        checkThread();
        if (TRACE) {
            StringBuilder headers = new StringBuilder();
            if (additionalHttpHeaders != null) {
                for (Map.Entry<String, String> entry : additionalHttpHeaders.entrySet()) {
                    headers.append(entry.getKey() + ":" + entry.getValue() + "\n");
                }
            }
            Log.d(LOGTAG, "loadUrl(extra headers)=" + url + "\n" + headers);
        }
        mProvider.loadUrl(url, additionalHttpHeaders);
    
public voidloadUrl(java.lang.String url)
Loads the given URL.

param
url the URL of the resource to load

        checkThread();
        if (TRACE) Log.d(LOGTAG, "loadUrl=" + url);
        mProvider.loadUrl(url);
    
voidnotifyFindDialogDismissed()

        checkThread();
        mProvider.notifyFindDialogDismissed();
    
protected voidonAttachedToWindow()

        super.onAttachedToWindow();
        mProvider.getViewDelegate().onAttachedToWindow();
    
public voidonChildViewAdded(android.view.View parent, android.view.View child)

deprecated
WebView no longer needs to implement ViewGroup.OnHierarchyChangeListener. This method does nothing now.

public voidonChildViewRemoved(android.view.View p, android.view.View child)

deprecated
WebView no longer needs to implement ViewGroup.OnHierarchyChangeListener. This method does nothing now.

protected voidonConfigurationChanged(android.content.res.Configuration newConfig)

        mProvider.getViewDelegate().onConfigurationChanged(newConfig);
    
public android.view.inputmethod.InputConnectiononCreateInputConnection(android.view.inputmethod.EditorInfo outAttrs)

        return mProvider.getViewDelegate().onCreateInputConnection(outAttrs);
    
protected voidonDetachedFromWindowInternal()

hide

        mProvider.getViewDelegate().onDetachedFromWindow();
        super.onDetachedFromWindowInternal();
    
protected voidonDraw(android.graphics.Canvas canvas)

        mProvider.getViewDelegate().onDraw(canvas);
    
protected voidonDrawVerticalScrollBar(android.graphics.Canvas canvas, android.graphics.drawable.Drawable scrollBar, int l, int t, int r, int b)

hide

        mProvider.getViewDelegate().onDrawVerticalScrollBar(canvas, scrollBar, l, t, r, b);
    
public voidonFinishTemporaryDetach()

        super.onFinishTemporaryDetach();
        mProvider.getViewDelegate().onFinishTemporaryDetach();
    
protected voidonFocusChanged(boolean focused, int direction, android.graphics.Rect previouslyFocusedRect)

        mProvider.getViewDelegate().onFocusChanged(focused, direction, previouslyFocusedRect);
        super.onFocusChanged(focused, direction, previouslyFocusedRect);
    
public booleanonGenericMotionEvent(android.view.MotionEvent event)

        return mProvider.getViewDelegate().onGenericMotionEvent(event);
    
public voidonGlobalFocusChanged(android.view.View oldFocus, android.view.View newFocus)

deprecated
WebView should not have implemented ViewTreeObserver.OnGlobalFocusChangeListener. This method does nothing now.

    
public booleanonHoverEvent(android.view.MotionEvent event)

        return mProvider.getViewDelegate().onHoverEvent(event);
    
public voidonInitializeAccessibilityEvent(android.view.accessibility.AccessibilityEvent event)

        super.onInitializeAccessibilityEvent(event);
        event.setClassName(WebView.class.getName());
        mProvider.getViewDelegate().onInitializeAccessibilityEvent(event);
    
public voidonInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo info)

        super.onInitializeAccessibilityNodeInfo(info);
        info.setClassName(WebView.class.getName());
        mProvider.getViewDelegate().onInitializeAccessibilityNodeInfo(info);
    
public booleanonKeyDown(int keyCode, android.view.KeyEvent event)

        return mProvider.getViewDelegate().onKeyDown(keyCode, event);
    
public booleanonKeyMultiple(int keyCode, int repeatCount, android.view.KeyEvent event)

        return mProvider.getViewDelegate().onKeyMultiple(keyCode, repeatCount, event);
    
public booleanonKeyUp(int keyCode, android.view.KeyEvent event)

        return mProvider.getViewDelegate().onKeyUp(keyCode, event);
    
protected voidonMeasure(int widthMeasureSpec, int heightMeasureSpec)

        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        mProvider.getViewDelegate().onMeasure(widthMeasureSpec, heightMeasureSpec);
    
protected voidonOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY)

        mProvider.getViewDelegate().onOverScrolled(scrollX, scrollY, clampedX, clampedY);
    
public voidonPause()
Pauses any extra processing associated with this WebView and its associated DOM, plugins, JavaScript etc. For example, if this WebView is taken offscreen, this could be called to reduce unnecessary CPU or network traffic. When this WebView is again "active", call onResume(). Note that this differs from pauseTimers(), which affects all WebViews.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "onPause");
        mProvider.onPause();
    
public voidonResume()
Resumes a WebView after a previous call to onPause().

        checkThread();
        if (TRACE) Log.d(LOGTAG, "onResume");
        mProvider.onResume();
    
protected voidonScrollChanged(int l, int t, int oldl, int oldt)

        super.onScrollChanged(l, t, oldl, oldt);
        mProvider.getViewDelegate().onScrollChanged(l, t, oldl, oldt);
    
protected voidonSizeChanged(int w, int h, int ow, int oh)

        super.onSizeChanged(w, h, ow, oh);
        mProvider.getViewDelegate().onSizeChanged(w, h, ow, oh);
    
public voidonStartTemporaryDetach()

        super.onStartTemporaryDetach();
        mProvider.getViewDelegate().onStartTemporaryDetach();
    
public booleanonTouchEvent(android.view.MotionEvent event)

        return mProvider.getViewDelegate().onTouchEvent(event);
    
public booleanonTrackballEvent(android.view.MotionEvent event)

        return mProvider.getViewDelegate().onTrackballEvent(event);
    
protected voidonVisibilityChanged(android.view.View changedView, int visibility)

        super.onVisibilityChanged(changedView, visibility);
        // This method may be called in the constructor chain, before the WebView provider is
        // created.
        ensureProviderCreated();
        mProvider.getViewDelegate().onVisibilityChanged(changedView, visibility);
    
public voidonWindowFocusChanged(boolean hasWindowFocus)

        mProvider.getViewDelegate().onWindowFocusChanged(hasWindowFocus);
        super.onWindowFocusChanged(hasWindowFocus);
    
protected voidonWindowVisibilityChanged(int visibility)

        super.onWindowVisibilityChanged(visibility);
        mProvider.getViewDelegate().onWindowVisibilityChanged(visibility);
    
public booleanoverlayHorizontalScrollbar()
Gets whether horizontal scrollbar has overlay style.

return
true if horizontal scrollbar has overlay style

        checkThread();
        return mProvider.overlayHorizontalScrollbar();
    
public booleanoverlayVerticalScrollbar()
Gets whether vertical scrollbar has overlay style.

return
true if vertical scrollbar has overlay style

        checkThread();
        return mProvider.overlayVerticalScrollbar();
    
public booleanpageDown(boolean bottom)
Scrolls the contents of this WebView down by half the page size.

param
bottom true to jump to bottom of page
return
true if the page was scrolled

        checkThread();
        if (TRACE) Log.d(LOGTAG, "pageDown");
        return mProvider.pageDown(bottom);
    
public booleanpageUp(boolean top)
Scrolls the contents of this WebView up by half the view size.

param
top true to jump to the top of the page
return
true if the page was scrolled

        checkThread();
        if (TRACE) Log.d(LOGTAG, "pageUp");
        return mProvider.pageUp(top);
    
public voidpauseTimers()
Pauses all layout, parsing, and JavaScript timers for all WebViews. This is a global requests, not restricted to just this WebView. This can be useful if the application has been paused.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "pauseTimers");
        mProvider.pauseTimers();
    
public booleanperformAccessibilityAction(int action, android.os.Bundle arguments)

        return mProvider.getViewDelegate().performAccessibilityAction(action, arguments);
    
public booleanperformLongClick()

        return mProvider.getViewDelegate().performLongClick();
    
public voidpostUrl(java.lang.String url, byte[] postData)
Loads the URL with postData using "POST" method into this WebView. If url is not a network URL, it will be loaded with {@link #loadUrl(String)} instead, ignoring the postData param.

param
url the URL of the resource to load
param
postData the data will be passed to "POST" request, which must be be "application/x-www-form-urlencoded" encoded.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "postUrl=" + url);
        if (URLUtil.isNetworkUrl(url)) {
            mProvider.postUrl(url, postData);
        } else {
            mProvider.loadUrl(url);
        }
    
public voidrefreshPlugins(boolean reloadOpenPages)

deprecated
This was used for Gears, which has been deprecated.
hide

        checkThread();
    
public voidreload()
Reloads the current URL.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "reload");
        mProvider.reload();
    
public voidremoveJavascriptInterface(java.lang.String name)
Removes a previously injected Java object from this WebView. Note that the removal will not be reflected in JavaScript until the page is next (re)loaded. See {@link #addJavascriptInterface}.

param
name the name used to expose the object in JavaScript

        checkThread();
        if (TRACE) Log.d(LOGTAG, "removeJavascriptInterface=" + name);
        mProvider.removeJavascriptInterface(name);
    
public booleanrequestChildRectangleOnScreen(android.view.View child, android.graphics.Rect rect, boolean immediate)

        return mProvider.getViewDelegate().requestChildRectangleOnScreen(child, rect, immediate);
    
public booleanrequestFocus(int direction, android.graphics.Rect previouslyFocusedRect)

        return mProvider.getViewDelegate().requestFocus(direction, previouslyFocusedRect);
    
public voidrequestFocusNodeHref(android.os.Message hrefMsg)
Requests the anchor or image element URL at the last tapped point. If hrefMsg is null, this method returns immediately and does not dispatch hrefMsg to its target. If the tapped point hits an image, an anchor, or an image in an anchor, the message associates strings in named keys in its data. The value paired with the key may be an empty string.

param
hrefMsg the message to be dispatched with the result of the request. The message data contains three keys. "url" returns the anchor's href attribute. "title" returns the anchor's text. "src" returns the image's src attribute.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "requestFocusNodeHref");
        mProvider.requestFocusNodeHref(hrefMsg);
    
public voidrequestImageRef(android.os.Message msg)
Requests the URL of the image last touched by the user. msg will be sent to its target with a String representing the URL as its object.

param
msg the message to be dispatched with the result of the request as the data member with "url" as key. The result can be null.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "requestImageRef");
        mProvider.requestImageRef(msg);
    
public booleanrestorePicture(android.os.Bundle b, java.io.File src)
Restores the display data that was saved in {@link #savePicture}. Used in conjunction with {@link #restoreState}. Note that this will not work if this WebView is hardware accelerated.

param
b a Bundle containing the saved display data
param
src the file where the picture data was stored
return
true if the picture was successfully restored
deprecated
This method is now obsolete.
hide
Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}

        checkThread();
        if (TRACE) Log.d(LOGTAG, "restorePicture=" + src.getName());
        return mProvider.restorePicture(b, src);
    
public WebBackForwardListrestoreState(android.os.Bundle inState)
Restores the state of this WebView from the given Bundle. This method is intended for use in {@link android.app.Activity#onRestoreInstanceState} and should be called to restore the state of this WebView. If it is called after this WebView has had a chance to build state (load pages, create a back/forward list, etc.) there may be undesirable side-effects. Please note that this method no longer restores the display data for this WebView.

param
inState the incoming Bundle of state
return
the restored back/forward list or null if restoreState failed

        checkThread();
        if (TRACE) Log.d(LOGTAG, "restoreState");
        return mProvider.restoreState(inState);
    
public voidresumeTimers()
Resumes all layout, parsing, and JavaScript timers for all WebViews. This will resume dispatching all timers.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "resumeTimers");
        mProvider.resumeTimers();
    
public voidsavePassword(java.lang.String host, java.lang.String username, java.lang.String password)
Sets a username and password pair for the specified host. This data is used by the Webview to autocomplete username and password fields in web forms. Note that this is unrelated to the credentials used for HTTP authentication.

param
host the host that required the credentials
param
username the username for the given host
param
password the password for the given host
see
WebViewDatabase#clearUsernamePassword
see
WebViewDatabase#hasUsernamePassword
deprecated
Saving passwords in WebView will not be supported in future versions.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "savePassword=" + host);
        mProvider.savePassword(host, username, password);
    
public booleansavePicture(android.os.Bundle b, java.io.File dest)
Saves the current display data to the Bundle given. Used in conjunction with {@link #saveState}.

param
b a Bundle to store the display data
param
dest the file to store the serialized picture data. Will be overwritten with this WebView's picture data.
return
true if the picture was successfully saved
deprecated
This method is now obsolete.
hide
Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}

        checkThread();
        if (TRACE) Log.d(LOGTAG, "savePicture=" + dest.getName());
        return mProvider.savePicture(b, dest);
    
public WebBackForwardListsaveState(android.os.Bundle outState)
Saves the state of this WebView used in {@link android.app.Activity#onSaveInstanceState}. Please note that this method no longer stores the display data for this WebView. The previous behavior could potentially leak files if {@link #restoreState} was never called.

param
outState the Bundle to store this WebView's state
return
the same copy of the back/forward list used to save the state. If saveState fails, the returned list will be null.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "saveState");
        return mProvider.saveState(outState);
    
public voidsaveWebArchive(java.lang.String filename)
Saves the current view as a web archive.

param
filename the filename where the archive should be placed

        checkThread();
        if (TRACE) Log.d(LOGTAG, "saveWebArchive=" + filename);
        mProvider.saveWebArchive(filename);
    
public voidsaveWebArchive(java.lang.String basename, boolean autoname, ValueCallback callback)
Saves the current view as a web archive.

param
basename the filename where the archive should be placed
param
autoname if false, takes basename to be a file. If true, basename is assumed to be a directory in which a filename will be chosen according to the URL of the current page.
param
callback called after the web archive has been saved. The parameter for onReceiveValue will either be the filename under which the file was saved, or null if saving the file failed.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "saveWebArchive(auto)=" + basename);
        mProvider.saveWebArchive(basename, autoname, callback);
    
public voidsetBackgroundColor(int color)

        mProvider.getViewDelegate().setBackgroundColor(color);
    
public voidsetCertificate(android.net.http.SslCertificate certificate)
Sets the SSL certificate for the main top-level page.

deprecated
Calling this function has no useful effect, and will be ignored in future releases.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "setCertificate=" + certificate);
        mProvider.setCertificate(certificate);
    
public voidsetDownloadListener(DownloadListener listener)
Registers the interface to be used when content can not be handled by the rendering engine, and should be downloaded instead. This will replace the current handler.

param
listener an implementation of DownloadListener

        checkThread();
        mProvider.setDownloadListener(listener);
    
voidsetFindDialogFindListener(android.webkit.WebView$FindListener listener)

        checkThread();
        setupFindListenerIfNeeded();
        mFindListener.mFindDialogFindListener = listener;
    
public voidsetFindListener(android.webkit.WebView$FindListener listener)
Registers the listener to be notified as find-on-page operations progress. This will replace the current listener.

param
listener an implementation of {@link FindListener}

        checkThread();
        setupFindListenerIfNeeded();
        mFindListener.mUserFindListener = listener;
    
protected booleansetFrame(int left, int top, int right, int bottom)

hide

        return mProvider.getViewDelegate().setFrame(left, top, right, bottom);
    
public voidsetHorizontalScrollbarOverlay(boolean overlay)
Specifies whether the horizontal scrollbar has overlay style.

param
overlay true if horizontal scrollbar should have overlay style

        checkThread();
        if (TRACE) Log.d(LOGTAG, "setHorizontalScrollbarOverlay=" + overlay);
        mProvider.setHorizontalScrollbarOverlay(overlay);
    
public voidsetHttpAuthUsernamePassword(java.lang.String host, java.lang.String realm, java.lang.String username, java.lang.String password)
Stores HTTP authentication credentials for a given host and realm. This method is intended to be used with {@link WebViewClient#onReceivedHttpAuthRequest}.

param
host the host to which the credentials apply
param
realm the realm to which the credentials apply
param
username the username
param
password the password
see
#getHttpAuthUsernamePassword
see
WebViewDatabase#hasHttpAuthUsernamePassword
see
WebViewDatabase#clearHttpAuthUsernamePassword

        checkThread();
        if (TRACE) Log.d(LOGTAG, "setHttpAuthUsernamePassword=" + host);
        mProvider.setHttpAuthUsernamePassword(host, realm, username, password);
    
public voidsetInitialScale(int scaleInPercent)
Sets the initial scale for this WebView. 0 means default. The behavior for the default scale depends on the state of {@link WebSettings#getUseWideViewPort()} and {@link WebSettings#getLoadWithOverviewMode()}. If the content fits into the WebView control by width, then the zoom is set to 100%. For wide content, the behavor depends on the state of {@link WebSettings#getLoadWithOverviewMode()}. If its value is true, the content will be zoomed out to be fit by width into the WebView control, otherwise not. If initial scale is greater than 0, WebView starts with this value as initial scale. Please note that unlike the scale properties in the viewport meta tag, this method doesn't take the screen density into account.

param
scaleInPercent the initial scale in percent

        checkThread();
        if (TRACE) Log.d(LOGTAG, "setInitialScale=" + scaleInPercent);
        mProvider.setInitialScale(scaleInPercent);
    
public voidsetLayerType(int layerType, android.graphics.Paint paint)

        super.setLayerType(layerType, paint);
        mProvider.getViewDelegate().setLayerType(layerType, paint);
    
public voidsetLayoutParams(ViewGroup.LayoutParams params)

        mProvider.getViewDelegate().setLayoutParams(params);
    
public voidsetMapTrackballToArrowKeys(boolean setMap)

deprecated
Only the default case, true, will be supported in a future version.

        checkThread();
        mProvider.setMapTrackballToArrowKeys(setMap);
    
public voidsetNetworkAvailable(boolean networkUp)
Informs WebView of the network state. This is used to set the JavaScript property window.navigator.isOnline and generates the online/offline event as specified in HTML5, sec. 5.7.7

param
networkUp a boolean indicating if network is available

        checkThread();
        if (TRACE) Log.d(LOGTAG, "setNetworkAvailable=" + networkUp);
        mProvider.setNetworkAvailable(networkUp);
    
public voidsetOverScrollMode(int mode)

        super.setOverScrollMode(mode);
        // This method may be called in the constructor chain, before the WebView provider is
        // created.
        ensureProviderCreated();
        mProvider.getViewDelegate().setOverScrollMode(mode);
    
public voidsetPictureListener(android.webkit.WebView$PictureListener listener)
Sets the Picture listener. This is an interface used to receive notifications of a new Picture.

param
listener an implementation of WebView.PictureListener
deprecated
This method is now obsolete.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "setPictureListener=" + listener);
        mProvider.setPictureListener(listener);
    
public voidsetScrollBarStyle(int style)

        mProvider.getViewDelegate().setScrollBarStyle(style);
        super.setScrollBarStyle(style);
    
public voidsetVerticalScrollbarOverlay(boolean overlay)
Specifies whether the vertical scrollbar has overlay style.

param
overlay true if vertical scrollbar should have overlay style

        checkThread();
        if (TRACE) Log.d(LOGTAG, "setVerticalScrollbarOverlay=" + overlay);
        mProvider.setVerticalScrollbarOverlay(overlay);
    
public voidsetWebChromeClient(WebChromeClient client)
Sets the chrome handler. This is an implementation of WebChromeClient for use in handling JavaScript dialogs, favicons, titles, and the progress. This will replace the current handler.

param
client an implementation of WebChromeClient

        checkThread();
        mProvider.setWebChromeClient(client);
    
public static voidsetWebContentsDebuggingEnabled(boolean enabled)
Enables debugging of web contents (HTML / CSS / JavaScript) loaded into any WebViews of this application. This flag can be enabled in order to facilitate debugging of web layouts and JavaScript code running inside WebViews. Please refer to WebView documentation for the debugging guide. The default is false.

param
enabled whether to enable web contents debugging

        getFactory().getStatics().setWebContentsDebuggingEnabled(enabled);
    
public voidsetWebViewClient(WebViewClient client)
Sets the WebViewClient that will receive various notifications and requests. This will replace the current handler.

param
client an implementation of WebViewClient

        checkThread();
        mProvider.setWebViewClient(client);
    
private voidsetupFindListenerIfNeeded()

        if (mFindListener == null) {
            mFindListener = new FindListenerDistributor();
            mProvider.setFindListener(mFindListener);
        }
    
public booleanshouldDelayChildPressedState()

        return mProvider.getViewDelegate().shouldDelayChildPressedState();
    
public booleanshowFindDialog(java.lang.String text, boolean showIme)
Starts an ActionMode for finding text in this WebView. Only works if this WebView is attached to the view system.

param
text if non-null, will be the initial text to search for. Otherwise, the last String searched for in this WebView will be used to start.
param
showIme if true, show the IME, assuming the user will begin typing. If false and text is non-null, perform a find all.
return
true if the find dialog is shown, false otherwise
deprecated
This method does not work reliably on all Android versions; implementing a custom find dialog using WebView.findAllAsync() provides a more robust solution.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "showFindDialog");
        return mProvider.showFindDialog(text, showIme);
    
public voidstopLoading()
Stops the current load.

        checkThread();
        if (TRACE) Log.d(LOGTAG, "stopLoading");
        mProvider.stopLoading();
    
public voidzoomBy(float zoomFactor)
Performs a zoom operation in this WebView.

param
zoomFactor the zoom factor to apply. The zoom factor will be clamped to the Webview's zoom limits. This value must be in the range 0.01 to 100.0 inclusive.

        checkThread();
        if (zoomFactor < 0.01)
            throw new IllegalArgumentException("zoomFactor must be greater than 0.01.");
        if (zoomFactor > 100.0)
            throw new IllegalArgumentException("zoomFactor must be less than 100.");
        mProvider.zoomBy(zoomFactor);
    
public booleanzoomIn()
Performs zoom in in this WebView.

return
true if zoom in succeeds, false if no zoom changes

        checkThread();
        return mProvider.zoomIn();
    
public booleanzoomOut()
Performs zoom out in this WebView.

return
true if zoom out succeeds, false if no zoom changes

        checkThread();
        return mProvider.zoomOut();