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