1 /* 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 17 package android.webkit; 18 19 import android.content.Context; 20 21 /** 22 * Manages settings state for a WebView. When a WebView is first created, it 23 * obtains a set of default settings. These default settings will be returned 24 * from any getter call. A WebSettings object obtained from 25 * WebView.getSettings() is tied to the life of the WebView. If a WebView has 26 * been destroyed, any method call on WebSettings will throw an 27 * IllegalStateException. 28 */ 29 // This is an abstract base class: concrete WebViewProviders must 30 // create a class derived from this, and return an instance of it in the 31 // WebViewProvider.getWebSettingsProvider() method implementation. 32 public abstract class WebSettings { 33 /** 34 * Enum for controlling the layout of html. 35 * <ul> 36 * <li>NORMAL means no rendering changes.</li> 37 * <li>SINGLE_COLUMN moves all content into one column that is the width of the 38 * view.</li> 39 * <li>NARROW_COLUMNS makes all columns no wider than the screen if possible.</li> 40 * </ul> 41 */ 42 // XXX: These must match LayoutAlgorithm in Settings.h in WebCore. 43 public enum LayoutAlgorithm { 44 NORMAL, 45 /** 46 * @deprecated This algorithm is now obsolete. 47 */ 48 @Deprecated 49 SINGLE_COLUMN, 50 NARROW_COLUMNS 51 } 52 53 /** 54 * Enum for specifying the text size. 55 * <ul> 56 * <li>SMALLEST is 50%</li> 57 * <li>SMALLER is 75%</li> 58 * <li>NORMAL is 100%</li> 59 * <li>LARGER is 150%</li> 60 * <li>LARGEST is 200%</li> 61 * </ul> 62 * 63 * @deprecated Use {@link WebSettings#setTextZoom(int)} and {@link WebSettings#getTextZoom()} instead. 64 */ 65 public enum TextSize { 66 SMALLEST(50), 67 SMALLER(75), 68 NORMAL(100), 69 LARGER(150), 70 LARGEST(200); TextSize(int size)71 TextSize(int size) { 72 value = size; 73 } 74 int value; 75 } 76 77 /** 78 * Enum for specifying the WebView's desired density. 79 * <ul> 80 * <li>FAR makes 100% looking like in 240dpi</li> 81 * <li>MEDIUM makes 100% looking like in 160dpi</li> 82 * <li>CLOSE makes 100% looking like in 120dpi</li> 83 * </ul> 84 */ 85 public enum ZoomDensity { 86 FAR(150), // 240dpi 87 MEDIUM(100), // 160dpi 88 CLOSE(75); // 120dpi ZoomDensity(int size)89 ZoomDensity(int size) { 90 value = size; 91 } 92 int value; 93 } 94 95 /** 96 * Default cache usage mode. If the navigation type doesn't impose any 97 * specific behavior, use cached resources when they are available 98 * and not expired, otherwise load resources from the network. 99 * Use with {@link #setCacheMode}. 100 */ 101 public static final int LOAD_DEFAULT = -1; 102 103 /** 104 * Normal cache usage mode. Use with {@link #setCacheMode}. 105 * 106 * @deprecated This value is obsolete, as from API level 107 * {@link android.os.Build.VERSION_CODES#HONEYCOMB} and onwards it has the 108 * same effect as {@link #LOAD_DEFAULT}. 109 */ 110 @Deprecated 111 public static final int LOAD_NORMAL = 0; 112 113 /** 114 * Use cached resources when they are available, even if they have expired. 115 * Otherwise load resources from the network. 116 * Use with {@link #setCacheMode}. 117 */ 118 public static final int LOAD_CACHE_ELSE_NETWORK = 1; 119 120 /** 121 * Don't use the cache, load from the network. 122 * Use with {@link #setCacheMode}. 123 */ 124 public static final int LOAD_NO_CACHE = 2; 125 126 /** 127 * Don't use the network, load from the cache. 128 * Use with {@link #setCacheMode}. 129 */ 130 public static final int LOAD_CACHE_ONLY = 3; 131 132 public enum RenderPriority { 133 NORMAL, 134 HIGH, 135 LOW 136 } 137 138 /** 139 * The plugin state effects how plugins are treated on a page. ON means 140 * that any object will be loaded even if a plugin does not exist to handle 141 * the content. ON_DEMAND means that if there is a plugin installed that 142 * can handle the content, a placeholder is shown until the user clicks on 143 * the placeholder. Once clicked, the plugin will be enabled on the page. 144 * OFF means that all plugins will be turned off and any fallback content 145 * will be used. 146 */ 147 public enum PluginState { 148 ON, 149 ON_DEMAND, 150 OFF 151 } 152 153 /** 154 * Hidden constructor to prevent clients from creating a new settings 155 * instance or deriving the class. 156 * 157 * @hide 158 */ WebSettings()159 protected WebSettings() { 160 } 161 162 /** 163 * Enables dumping the pages navigation cache to a text file. The default 164 * is false. 165 * 166 * @deprecated This method is now obsolete. 167 * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1} 168 */ 169 @Deprecated setNavDump(boolean enabled)170 public void setNavDump(boolean enabled) { 171 throw new MustOverrideException(); 172 } 173 174 /** 175 * Gets whether dumping the navigation cache is enabled. 176 * 177 * @return whether dumping the navigation cache is enabled 178 * @see #setNavDump 179 * @deprecated This method is now obsolete. 180 * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1} 181 */ 182 @Deprecated getNavDump()183 public boolean getNavDump() { 184 throw new MustOverrideException(); 185 } 186 187 /** 188 * Sets whether the WebView should support zooming using its on-screen zoom 189 * controls and gestures. The particular zoom mechanisms that should be used 190 * can be set with {@link #setBuiltInZoomControls}. This setting does not 191 * affect zooming performed using the {@link WebView#zoomIn()} and 192 * {@link WebView#zoomOut()} methods. The default is true. 193 * 194 * @param support whether the WebView should support zoom 195 */ setSupportZoom(boolean support)196 public void setSupportZoom(boolean support) { 197 throw new MustOverrideException(); 198 } 199 200 /** 201 * Gets whether the WebView supports zoom. 202 * 203 * @return true if the WebView supports zoom 204 * @see #setSupportZoom 205 */ supportZoom()206 public boolean supportZoom() { 207 throw new MustOverrideException(); 208 } 209 210 /** 211 * Sets whether the WebView requires a user gesture to play media. 212 * The default is true. 213 * 214 * @param require whether the WebView requires a user gesture to play media 215 */ setMediaPlaybackRequiresUserGesture(boolean require)216 public void setMediaPlaybackRequiresUserGesture(boolean require) { 217 throw new MustOverrideException(); 218 } 219 220 /** 221 * Gets whether the WebView requires a user gesture to play media. 222 * 223 * @return true if the WebView requires a user gesture to play media 224 * @see #setMediaPlaybackRequiresUserGesture 225 */ getMediaPlaybackRequiresUserGesture()226 public boolean getMediaPlaybackRequiresUserGesture() { 227 throw new MustOverrideException(); 228 } 229 230 /** 231 * Sets whether the WebView should use its built-in zoom mechanisms. The 232 * built-in zoom mechanisms comprise on-screen zoom controls, which are 233 * displayed over the WebView's content, and the use of a pinch gesture to 234 * control zooming. Whether or not these on-screen controls are displayed 235 * can be set with {@link #setDisplayZoomControls}. The default is false. 236 * <p> 237 * The built-in mechanisms are the only currently supported zoom 238 * mechanisms, so it is recommended that this setting is always enabled. 239 * 240 * @param enabled whether the WebView should use its built-in zoom mechanisms 241 */ 242 // This method was intended to select between the built-in zoom mechanisms 243 // and the separate zoom controls. The latter were obtained using 244 // {@link WebView#getZoomControls}, which is now hidden. setBuiltInZoomControls(boolean enabled)245 public void setBuiltInZoomControls(boolean enabled) { 246 throw new MustOverrideException(); 247 } 248 249 /** 250 * Gets whether the zoom mechanisms built into WebView are being used. 251 * 252 * @return true if the zoom mechanisms built into WebView are being used 253 * @see #setBuiltInZoomControls 254 */ getBuiltInZoomControls()255 public boolean getBuiltInZoomControls() { 256 throw new MustOverrideException(); 257 } 258 259 /** 260 * Sets whether the WebView should display on-screen zoom controls when 261 * using the built-in zoom mechanisms. See {@link #setBuiltInZoomControls}. 262 * The default is true. 263 * 264 * @param enabled whether the WebView should display on-screen zoom controls 265 */ setDisplayZoomControls(boolean enabled)266 public void setDisplayZoomControls(boolean enabled) { 267 throw new MustOverrideException(); 268 } 269 270 /** 271 * Gets whether the WebView displays on-screen zoom controls when using 272 * the built-in zoom mechanisms. 273 * 274 * @return true if the WebView displays on-screen zoom controls when using 275 * the built-in zoom mechanisms 276 * @see #setDisplayZoomControls 277 */ getDisplayZoomControls()278 public boolean getDisplayZoomControls() { 279 throw new MustOverrideException(); 280 } 281 282 /** 283 * Enables or disables file access within WebView. File access is enabled by 284 * default. Note that this enables or disables file system access only. 285 * Assets and resources are still accessible using file:///android_asset and 286 * file:///android_res. 287 */ setAllowFileAccess(boolean allow)288 public void setAllowFileAccess(boolean allow) { 289 throw new MustOverrideException(); 290 } 291 292 /** 293 * Gets whether this WebView supports file access. 294 * 295 * @see #setAllowFileAccess 296 */ getAllowFileAccess()297 public boolean getAllowFileAccess() { 298 throw new MustOverrideException(); 299 } 300 301 /** 302 * Enables or disables content URL access within WebView. Content URL 303 * access allows WebView to load content from a content provider installed 304 * in the system. The default is enabled. 305 */ setAllowContentAccess(boolean allow)306 public void setAllowContentAccess(boolean allow) { 307 throw new MustOverrideException(); 308 } 309 310 /** 311 * Gets whether this WebView supports content URL access. 312 * 313 * @see #setAllowContentAccess 314 */ getAllowContentAccess()315 public boolean getAllowContentAccess() { 316 throw new MustOverrideException(); 317 } 318 319 /** 320 * Sets whether the WebView loads pages in overview mode. The default is 321 * false. 322 */ setLoadWithOverviewMode(boolean overview)323 public void setLoadWithOverviewMode(boolean overview) { 324 throw new MustOverrideException(); 325 } 326 327 /** 328 * Gets whether this WebView loads pages in overview mode. 329 * 330 * @return whether this WebView loads pages in overview mode 331 * @see #setLoadWithOverviewMode 332 */ getLoadWithOverviewMode()333 public boolean getLoadWithOverviewMode() { 334 throw new MustOverrideException(); 335 } 336 337 /** 338 * Sets whether the WebView will enable smooth transition while panning or 339 * zooming or while the window hosting the WebView does not have focus. 340 * If it is true, WebView will choose a solution to maximize the performance. 341 * e.g. the WebView's content may not be updated during the transition. 342 * If it is false, WebView will keep its fidelity. The default value is false. 343 * 344 * @deprecated This method is now obsolete, and will become a no-op in future. 345 */ 346 @Deprecated setEnableSmoothTransition(boolean enable)347 public void setEnableSmoothTransition(boolean enable) { 348 throw new MustOverrideException(); 349 } 350 351 /** 352 * Gets whether the WebView enables smooth transition while panning or 353 * zooming. 354 * 355 * @see #setEnableSmoothTransition 356 * 357 * @deprecated This method is now obsolete, and will become a no-op in future. 358 */ 359 @Deprecated enableSmoothTransition()360 public boolean enableSmoothTransition() { 361 throw new MustOverrideException(); 362 } 363 364 /** 365 * Sets whether the WebView uses its background for over scroll background. 366 * If true, it will use the WebView's background. If false, it will use an 367 * internal pattern. Default is true. 368 * 369 * @deprecated This method is now obsolete. 370 * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1} 371 */ 372 @Deprecated setUseWebViewBackgroundForOverscrollBackground(boolean view)373 public void setUseWebViewBackgroundForOverscrollBackground(boolean view) { 374 throw new MustOverrideException(); 375 } 376 377 /** 378 * Gets whether this WebView uses WebView's background instead of 379 * internal pattern for over scroll background. 380 * 381 * @see #setUseWebViewBackgroundForOverscrollBackground 382 * @deprecated This method is now obsolete. 383 * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1} 384 */ 385 @Deprecated getUseWebViewBackgroundForOverscrollBackground()386 public boolean getUseWebViewBackgroundForOverscrollBackground() { 387 throw new MustOverrideException(); 388 } 389 390 /** 391 * Sets whether the WebView should save form data. The default is true, 392 * unless in private browsing mode, when the value is always false. 393 */ setSaveFormData(boolean save)394 public void setSaveFormData(boolean save) { 395 throw new MustOverrideException(); 396 } 397 398 /** 399 * Gets whether the WebView saves form data. Always false in private 400 * browsing mode. 401 * 402 * @return whether the WebView saves form data 403 * @see #setSaveFormData 404 */ getSaveFormData()405 public boolean getSaveFormData() { 406 throw new MustOverrideException(); 407 } 408 409 /** 410 * Sets whether the WebView should save passwords. The default is true. 411 */ setSavePassword(boolean save)412 public void setSavePassword(boolean save) { 413 throw new MustOverrideException(); 414 } 415 416 /** 417 * Gets whether the WebView saves passwords. 418 * 419 * @return whether the WebView saves passwords 420 * @see #setSavePassword 421 */ getSavePassword()422 public boolean getSavePassword() { 423 throw new MustOverrideException(); 424 } 425 426 /** 427 * Sets the text zoom of the page in percent. The default is 100. 428 * 429 * @param textZoom the text zoom in percent 430 */ setTextZoom(int textZoom)431 public synchronized void setTextZoom(int textZoom) { 432 throw new MustOverrideException(); 433 } 434 435 /** 436 * Gets the text zoom of the page in percent. 437 * 438 * @return the text zoom of the page in percent 439 * @see #setTextZoom 440 */ getTextZoom()441 public synchronized int getTextZoom() { 442 throw new MustOverrideException(); 443 } 444 445 /** 446 * Sets the text size of the page. The default is {@link TextSize#NORMAL}. 447 * 448 * @param t the text size as a {@link TextSize} value 449 * @deprecated Use {@link #setTextZoom} instead. 450 */ setTextSize(TextSize t)451 public synchronized void setTextSize(TextSize t) { 452 setTextZoom(t.value); 453 } 454 455 /** 456 * Gets the text size of the page. If the text size was previously specified 457 * in percent using {@link #setTextZoom}, this will return the closest 458 * matching {@link TextSize}. 459 * 460 * @return the text size as a {@link TextSize} value 461 * @see #setTextSize 462 * @deprecated Use {@link #getTextZoom} instead. 463 */ getTextSize()464 public synchronized TextSize getTextSize() { 465 TextSize closestSize = null; 466 int smallestDelta = Integer.MAX_VALUE; 467 int textSize = getTextZoom(); 468 for (TextSize size : TextSize.values()) { 469 int delta = Math.abs(textSize - size.value); 470 if (delta == 0) { 471 return size; 472 } 473 if (delta < smallestDelta) { 474 smallestDelta = delta; 475 closestSize = size; 476 } 477 } 478 return closestSize != null ? closestSize : TextSize.NORMAL; 479 } 480 481 /** 482 * Sets the default zoom density of the page. This must be called from the UI 483 * thread. The default is {@link ZoomDensity#MEDIUM}. 484 * 485 * @param zoom the zoom density 486 */ setDefaultZoom(ZoomDensity zoom)487 public void setDefaultZoom(ZoomDensity zoom) { 488 throw new MustOverrideException(); 489 } 490 491 /** 492 * Gets the default zoom density of the page. This should be called from 493 * the UI thread. 494 * 495 * @return the zoom density 496 * @see #setDefaultZoom 497 */ getDefaultZoom()498 public ZoomDensity getDefaultZoom() { 499 throw new MustOverrideException(); 500 } 501 502 /** 503 * Enables using light touches to make a selection and activate mouseovers. 504 * The default is false. 505 */ setLightTouchEnabled(boolean enabled)506 public void setLightTouchEnabled(boolean enabled) { 507 throw new MustOverrideException(); 508 } 509 510 /** 511 * Gets whether light touches are enabled. 512 * 513 * @return whether light touches are enabled 514 * @see #setLightTouchEnabled 515 */ getLightTouchEnabled()516 public boolean getLightTouchEnabled() { 517 throw new MustOverrideException(); 518 } 519 520 /** 521 * Controlled a rendering optimization that is no longer present. Setting 522 * it now has no effect. 523 * 524 * @deprecated This setting now has no effect. 525 * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1} 526 */ 527 @Deprecated setUseDoubleTree(boolean use)528 public synchronized void setUseDoubleTree(boolean use) { 529 // Specified to do nothing, so no need for derived classes to override. 530 } 531 532 /** 533 * Controlled a rendering optimization that is no longer present. Setting 534 * it now has no effect. 535 * 536 * @deprecated This setting now has no effect. 537 * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1} 538 */ 539 @Deprecated getUseDoubleTree()540 public synchronized boolean getUseDoubleTree() { 541 // Returns false unconditionally, so no need for derived classes to override. 542 return false; 543 } 544 545 /** 546 * Sets the user-agent string using an integer code. 547 * <ul> 548 * <li>0 means the WebView should use an Android user-agent string</li> 549 * <li>1 means the WebView should use a desktop user-agent string</li> 550 * </ul> 551 * Other values are ignored. The default is an Android user-agent string, 552 * i.e. code value 0. 553 * 554 * @param ua the integer code for the user-agent string 555 * @deprecated Please use {@link #setUserAgentString} instead. 556 * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1} 557 */ 558 @Deprecated setUserAgent(int ua)559 public synchronized void setUserAgent(int ua) { 560 throw new MustOverrideException(); 561 } 562 563 /** 564 * Gets the user-agent as an integer code. 565 * <ul> 566 * <li>-1 means the WebView is using a custom user-agent string set with 567 * {@link #setUserAgentString}</li> 568 * <li>0 means the WebView should use an Android user-agent string</li> 569 * <li>1 means the WebView should use a desktop user-agent string</li> 570 * </ul> 571 * 572 * @return the integer code for the user-agent string 573 * @see #setUserAgent 574 * @deprecated Please use {@link #getUserAgentString} instead. 575 * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1} 576 */ 577 @Deprecated getUserAgent()578 public synchronized int getUserAgent() { 579 throw new MustOverrideException(); 580 } 581 582 /** 583 * Tells the WebView to use a wide viewport. The default is false. 584 * 585 * @param use whether to use a wide viewport 586 */ setUseWideViewPort(boolean use)587 public synchronized void setUseWideViewPort(boolean use) { 588 throw new MustOverrideException(); 589 } 590 591 /** 592 * Gets whether the WebView is using a wide viewport. 593 * 594 * @return true if the WebView is using a wide viewport 595 * @see #setUseWideViewPort 596 */ getUseWideViewPort()597 public synchronized boolean getUseWideViewPort() { 598 throw new MustOverrideException(); 599 } 600 601 /** 602 * Sets whether the WebView whether supports multiple windows. If set to 603 * true, {@link WebChromeClient#onCreateWindow} must be implemented by the 604 * host application. The default is false. 605 * 606 * @param support whether to suport multiple windows 607 */ setSupportMultipleWindows(boolean support)608 public synchronized void setSupportMultipleWindows(boolean support) { 609 throw new MustOverrideException(); 610 } 611 612 /** 613 * Gets whether the WebView supports multiple windows. 614 * 615 * @return true if the WebView supports multiple windows 616 * @see #setSupportMultipleWindows 617 */ supportMultipleWindows()618 public synchronized boolean supportMultipleWindows() { 619 throw new MustOverrideException(); 620 } 621 622 /** 623 * Sets the underlying layout algorithm. This will cause a relayout of the 624 * WebView. The default is {@link LayoutAlgorithm#NARROW_COLUMNS}. 625 * 626 * @param l the layout algorithm to use, as a {@link LayoutAlgorithm} value 627 */ setLayoutAlgorithm(LayoutAlgorithm l)628 public synchronized void setLayoutAlgorithm(LayoutAlgorithm l) { 629 throw new MustOverrideException(); 630 } 631 632 /** 633 * Gets the current layout algorithm. 634 * 635 * @return the layout algorithm in use, as a {@link LayoutAlgorithm} value 636 * @see #setLayoutAlgorithm 637 */ getLayoutAlgorithm()638 public synchronized LayoutAlgorithm getLayoutAlgorithm() { 639 throw new MustOverrideException(); 640 } 641 642 /** 643 * Sets the standard font family name. The default is "sans-serif". 644 * 645 * @param font a font family name 646 */ setStandardFontFamily(String font)647 public synchronized void setStandardFontFamily(String font) { 648 throw new MustOverrideException(); 649 } 650 651 /** 652 * Gets the standard font family name. 653 * 654 * @return the standard font family name as a string 655 * @see #setStandardFontFamily 656 */ getStandardFontFamily()657 public synchronized String getStandardFontFamily() { 658 throw new MustOverrideException(); 659 } 660 661 /** 662 * Sets the fixed font family name. The default is "monospace". 663 * 664 * @param font a font family name 665 */ setFixedFontFamily(String font)666 public synchronized void setFixedFontFamily(String font) { 667 throw new MustOverrideException(); 668 } 669 670 /** 671 * Gets the fixed font family name. 672 * 673 * @return the fixed font family name as a string 674 * @see #setFixedFontFamily 675 */ getFixedFontFamily()676 public synchronized String getFixedFontFamily() { 677 throw new MustOverrideException(); 678 } 679 680 /** 681 * Sets the sans-serif font family name. The default is "sans-serif". 682 * 683 * @param font a font family name 684 */ setSansSerifFontFamily(String font)685 public synchronized void setSansSerifFontFamily(String font) { 686 throw new MustOverrideException(); 687 } 688 689 /** 690 * Gets the sans-serif font family name. 691 * 692 * @return the sans-serif font family name as a string 693 * @see #setSansSerifFontFamily 694 */ getSansSerifFontFamily()695 public synchronized String getSansSerifFontFamily() { 696 throw new MustOverrideException(); 697 } 698 699 /** 700 * Sets the serif font family name. The default is "sans-serif". 701 * 702 * @param font a font family name 703 */ setSerifFontFamily(String font)704 public synchronized void setSerifFontFamily(String font) { 705 throw new MustOverrideException(); 706 } 707 708 /** 709 * Gets the serif font family name. The default is "serif". 710 * 711 * @return the serif font family name as a string 712 * @see #setSerifFontFamily 713 */ getSerifFontFamily()714 public synchronized String getSerifFontFamily() { 715 throw new MustOverrideException(); 716 } 717 718 /** 719 * Sets the cursive font family name. The default is "cursive". 720 * 721 * @param font a font family name 722 */ setCursiveFontFamily(String font)723 public synchronized void setCursiveFontFamily(String font) { 724 throw new MustOverrideException(); 725 } 726 727 /** 728 * Gets the cursive font family name. 729 * 730 * @return the cursive font family name as a string 731 * @see #setCursiveFontFamily 732 */ getCursiveFontFamily()733 public synchronized String getCursiveFontFamily() { 734 throw new MustOverrideException(); 735 } 736 737 /** 738 * Sets the fantasy font family name. The default is "fantasy". 739 * 740 * @param font a font family name 741 */ setFantasyFontFamily(String font)742 public synchronized void setFantasyFontFamily(String font) { 743 throw new MustOverrideException(); 744 } 745 746 /** 747 * Gets the fantasy font family name. 748 * 749 * @return the fantasy font family name as a string 750 * @see #setFantasyFontFamily 751 */ getFantasyFontFamily()752 public synchronized String getFantasyFontFamily() { 753 throw new MustOverrideException(); 754 } 755 756 /** 757 * Sets the minimum font size. The default is 8. 758 * 759 * @param size a non-negative integer between 1 and 72. Any number outside 760 * the specified range will be pinned. 761 */ setMinimumFontSize(int size)762 public synchronized void setMinimumFontSize(int size) { 763 throw new MustOverrideException(); 764 } 765 766 /** 767 * Gets the minimum font size. 768 * 769 * @return a non-negative integer between 1 and 72 770 * @see #setMinimumFontSize 771 */ getMinimumFontSize()772 public synchronized int getMinimumFontSize() { 773 throw new MustOverrideException(); 774 } 775 776 /** 777 * Sets the minimum logical font size. The default is 8. 778 * 779 * @param size a non-negative integer between 1 and 72. Any number outside 780 * the specified range will be pinned. 781 */ setMinimumLogicalFontSize(int size)782 public synchronized void setMinimumLogicalFontSize(int size) { 783 throw new MustOverrideException(); 784 } 785 786 /** 787 * Gets the minimum logical font size. 788 * 789 * @return a non-negative integer between 1 and 72 790 * @see #setMinimumLogicalFontSize 791 */ getMinimumLogicalFontSize()792 public synchronized int getMinimumLogicalFontSize() { 793 throw new MustOverrideException(); 794 } 795 796 /** 797 * Sets the default font size. The default is 16. 798 * 799 * @param size a non-negative integer between 1 and 72. Any number outside 800 * the specified range will be pinned. 801 */ setDefaultFontSize(int size)802 public synchronized void setDefaultFontSize(int size) { 803 throw new MustOverrideException(); 804 } 805 806 /** 807 * Gets the default font size. 808 * 809 * @return a non-negative integer between 1 and 72 810 * @see #setDefaultFontSize 811 */ getDefaultFontSize()812 public synchronized int getDefaultFontSize() { 813 throw new MustOverrideException(); 814 } 815 816 /** 817 * Sets the default fixed font size. The default is 16. 818 * 819 * @param size a non-negative integer between 1 and 72. Any number outside 820 * the specified range will be pinned. 821 */ setDefaultFixedFontSize(int size)822 public synchronized void setDefaultFixedFontSize(int size) { 823 throw new MustOverrideException(); 824 } 825 826 /** 827 * Gets the default fixed font size. 828 * 829 * @return a non-negative integer between 1 and 72 830 * @see #setDefaultFixedFontSize 831 */ getDefaultFixedFontSize()832 public synchronized int getDefaultFixedFontSize() { 833 throw new MustOverrideException(); 834 } 835 836 /** 837 * Sets whether the WebView should load image resources. Note that this method 838 * controls loading of all images, including those embedded using the data 839 * URI scheme. Use {@link #setBlockNetworkImage} to control loading only 840 * of images specified using network URI schemes. Note that if the value of this 841 * setting is changed from false to true, all images resources referenced 842 * by content currently displayed by the WebView are loaded automatically. 843 * The default is true. 844 * 845 * @param flag whether the WebView should load image resources 846 */ setLoadsImagesAutomatically(boolean flag)847 public synchronized void setLoadsImagesAutomatically(boolean flag) { 848 throw new MustOverrideException(); 849 } 850 851 /** 852 * Gets whether the WebView loads image resources. This includes 853 * images embedded using the data URI scheme. 854 * 855 * @return true if the WebView loads image resources 856 * @see #setLoadsImagesAutomatically 857 */ getLoadsImagesAutomatically()858 public synchronized boolean getLoadsImagesAutomatically() { 859 throw new MustOverrideException(); 860 } 861 862 /** 863 * Sets whether the WebView should not load image resources from the 864 * network (resources accessed via http and https URI schemes). Note 865 * that this method has no effect unless 866 * {@link #getLoadsImagesAutomatically} returns true. Also note that 867 * disabling all network loads using {@link #setBlockNetworkLoads} 868 * will also prevent network images from loading, even if this flag is set 869 * to false. When the value of this setting is changed from true to false, 870 * network images resources referenced by content currently displayed by 871 * the WebView are fetched automatically. The default is false. 872 * 873 * @param flag whether the WebView should not load image resources from the 874 * network 875 * @see #setBlockNetworkLoads 876 */ setBlockNetworkImage(boolean flag)877 public synchronized void setBlockNetworkImage(boolean flag) { 878 throw new MustOverrideException(); 879 } 880 881 /** 882 * Gets whether the WebView does not load image resources from the network. 883 * 884 * @return true if the WebView does not load image resources from the network 885 * @see #setBlockNetworkImage 886 */ getBlockNetworkImage()887 public synchronized boolean getBlockNetworkImage() { 888 throw new MustOverrideException(); 889 } 890 891 /** 892 * Sets whether the WebView should not load resources from the network. 893 * Use {@link #setBlockNetworkImage} to only avoid loading 894 * image resources. Note that if the value of this setting is 895 * changed from true to false, network resources referenced by content 896 * currently displayed by the WebView are not fetched until 897 * {@link android.webkit.WebView#reload} is called. 898 * If the application does not have the 899 * {@link android.Manifest.permission#INTERNET} permission, attempts to set 900 * a value of false will cause a {@link java.lang.SecurityException} 901 * to be thrown. The default value is false if the application has the 902 * {@link android.Manifest.permission#INTERNET} permission, otherwise it is 903 * true. 904 * 905 * @param flag whether the WebView should not load any resources from the 906 * network 907 * @see android.webkit.WebView#reload 908 */ setBlockNetworkLoads(boolean flag)909 public synchronized void setBlockNetworkLoads(boolean flag) { 910 throw new MustOverrideException(); 911 } 912 913 /** 914 * Gets whether the WebView does not load any resources from the network. 915 * 916 * @return true if the WebView does not load any resources from the network 917 * @see #setBlockNetworkLoads 918 */ getBlockNetworkLoads()919 public synchronized boolean getBlockNetworkLoads() { 920 throw new MustOverrideException(); 921 } 922 923 /** 924 * Tells the WebView to enable JavaScript execution. 925 * <b>The default is false.</b> 926 * 927 * @param flag true if the WebView should execute JavaScript 928 */ setJavaScriptEnabled(boolean flag)929 public synchronized void setJavaScriptEnabled(boolean flag) { 930 throw new MustOverrideException(); 931 } 932 933 /** 934 * Sets whether JavaScript running in the context of a file scheme URL 935 * should be allowed to access content from any origin. This includes 936 * access to content from other file scheme URLs. See 937 * {@link #setAllowFileAccessFromFileURLs}. To enable the most restrictive, 938 * and therefore secure policy, this setting should be disabled. 939 * <p> 940 * The default value is true for API level 941 * {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH_MR1} and below, 942 * and false for API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN} 943 * and above. 944 * 945 * @param flag whether JavaScript running in the context of a file scheme 946 * URL should be allowed to access content from any origin 947 */ setAllowUniversalAccessFromFileURLs(boolean flag)948 public abstract void setAllowUniversalAccessFromFileURLs(boolean flag); 949 950 /** 951 * Sets whether JavaScript running in the context of a file scheme URL 952 * should be allowed to access content from other file scheme URLs. To 953 * enable the most restrictive, and therefore secure policy, this setting 954 * should be disabled. Note that the value of this setting is ignored if 955 * the value of {@link #getAllowUniversalAccessFromFileURLs} is true. 956 * <p> 957 * The default value is true for API level 958 * {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH_MR1} and below, 959 * and false for API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN} 960 * and above. 961 * 962 * @param flag whether JavaScript running in the context of a file scheme 963 * URL should be allowed to access content from other file 964 * scheme URLs 965 */ setAllowFileAccessFromFileURLs(boolean flag)966 public abstract void setAllowFileAccessFromFileURLs(boolean flag); 967 968 /** 969 * Sets whether the WebView should enable plugins. The default is false. 970 * 971 * @param flag true if plugins should be enabled 972 * @deprecated This method has been deprecated in favor of 973 * {@link #setPluginState} 974 */ 975 @Deprecated setPluginsEnabled(boolean flag)976 public synchronized void setPluginsEnabled(boolean flag) { 977 throw new MustOverrideException(); 978 } 979 980 /** 981 * Tells the WebView to enable, disable, or have plugins on demand. On 982 * demand mode means that if a plugin exists that can handle the embedded 983 * content, a placeholder icon will be shown instead of the plugin. When 984 * the placeholder is clicked, the plugin will be enabled. The default is 985 * {@link PluginState#OFF}. 986 * 987 * @param state a PluginState value 988 */ setPluginState(PluginState state)989 public synchronized void setPluginState(PluginState state) { 990 throw new MustOverrideException(); 991 } 992 993 /** 994 * Sets a custom path to plugins used by the WebView. This method is 995 * obsolete since each plugin is now loaded from its own package. 996 * 997 * @param pluginsPath a String path to the directory containing plugins 998 * @deprecated This method is no longer used as plugins are loaded from 999 * their own APK via the system's package manager. 1000 */ 1001 @Deprecated setPluginsPath(String pluginsPath)1002 public synchronized void setPluginsPath(String pluginsPath) { 1003 // Specified to do nothing, so no need for derived classes to override. 1004 } 1005 1006 /** 1007 * Sets the path to where database storage API databases should be saved. 1008 * In order for the database storage API to function correctly, this method 1009 * must be called with a path to which the application can write. This 1010 * method should only be called once: repeated calls are ignored. 1011 * 1012 * @param databasePath a path to the directory where databases should be 1013 * saved. 1014 */ 1015 // This will update WebCore when the Sync runs in the C++ side. 1016 // Note that the WebCore Database Tracker only allows the path to be set 1017 // once. setDatabasePath(String databasePath)1018 public synchronized void setDatabasePath(String databasePath) { 1019 throw new MustOverrideException(); 1020 } 1021 1022 /** 1023 * Sets the path where the Geolocation databases should be saved. In order 1024 * for Geolocation permissions and cached positions to be persisted, this 1025 * method must be called with a path to which the application can write. 1026 * 1027 * @param databasePath a path to the directory where databases should be 1028 * saved. 1029 */ 1030 // This will update WebCore when the Sync runs in the C++ side. setGeolocationDatabasePath(String databasePath)1031 public synchronized void setGeolocationDatabasePath(String databasePath) { 1032 throw new MustOverrideException(); 1033 } 1034 1035 /** 1036 * Sets whether the Application Caches API should be enabled. The default 1037 * is false. Note that in order for the Application Caches API to be 1038 * enabled, a valid database path must also be supplied to 1039 * {@link #setAppCachePath}. 1040 * 1041 * @param flag true if the WebView should enable Application Caches 1042 */ setAppCacheEnabled(boolean flag)1043 public synchronized void setAppCacheEnabled(boolean flag) { 1044 throw new MustOverrideException(); 1045 } 1046 1047 /** 1048 * Sets the path to the Application Caches files. In order for the 1049 * Application Caches API to be enabled, this method must be called with a 1050 * path to which the application can write. This method should only be 1051 * called once: repeated calls are ignored. 1052 * 1053 * @param appCachePath a String path to the directory containing 1054 * Application Caches files. 1055 * @see setAppCacheEnabled 1056 */ setAppCachePath(String appCachePath)1057 public synchronized void setAppCachePath(String appCachePath) { 1058 throw new MustOverrideException(); 1059 } 1060 1061 /** 1062 * Sets the maximum size for the Application Cache content. The passed size 1063 * will be rounded to the nearest value that the database can support, so 1064 * this should be viewed as a guide, not a hard limit. Setting the 1065 * size to a value less than current database size does not cause the 1066 * database to be trimmed. The default size is {@link Long#MAX_VALUE}. 1067 * 1068 * @param appCacheMaxSize the maximum size in bytes 1069 */ setAppCacheMaxSize(long appCacheMaxSize)1070 public synchronized void setAppCacheMaxSize(long appCacheMaxSize) { 1071 throw new MustOverrideException(); 1072 } 1073 1074 /** 1075 * Sets whether the database storage API is enabled. The default value is 1076 * false. See also {@link #setDatabasePath} for how to correctly set up the 1077 * database storage API. 1078 * 1079 * @param flag true if the WebView should use the database storage API 1080 */ setDatabaseEnabled(boolean flag)1081 public synchronized void setDatabaseEnabled(boolean flag) { 1082 throw new MustOverrideException(); 1083 } 1084 1085 /** 1086 * Sets whether the DOM storage API is enabled. The default value is false. 1087 * 1088 * @param flag true if the WebView should use the DOM storage API 1089 */ setDomStorageEnabled(boolean flag)1090 public synchronized void setDomStorageEnabled(boolean flag) { 1091 throw new MustOverrideException(); 1092 } 1093 1094 /** 1095 * Gets whether the DOM Storage APIs are enabled. 1096 * 1097 * @return true if the DOM Storage APIs are enabled 1098 * @see #setDomStorageEnabled 1099 */ getDomStorageEnabled()1100 public synchronized boolean getDomStorageEnabled() { 1101 throw new MustOverrideException(); 1102 } 1103 /** 1104 * Gets the path to where database storage API databases are saved. 1105 * 1106 * @return the String path to the database storage API databases 1107 * @see #setDatabasePath 1108 */ getDatabasePath()1109 public synchronized String getDatabasePath() { 1110 throw new MustOverrideException(); 1111 } 1112 1113 /** 1114 * Gets whether the database storage API is enabled. 1115 * 1116 * @return true if the database storage API is enabled 1117 * @see #setDatabaseEnabled 1118 */ getDatabaseEnabled()1119 public synchronized boolean getDatabaseEnabled() { 1120 throw new MustOverrideException(); 1121 } 1122 1123 /** 1124 * Sets whether Geolocation is enabled. The default is true. See also 1125 * {@link #setGeolocationDatabasePath} for how to correctly set up 1126 * Geolocation. 1127 * 1128 * @param flag whether Geolocation should be enabled 1129 */ setGeolocationEnabled(boolean flag)1130 public synchronized void setGeolocationEnabled(boolean flag) { 1131 throw new MustOverrideException(); 1132 } 1133 1134 /** 1135 * Gets whether JavaScript is enabled. 1136 * 1137 * @return true if JavaScript is enabled 1138 * @see #setJavaScriptEnabled 1139 */ getJavaScriptEnabled()1140 public synchronized boolean getJavaScriptEnabled() { 1141 throw new MustOverrideException(); 1142 } 1143 1144 /** 1145 * Gets whether JavaScript running in the context of a file scheme URL can 1146 * access content from any origin. This includes access to content from 1147 * other file scheme URLs. 1148 * 1149 * @return whether JavaScript running in the context of a file scheme URL 1150 * can access content from any origin 1151 * @see #setAllowUniversalAccessFromFileURLs 1152 */ getAllowUniversalAccessFromFileURLs()1153 public abstract boolean getAllowUniversalAccessFromFileURLs(); 1154 1155 /** 1156 * Gets whether JavaScript running in the context of a file scheme URL can 1157 * access content from other file scheme URLs. 1158 * 1159 * @return whether JavaScript running in the context of a file scheme URL 1160 * can access content from other file scheme URLs 1161 * @see #setAllowFileAccessFromFileURLs 1162 */ getAllowFileAccessFromFileURLs()1163 public abstract boolean getAllowFileAccessFromFileURLs(); 1164 1165 /** 1166 * Gets whether plugins are enabled. 1167 * 1168 * @return true if plugins are enabled 1169 * @see #setPluginsEnabled 1170 * @deprecated This method has been replaced by {@link #getPluginState} 1171 */ 1172 @Deprecated getPluginsEnabled()1173 public synchronized boolean getPluginsEnabled() { 1174 throw new MustOverrideException(); 1175 } 1176 1177 /** 1178 * Gets the current state regarding whether plugins are enabled. 1179 * 1180 * @return the plugin state as a {@link PluginState} value 1181 * @see #setPluginState 1182 */ getPluginState()1183 public synchronized PluginState getPluginState() { 1184 throw new MustOverrideException(); 1185 } 1186 1187 /** 1188 * Gets the directory that contains the plugin libraries. This method is 1189 * obsolete since each plugin is now loaded from its own package. 1190 * 1191 * @return an empty string 1192 * @deprecated This method is no longer used as plugins are loaded from 1193 * their own APK via the system's package manager. 1194 */ 1195 @Deprecated getPluginsPath()1196 public synchronized String getPluginsPath() { 1197 // Unconditionally returns empty string, so no need for derived classes to override. 1198 return ""; 1199 } 1200 1201 /** 1202 * Tells JavaScript to open windows automatically. This applies to the 1203 * JavaScript function window.open(). The default is false. 1204 * 1205 * @param flag true if JavaScript can open windows automatically 1206 */ setJavaScriptCanOpenWindowsAutomatically(boolean flag)1207 public synchronized void setJavaScriptCanOpenWindowsAutomatically(boolean flag) { 1208 throw new MustOverrideException(); 1209 } 1210 1211 /** 1212 * Gets whether JavaScript can open windows automatically. 1213 * 1214 * @return true if JavaScript can open windows automatically during 1215 * window.open() 1216 * @see #setJavaScriptCanOpenWindowsAutomatically 1217 */ getJavaScriptCanOpenWindowsAutomatically()1218 public synchronized boolean getJavaScriptCanOpenWindowsAutomatically() { 1219 throw new MustOverrideException(); 1220 } 1221 /** 1222 * Sets the default text encoding name to use when decoding html pages. 1223 * The default is "Latin-1". 1224 * 1225 * @param encoding the text encoding name 1226 */ setDefaultTextEncodingName(String encoding)1227 public synchronized void setDefaultTextEncodingName(String encoding) { 1228 throw new MustOverrideException(); 1229 } 1230 1231 /** 1232 * Gets the default text encoding name. 1233 * 1234 * @return the default text encoding name as a string 1235 * @see #setDefaultTextEncodingName 1236 */ getDefaultTextEncodingName()1237 public synchronized String getDefaultTextEncodingName() { 1238 throw new MustOverrideException(); 1239 } 1240 1241 /** 1242 * Sets the WebView's user-agent string. If the string is null or empty, 1243 * the system default value will be used. 1244 */ setUserAgentString(String ua)1245 public synchronized void setUserAgentString(String ua) { 1246 throw new MustOverrideException(); 1247 } 1248 1249 /** 1250 * Gets the WebView's user-agent string. 1251 * 1252 * @return the WebView's user-agent string 1253 * @see #setUserAgentString 1254 */ getUserAgentString()1255 public synchronized String getUserAgentString() { 1256 throw new MustOverrideException(); 1257 } 1258 1259 /** 1260 * Returns the default User-Agent used by a WebView. 1261 * An instance of WebView could use a different User-Agent if a call 1262 * is made to {@link WebSettings#setUserAgentString(String)}. 1263 * 1264 * @param context a Context object used to access application assets 1265 */ getDefaultUserAgent(Context context)1266 public static String getDefaultUserAgent(Context context) { 1267 return WebViewFactory.getProvider().getStatics().getDefaultUserAgent(context); 1268 } 1269 1270 /** 1271 * Tells the WebView whether it needs to set a node to have focus when 1272 * {@link WebView#requestFocus(int, android.graphics.Rect)} is called. The 1273 * default value is true. 1274 * 1275 * @param flag whether the WebView needs to set a node 1276 */ setNeedInitialFocus(boolean flag)1277 public void setNeedInitialFocus(boolean flag) { 1278 throw new MustOverrideException(); 1279 } 1280 1281 /** 1282 * Sets the priority of the Render thread. Unlike the other settings, this 1283 * one only needs to be called once per process. The default value is 1284 * {@link RenderPriority#NORMAL}. 1285 * 1286 * @param priority the priority 1287 */ setRenderPriority(RenderPriority priority)1288 public synchronized void setRenderPriority(RenderPriority priority) { 1289 throw new MustOverrideException(); 1290 } 1291 1292 /** 1293 * Overrides the way the cache is used. The way the cache is used is based 1294 * on the navigation type. For a normal page load, the cache is checked 1295 * and content is re-validated as needed. When navigating back, content is 1296 * not revalidated, instead the content is just retrieved from the cache. 1297 * This method allows the client to override this behavior by specifying 1298 * one of {@link #LOAD_DEFAULT}, {@link #LOAD_NORMAL}, 1299 * {@link #LOAD_CACHE_ELSE_NETWORK}, {@link #LOAD_NO_CACHE} or 1300 * {@link #LOAD_CACHE_ONLY}. The default value is {@link #LOAD_DEFAULT}. 1301 * 1302 * @param mode the mode to use 1303 */ setCacheMode(int mode)1304 public void setCacheMode(int mode) { 1305 throw new MustOverrideException(); 1306 } 1307 1308 /** 1309 * Gets the current setting for overriding the cache mode. 1310 * 1311 * @return the current setting for overriding the cache mode 1312 * @see #setCacheMode 1313 */ getCacheMode()1314 public int getCacheMode() { 1315 throw new MustOverrideException(); 1316 } 1317 } 1318