blob: cba11a84e9eb1697c11afc62b07c5871e4b89a4a [file] [log] [blame]
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001/*
2 * Copyright (C) 2007 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.webkit;
18
Hui Shu539b0772016-04-20 15:21:37 -070019import android.annotation.IntDef;
Nate Fischer3442c742017-09-08 17:02:00 -070020import android.annotation.Nullable;
Yuncheol Heoeeba0252014-07-08 19:43:00 +090021import android.annotation.SystemApi;
George Mount9f410c52012-08-10 15:29:30 -070022import android.content.Context;
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070023
Hui Shu539b0772016-04-20 15:21:37 -070024import java.lang.annotation.ElementType;
25import java.lang.annotation.Retention;
26import java.lang.annotation.RetentionPolicy;
27import java.lang.annotation.Target;
28
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070029/**
30 * Manages settings state for a WebView. When a WebView is first created, it
31 * obtains a set of default settings. These default settings will be returned
Nate Fischer4ea92402017-11-17 18:48:13 -080032 * from any getter call. A {@code WebSettings} object obtained from
33 * {@link WebView#getSettings()} is tied to the life of the WebView. If a WebView has
34 * been destroyed, any method call on {@code WebSettings} will throw an
35 * {@link IllegalStateException}.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070036 */
Jonathan Dixond3101b12012-04-12 20:51:51 +010037// This is an abstract base class: concrete WebViewProviders must
Jonathan Dixon3c909522012-02-28 18:45:06 +000038// create a class derived from this, and return an instance of it in the
39// WebViewProvider.getWebSettingsProvider() method implementation.
Selim Gurun0ea6dad2012-03-29 18:19:01 -070040public abstract class WebSettings {
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070041 /**
42 * Enum for controlling the layout of html.
Steve Block4e584df2012-04-24 23:12:47 +010043 * <ul>
Nate Fischer4ea92402017-11-17 18:48:13 -080044 * <li>{@code NORMAL} means no rendering changes. This is the recommended choice for maximum
Jonathan Dixon5545d082013-08-31 22:43:11 -070045 * compatibility across different platforms and Android versions.</li>
Nate Fischer4ea92402017-11-17 18:48:13 -080046 * <li>{@code SINGLE_COLUMN} moves all content into one column that is the width of the
Steve Block4e584df2012-04-24 23:12:47 +010047 * view.</li>
Nate Fischer4ea92402017-11-17 18:48:13 -080048 * <li>{@code NARROW_COLUMNS} makes all columns no wider than the screen if possible. Only use
Jonathan Dixon5545d082013-08-31 22:43:11 -070049 * this for API levels prior to {@link android.os.Build.VERSION_CODES#KITKAT}.</li>
Nate Fischer4ea92402017-11-17 18:48:13 -080050 * <li>{@code TEXT_AUTOSIZING} boosts font size of paragraphs based on heuristics to make
Mikhail Naganov94e0bd32012-12-14 17:01:25 +000051 * the text readable when viewing a wide-viewport layout in the overview mode.
52 * It is recommended to enable zoom support {@link #setSupportZoom} when
Jonathan Dixon5545d082013-08-31 22:43:11 -070053 * using this mode. Supported from API level
54 * {@link android.os.Build.VERSION_CODES#KITKAT}</li>
Steve Block4e584df2012-04-24 23:12:47 +010055 * </ul>
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070056 */
57 // XXX: These must match LayoutAlgorithm in Settings.h in WebCore.
58 public enum LayoutAlgorithm {
59 NORMAL,
John Reck5a1ef4132011-10-26 10:37:00 -070060 /**
61 * @deprecated This algorithm is now obsolete.
62 */
63 @Deprecated
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070064 SINGLE_COLUMN,
Mikhail Naganov94e0bd32012-12-14 17:01:25 +000065 /**
Jonathan Dixon5545d082013-08-31 22:43:11 -070066 * @deprecated This algorithm is now obsolete.
Mikhail Naganov94e0bd32012-12-14 17:01:25 +000067 */
Jonathan Dixon5545d082013-08-31 22:43:11 -070068 @Deprecated
69 NARROW_COLUMNS,
Mikhail Naganov94e0bd32012-12-14 17:01:25 +000070 TEXT_AUTOSIZING
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070071 }
72
73 /**
74 * Enum for specifying the text size.
Steve Block4e584df2012-04-24 23:12:47 +010075 * <ul>
76 * <li>SMALLEST is 50%</li>
77 * <li>SMALLER is 75%</li>
78 * <li>NORMAL is 100%</li>
79 * <li>LARGER is 150%</li>
80 * <li>LARGEST is 200%</li>
81 * </ul>
82 *
John Reckcaeb1202011-06-17 11:50:15 -070083 * @deprecated Use {@link WebSettings#setTextZoom(int)} and {@link WebSettings#getTextZoom()} instead.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070084 */
Aurimas Liutikas514c5ef2016-05-24 15:22:55 -070085 @Deprecated
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070086 public enum TextSize {
87 SMALLEST(50),
88 SMALLER(75),
89 NORMAL(100),
90 LARGER(150),
91 LARGEST(200);
92 TextSize(int size) {
93 value = size;
94 }
95 int value;
96 }
Grace Kloba0d8b77c2009-06-25 11:20:51 -070097
98 /**
99 * Enum for specifying the WebView's desired density.
Steve Block4e584df2012-04-24 23:12:47 +0100100 * <ul>
Nate Fischer4ea92402017-11-17 18:48:13 -0800101 * <li>{@code FAR} makes 100% looking like in 240dpi</li>
102 * <li>{@code MEDIUM} makes 100% looking like in 160dpi</li>
103 * <li>{@code CLOSE} makes 100% looking like in 120dpi</li>
Steve Block4e584df2012-04-24 23:12:47 +0100104 * </ul>
Grace Kloba0d8b77c2009-06-25 11:20:51 -0700105 */
106 public enum ZoomDensity {
107 FAR(150), // 240dpi
108 MEDIUM(100), // 160dpi
109 CLOSE(75); // 120dpi
110 ZoomDensity(int size) {
111 value = size;
112 }
Mikhail Naganovce76ca52012-07-27 12:00:05 +0100113
114 /**
115 * @hide Only for use by WebViewProvider implementations
116 */
117 public int getValue() {
118 return value;
119 }
120
Grace Kloba0d8b77c2009-06-25 11:20:51 -0700121 int value;
122 }
123
Tim Volodineb90f5382016-04-29 12:44:41 +0100124 /** @hide */
Jeff Sharkeyce8db992017-12-13 20:05:05 -0700125 @IntDef(prefix = { "LOAD_" }, value = {
126 LOAD_DEFAULT,
127 LOAD_NORMAL,
128 LOAD_CACHE_ELSE_NETWORK,
129 LOAD_NO_CACHE,
130 LOAD_CACHE_ONLY
131 })
Tim Volodineb90f5382016-04-29 12:44:41 +0100132 @Retention(RetentionPolicy.SOURCE)
133 public @interface CacheMode {}
134
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700135 /**
Mikhail Naganov500b0032012-07-25 13:06:14 +0100136 * Default cache usage mode. If the navigation type doesn't impose any
137 * specific behavior, use cached resources when they are available
138 * and not expired, otherwise load resources from the network.
139 * Use with {@link #setCacheMode}.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700140 */
141 public static final int LOAD_DEFAULT = -1;
142
143 /**
Mikhail Naganov500b0032012-07-25 13:06:14 +0100144 * Normal cache usage mode. Use with {@link #setCacheMode}.
Mikhail Naganov56936a12012-07-25 13:07:18 +0100145 *
146 * @deprecated This value is obsolete, as from API level
147 * {@link android.os.Build.VERSION_CODES#HONEYCOMB} and onwards it has the
148 * same effect as {@link #LOAD_DEFAULT}.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700149 */
Kristian Monsen5cc23512012-08-09 15:33:08 -0400150 @Deprecated
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700151 public static final int LOAD_NORMAL = 0;
152
153 /**
Mikhail Naganov500b0032012-07-25 13:06:14 +0100154 * Use cached resources when they are available, even if they have expired.
155 * Otherwise load resources from the network.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700156 * Use with {@link #setCacheMode}.
157 */
158 public static final int LOAD_CACHE_ELSE_NETWORK = 1;
159
160 /**
Mikhail Naganov500b0032012-07-25 13:06:14 +0100161 * Don't use the cache, load from the network.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700162 * Use with {@link #setCacheMode}.
163 */
164 public static final int LOAD_NO_CACHE = 2;
Michael Kolba172e7d2010-06-30 12:35:26 -0700165
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700166 /**
Mikhail Naganov500b0032012-07-25 13:06:14 +0100167 * Don't use the network, load from the cache.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700168 * Use with {@link #setCacheMode}.
169 */
170 public static final int LOAD_CACHE_ONLY = 3;
171
172 public enum RenderPriority {
173 NORMAL,
174 HIGH,
175 LOW
176 }
177
Patrick Scott300f2e92010-03-22 10:20:45 -0400178 /**
179 * The plugin state effects how plugins are treated on a page. ON means
180 * that any object will be loaded even if a plugin does not exist to handle
181 * the content. ON_DEMAND means that if there is a plugin installed that
182 * can handle the content, a placeholder is shown until the user clicks on
183 * the placeholder. Once clicked, the plugin will be enabled on the page.
184 * OFF means that all plugins will be turned off and any fallback content
185 * will be used.
186 */
187 public enum PluginState {
188 ON,
189 ON_DEMAND,
190 OFF
191 }
192
Ben Murdoche9e3ccd2010-10-06 14:33:02 +0100193 /**
Ben Murdochfe9fc3d2014-04-10 15:31:06 +0100194 * Used with {@link #setMixedContentMode}
195 *
196 * In this mode, the WebView will allow a secure origin to load content from any other origin,
197 * even if that origin is insecure. This is the least secure mode of operation for the WebView,
198 * and where possible apps should not set this mode.
199 */
200 public static final int MIXED_CONTENT_ALWAYS_ALLOW = 0;
201
202 /**
203 * Used with {@link #setMixedContentMode}
204 *
205 * In this mode, the WebView will not allow a secure origin to load content from an insecure
206 * origin. This is the preferred and most secure mode of operation for the WebView and apps are
207 * strongly advised to use this mode.
208 */
209 public static final int MIXED_CONTENT_NEVER_ALLOW = 1;
210
211 /**
212 * Used with {@link #setMixedContentMode}
213 *
214 * In this mode, the WebView will attempt to be compatible with the approach of a modern web
215 * browser with regard to mixed content. Some insecure content may be allowed to be loaded by
216 * a secure origin and other types of content will be blocked. The types of content are allowed
217 * or blocked may change release to release and are not explicitly defined.
218 *
219 * This mode is intended to be used by apps that are not in control of the content that they
220 * render but desire to operate in a reasonably secure environment. For highest security, apps
221 * are recommended to use {@link #MIXED_CONTENT_NEVER_ALLOW}.
222 */
223 public static final int MIXED_CONTENT_COMPATIBILITY_MODE = 2;
224
225 /**
Steve Blockb0e0f332012-06-13 22:01:11 +0100226 * Enables dumping the pages navigation cache to a text file. The default
Nate Fischer0a6140d2017-09-05 12:37:49 -0700227 * is {@code false}.
Steve Block4e584df2012-04-24 23:12:47 +0100228 *
Kristian Monsenfc771652011-05-10 16:44:05 +0100229 * @deprecated This method is now obsolete.
Kristian Monsenf4912582012-08-16 15:26:24 -0400230 * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700231 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000232 @SystemApi
Kristian Monsenfc771652011-05-10 16:44:05 +0100233 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +0000234 public abstract void setNavDump(boolean enabled);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700235
236 /**
Steve Block4e584df2012-04-24 23:12:47 +0100237 * Gets whether dumping the navigation cache is enabled.
238 *
Steve Blockb0e0f332012-06-13 22:01:11 +0100239 * @return whether dumping the navigation cache is enabled
240 * @see #setNavDump
Kristian Monsenfc771652011-05-10 16:44:05 +0100241 * @deprecated This method is now obsolete.
Kristian Monsenf4912582012-08-16 15:26:24 -0400242 * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700243 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000244 @SystemApi
Kristian Monsenfc771652011-05-10 16:44:05 +0100245 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +0000246 public abstract boolean getNavDump();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700247
248 /**
Mikhail Naganovb533fb42012-04-05 14:50:02 +0100249 * Sets whether the WebView should support zooming using its on-screen zoom
250 * controls and gestures. The particular zoom mechanisms that should be used
251 * can be set with {@link #setBuiltInZoomControls}. This setting does not
252 * affect zooming performed using the {@link WebView#zoomIn()} and
Nate Fischer0a6140d2017-09-05 12:37:49 -0700253 * {@link WebView#zoomOut()} methods. The default is {@code true}.
Steve Block4e584df2012-04-24 23:12:47 +0100254 *
255 * @param support whether the WebView should support zoom
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700256 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000257 public abstract void setSupportZoom(boolean support);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700258
259 /**
Steve Block4e584df2012-04-24 23:12:47 +0100260 * Gets whether the WebView supports zoom.
261 *
Nate Fischer0a6140d2017-09-05 12:37:49 -0700262 * @return {@code true} if the WebView supports zoom
Steve Block4e584df2012-04-24 23:12:47 +0100263 * @see #setSupportZoom
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700264 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000265 public abstract boolean supportZoom();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700266
267 /**
Teng-Hui Zhu0e5b1602012-07-17 17:19:13 -0700268 * Sets whether the WebView requires a user gesture to play media.
Nate Fischer0a6140d2017-09-05 12:37:49 -0700269 * The default is {@code true}.
Teng-Hui Zhu0e5b1602012-07-17 17:19:13 -0700270 *
271 * @param require whether the WebView requires a user gesture to play media
272 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000273 public abstract void setMediaPlaybackRequiresUserGesture(boolean require);
Teng-Hui Zhu0e5b1602012-07-17 17:19:13 -0700274
275 /**
276 * Gets whether the WebView requires a user gesture to play media.
277 *
Nate Fischer0a6140d2017-09-05 12:37:49 -0700278 * @return {@code true} if the WebView requires a user gesture to play media
Teng-Hui Zhu0e5b1602012-07-17 17:19:13 -0700279 * @see #setMediaPlaybackRequiresUserGesture
280 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000281 public abstract boolean getMediaPlaybackRequiresUserGesture();
Teng-Hui Zhu0e5b1602012-07-17 17:19:13 -0700282
283 /**
Steve Block06d268e2012-04-16 14:10:54 +0100284 * Sets whether the WebView should use its built-in zoom mechanisms. The
285 * built-in zoom mechanisms comprise on-screen zoom controls, which are
286 * displayed over the WebView's content, and the use of a pinch gesture to
287 * control zooming. Whether or not these on-screen controls are displayed
Nate Fischer0a6140d2017-09-05 12:37:49 -0700288 * can be set with {@link #setDisplayZoomControls}. The default is {@code false}.
Steve Block06d268e2012-04-16 14:10:54 +0100289 * <p>
290 * The built-in mechanisms are the only currently supported zoom
291 * mechanisms, so it is recommended that this setting is always enabled.
Steve Block4e584df2012-04-24 23:12:47 +0100292 *
293 * @param enabled whether the WebView should use its built-in zoom mechanisms
The Android Open Source Project10592532009-03-18 17:39:46 -0700294 */
Steve Block06d268e2012-04-16 14:10:54 +0100295 // This method was intended to select between the built-in zoom mechanisms
296 // and the separate zoom controls. The latter were obtained using
297 // {@link WebView#getZoomControls}, which is now hidden.
Ignacio Solla451e3382014-11-10 10:35:54 +0000298 public abstract void setBuiltInZoomControls(boolean enabled);
Michael Kolba172e7d2010-06-30 12:35:26 -0700299
The Android Open Source Project10592532009-03-18 17:39:46 -0700300 /**
Steve Block4e584df2012-04-24 23:12:47 +0100301 * Gets whether the zoom mechanisms built into WebView are being used.
302 *
Nate Fischer0a6140d2017-09-05 12:37:49 -0700303 * @return {@code true} if the zoom mechanisms built into WebView are being used
Steve Block4e584df2012-04-24 23:12:47 +0100304 * @see #setBuiltInZoomControls
The Android Open Source Project10592532009-03-18 17:39:46 -0700305 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000306 public abstract boolean getBuiltInZoomControls();
Michael Kolba172e7d2010-06-30 12:35:26 -0700307
The Android Open Source Project10592532009-03-18 17:39:46 -0700308 /**
Mikhail Naganovb533fb42012-04-05 14:50:02 +0100309 * Sets whether the WebView should display on-screen zoom controls when
310 * using the built-in zoom mechanisms. See {@link #setBuiltInZoomControls}.
Nate Fischer0a6140d2017-09-05 12:37:49 -0700311 * The default is {@code true}.
Steve Block4e584df2012-04-24 23:12:47 +0100312 *
313 * @param enabled whether the WebView should display on-screen zoom controls
Michael Kolb6fe3b422010-08-19 12:41:24 -0700314 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000315 public abstract void setDisplayZoomControls(boolean enabled);
Michael Kolb6fe3b422010-08-19 12:41:24 -0700316
317 /**
Steve Block4e584df2012-04-24 23:12:47 +0100318 * Gets whether the WebView displays on-screen zoom controls when using
Mikhail Naganovb533fb42012-04-05 14:50:02 +0100319 * the built-in zoom mechanisms.
Steve Block4e584df2012-04-24 23:12:47 +0100320 *
Nate Fischer0a6140d2017-09-05 12:37:49 -0700321 * @return {@code true} if the WebView displays on-screen zoom controls when using
Steve Block4e584df2012-04-24 23:12:47 +0100322 * the built-in zoom mechanisms
323 * @see #setDisplayZoomControls
Michael Kolb6fe3b422010-08-19 12:41:24 -0700324 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000325 public abstract boolean getDisplayZoomControls();
Michael Kolb6fe3b422010-08-19 12:41:24 -0700326
327 /**
Steve Block4e584df2012-04-24 23:12:47 +0100328 * Enables or disables file access within WebView. File access is enabled by
Patrick Scottd1737ed2011-01-05 11:36:48 -0500329 * default. Note that this enables or disables file system access only.
330 * Assets and resources are still accessible using file:///android_asset and
331 * file:///android_res.
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -0800332 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000333 public abstract void setAllowFileAccess(boolean allow);
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -0800334
335 /**
Steve Block4e584df2012-04-24 23:12:47 +0100336 * Gets whether this WebView supports file access.
337 *
338 * @see #setAllowFileAccess
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -0800339 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000340 public abstract boolean getAllowFileAccess();
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -0800341
342 /**
Steve Block4e584df2012-04-24 23:12:47 +0100343 * Enables or disables content URL access within WebView. Content URL
344 * access allows WebView to load content from a content provider installed
345 * in the system. The default is enabled.
Patrick Scottd1737ed2011-01-05 11:36:48 -0500346 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000347 public abstract void setAllowContentAccess(boolean allow);
Patrick Scottd1737ed2011-01-05 11:36:48 -0500348
349 /**
Steve Block4e584df2012-04-24 23:12:47 +0100350 * Gets whether this WebView supports content URL access.
351 *
352 * @see #setAllowContentAccess
Patrick Scottd1737ed2011-01-05 11:36:48 -0500353 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000354 public abstract boolean getAllowContentAccess();
Patrick Scottd1737ed2011-01-05 11:36:48 -0500355
356 /**
Mikhail Naganov00303362013-09-02 10:57:04 +0100357 * Sets whether the WebView loads pages in overview mode, that is,
358 * zooms out the content to fit on screen by width. This setting is
359 * taken into account when the content width is greater than the width
360 * of the WebView control, for example, when {@link #getUseWideViewPort}
Nate Fischer0a6140d2017-09-05 12:37:49 -0700361 * is enabled. The default is {@code false}.
Grace Klobae397a882009-08-06 12:04:14 -0700362 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000363 public abstract void setLoadWithOverviewMode(boolean overview);
Grace Klobae397a882009-08-06 12:04:14 -0700364
365 /**
Steve Blockb0e0f332012-06-13 22:01:11 +0100366 * Gets whether this WebView loads pages in overview mode.
367 *
368 * @return whether this WebView loads pages in overview mode
369 * @see #setLoadWithOverviewMode
Grace Klobae397a882009-08-06 12:04:14 -0700370 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000371 public abstract boolean getLoadWithOverviewMode();
Grace Klobae397a882009-08-06 12:04:14 -0700372
373 /**
Steve Block4e584df2012-04-24 23:12:47 +0100374 * Sets whether the WebView will enable smooth transition while panning or
Adam Powelle00e8a782011-09-11 17:48:42 -0700375 * zooming or while the window hosting the WebView does not have focus.
Nate Fischer0a6140d2017-09-05 12:37:49 -0700376 * If it is {@code true}, WebView will choose a solution to maximize the performance.
Adam Powelle00e8a782011-09-11 17:48:42 -0700377 * e.g. the WebView's content may not be updated during the transition.
Nate Fischer0a6140d2017-09-05 12:37:49 -0700378 * If it is false, WebView will keep its fidelity. The default value is {@code false}.
Kristian Monsen5cc23512012-08-09 15:33:08 -0400379 *
380 * @deprecated This method is now obsolete, and will become a no-op in future.
Grace Klobaf9b731d2010-06-21 19:23:57 -0700381 */
Kristian Monsen5cc23512012-08-09 15:33:08 -0400382 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +0000383 public abstract void setEnableSmoothTransition(boolean enable);
Steve Block4e584df2012-04-24 23:12:47 +0100384
Grace Klobaf9b731d2010-06-21 19:23:57 -0700385 /**
Steve Block4e584df2012-04-24 23:12:47 +0100386 * Gets whether the WebView enables smooth transition while panning or
Grace Klobaf9b731d2010-06-21 19:23:57 -0700387 * zooming.
Steve Block4e584df2012-04-24 23:12:47 +0100388 *
389 * @see #setEnableSmoothTransition
Kristian Monsen5cc23512012-08-09 15:33:08 -0400390 *
391 * @deprecated This method is now obsolete, and will become a no-op in future.
Grace Klobaf9b731d2010-06-21 19:23:57 -0700392 */
Kristian Monsen5cc23512012-08-09 15:33:08 -0400393 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +0000394 public abstract boolean enableSmoothTransition();
Grace Klobaf9b731d2010-06-21 19:23:57 -0700395
396 /**
Steve Block4e584df2012-04-24 23:12:47 +0100397 * Sets whether the WebView uses its background for over scroll background.
Nate Fischer0a6140d2017-09-05 12:37:49 -0700398 * If {@code true}, it will use the WebView's background. If {@code false}, it will use an
399 * internal pattern. Default is {@code true}.
Steve Block4e584df2012-04-24 23:12:47 +0100400 *
Kristian Monsenfc771652011-05-10 16:44:05 +0100401 * @deprecated This method is now obsolete.
Kristian Monsend0b90d32012-09-24 12:30:45 -0400402 * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
Adam Powell637d3372010-08-25 14:37:03 -0700403 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000404 @SystemApi
Kristian Monsenfc771652011-05-10 16:44:05 +0100405 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +0000406 public abstract void setUseWebViewBackgroundForOverscrollBackground(boolean view);
Adam Powell637d3372010-08-25 14:37:03 -0700407
408 /**
Steve Block4e584df2012-04-24 23:12:47 +0100409 * Gets whether this WebView uses WebView's background instead of
Adam Powell637d3372010-08-25 14:37:03 -0700410 * internal pattern for over scroll background.
Steve Block4e584df2012-04-24 23:12:47 +0100411 *
412 * @see #setUseWebViewBackgroundForOverscrollBackground
Kristian Monsenfc771652011-05-10 16:44:05 +0100413 * @deprecated This method is now obsolete.
Kristian Monsenf4912582012-08-16 15:26:24 -0400414 * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
Adam Powell637d3372010-08-25 14:37:03 -0700415 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000416 @SystemApi
Kristian Monsenfc771652011-05-10 16:44:05 +0100417 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +0000418 public abstract boolean getUseWebViewBackgroundForOverscrollBackground();
Adam Powell637d3372010-08-25 14:37:03 -0700419
420 /**
Selim Gurun13e5b0b2017-04-03 14:29:14 -0700421 * Sets whether the WebView should save form data. In Android O, the
422 * platform has implemented a fully functional Autofill feature to store
423 * form data. Therefore, the Webview form data save feature is disabled.
424 *
425 * Note that the feature will continue to be supported on older versions of
426 * Android as before.
427 *
428 * This function does not have any effect.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700429 */
Selim Gurun13e5b0b2017-04-03 14:29:14 -0700430 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +0000431 public abstract void setSaveFormData(boolean save);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700432
433 /**
Selim Gurun5c11ef12013-01-04 14:58:36 -0800434 * Gets whether the WebView saves form data.
Steve Blockb0e0f332012-06-13 22:01:11 +0100435 *
436 * @return whether the WebView saves form data
437 * @see #setSaveFormData
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700438 */
Selim Gurun13e5b0b2017-04-03 14:29:14 -0700439 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +0000440 public abstract boolean getSaveFormData();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700441
442 /**
Nate Fischer0a6140d2017-09-05 12:37:49 -0700443 * Sets whether the WebView should save passwords. The default is {@code true}.
Jonathan Dixon835b1fc2013-02-25 12:29:33 -0800444 * @deprecated Saving passwords in WebView will not be supported in future versions.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700445 */
Jonathan Dixon835b1fc2013-02-25 12:29:33 -0800446 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +0000447 public abstract void setSavePassword(boolean save);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700448
449 /**
Steve Blockb0e0f332012-06-13 22:01:11 +0100450 * Gets whether the WebView saves passwords.
451 *
452 * @return whether the WebView saves passwords
453 * @see #setSavePassword
Jonathan Dixon835b1fc2013-02-25 12:29:33 -0800454 * @deprecated Saving passwords in WebView will not be supported in future versions.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700455 */
Jonathan Dixon835b1fc2013-02-25 12:29:33 -0800456 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +0000457 public abstract boolean getSavePassword();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700458
459 /**
Steve Blockb0e0f332012-06-13 22:01:11 +0100460 * Sets the text zoom of the page in percent. The default is 100.
Steve Block4e584df2012-04-24 23:12:47 +0100461 *
Steve Blockb0e0f332012-06-13 22:01:11 +0100462 * @param textZoom the text zoom in percent
John Reckff56bcd2011-06-16 17:12:08 -0700463 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000464 public abstract void setTextZoom(int textZoom);
John Reckff56bcd2011-06-16 17:12:08 -0700465
466 /**
Steve Block4e584df2012-04-24 23:12:47 +0100467 * Gets the text zoom of the page in percent.
468 *
Steve Blockb0e0f332012-06-13 22:01:11 +0100469 * @return the text zoom of the page in percent
Mikhail Naganov1202d662012-08-07 18:26:52 +0100470 * @see #setTextZoom
John Reckff56bcd2011-06-16 17:12:08 -0700471 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000472 public abstract int getTextZoom();
John Reckff56bcd2011-06-16 17:12:08 -0700473
474 /**
Hector Dearmanfc9a27a2014-06-05 13:45:28 +0100475 * Sets policy for third party cookies.
476 * Developers should access this via {@link CookieManager#setShouldAcceptThirdPartyCookies}.
477 * @hide Internal API.
478 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000479 @SystemApi
480 public abstract void setAcceptThirdPartyCookies(boolean accept);
Hector Dearmanfc9a27a2014-06-05 13:45:28 +0100481
482 /**
483 * Gets policy for third party cookies.
484 * Developers should access this via {@link CookieManager#getShouldAcceptThirdPartyCookies}.
485 * @hide Internal API
486 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000487 @SystemApi
488 public abstract boolean getAcceptThirdPartyCookies();
Hector Dearmanfc9a27a2014-06-05 13:45:28 +0100489
490 /**
Steve Blockb0e0f332012-06-13 22:01:11 +0100491 * Sets the text size of the page. The default is {@link TextSize#NORMAL}.
Steve Block4e584df2012-04-24 23:12:47 +0100492 *
Steve Blockb0e0f332012-06-13 22:01:11 +0100493 * @param t the text size as a {@link TextSize} value
494 * @deprecated Use {@link #setTextZoom} instead.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700495 */
Aurimas Liutikas514c5ef2016-05-24 15:22:55 -0700496 @Deprecated
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700497 public synchronized void setTextSize(TextSize t) {
Mikhail Naganov1202d662012-08-07 18:26:52 +0100498 setTextZoom(t.value);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700499 }
500
501 /**
Steve Block4e584df2012-04-24 23:12:47 +0100502 * Gets the text size of the page. If the text size was previously specified
Steve Blockb0e0f332012-06-13 22:01:11 +0100503 * in percent using {@link #setTextZoom}, this will return the closest
504 * matching {@link TextSize}.
Steve Block4e584df2012-04-24 23:12:47 +0100505 *
Steve Blockb0e0f332012-06-13 22:01:11 +0100506 * @return the text size as a {@link TextSize} value
507 * @see #setTextSize
508 * @deprecated Use {@link #getTextZoom} instead.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700509 */
Aurimas Liutikas514c5ef2016-05-24 15:22:55 -0700510 @Deprecated
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700511 public synchronized TextSize getTextSize() {
Mikhail Naganov1202d662012-08-07 18:26:52 +0100512 TextSize closestSize = null;
513 int smallestDelta = Integer.MAX_VALUE;
514 int textSize = getTextZoom();
515 for (TextSize size : TextSize.values()) {
516 int delta = Math.abs(textSize - size.value);
517 if (delta == 0) {
518 return size;
519 }
520 if (delta < smallestDelta) {
521 smallestDelta = delta;
522 closestSize = size;
523 }
524 }
525 return closestSize != null ? closestSize : TextSize.NORMAL;
Mangesh Ghiwareedb528e2011-10-12 14:25:41 -0700526 }
527
528 /**
Steve Blockb0e0f332012-06-13 22:01:11 +0100529 * Sets the default zoom density of the page. This must be called from the UI
530 * thread. The default is {@link ZoomDensity#MEDIUM}.
Steve Block4e584df2012-04-24 23:12:47 +0100531 *
Mikhail Naganov8887b2b2013-05-28 10:34:43 +0100532 * This setting is not recommended for use in new applications. If the WebView
533 * is utilized to display mobile-oriented pages, the desired effect can be achieved by
534 * adjusting 'width' and 'initial-scale' attributes of page's 'meta viewport'
535 * tag. For pages lacking the tag, {@link android.webkit.WebView#setInitialScale}
536 * and {@link #setUseWideViewPort} can be used.
537 *
Steve Blockb0e0f332012-06-13 22:01:11 +0100538 * @param zoom the zoom density
Jonathan Dixon5545d082013-08-31 22:43:11 -0700539 * @deprecated This method is no longer supported, see the function documentation for
540 * recommended alternatives.
Grace Kloba0d8b77c2009-06-25 11:20:51 -0700541 */
Jonathan Dixon5545d082013-08-31 22:43:11 -0700542 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +0000543 public abstract void setDefaultZoom(ZoomDensity zoom);
Grace Kloba0d8b77c2009-06-25 11:20:51 -0700544
545 /**
Steve Blockb0e0f332012-06-13 22:01:11 +0100546 * Gets the default zoom density of the page. This should be called from
547 * the UI thread.
548 *
Mikhail Naganov8887b2b2013-05-28 10:34:43 +0100549 * This setting is not recommended for use in new applications.
550 *
Steve Blockb0e0f332012-06-13 22:01:11 +0100551 * @return the zoom density
552 * @see #setDefaultZoom
Jonathan Dixon5545d082013-08-31 22:43:11 -0700553 * @deprecated Will only return the default value.
Grace Kloba0d8b77c2009-06-25 11:20:51 -0700554 */
Aurimas Liutikas514c5ef2016-05-24 15:22:55 -0700555 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +0000556 public abstract ZoomDensity getDefaultZoom();
Grace Kloba0d8b77c2009-06-25 11:20:51 -0700557
558 /**
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700559 * Enables using light touches to make a selection and activate mouseovers.
Jonathan Dixon835b1fc2013-02-25 12:29:33 -0800560 * @deprecated From {@link android.os.Build.VERSION_CODES#JELLY_BEAN} this
561 * setting is obsolete and has no effect.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700562 */
Jonathan Dixon835b1fc2013-02-25 12:29:33 -0800563 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +0000564 public abstract void setLightTouchEnabled(boolean enabled);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700565
566 /**
Steve Block4e584df2012-04-24 23:12:47 +0100567 * Gets whether light touches are enabled.
Steve Blockb0e0f332012-06-13 22:01:11 +0100568 * @see #setLightTouchEnabled
Jonathan Dixon98fac172013-02-28 15:32:10 -0800569 * @deprecated This setting is obsolete.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700570 */
Jonathan Dixon835b1fc2013-02-25 12:29:33 -0800571 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +0000572 public abstract boolean getLightTouchEnabled();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700573
574 /**
Steve Block4e584df2012-04-24 23:12:47 +0100575 * Controlled a rendering optimization that is no longer present. Setting
576 * it now has no effect.
577 *
578 * @deprecated This setting now has no effect.
Kristian Monsenf4912582012-08-16 15:26:24 -0400579 * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700580 */
Mike Hearnadcd2ed2009-01-21 16:44:36 +0100581 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +0000582 public void setUseDoubleTree(boolean use) {
Jonathan Dixon3c909522012-02-28 18:45:06 +0000583 // Specified to do nothing, so no need for derived classes to override.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700584 }
585
586 /**
Steve Block4e584df2012-04-24 23:12:47 +0100587 * Controlled a rendering optimization that is no longer present. Setting
588 * it now has no effect.
589 *
590 * @deprecated This setting now has no effect.
Kristian Monsenf4912582012-08-16 15:26:24 -0400591 * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700592 */
Mike Hearnadcd2ed2009-01-21 16:44:36 +0100593 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +0000594 public boolean getUseDoubleTree() {
Jonathan Dixon3c909522012-02-28 18:45:06 +0000595 // Returns false unconditionally, so no need for derived classes to override.
Mike Hearnadcd2ed2009-01-21 16:44:36 +0100596 return false;
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700597 }
598
599 /**
Steve Blockb0e0f332012-06-13 22:01:11 +0100600 * Sets the user-agent string using an integer code.
601 * <ul>
602 * <li>0 means the WebView should use an Android user-agent string</li>
603 * <li>1 means the WebView should use a desktop user-agent string</li>
604 * </ul>
605 * Other values are ignored. The default is an Android user-agent string,
606 * i.e. code value 0.
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -0800607 *
Steve Blockb0e0f332012-06-13 22:01:11 +0100608 * @param ua the integer code for the user-agent string
609 * @deprecated Please use {@link #setUserAgentString} instead.
Kristian Monsenf4912582012-08-16 15:26:24 -0400610 * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700611 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000612 @SystemApi
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -0800613 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +0000614 public abstract void setUserAgent(int ua);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700615
616 /**
Steve Blockb0e0f332012-06-13 22:01:11 +0100617 * Gets the user-agent as an integer code.
618 * <ul>
619 * <li>-1 means the WebView is using a custom user-agent string set with
620 * {@link #setUserAgentString}</li>
621 * <li>0 means the WebView should use an Android user-agent string</li>
622 * <li>1 means the WebView should use a desktop user-agent string</li>
623 * </ul>
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -0800624 *
Steve Blockb0e0f332012-06-13 22:01:11 +0100625 * @return the integer code for the user-agent string
626 * @see #setUserAgent
627 * @deprecated Please use {@link #getUserAgentString} instead.
Kristian Monsenf4912582012-08-16 15:26:24 -0400628 * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700629 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000630 @SystemApi
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -0800631 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +0000632 public abstract int getUserAgent();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700633
634 /**
Mikhail Naganovcb000a62013-01-04 18:02:54 +0000635 * Sets whether the WebView should enable support for the &quot;viewport&quot;
636 * HTML meta tag or should use a wide viewport.
Nate Fischer0a6140d2017-09-05 12:37:49 -0700637 * When the value of the setting is {@code false}, the layout width is always set to the
Mikhail Naganovcb000a62013-01-04 18:02:54 +0000638 * width of the WebView control in device-independent (CSS) pixels.
Nate Fischer0a6140d2017-09-05 12:37:49 -0700639 * When the value is {@code true} and the page contains the viewport meta tag, the value
Mikhail Naganovcb000a62013-01-04 18:02:54 +0000640 * of the width specified in the tag is used. If the page does not contain the tag or
641 * does not provide a width, then a wide viewport will be used.
Steve Blockb0e0f332012-06-13 22:01:11 +0100642 *
Mikhail Naganovcb000a62013-01-04 18:02:54 +0000643 * @param use whether to enable support for the viewport meta tag
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700644 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000645 public abstract void setUseWideViewPort(boolean use);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700646
647 /**
Mikhail Naganovcb000a62013-01-04 18:02:54 +0000648 * Gets whether the WebView supports the &quot;viewport&quot;
649 * HTML meta tag or will use a wide viewport.
Steve Block4e584df2012-04-24 23:12:47 +0100650 *
Nate Fischer0a6140d2017-09-05 12:37:49 -0700651 * @return {@code true} if the WebView supports the viewport meta tag
Steve Blockb0e0f332012-06-13 22:01:11 +0100652 * @see #setUseWideViewPort
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700653 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000654 public abstract boolean getUseWideViewPort();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700655
656 /**
Steve Blockb0e0f332012-06-13 22:01:11 +0100657 * Sets whether the WebView whether supports multiple windows. If set to
658 * true, {@link WebChromeClient#onCreateWindow} must be implemented by the
Nate Fischer0a6140d2017-09-05 12:37:49 -0700659 * host application. The default is {@code false}.
Steve Blockb0e0f332012-06-13 22:01:11 +0100660 *
Nate Fischer4ea92402017-11-17 18:48:13 -0800661 * @param support whether to support multiple windows
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700662 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000663 public abstract void setSupportMultipleWindows(boolean support);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700664
665 /**
Steve Blockb0e0f332012-06-13 22:01:11 +0100666 * Gets whether the WebView supports multiple windows.
Steve Block4e584df2012-04-24 23:12:47 +0100667 *
Nate Fischer0a6140d2017-09-05 12:37:49 -0700668 * @return {@code true} if the WebView supports multiple windows
Steve Blockb0e0f332012-06-13 22:01:11 +0100669 * @see #setSupportMultipleWindows
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700670 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000671 public abstract boolean supportMultipleWindows();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700672
673 /**
Nate Fischer4ea92402017-11-17 18:48:13 -0800674 * Sets the underlying layout algorithm. This will cause a re-layout of the
Steve Blockb0e0f332012-06-13 22:01:11 +0100675 * WebView. The default is {@link LayoutAlgorithm#NARROW_COLUMNS}.
Steve Block4e584df2012-04-24 23:12:47 +0100676 *
Steve Blockb0e0f332012-06-13 22:01:11 +0100677 * @param l the layout algorithm to use, as a {@link LayoutAlgorithm} value
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700678 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000679 public abstract void setLayoutAlgorithm(LayoutAlgorithm l);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700680
681 /**
Steve Block4e584df2012-04-24 23:12:47 +0100682 * Gets the current layout algorithm.
683 *
Steve Blockb0e0f332012-06-13 22:01:11 +0100684 * @return the layout algorithm in use, as a {@link LayoutAlgorithm} value
Steve Block4e584df2012-04-24 23:12:47 +0100685 * @see #setLayoutAlgorithm
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700686 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000687 public abstract LayoutAlgorithm getLayoutAlgorithm();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700688
689 /**
Steve Block4e584df2012-04-24 23:12:47 +0100690 * Sets the standard font family name. The default is "sans-serif".
691 *
692 * @param font a font family name
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700693 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000694 public abstract void setStandardFontFamily(String font);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700695
696 /**
Steve Block4e584df2012-04-24 23:12:47 +0100697 * Gets the standard font family name.
698 *
699 * @return the standard font family name as a string
700 * @see #setStandardFontFamily
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700701 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000702 public abstract String getStandardFontFamily();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700703
704 /**
Steve Block4e584df2012-04-24 23:12:47 +0100705 * Sets the fixed font family name. The default is "monospace".
706 *
707 * @param font a font family name
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700708 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000709 public abstract void setFixedFontFamily(String font);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700710
711 /**
Steve Block4e584df2012-04-24 23:12:47 +0100712 * Gets the fixed font family name.
713 *
714 * @return the fixed font family name as a string
715 * @see #setFixedFontFamily
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700716 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000717 public abstract String getFixedFontFamily();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700718
719 /**
Steve Blockb0e0f332012-06-13 22:01:11 +0100720 * Sets the sans-serif font family name. The default is "sans-serif".
Steve Block4e584df2012-04-24 23:12:47 +0100721 *
722 * @param font a font family name
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700723 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000724 public abstract void setSansSerifFontFamily(String font);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700725
726 /**
Steve Block4e584df2012-04-24 23:12:47 +0100727 * Gets the sans-serif font family name.
728 *
729 * @return the sans-serif font family name as a string
Steve Blockb0e0f332012-06-13 22:01:11 +0100730 * @see #setSansSerifFontFamily
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700731 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000732 public abstract String getSansSerifFontFamily();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700733
734 /**
Steve Block4e584df2012-04-24 23:12:47 +0100735 * Sets the serif font family name. The default is "sans-serif".
736 *
737 * @param font a font family name
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700738 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000739 public abstract void setSerifFontFamily(String font);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700740
741 /**
Steve Block4e584df2012-04-24 23:12:47 +0100742 * Gets the serif font family name. The default is "serif".
743 *
744 * @return the serif font family name as a string
745 * @see #setSerifFontFamily
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700746 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000747 public abstract String getSerifFontFamily();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700748
749 /**
Steve Block4e584df2012-04-24 23:12:47 +0100750 * Sets the cursive font family name. The default is "cursive".
751 *
752 * @param font a font family name
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700753 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000754 public abstract void setCursiveFontFamily(String font);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700755
756 /**
Steve Block4e584df2012-04-24 23:12:47 +0100757 * Gets the cursive font family name.
758 *
759 * @return the cursive font family name as a string
760 * @see #setCursiveFontFamily
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700761 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000762 public abstract String getCursiveFontFamily();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700763
764 /**
Steve Block4e584df2012-04-24 23:12:47 +0100765 * Sets the fantasy font family name. The default is "fantasy".
766 *
767 * @param font a font family name
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700768 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000769 public abstract void setFantasyFontFamily(String font);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700770
771 /**
Steve Block4e584df2012-04-24 23:12:47 +0100772 * Gets the fantasy font family name.
773 *
774 * @return the fantasy font family name as a string
775 * @see #setFantasyFontFamily
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700776 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000777 public abstract String getFantasyFontFamily();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700778
779 /**
Steve Block4e584df2012-04-24 23:12:47 +0100780 * Sets the minimum font size. The default is 8.
781 *
782 * @param size a non-negative integer between 1 and 72. Any number outside
783 * the specified range will be pinned.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700784 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000785 public abstract void setMinimumFontSize(int size);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700786
787 /**
Steve Block4e584df2012-04-24 23:12:47 +0100788 * Gets the minimum font size.
789 *
790 * @return a non-negative integer between 1 and 72
791 * @see #setMinimumFontSize
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700792 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000793 public abstract int getMinimumFontSize();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700794
795 /**
Steve Block4e584df2012-04-24 23:12:47 +0100796 * Sets the minimum logical font size. The default is 8.
797 *
798 * @param size a non-negative integer between 1 and 72. Any number outside
799 * the specified range will be pinned.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700800 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000801 public abstract void setMinimumLogicalFontSize(int size);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700802
803 /**
Steve Block4e584df2012-04-24 23:12:47 +0100804 * Gets the minimum logical font size.
805 *
806 * @return a non-negative integer between 1 and 72
807 * @see #setMinimumLogicalFontSize
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700808 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000809 public abstract int getMinimumLogicalFontSize();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700810
811 /**
Steve Block4e584df2012-04-24 23:12:47 +0100812 * Sets the default font size. The default is 16.
813 *
814 * @param size a non-negative integer between 1 and 72. Any number outside
815 * the specified range will be pinned.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700816 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000817 public abstract void setDefaultFontSize(int size);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700818
819 /**
Steve Block4e584df2012-04-24 23:12:47 +0100820 * Gets the default font size.
821 *
822 * @return a non-negative integer between 1 and 72
823 * @see #setDefaultFontSize
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700824 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000825 public abstract int getDefaultFontSize();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700826
827 /**
Steve Block4e584df2012-04-24 23:12:47 +0100828 * Sets the default fixed font size. The default is 16.
829 *
830 * @param size a non-negative integer between 1 and 72. Any number outside
831 * the specified range will be pinned.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700832 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000833 public abstract void setDefaultFixedFontSize(int size);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700834
835 /**
Steve Block4e584df2012-04-24 23:12:47 +0100836 * Gets the default fixed font size.
837 *
838 * @return a non-negative integer between 1 and 72
839 * @see #setDefaultFixedFontSize
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700840 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000841 public abstract int getDefaultFixedFontSize();
Grace Kloba097b1e772009-11-24 14:23:18 -0800842
843 /**
Mikhail Naganov605a4912012-02-03 16:53:10 +0000844 * Sets whether the WebView should load image resources. Note that this method
845 * controls loading of all images, including those embedded using the data
846 * URI scheme. Use {@link #setBlockNetworkImage} to control loading only
847 * of images specified using network URI schemes. Note that if the value of this
Nate Fischer0a6140d2017-09-05 12:37:49 -0700848 * setting is changed from {@code false} to {@code true}, all images resources referenced
Mikhail Naganov605a4912012-02-03 16:53:10 +0000849 * by content currently displayed by the WebView are loaded automatically.
Nate Fischer0a6140d2017-09-05 12:37:49 -0700850 * The default is {@code true}.
Steve Block4e584df2012-04-24 23:12:47 +0100851 *
852 * @param flag whether the WebView should load image resources
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700853 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000854 public abstract void setLoadsImagesAutomatically(boolean flag);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700855
856 /**
Steve Block4e584df2012-04-24 23:12:47 +0100857 * Gets whether the WebView loads image resources. This includes
858 * images embedded using the data URI scheme.
859 *
Nate Fischer0a6140d2017-09-05 12:37:49 -0700860 * @return {@code true} if the WebView loads image resources
Steve Block4e584df2012-04-24 23:12:47 +0100861 * @see #setLoadsImagesAutomatically
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700862 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000863 public abstract boolean getLoadsImagesAutomatically();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700864
865 /**
Mikhail Naganov605a4912012-02-03 16:53:10 +0000866 * Sets whether the WebView should not load image resources from the
867 * network (resources accessed via http and https URI schemes). Note
868 * that this method has no effect unless
Nate Fischer0a6140d2017-09-05 12:37:49 -0700869 * {@link #getLoadsImagesAutomatically} returns {@code true}. Also note that
Mikhail Naganov605a4912012-02-03 16:53:10 +0000870 * disabling all network loads using {@link #setBlockNetworkLoads}
871 * will also prevent network images from loading, even if this flag is set
Nate Fischer0a6140d2017-09-05 12:37:49 -0700872 * to false. When the value of this setting is changed from {@code true} to {@code false},
Mikhail Naganov605a4912012-02-03 16:53:10 +0000873 * network images resources referenced by content currently displayed by
Nate Fischer0a6140d2017-09-05 12:37:49 -0700874 * the WebView are fetched automatically. The default is {@code false}.
Steve Block4e584df2012-04-24 23:12:47 +0100875 *
876 * @param flag whether the WebView should not load image resources from the
877 * network
Patrick Scottf43113f2010-02-18 09:13:12 -0500878 * @see #setBlockNetworkLoads
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700879 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000880 public abstract void setBlockNetworkImage(boolean flag);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700881
882 /**
Steve Block4e584df2012-04-24 23:12:47 +0100883 * Gets whether the WebView does not load image resources from the network.
884 *
Nate Fischer0a6140d2017-09-05 12:37:49 -0700885 * @return {@code true} if the WebView does not load image resources from the network
Steve Block4e584df2012-04-24 23:12:47 +0100886 * @see #setBlockNetworkImage
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700887 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000888 public abstract boolean getBlockNetworkImage();
Mike Hearnadcd2ed2009-01-21 16:44:36 +0100889
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -0800890 /**
Mikhail Naganov605a4912012-02-03 16:53:10 +0000891 * Sets whether the WebView should not load resources from the network.
892 * Use {@link #setBlockNetworkImage} to only avoid loading
893 * image resources. Note that if the value of this setting is
Nate Fischer0a6140d2017-09-05 12:37:49 -0700894 * changed from {@code true} to {@code false}, network resources referenced by content
Mikhail Naganov605a4912012-02-03 16:53:10 +0000895 * currently displayed by the WebView are not fetched until
896 * {@link android.webkit.WebView#reload} is called.
897 * If the application does not have the
898 * {@link android.Manifest.permission#INTERNET} permission, attempts to set
Nate Fischer0a6140d2017-09-05 12:37:49 -0700899 * a value of {@code false} will cause a {@link java.lang.SecurityException}
900 * to be thrown. The default value is {@code false} if the application has the
Steve Block4e584df2012-04-24 23:12:47 +0100901 * {@link android.Manifest.permission#INTERNET} permission, otherwise it is
Nate Fischer0a6140d2017-09-05 12:37:49 -0700902 * {@code true}.
Steve Block4e584df2012-04-24 23:12:47 +0100903 *
Nate Fischer0a6140d2017-09-05 12:37:49 -0700904 * @param flag {@code true} means block network loads by the WebView
Patrick Scottf43113f2010-02-18 09:13:12 -0500905 * @see android.webkit.WebView#reload
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -0800906 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000907 public abstract void setBlockNetworkLoads(boolean flag);
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -0800908
909 /**
Steve Block4e584df2012-04-24 23:12:47 +0100910 * Gets whether the WebView does not load any resources from the network.
911 *
Nate Fischer0a6140d2017-09-05 12:37:49 -0700912 * @return {@code true} if the WebView does not load any resources from the network
Steve Block4e584df2012-04-24 23:12:47 +0100913 * @see #setBlockNetworkLoads
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -0800914 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000915 public abstract boolean getBlockNetworkLoads();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700916
917 /**
Steve Block4e584df2012-04-24 23:12:47 +0100918 * Tells the WebView to enable JavaScript execution.
Nate Fischer0a6140d2017-09-05 12:37:49 -0700919 * <b>The default is {@code false}.</b>
Steve Block4e584df2012-04-24 23:12:47 +0100920 *
Nate Fischer0a6140d2017-09-05 12:37:49 -0700921 * @param flag {@code true} if the WebView should execute JavaScript
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700922 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000923 public abstract void setJavaScriptEnabled(boolean flag);
Teng-Hui Zhuda7378e2011-02-16 11:25:03 -0800924
925 /**
Steve Blockef163152012-04-23 18:08:06 +0100926 * Sets whether JavaScript running in the context of a file scheme URL
927 * should be allowed to access content from any origin. This includes
928 * access to content from other file scheme URLs. See
929 * {@link #setAllowFileAccessFromFileURLs}. To enable the most restrictive,
930 * and therefore secure policy, this setting should be disabled.
Mikhail Naganov65e7ace2012-08-07 13:57:42 +0100931 * Note that this setting affects only JavaScript access to file scheme
932 * resources. Other access to such resources, for example, from image HTML
Joe Fernandez22b5ba82015-04-22 17:29:12 -0700933 * elements, is unaffected. To prevent possible violation of same domain policy
Nate Fischer8cc15362018-01-23 16:51:30 -0800934 * when targeting {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH_MR1} and earlier,
935 * you should explicitly set this value to {@code false}.
Steve Blockef163152012-04-23 18:08:06 +0100936 * <p>
Nate Fischer8cc15362018-01-23 16:51:30 -0800937 * The default value is {@code true} for apps targeting
Steve Blockef163152012-04-23 18:08:06 +0100938 * {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH_MR1} and below,
Nate Fischer8cc15362018-01-23 16:51:30 -0800939 * and {@code false} when targeting {@link android.os.Build.VERSION_CODES#JELLY_BEAN}
Steve Blockef163152012-04-23 18:08:06 +0100940 * and above.
Selim Gurun0ea6dad2012-03-29 18:19:01 -0700941 *
Steve Blockef163152012-04-23 18:08:06 +0100942 * @param flag whether JavaScript running in the context of a file scheme
943 * URL should be allowed to access content from any origin
Selim Gurun0ea6dad2012-03-29 18:19:01 -0700944 */
945 public abstract void setAllowUniversalAccessFromFileURLs(boolean flag);
946
947 /**
Steve Blockef163152012-04-23 18:08:06 +0100948 * Sets whether JavaScript running in the context of a file scheme URL
949 * should be allowed to access content from other file scheme URLs. To
Nate Fischer8cc15362018-01-23 16:51:30 -0800950 * enable the most restrictive, and therefore secure, policy this setting
Steve Blockef163152012-04-23 18:08:06 +0100951 * should be disabled. Note that the value of this setting is ignored if
Nate Fischer0a6140d2017-09-05 12:37:49 -0700952 * the value of {@link #getAllowUniversalAccessFromFileURLs} is {@code true}.
Mikhail Naganov65e7ace2012-08-07 13:57:42 +0100953 * Note too, that this setting affects only JavaScript access to file scheme
954 * resources. Other access to such resources, for example, from image HTML
Joe Fernandez22b5ba82015-04-22 17:29:12 -0700955 * elements, is unaffected. To prevent possible violation of same domain policy
Nate Fischer8cc15362018-01-23 16:51:30 -0800956 * when targeting {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH_MR1} and earlier,
957 * you should explicitly set this value to {@code false}.
Steve Blockef163152012-04-23 18:08:06 +0100958 * <p>
Nate Fischer8cc15362018-01-23 16:51:30 -0800959 * The default value is {@code true} for apps targeting
Steve Blockef163152012-04-23 18:08:06 +0100960 * {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH_MR1} and below,
Nate Fischer8cc15362018-01-23 16:51:30 -0800961 * and {@code false} when targeting {@link android.os.Build.VERSION_CODES#JELLY_BEAN}
Steve Blockef163152012-04-23 18:08:06 +0100962 * and above.
Selim Gurun0ea6dad2012-03-29 18:19:01 -0700963 *
Steve Blockef163152012-04-23 18:08:06 +0100964 * @param flag whether JavaScript running in the context of a file scheme
965 * URL should be allowed to access content from other file
966 * scheme URLs
Selim Gurun0ea6dad2012-03-29 18:19:01 -0700967 */
968 public abstract void setAllowFileAccessFromFileURLs(boolean flag);
969
970 /**
Nate Fischer0a6140d2017-09-05 12:37:49 -0700971 * Sets whether the WebView should enable plugins. The default is {@code false}.
Steve Block4e584df2012-04-24 23:12:47 +0100972 *
Nate Fischer0a6140d2017-09-05 12:37:49 -0700973 * @param flag {@code true} if plugins should be enabled
Patrick Scott300f2e92010-03-22 10:20:45 -0400974 * @deprecated This method has been deprecated in favor of
975 * {@link #setPluginState}
Jonathan Dixon0bf47812013-03-07 17:20:08 -0800976 * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR2}
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700977 */
Ignacio Solla451e3382014-11-10 10:35:54 +0000978 @SystemApi
Michael Kolba172e7d2010-06-30 12:35:26 -0700979 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +0000980 public abstract void setPluginsEnabled(boolean flag);
Patrick Scott300f2e92010-03-22 10:20:45 -0400981
982 /**
Steve Block4e584df2012-04-24 23:12:47 +0100983 * Tells the WebView to enable, disable, or have plugins on demand. On
Patrick Scott300f2e92010-03-22 10:20:45 -0400984 * demand mode means that if a plugin exists that can handle the embedded
985 * content, a placeholder icon will be shown instead of the plugin. When
Steve Blockb0e0f332012-06-13 22:01:11 +0100986 * the placeholder is clicked, the plugin will be enabled. The default is
987 * {@link PluginState#OFF}.
Steve Block4e584df2012-04-24 23:12:47 +0100988 *
989 * @param state a PluginState value
Jonathan Dixon835b1fc2013-02-25 12:29:33 -0800990 * @deprecated Plugins will not be supported in future, and should not be used.
Patrick Scott300f2e92010-03-22 10:20:45 -0400991 */
Jonathan Dixon835b1fc2013-02-25 12:29:33 -0800992 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +0000993 public abstract void setPluginState(PluginState state);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -0700994
995 /**
Steve Block4e584df2012-04-24 23:12:47 +0100996 * Sets a custom path to plugins used by the WebView. This method is
Derek Sollenbergerfdbdeb32010-08-12 11:20:13 -0400997 * obsolete since each plugin is now loaded from its own package.
Steve Block4e584df2012-04-24 23:12:47 +0100998 *
999 * @param pluginsPath a String path to the directory containing plugins
Derek Sollenbergerfdbdeb32010-08-12 11:20:13 -04001000 * @deprecated This method is no longer used as plugins are loaded from
Steve Block4e584df2012-04-24 23:12:47 +01001001 * their own APK via the system's package manager.
Jonathan Dixon0bf47812013-03-07 17:20:08 -08001002 * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR2}
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001003 */
Jason Chen9dc2e752010-09-01 19:11:14 -07001004 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +00001005 public void setPluginsPath(String pluginsPath) {
Jonathan Dixon3c909522012-02-28 18:45:06 +00001006 // Specified to do nothing, so no need for derived classes to override.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001007 }
1008
1009 /**
Steve Block4e584df2012-04-24 23:12:47 +01001010 * Sets the path to where database storage API databases should be saved.
Steve Block72ca7a42012-06-13 22:00:30 +01001011 * In order for the database storage API to function correctly, this method
1012 * must be called with a path to which the application can write. This
1013 * method should only be called once: repeated calls are ignored.
Steve Block4e584df2012-04-24 23:12:47 +01001014 *
Steve Block72ca7a42012-06-13 22:00:30 +01001015 * @param databasePath a path to the directory where databases should be
1016 * saved.
Jonathan Dixon5545d082013-08-31 22:43:11 -07001017 * @deprecated Database paths are managed by the implementation and calling this method
1018 * will have no effect.
Ben Murdoch7df19852009-04-22 13:07:58 +01001019 */
Jonathan Dixon5545d082013-08-31 22:43:11 -07001020 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +00001021 public abstract void setDatabasePath(String databasePath);
Ben Murdoch7df19852009-04-22 13:07:58 +01001022
1023 /**
Steve Block72ca7a42012-06-13 22:00:30 +01001024 * Sets the path where the Geolocation databases should be saved. In order
1025 * for Geolocation permissions and cached positions to be persisted, this
1026 * method must be called with a path to which the application can write.
Steve Block4e584df2012-04-24 23:12:47 +01001027 *
Steve Block72ca7a42012-06-13 22:00:30 +01001028 * @param databasePath a path to the directory where databases should be
1029 * saved.
Hui Shu89eb9b42016-01-07 11:32:23 -08001030 * @deprecated Geolocation database are managed by the implementation and calling this method
1031 * will have no effect.
Steve Block9d3273f2009-08-21 13:16:27 +01001032 */
Hui Shu89eb9b42016-01-07 11:32:23 -08001033 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +00001034 public abstract void setGeolocationDatabasePath(String databasePath);
Steve Block9d3273f2009-08-21 13:16:27 +01001035
1036 /**
Steve Block72ca7a42012-06-13 22:00:30 +01001037 * Sets whether the Application Caches API should be enabled. The default
Nate Fischer0a6140d2017-09-05 12:37:49 -07001038 * is {@code false}. Note that in order for the Application Caches API to be
Steve Block72ca7a42012-06-13 22:00:30 +01001039 * enabled, a valid database path must also be supplied to
1040 * {@link #setAppCachePath}.
Steve Block4e584df2012-04-24 23:12:47 +01001041 *
Nate Fischer0a6140d2017-09-05 12:37:49 -07001042 * @param flag {@code true} if the WebView should enable Application Caches
Andrei Popescu60a9a7d2009-04-17 10:43:42 +01001043 */
Ignacio Solla451e3382014-11-10 10:35:54 +00001044 public abstract void setAppCacheEnabled(boolean flag);
Andrei Popescu60a9a7d2009-04-17 10:43:42 +01001045
1046 /**
Steve Block72ca7a42012-06-13 22:00:30 +01001047 * Sets the path to the Application Caches files. In order for the
1048 * Application Caches API to be enabled, this method must be called with a
1049 * path to which the application can write. This method should only be
1050 * called once: repeated calls are ignored.
Steve Block4e584df2012-04-24 23:12:47 +01001051 *
1052 * @param appCachePath a String path to the directory containing
Steve Block72ca7a42012-06-13 22:00:30 +01001053 * Application Caches files.
Jonathan Dixon47aaba32012-11-30 16:32:17 -08001054 * @see #setAppCacheEnabled
Andrei Popescu60a9a7d2009-04-17 10:43:42 +01001055 */
Ignacio Solla451e3382014-11-10 10:35:54 +00001056 public abstract void setAppCachePath(String appCachePath);
Andrei Popescu60a9a7d2009-04-17 10:43:42 +01001057
1058 /**
Selim Gurunb632adf2012-06-28 11:21:05 -07001059 * Sets the maximum size for the Application Cache content. The passed size
1060 * will be rounded to the nearest value that the database can support, so
1061 * this should be viewed as a guide, not a hard limit. Setting the
1062 * size to a value less than current database size does not cause the
Selim Gurunf27ac092012-06-28 11:21:05 -07001063 * database to be trimmed. The default size is {@link Long#MAX_VALUE}.
Jonathan Dixon835b1fc2013-02-25 12:29:33 -08001064 * It is recommended to leave the maximum size set to the default value.
Steve Block4e584df2012-04-24 23:12:47 +01001065 *
1066 * @param appCacheMaxSize the maximum size in bytes
Jonathan Dixon835b1fc2013-02-25 12:29:33 -08001067 * @deprecated In future quota will be managed automatically.
Andrei Popescu1c829202009-07-22 16:47:52 +01001068 */
Jonathan Dixon835b1fc2013-02-25 12:29:33 -08001069 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +00001070 public abstract void setAppCacheMaxSize(long appCacheMaxSize);
Andrei Popescu1c829202009-07-22 16:47:52 +01001071
1072 /**
Steve Blockb0e0f332012-06-13 22:01:11 +01001073 * Sets whether the database storage API is enabled. The default value is
1074 * false. See also {@link #setDatabasePath} for how to correctly set up the
1075 * database storage API.
Steve Block4e584df2012-04-24 23:12:47 +01001076 *
Selim Gurun2bca22b2013-02-28 17:47:21 -08001077 * This setting is global in effect, across all WebView instances in a process.
1078 * Note you should only modify this setting prior to making <b>any</b> WebView
1079 * page load within a given process, as the WebView implementation may ignore
1080 * changes to this setting after that point.
1081 *
Nate Fischer0a6140d2017-09-05 12:37:49 -07001082 * @param flag {@code true} if the WebView should use the database storage API
Ben Murdoch7df19852009-04-22 13:07:58 +01001083 */
Ignacio Solla451e3382014-11-10 10:35:54 +00001084 public abstract void setDatabaseEnabled(boolean flag);
Ben Murdoch7df19852009-04-22 13:07:58 +01001085
1086 /**
Nate Fischer0a6140d2017-09-05 12:37:49 -07001087 * Sets whether the DOM storage API is enabled. The default value is {@code false}.
Steve Block4e584df2012-04-24 23:12:47 +01001088 *
Nate Fischer0a6140d2017-09-05 12:37:49 -07001089 * @param flag {@code true} if the WebView should use the DOM storage API
Ben Murdoch274680d2009-05-28 13:44:44 +01001090 */
Ignacio Solla451e3382014-11-10 10:35:54 +00001091 public abstract void setDomStorageEnabled(boolean flag);
Ben Murdoch274680d2009-05-28 13:44:44 +01001092
1093 /**
Steve Block4e584df2012-04-24 23:12:47 +01001094 * Gets whether the DOM Storage APIs are enabled.
1095 *
Nate Fischer0a6140d2017-09-05 12:37:49 -07001096 * @return {@code true} if the DOM Storage APIs are enabled
Steve Blockb0e0f332012-06-13 22:01:11 +01001097 * @see #setDomStorageEnabled
Ben Murdoch274680d2009-05-28 13:44:44 +01001098 */
Ignacio Solla451e3382014-11-10 10:35:54 +00001099 public abstract boolean getDomStorageEnabled();
1100
Ben Murdoch274680d2009-05-28 13:44:44 +01001101 /**
Steve Blockb0e0f332012-06-13 22:01:11 +01001102 * Gets the path to where database storage API databases are saved.
Steve Block4e584df2012-04-24 23:12:47 +01001103 *
1104 * @return the String path to the database storage API databases
Steve Blockb0e0f332012-06-13 22:01:11 +01001105 * @see #setDatabasePath
Jonathan Dixon5545d082013-08-31 22:43:11 -07001106 * @deprecated Database paths are managed by the implementation this method is obsolete.
Ben Murdoch7df19852009-04-22 13:07:58 +01001107 */
Jonathan Dixon5545d082013-08-31 22:43:11 -07001108 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +00001109 public abstract String getDatabasePath();
Ben Murdoch7df19852009-04-22 13:07:58 +01001110
1111 /**
Steve Block4e584df2012-04-24 23:12:47 +01001112 * Gets whether the database storage API is enabled.
1113 *
Nate Fischer0a6140d2017-09-05 12:37:49 -07001114 * @return {@code true} if the database storage API is enabled
Steve Blockb0e0f332012-06-13 22:01:11 +01001115 * @see #setDatabaseEnabled
Ben Murdoch7df19852009-04-22 13:07:58 +01001116 */
Ignacio Solla451e3382014-11-10 10:35:54 +00001117 public abstract boolean getDatabaseEnabled();
Andrei Popescuc27a9ac2009-08-03 15:59:24 +01001118
1119 /**
Nate Fischer0a6140d2017-09-05 12:37:49 -07001120 * Sets whether Geolocation is enabled. The default is {@code true}.
Mikhail Naganov6cb296a2012-08-28 16:57:24 +01001121 * <p>
1122 * Please note that in order for the Geolocation API to be usable
1123 * by a page in the WebView, the following requirements must be met:
1124 * <ul>
1125 * <li>an application must have permission to access the device location,
1126 * see {@link android.Manifest.permission#ACCESS_COARSE_LOCATION},
1127 * {@link android.Manifest.permission#ACCESS_FINE_LOCATION};
1128 * <li>an application must provide an implementation of the
1129 * {@link WebChromeClient#onGeolocationPermissionsShowPrompt} callback
1130 * to receive notifications that a page is requesting access to location
1131 * via the JavaScript Geolocation API.
1132 * </ul>
1133 * <p>
Steve Block4e584df2012-04-24 23:12:47 +01001134 *
1135 * @param flag whether Geolocation should be enabled
Steve Block06cd7512009-08-21 10:26:37 +01001136 */
Ignacio Solla451e3382014-11-10 10:35:54 +00001137 public abstract void setGeolocationEnabled(boolean flag);
Elliott Slaughter5dc0c822010-06-22 11:31:54 -07001138
1139 /**
Steve Block4e584df2012-04-24 23:12:47 +01001140 * Gets whether JavaScript is enabled.
1141 *
Nate Fischer0a6140d2017-09-05 12:37:49 -07001142 * @return {@code true} if JavaScript is enabled
Steve Block4e584df2012-04-24 23:12:47 +01001143 * @see #setJavaScriptEnabled
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001144 */
Ignacio Solla451e3382014-11-10 10:35:54 +00001145 public abstract boolean getJavaScriptEnabled();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001146
1147 /**
Steve Blockef163152012-04-23 18:08:06 +01001148 * Gets whether JavaScript running in the context of a file scheme URL can
1149 * access content from any origin. This includes access to content from
1150 * other file scheme URLs.
Selim Gurun0ea6dad2012-03-29 18:19:01 -07001151 *
Steve Blockef163152012-04-23 18:08:06 +01001152 * @return whether JavaScript running in the context of a file scheme URL
1153 * can access content from any origin
Steve Block4e584df2012-04-24 23:12:47 +01001154 * @see #setAllowUniversalAccessFromFileURLs
Selim Gurun0ea6dad2012-03-29 18:19:01 -07001155 */
1156 public abstract boolean getAllowUniversalAccessFromFileURLs();
1157
1158 /**
Steve Blockef163152012-04-23 18:08:06 +01001159 * Gets whether JavaScript running in the context of a file scheme URL can
1160 * access content from other file scheme URLs.
Selim Gurun0ea6dad2012-03-29 18:19:01 -07001161 *
Steve Blockef163152012-04-23 18:08:06 +01001162 * @return whether JavaScript running in the context of a file scheme URL
1163 * can access content from other file scheme URLs
Steve Block4e584df2012-04-24 23:12:47 +01001164 * @see #setAllowFileAccessFromFileURLs
Selim Gurun0ea6dad2012-03-29 18:19:01 -07001165 */
1166 public abstract boolean getAllowFileAccessFromFileURLs();
1167
1168 /**
Steve Block4e584df2012-04-24 23:12:47 +01001169 * Gets whether plugins are enabled.
1170 *
Nate Fischer0a6140d2017-09-05 12:37:49 -07001171 * @return {@code true} if plugins are enabled
Steve Blockb0e0f332012-06-13 22:01:11 +01001172 * @see #setPluginsEnabled
Patrick Scott300f2e92010-03-22 10:20:45 -04001173 * @deprecated This method has been replaced by {@link #getPluginState}
Jonathan Dixon0bf47812013-03-07 17:20:08 -08001174 * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR2}
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001175 */
Ignacio Solla451e3382014-11-10 10:35:54 +00001176 @SystemApi
Michael Kolba172e7d2010-06-30 12:35:26 -07001177 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +00001178 public abstract boolean getPluginsEnabled();
Patrick Scott300f2e92010-03-22 10:20:45 -04001179
1180 /**
Steve Blockb0e0f332012-06-13 22:01:11 +01001181 * Gets the current state regarding whether plugins are enabled.
Steve Block4e584df2012-04-24 23:12:47 +01001182 *
Steve Blockb0e0f332012-06-13 22:01:11 +01001183 * @return the plugin state as a {@link PluginState} value
1184 * @see #setPluginState
Jonathan Dixon835b1fc2013-02-25 12:29:33 -08001185 * @deprecated Plugins will not be supported in future, and should not be used.
Patrick Scott300f2e92010-03-22 10:20:45 -04001186 */
Jonathan Dixon835b1fc2013-02-25 12:29:33 -08001187 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +00001188 public abstract PluginState getPluginState();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001189
1190 /**
Steve Block4e584df2012-04-24 23:12:47 +01001191 * Gets the directory that contains the plugin libraries. This method is
Derek Sollenbergerfdbdeb32010-08-12 11:20:13 -04001192 * obsolete since each plugin is now loaded from its own package.
Steve Block4e584df2012-04-24 23:12:47 +01001193 *
1194 * @return an empty string
Derek Sollenbergerfdbdeb32010-08-12 11:20:13 -04001195 * @deprecated This method is no longer used as plugins are loaded from
1196 * their own APK via the system's package manager.
Jonathan Dixon0bf47812013-03-07 17:20:08 -08001197 * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR2}
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001198 */
Jason Chen9dc2e752010-09-01 19:11:14 -07001199 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +00001200 public String getPluginsPath() {
Jonathan Dixon3c909522012-02-28 18:45:06 +00001201 // Unconditionally returns empty string, so no need for derived classes to override.
Grace Kloba658ab7d2009-05-14 14:45:26 -07001202 return "";
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001203 }
1204
1205 /**
Steve Block4e584df2012-04-24 23:12:47 +01001206 * Tells JavaScript to open windows automatically. This applies to the
Nate Fischer4ea92402017-11-17 18:48:13 -08001207 * JavaScript function {@code window.open()}. The default is {@code false}.
Steve Block4e584df2012-04-24 23:12:47 +01001208 *
Nate Fischer0a6140d2017-09-05 12:37:49 -07001209 * @param flag {@code true} if JavaScript can open windows automatically
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001210 */
Ignacio Solla451e3382014-11-10 10:35:54 +00001211 public abstract void setJavaScriptCanOpenWindowsAutomatically(boolean flag);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001212
1213 /**
Steve Block4e584df2012-04-24 23:12:47 +01001214 * Gets whether JavaScript can open windows automatically.
1215 *
Nate Fischer0a6140d2017-09-05 12:37:49 -07001216 * @return {@code true} if JavaScript can open windows automatically during
Nate Fischer4ea92402017-11-17 18:48:13 -08001217 * {@code window.open()}
Steve Block4e584df2012-04-24 23:12:47 +01001218 * @see #setJavaScriptCanOpenWindowsAutomatically
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001219 */
Ignacio Solla451e3382014-11-10 10:35:54 +00001220 public abstract boolean getJavaScriptCanOpenWindowsAutomatically();
Marcin Kosibafd1ac832014-10-10 17:12:49 +01001221
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001222 /**
Steve Block4e584df2012-04-24 23:12:47 +01001223 * Sets the default text encoding name to use when decoding html pages.
Marcin Kosibafd1ac832014-10-10 17:12:49 +01001224 * The default is "UTF-8".
Steve Block4e584df2012-04-24 23:12:47 +01001225 *
1226 * @param encoding the text encoding name
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001227 */
Ignacio Solla451e3382014-11-10 10:35:54 +00001228 public abstract void setDefaultTextEncodingName(String encoding);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001229
1230 /**
Steve Block4e584df2012-04-24 23:12:47 +01001231 * Gets the default text encoding name.
1232 *
1233 * @return the default text encoding name as a string
1234 * @see #setDefaultTextEncodingName
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001235 */
Ignacio Solla451e3382014-11-10 10:35:54 +00001236 public abstract String getDefaultTextEncodingName();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001237
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -08001238 /**
Nate Fischer0a6140d2017-09-05 12:37:49 -07001239 * Sets the WebView's user-agent string. If the string is {@code null} or empty,
Steve Blockb0e0f332012-06-13 22:01:11 +01001240 * the system default value will be used.
Mikhail Naganov550f6212015-07-07 13:39:31 -07001241 *
1242 * Note that starting from {@link android.os.Build.VERSION_CODES#KITKAT} Android
1243 * version, changing the user-agent while loading a web page causes WebView
1244 * to initiate loading once again.
1245 *
1246 * @param ua new user-agent string
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -08001247 */
Nate Fischer3442c742017-09-08 17:02:00 -07001248 public abstract void setUserAgentString(@Nullable String ua);
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -08001249
1250 /**
Steve Block4e584df2012-04-24 23:12:47 +01001251 * Gets the WebView's user-agent string.
Steve Blockb0e0f332012-06-13 22:01:11 +01001252 *
1253 * @return the WebView's user-agent string
1254 * @see #setUserAgentString
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -08001255 */
Ignacio Solla451e3382014-11-10 10:35:54 +00001256 public abstract String getUserAgentString();
Shimeng (Simon) Wangc55886a2010-10-28 13:46:02 -07001257
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001258 /**
George Mount9f410c52012-08-10 15:29:30 -07001259 * Returns the default User-Agent used by a WebView.
1260 * An instance of WebView could use a different User-Agent if a call
Kristian Monsenf4912582012-08-16 15:26:24 -04001261 * is made to {@link WebSettings#setUserAgentString(String)}.
George Mount9f410c52012-08-10 15:29:30 -07001262 *
1263 * @param context a Context object used to access application assets
1264 */
1265 public static String getDefaultUserAgent(Context context) {
Jonathan Dixond1c4faa2012-08-20 16:37:15 -07001266 return WebViewFactory.getProvider().getStatics().getDefaultUserAgent(context);
George Mount9f410c52012-08-10 15:29:30 -07001267 }
1268
1269 /**
Steve Block4e584df2012-04-24 23:12:47 +01001270 * Tells the WebView whether it needs to set a node to have focus when
Steve Blockb0e0f332012-06-13 22:01:11 +01001271 * {@link WebView#requestFocus(int, android.graphics.Rect)} is called. The
Nate Fischer0a6140d2017-09-05 12:37:49 -07001272 * default value is {@code true}.
Michael Kolba172e7d2010-06-30 12:35:26 -07001273 *
Steve Block4e584df2012-04-24 23:12:47 +01001274 * @param flag whether the WebView needs to set a node
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001275 */
Ignacio Solla451e3382014-11-10 10:35:54 +00001276 public abstract void setNeedInitialFocus(boolean flag);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001277
1278 /**
Steve Block4e584df2012-04-24 23:12:47 +01001279 * Sets the priority of the Render thread. Unlike the other settings, this
Steve Blockb0e0f332012-06-13 22:01:11 +01001280 * one only needs to be called once per process. The default value is
1281 * {@link RenderPriority#NORMAL}.
Mike Hearnadcd2ed2009-01-21 16:44:36 +01001282 *
Steve Blockb0e0f332012-06-13 22:01:11 +01001283 * @param priority the priority
Jonathan Dixon835b1fc2013-02-25 12:29:33 -08001284 * @deprecated It is not recommended to adjust thread priorities, and this will
1285 * not be supported in future versions.
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001286 */
Jonathan Dixon835b1fc2013-02-25 12:29:33 -08001287 @Deprecated
Ignacio Solla451e3382014-11-10 10:35:54 +00001288 public abstract void setRenderPriority(RenderPriority priority);
Michael Kolba172e7d2010-06-30 12:35:26 -07001289
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001290 /**
Steve Block4e584df2012-04-24 23:12:47 +01001291 * Overrides the way the cache is used. The way the cache is used is based
Steve Blockb0e0f332012-06-13 22:01:11 +01001292 * on the navigation type. For a normal page load, the cache is checked
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001293 * and content is re-validated as needed. When navigating back, content is
Steve Blockb0e0f332012-06-13 22:01:11 +01001294 * not revalidated, instead the content is just retrieved from the cache.
1295 * This method allows the client to override this behavior by specifying
Mikhail Naganov56936a12012-07-25 13:07:18 +01001296 * one of {@link #LOAD_DEFAULT},
Steve Blockb0e0f332012-06-13 22:01:11 +01001297 * {@link #LOAD_CACHE_ELSE_NETWORK}, {@link #LOAD_NO_CACHE} or
1298 * {@link #LOAD_CACHE_ONLY}. The default value is {@link #LOAD_DEFAULT}.
Steve Block4e584df2012-04-24 23:12:47 +01001299 *
Steve Blockb0e0f332012-06-13 22:01:11 +01001300 * @param mode the mode to use
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001301 */
Tim Volodineb90f5382016-04-29 12:44:41 +01001302 public abstract void setCacheMode(@CacheMode int mode);
Michael Kolba172e7d2010-06-30 12:35:26 -07001303
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001304 /**
Steve Blockb0e0f332012-06-13 22:01:11 +01001305 * Gets the current setting for overriding the cache mode.
1306 *
1307 * @return the current setting for overriding the cache mode
1308 * @see #setCacheMode
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001309 */
Tim Volodineb90f5382016-04-29 12:44:41 +01001310 @CacheMode
Ignacio Solla451e3382014-11-10 10:35:54 +00001311 public abstract int getCacheMode();
Ben Murdochfe9fc3d2014-04-10 15:31:06 +01001312
1313 /**
1314 * Configures the WebView's behavior when a secure origin attempts to load a resource from an
1315 * insecure origin.
1316 *
1317 * By default, apps that target {@link android.os.Build.VERSION_CODES#KITKAT} or below default
1318 * to {@link #MIXED_CONTENT_ALWAYS_ALLOW}. Apps targeting
Dianne Hackborn955d8d62014-10-07 20:17:19 -07001319 * {@link android.os.Build.VERSION_CODES#LOLLIPOP} default to {@link #MIXED_CONTENT_NEVER_ALLOW}.
Ben Murdochfe9fc3d2014-04-10 15:31:06 +01001320 *
1321 * The preferred and most secure mode of operation for the WebView is
1322 * {@link #MIXED_CONTENT_NEVER_ALLOW} and use of {@link #MIXED_CONTENT_ALWAYS_ALLOW} is
1323 * strongly discouraged.
1324 *
1325 * @param mode The mixed content mode to use. One of {@link #MIXED_CONTENT_NEVER_ALLOW},
Torne (Richard Coles)2b666c92015-03-06 14:20:00 +00001326 * {@link #MIXED_CONTENT_ALWAYS_ALLOW} or {@link #MIXED_CONTENT_COMPATIBILITY_MODE}.
Ben Murdochfe9fc3d2014-04-10 15:31:06 +01001327 */
1328 public abstract void setMixedContentMode(int mode);
1329
1330 /**
1331 * Gets the current behavior of the WebView with regard to loading insecure content from a
1332 * secure origin.
1333 * @return The current setting, one of {@link #MIXED_CONTENT_NEVER_ALLOW},
Torne (Richard Coles)2b666c92015-03-06 14:20:00 +00001334 * {@link #MIXED_CONTENT_ALWAYS_ALLOW} or {@link #MIXED_CONTENT_COMPATIBILITY_MODE}.
Ben Murdochfe9fc3d2014-04-10 15:31:06 +01001335 */
1336 public abstract int getMixedContentMode();
Yuncheol Heo4d07c482014-05-07 17:29:35 +09001337
1338 /**
1339 * Sets whether to use a video overlay for embedded encrypted video.
Dianne Hackborn955d8d62014-10-07 20:17:19 -07001340 * In API levels prior to {@link android.os.Build.VERSION_CODES#LOLLIPOP}, encrypted video can
Yuncheol Heo4d07c482014-05-07 17:29:35 +09001341 * only be rendered directly on a secure video surface, so it had been a hard problem to play
1342 * encrypted video in HTML. When this flag is on, WebView can play encrypted video (MSE/EME)
1343 * by using a video overlay (aka hole-punching) for videos embedded using HTML &lt;video&gt;
1344 * tag.<br>
1345 * Caution: This setting is intended for use only in a narrow set of circumstances and apps
1346 * should only enable it if they require playback of encrypted video content. It will impose
1347 * the following limitations on the WebView:
1348 * <ul>
1349 * <li> Only one video overlay can be played at a time.
1350 * <li> Changes made to position or dimensions of a video element may be propagated to the
1351 * corresponding video overlay with a noticeable delay.
1352 * <li> The video overlay is not visible to web APIs and as such may not interact with
1353 * script or styling. For example, CSS styles applied to the &lt;video&gt; tag may be ignored.
1354 * </ul>
1355 * This is not an exhaustive set of constraints and it may vary with new versions of the
1356 * WebView.
1357 * @hide
1358 */
Yuncheol Heoeeba0252014-07-08 19:43:00 +09001359 @SystemApi
Yuncheol Heo4d07c482014-05-07 17:29:35 +09001360 public abstract void setVideoOverlayForEmbeddedEncryptedVideoEnabled(boolean flag);
1361
1362 /**
1363 * Gets whether a video overlay will be used for embedded encrypted video.
1364 *
Nate Fischer0a6140d2017-09-05 12:37:49 -07001365 * @return {@code true} if WebView uses a video overlay for embedded encrypted video.
Yuncheol Heo4d07c482014-05-07 17:29:35 +09001366 * @see #setVideoOverlayForEmbeddedEncryptedVideoEnabled
1367 * @hide
1368 */
Yuncheol Heoeeba0252014-07-08 19:43:00 +09001369 @SystemApi
Yuncheol Heo4d07c482014-05-07 17:29:35 +09001370 public abstract boolean getVideoOverlayForEmbeddedEncryptedVideoEnabled();
Hui Shub1ee70b2015-03-03 11:38:41 -08001371
1372 /**
1373 * Sets whether this WebView should raster tiles when it is
1374 * offscreen but attached to a window. Turning this on can avoid
1375 * rendering artifacts when animating an offscreen WebView on-screen.
1376 * Offscreen WebViews in this mode use more memory. The default value is
Hui Shud377c0f2015-05-13 12:01:42 -07001377 * false.<br>
Hui Shub1ee70b2015-03-03 11:38:41 -08001378 * Please follow these guidelines to limit memory usage:
Hui Shud377c0f2015-05-13 12:01:42 -07001379 * <ul>
1380 * <li> WebView size should be not be larger than the device screen size.
1381 * <li> Limit use of this mode to a small number of WebViews. Use it for
Hui Shub1ee70b2015-03-03 11:38:41 -08001382 * visible WebViews and WebViews about to be animated to visible.
Hui Shud377c0f2015-05-13 12:01:42 -07001383 * </ul>
Hui Shub1ee70b2015-03-03 11:38:41 -08001384 */
1385 public abstract void setOffscreenPreRaster(boolean enabled);
1386
1387 /**
1388 * Gets whether this WebView should raster tiles when it is
1389 * offscreen but attached to a window.
Nate Fischer0a6140d2017-09-05 12:37:49 -07001390 * @return {@code true} if this WebView will raster tiles when it is
Hui Shub1ee70b2015-03-03 11:38:41 -08001391 * offscreen but attached to a window.
1392 */
1393 public abstract boolean getOffscreenPreRaster();
Hui Shu227a8c12015-10-22 14:57:51 -07001394
Selim Gurunec0a1f22017-04-07 18:21:46 -07001395
1396 /**
Nate Fischerfb92ee12018-01-18 12:01:19 -08001397 * Sets whether Safe Browsing is enabled. Safe Browsing allows WebView to
Selim Gurunec0a1f22017-04-07 18:21:46 -07001398 * protect against malware and phishing attacks by verifying the links.
1399 *
Selim Gurunec0a1f22017-04-07 18:21:46 -07001400 * <p>
Nate Fischerfb92ee12018-01-18 12:01:19 -08001401 * Safe Browsing can be disabled for all WebViews using a manifest tag (read <a
1402 * href="{@docRoot}reference/android/webkit/WebView.html">general Safe Browsing info</a>). The
1403 * manifest tag has a lower precedence than this API.
Selim Gurunec0a1f22017-04-07 18:21:46 -07001404 *
Nate Fischer471891d2017-07-18 19:15:52 -07001405 * <p>
Nate Fischerfb92ee12018-01-18 12:01:19 -08001406 * Safe Browsing is enabled by default for devices which support it.
Selim Gurunec0a1f22017-04-07 18:21:46 -07001407 *
Nate Fischerfb92ee12018-01-18 12:01:19 -08001408 * @param enabled Whether Safe Browsing is enabled.
Selim Gurunec0a1f22017-04-07 18:21:46 -07001409 */
1410 public abstract void setSafeBrowsingEnabled(boolean enabled);
1411
1412 /**
Nate Fischerfb92ee12018-01-18 12:01:19 -08001413 * Gets whether Safe Browsing is enabled.
Selim Gurunec0a1f22017-04-07 18:21:46 -07001414 * See {@link #setSafeBrowsingEnabled}.
1415 *
Nate Fischerfb92ee12018-01-18 12:01:19 -08001416 * @return {@code true} if Safe Browsing is enabled and {@code false} otherwise.
Selim Gurunec0a1f22017-04-07 18:21:46 -07001417 */
1418 public abstract boolean getSafeBrowsingEnabled();
1419
1420
Hui Shu227a8c12015-10-22 14:57:51 -07001421 /**
Hui Shu539b0772016-04-20 15:21:37 -07001422 * @hide
1423 */
Jeff Sharkeyce8db992017-12-13 20:05:05 -07001424 @IntDef(flag = true, prefix = { "MENU_ITEM_" }, value = {
1425 MENU_ITEM_NONE,
1426 MENU_ITEM_SHARE,
1427 MENU_ITEM_WEB_SEARCH,
1428 MENU_ITEM_PROCESS_TEXT
1429 })
Hui Shu539b0772016-04-20 15:21:37 -07001430 @Retention(RetentionPolicy.SOURCE)
1431 @Target({ElementType.PARAMETER, ElementType.METHOD})
1432 private @interface MenuItemFlags {}
1433
1434 /**
Hui Shu227a8c12015-10-22 14:57:51 -07001435 * Disables the action mode menu items according to {@code menuItems} flag.
1436 * @param menuItems an integer field flag for the menu items to be disabled.
1437 */
Hui Shu539b0772016-04-20 15:21:37 -07001438 public abstract void setDisabledActionModeMenuItems(@MenuItemFlags int menuItems);
Hui Shu227a8c12015-10-22 14:57:51 -07001439
1440 /**
1441 * Gets the action mode menu items that are disabled, expressed in an integer field flag.
1442 * The default value is {@link #MENU_ITEM_NONE}
1443 *
Hui Shu539b0772016-04-20 15:21:37 -07001444 * @return all the disabled menu item flags combined with bitwise OR.
Hui Shu227a8c12015-10-22 14:57:51 -07001445 */
Hui Shu539b0772016-04-20 15:21:37 -07001446 public abstract @MenuItemFlags int getDisabledActionModeMenuItems();
Hui Shu227a8c12015-10-22 14:57:51 -07001447
1448 /**
1449 * Used with {@link #setDisabledActionModeMenuItems}.
1450 *
1451 * No menu items should be disabled.
1452 */
1453 public static final int MENU_ITEM_NONE = 0;
1454
1455 /**
1456 * Used with {@link #setDisabledActionModeMenuItems}.
1457 *
1458 * Disable menu item "Share".
1459 */
1460 public static final int MENU_ITEM_SHARE = 1 << 0;
1461
1462 /**
1463 * Used with {@link #setDisabledActionModeMenuItems}.
1464 *
1465 * Disable menu item "Web Search".
1466 */
1467 public static final int MENU_ITEM_WEB_SEARCH = 1 << 1;
1468
1469 /**
1470 * Used with {@link #setDisabledActionModeMenuItems}.
1471 *
1472 * Disable all the action mode menu items for text processing.
1473 * By default WebView searches for activities that are able to handle
1474 * {@link android.content.Intent#ACTION_PROCESS_TEXT} and show them in the
1475 * action mode menu. If this flag is set via {@link
1476 * #setDisabledActionModeMenuItems}, these menu items will be disabled.
1477 */
1478 public static final int MENU_ITEM_PROCESS_TEXT = 1 << 2;
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001479}