1 package org.robolectric.fakes; 2 3 import android.webkit.WebSettings; 4 5 /** Robolectric implementation of {@link android.webkit.WebSettings}. */ 6 public class RoboWebSettings extends WebSettings { 7 private boolean blockNetworkImage = false; 8 private boolean javaScriptEnabled = false; 9 private boolean javaScriptCanOpenWindowAutomatically = false; 10 private boolean lightTouchEnabled = false; 11 private boolean needInitialFocus = false; 12 private RenderPriority renderPriority = RenderPriority.NORMAL; 13 private boolean pluginsEnabled = false; 14 private boolean saveFormData = false; 15 private boolean supportMultipleWindows = false; 16 private boolean supportZoom = true; 17 private boolean useWideViewPort = false; 18 private int cacheMode; 19 private WebSettings.LayoutAlgorithm layoutAlgorithm = WebSettings.LayoutAlgorithm.NARROW_COLUMNS; 20 private String defaultTextEncoding = "UTF-8"; 21 private int defaultFontSize = 16; 22 private boolean loadsImagesAutomatically; 23 private int defaultFixedFontSize; 24 private int minimumLogicalFontSize; 25 private int minimumFontSize; 26 private String fantasyFontFamily; 27 private String cursiveFontFamily; 28 private String serifFontFamily; 29 private String sansSerifFontFamily; 30 private String fixedFontFamily; 31 private String standardFontFamily; 32 private boolean savePassword; 33 private int userAgent; 34 private boolean navDump; 35 private int forceDark; 36 37 @Override getBlockNetworkImage()38 public synchronized boolean getBlockNetworkImage() { 39 return blockNetworkImage; 40 } 41 42 @Override setBlockNetworkImage(boolean flag)43 public synchronized void setBlockNetworkImage(boolean flag) { 44 blockNetworkImage = flag; 45 } 46 47 @Override getJavaScriptEnabled()48 public synchronized boolean getJavaScriptEnabled() { 49 return javaScriptEnabled; 50 } 51 52 @Override setJavaScriptEnabled(boolean flag)53 public synchronized void setJavaScriptEnabled(boolean flag) { 54 javaScriptEnabled = flag; 55 } 56 57 @Override getLightTouchEnabled()58 public boolean getLightTouchEnabled() { 59 return lightTouchEnabled; 60 } 61 62 @Override setLightTouchEnabled(boolean flag)63 public void setLightTouchEnabled(boolean flag) { 64 lightTouchEnabled = flag; 65 } 66 getNeedInitialFocus()67 public boolean getNeedInitialFocus() { 68 return needInitialFocus; 69 } 70 71 @Override setNeedInitialFocus(boolean flag)72 public void setNeedInitialFocus(boolean flag) { 73 needInitialFocus = flag; 74 } 75 76 @Override setRenderPriority(RenderPriority priority)77 public synchronized void setRenderPriority(RenderPriority priority) { 78 renderPriority = priority; 79 } 80 getRenderPriority()81 public RenderPriority getRenderPriority() { 82 return renderPriority; 83 } 84 85 @Override getPluginsEnabled()86 public synchronized boolean getPluginsEnabled() { 87 return pluginsEnabled; 88 } 89 90 @Override setPluginsEnabled(boolean flag)91 public synchronized void setPluginsEnabled(boolean flag) { 92 pluginsEnabled = flag; 93 } 94 getSupportMultipleWindows()95 public boolean getSupportMultipleWindows() { 96 return supportMultipleWindows; 97 } 98 99 @Override setSupportMultipleWindows(boolean support)100 public synchronized void setSupportMultipleWindows(boolean support) { 101 supportMultipleWindows = support; 102 } 103 getSupportZoom()104 public boolean getSupportZoom() { 105 return supportZoom; 106 } 107 108 @Override setSupportZoom(boolean support)109 public void setSupportZoom(boolean support) { 110 supportZoom = support; 111 } 112 113 @Override setCacheMode(int mode)114 public void setCacheMode(int mode) { 115 this.cacheMode = mode; 116 } 117 118 @Override getCacheMode()119 public int getCacheMode() { 120 return cacheMode; 121 } 122 123 @Override getUseWideViewPort()124 public boolean getUseWideViewPort() { 125 return useWideViewPort; 126 } 127 128 @Override setUseWideViewPort(boolean useWideViewPort)129 public void setUseWideViewPort(boolean useWideViewPort) { 130 this.useWideViewPort = useWideViewPort; 131 } 132 133 @Override getSaveFormData()134 public boolean getSaveFormData() { 135 return saveFormData; 136 } 137 138 @Override setSaveFormData(boolean saveFormData)139 public void setSaveFormData(boolean saveFormData) { 140 this.saveFormData = saveFormData; 141 } 142 143 @Override setJavaScriptCanOpenWindowsAutomatically( boolean javaScriptCanOpenWindowAutomatically)144 public void setJavaScriptCanOpenWindowsAutomatically( 145 boolean javaScriptCanOpenWindowAutomatically) { 146 this.javaScriptCanOpenWindowAutomatically = javaScriptCanOpenWindowAutomatically; 147 } 148 149 @Override getJavaScriptCanOpenWindowsAutomatically()150 public boolean getJavaScriptCanOpenWindowsAutomatically() { 151 return this.javaScriptCanOpenWindowAutomatically; 152 } 153 154 @Override setLayoutAlgorithm(WebSettings.LayoutAlgorithm algorithm)155 public synchronized void setLayoutAlgorithm(WebSettings.LayoutAlgorithm algorithm) { 156 this.layoutAlgorithm = algorithm; 157 } 158 159 @Override getDefaultTextEncodingName()160 public String getDefaultTextEncodingName() { 161 return this.defaultTextEncoding; 162 } 163 164 @Override setDefaultTextEncodingName(String defaultTextEncoding)165 public void setDefaultTextEncodingName(String defaultTextEncoding) { 166 this.defaultTextEncoding = defaultTextEncoding; 167 } 168 169 @Override getDefaultFontSize()170 public int getDefaultFontSize() { 171 return defaultFontSize; 172 } 173 174 @Override setDefaultFontSize(int defaultFontSize)175 public void setDefaultFontSize(int defaultFontSize) { 176 this.defaultFontSize = defaultFontSize; 177 } 178 179 @Override getLoadsImagesAutomatically()180 public boolean getLoadsImagesAutomatically() { 181 return loadsImagesAutomatically; 182 } 183 184 @Override setLoadsImagesAutomatically(boolean loadsImagesAutomatically)185 public void setLoadsImagesAutomatically(boolean loadsImagesAutomatically) { 186 this.loadsImagesAutomatically = loadsImagesAutomatically; 187 } 188 189 @Override getDefaultFixedFontSize()190 public int getDefaultFixedFontSize() { 191 return defaultFixedFontSize; 192 } 193 194 @Override setDefaultFixedFontSize(int defaultFixedFontSize)195 public void setDefaultFixedFontSize(int defaultFixedFontSize) { 196 this.defaultFixedFontSize = defaultFixedFontSize; 197 } 198 199 @Override getMinimumLogicalFontSize()200 public int getMinimumLogicalFontSize() { 201 return minimumLogicalFontSize; 202 } 203 204 @Override setMinimumLogicalFontSize(int minimumLogicalFontSize)205 public void setMinimumLogicalFontSize(int minimumLogicalFontSize) { 206 this.minimumLogicalFontSize = minimumLogicalFontSize; 207 } 208 209 @Override getMinimumFontSize()210 public int getMinimumFontSize() { 211 return minimumFontSize; 212 } 213 214 @Override setMinimumFontSize(int minimumFontSize)215 public void setMinimumFontSize(int minimumFontSize) { 216 this.minimumFontSize = minimumFontSize; 217 } 218 219 @Override getFantasyFontFamily()220 public String getFantasyFontFamily() { 221 return fantasyFontFamily; 222 } 223 224 @Override setFantasyFontFamily(String fantasyFontFamily)225 public void setFantasyFontFamily(String fantasyFontFamily) { 226 this.fantasyFontFamily = fantasyFontFamily; 227 } 228 229 @Override getCursiveFontFamily()230 public String getCursiveFontFamily() { 231 return cursiveFontFamily; 232 } 233 234 @Override setCursiveFontFamily(String cursiveFontFamily)235 public void setCursiveFontFamily(String cursiveFontFamily) { 236 this.cursiveFontFamily = cursiveFontFamily; 237 } 238 239 @Override getSerifFontFamily()240 public String getSerifFontFamily() { 241 return serifFontFamily; 242 } 243 244 @Override setSerifFontFamily(String serifFontFamily)245 public void setSerifFontFamily(String serifFontFamily) { 246 this.serifFontFamily = serifFontFamily; 247 } 248 249 @Override getSansSerifFontFamily()250 public String getSansSerifFontFamily() { 251 return sansSerifFontFamily; 252 } 253 254 @Override setSansSerifFontFamily(String sansSerifFontFamily)255 public void setSansSerifFontFamily(String sansSerifFontFamily) { 256 this.sansSerifFontFamily = sansSerifFontFamily; 257 } 258 259 @Override getFixedFontFamily()260 public String getFixedFontFamily() { 261 return fixedFontFamily; 262 } 263 264 @Override setFixedFontFamily(String fixedFontFamily)265 public void setFixedFontFamily(String fixedFontFamily) { 266 this.fixedFontFamily = fixedFontFamily; 267 } 268 269 @Override getStandardFontFamily()270 public String getStandardFontFamily() { 271 return standardFontFamily; 272 } 273 274 @Override setStandardFontFamily(String standardFontFamily)275 public void setStandardFontFamily(String standardFontFamily) { 276 this.standardFontFamily = standardFontFamily; 277 } 278 279 @Override getLayoutAlgorithm()280 public LayoutAlgorithm getLayoutAlgorithm() { 281 return layoutAlgorithm; 282 } 283 284 @Override supportMultipleWindows()285 public boolean supportMultipleWindows() { 286 return supportMultipleWindows; 287 } 288 289 @Override getSavePassword()290 public boolean getSavePassword() { 291 return savePassword; 292 } 293 294 @Override setSavePassword(boolean savePassword)295 public void setSavePassword(boolean savePassword) { 296 this.savePassword = savePassword; 297 } 298 299 @Override supportZoom()300 public boolean supportZoom() { 301 return supportZoom; 302 } 303 304 @Override getUserAgent()305 public int getUserAgent() { 306 return userAgent; 307 } 308 309 @Override setUserAgent(int userAgent)310 public void setUserAgent(int userAgent) { 311 this.userAgent = userAgent; 312 } 313 314 @Override getNavDump()315 public boolean getNavDump() { 316 return navDump; 317 } 318 319 @Override setNavDump(boolean navDump)320 public void setNavDump(boolean navDump) { 321 this.navDump = navDump; 322 } 323 324 private boolean allowFileAccess = true; 325 private boolean builtInZoomControls = true; 326 private String userAgentString = 327 "Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30" 328 + " (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"; 329 330 @Override getAllowFileAccess()331 public boolean getAllowFileAccess() { 332 return allowFileAccess; 333 } 334 335 @Override setAllowFileAccess(boolean allow)336 public void setAllowFileAccess(boolean allow) { 337 allowFileAccess = allow; 338 } 339 340 @Override getBuiltInZoomControls()341 public boolean getBuiltInZoomControls() { 342 return builtInZoomControls; 343 } 344 345 @Override setBuiltInZoomControls(boolean enabled)346 public void setBuiltInZoomControls(boolean enabled) { 347 builtInZoomControls = enabled; 348 } 349 350 @Override setUserAgentString(String ua)351 public synchronized void setUserAgentString(String ua) { 352 userAgentString = ua; 353 } 354 355 @Override getUserAgentString()356 public synchronized String getUserAgentString() { 357 return userAgentString; 358 } 359 360 // End API 3 361 362 private boolean databaseEnabled = false; 363 private String databasePath = "database"; 364 private String geolocationDatabasePath = "geolocation"; 365 private boolean geolocationEnabled = false; 366 367 @Override getDatabaseEnabled()368 public synchronized boolean getDatabaseEnabled() { 369 return databaseEnabled; 370 } 371 372 @Override setDatabaseEnabled(boolean flag)373 public synchronized void setDatabaseEnabled(boolean flag) { 374 databaseEnabled = flag; 375 } 376 377 @Override setDatabasePath(String path)378 public synchronized void setDatabasePath(String path) { 379 databasePath = path; 380 } 381 382 @Override getDatabasePath()383 public synchronized String getDatabasePath() { 384 return databasePath; 385 } 386 getGeolocationDatabasePath()387 public String getGeolocationDatabasePath() { 388 return geolocationDatabasePath; 389 } 390 391 @Override setGeolocationDatabasePath(String geolocationDatabasePath)392 public void setGeolocationDatabasePath(String geolocationDatabasePath) { 393 this.geolocationDatabasePath = geolocationDatabasePath; 394 } 395 getGeolocationEnabled()396 public boolean getGeolocationEnabled() { 397 return geolocationEnabled; 398 } 399 400 @Override setGeolocationEnabled(boolean geolocationEnabled)401 public void setGeolocationEnabled(boolean geolocationEnabled) { 402 this.geolocationEnabled = geolocationEnabled; 403 } 404 405 // End API 5 406 407 private ZoomDensity defaultZoom; 408 private boolean domStorageEnabled = false; 409 private boolean loadWithOverviewMode = false; 410 private boolean appCacheEnabled = false; 411 private long appCacheMaxSize; 412 private String appCachePath = "appcache"; 413 414 @Override setDefaultZoom(ZoomDensity zoom)415 public void setDefaultZoom(ZoomDensity zoom) { 416 this.defaultZoom = zoom; 417 } 418 419 @Override getDefaultZoom()420 public ZoomDensity getDefaultZoom() { 421 return defaultZoom; 422 } 423 424 @Override getDomStorageEnabled()425 public synchronized boolean getDomStorageEnabled() { 426 return domStorageEnabled; 427 } 428 429 @Override setDomStorageEnabled(boolean flag)430 public synchronized void setDomStorageEnabled(boolean flag) { 431 domStorageEnabled = flag; 432 } 433 434 @Override getLoadWithOverviewMode()435 public boolean getLoadWithOverviewMode() { 436 return loadWithOverviewMode; 437 } 438 439 @Override setLoadWithOverviewMode(boolean flag)440 public void setLoadWithOverviewMode(boolean flag) { 441 loadWithOverviewMode = flag; 442 } 443 getAppCacheEnabled()444 public boolean getAppCacheEnabled() { 445 return appCacheEnabled; 446 } 447 448 @Override setAppCacheEnabled(boolean appCacheEnabled)449 public void setAppCacheEnabled(boolean appCacheEnabled) { 450 this.appCacheEnabled = appCacheEnabled; 451 } 452 453 @Override setAppCacheMaxSize(long appCacheMaxSize)454 public void setAppCacheMaxSize(long appCacheMaxSize) { 455 this.appCacheMaxSize = appCacheMaxSize; 456 } 457 getAppCacheMaxSize()458 public long getAppCacheMaxSize() { 459 return appCacheMaxSize; 460 } 461 getAppCachePath()462 public String getAppCachePath() { 463 return appCachePath; 464 } 465 466 @Override setAppCachePath(String appCachePath)467 public void setAppCachePath(String appCachePath) { 468 this.appCachePath = appCachePath; 469 } 470 471 // End API 7 472 473 private boolean blockNetworkLoads = false; 474 private WebSettings.PluginState pluginState = WebSettings.PluginState.OFF; 475 476 @Override getBlockNetworkLoads()477 public synchronized boolean getBlockNetworkLoads() { 478 return blockNetworkLoads; 479 } 480 481 @Override setBlockNetworkLoads(boolean flag)482 public synchronized void setBlockNetworkLoads(boolean flag) { 483 blockNetworkLoads = flag; 484 } 485 486 @Override getPluginState()487 public synchronized WebSettings.PluginState getPluginState() { 488 return pluginState; 489 } 490 491 @Override setPluginState(WebSettings.PluginState state)492 public synchronized void setPluginState(WebSettings.PluginState state) { 493 pluginState = state; 494 } 495 496 // End API 8 497 498 private boolean useWebViewBackgroundForOverscrollBackground; 499 500 @Override getUseWebViewBackgroundForOverscrollBackground()501 public boolean getUseWebViewBackgroundForOverscrollBackground() { 502 return useWebViewBackgroundForOverscrollBackground; 503 } 504 505 @Override setUseWebViewBackgroundForOverscrollBackground( boolean useWebViewBackgroundForOverscrollBackground)506 public void setUseWebViewBackgroundForOverscrollBackground( 507 boolean useWebViewBackgroundForOverscrollBackground) { 508 this.useWebViewBackgroundForOverscrollBackground = useWebViewBackgroundForOverscrollBackground; 509 } 510 511 // End API 9 512 513 private boolean enableSmoothTransition; 514 private boolean allowContentAccess = true; 515 private boolean displayZoomControls; 516 517 @Override enableSmoothTransition()518 public boolean enableSmoothTransition() { 519 return enableSmoothTransition; 520 } 521 522 @Override setEnableSmoothTransition(boolean enableSmoothTransition)523 public void setEnableSmoothTransition(boolean enableSmoothTransition) { 524 this.enableSmoothTransition = enableSmoothTransition; 525 } 526 527 @Override setAllowContentAccess(boolean allow)528 public void setAllowContentAccess(boolean allow) { 529 allowContentAccess = allow; 530 } 531 532 @Override getAllowContentAccess()533 public boolean getAllowContentAccess() { 534 return allowContentAccess; 535 } 536 537 @Override setDisplayZoomControls(boolean enabled)538 public void setDisplayZoomControls(boolean enabled) { 539 displayZoomControls = enabled; 540 } 541 542 @Override getDisplayZoomControls()543 public boolean getDisplayZoomControls() { 544 return displayZoomControls; 545 } 546 547 // End API 11 548 549 private int textZoom = 100; 550 551 @Override getTextZoom()552 public int getTextZoom() { 553 return textZoom; 554 } 555 556 @Override setTextZoom(int textZoom)557 public void setTextZoom(int textZoom) { 558 this.textZoom = textZoom; 559 } 560 561 // End API 14 562 563 private boolean allowFileAccessFromFile = true; 564 private boolean allowUniversalAccessFromFile = true; 565 566 @Override getAllowFileAccessFromFileURLs()567 public boolean getAllowFileAccessFromFileURLs() { 568 return allowFileAccessFromFile; 569 } 570 571 @Override setAllowFileAccessFromFileURLs(boolean allow)572 public void setAllowFileAccessFromFileURLs(boolean allow) { 573 allowFileAccessFromFile = allow; 574 } 575 576 @Override getAllowUniversalAccessFromFileURLs()577 public boolean getAllowUniversalAccessFromFileURLs() { 578 return allowUniversalAccessFromFile; 579 } 580 581 @Override setAllowUniversalAccessFromFileURLs(boolean allow)582 public void setAllowUniversalAccessFromFileURLs(boolean allow) { 583 allowUniversalAccessFromFile = allow; 584 } 585 586 // End API 16 587 588 private boolean mediaPlaybackRequiresUserGesture = true; 589 590 @Override getMediaPlaybackRequiresUserGesture()591 public boolean getMediaPlaybackRequiresUserGesture() { 592 return mediaPlaybackRequiresUserGesture; 593 } 594 595 @Override setMediaPlaybackRequiresUserGesture(boolean require)596 public void setMediaPlaybackRequiresUserGesture(boolean require) { 597 mediaPlaybackRequiresUserGesture = require; 598 } 599 600 // End API 17 601 602 private int mixedContentMode; 603 private boolean acceptThirdPartyCookies; 604 private boolean videoOverlayForEmbeddedEncryptedVideoEnabled; 605 606 @Override setMixedContentMode(int mixedContentMode)607 public void setMixedContentMode(int mixedContentMode) { 608 this.mixedContentMode = mixedContentMode; 609 } 610 611 @Override getMixedContentMode()612 public int getMixedContentMode() { 613 return mixedContentMode; 614 } 615 616 @Override setVideoOverlayForEmbeddedEncryptedVideoEnabled(boolean b)617 public void setVideoOverlayForEmbeddedEncryptedVideoEnabled(boolean b) { 618 videoOverlayForEmbeddedEncryptedVideoEnabled = b; 619 } 620 621 @Override getVideoOverlayForEmbeddedEncryptedVideoEnabled()622 public boolean getVideoOverlayForEmbeddedEncryptedVideoEnabled() { 623 return videoOverlayForEmbeddedEncryptedVideoEnabled; 624 } 625 626 @Override getAcceptThirdPartyCookies()627 public boolean getAcceptThirdPartyCookies() { 628 return acceptThirdPartyCookies; 629 } 630 631 @Override setAcceptThirdPartyCookies(boolean acceptThirdPartyCookies)632 public void setAcceptThirdPartyCookies(boolean acceptThirdPartyCookies) { 633 this.acceptThirdPartyCookies = acceptThirdPartyCookies; 634 } 635 636 // End API 21 637 638 @Override setOffscreenPreRaster(boolean enabled)639 public void setOffscreenPreRaster(boolean enabled) {} 640 641 @Override getOffscreenPreRaster()642 public boolean getOffscreenPreRaster() { 643 return false; 644 } 645 646 // End API 23 647 648 @Override getDisabledActionModeMenuItems()649 public int getDisabledActionModeMenuItems() { 650 return 0; 651 } 652 653 @Override setDisabledActionModeMenuItems(int menuItems)654 public void setDisabledActionModeMenuItems(int menuItems) {} 655 656 // End API 24. 657 658 @Override getSafeBrowsingEnabled()659 public boolean getSafeBrowsingEnabled() { 660 return false; 661 } 662 663 @Override setSafeBrowsingEnabled(boolean enabled)664 public void setSafeBrowsingEnabled(boolean enabled) {} 665 666 // End API 26 667 668 @Override getForceDark()669 public int getForceDark() { 670 return forceDark; 671 } 672 673 @Override setForceDark(int forceDark)674 public void setForceDark(int forceDark) { 675 this.forceDark = forceDark; 676 } 677 678 // End API 29 679 } 680