1 /* 2 * Copyright (C) 2003, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 3 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 */ 26 27 #ifndef Settings_h 28 #define Settings_h 29 30 #include "AtomicString.h" 31 #include "FontRenderingMode.h" 32 #include "KURL.h" 33 34 namespace WebCore { 35 36 class Page; 37 38 enum EditableLinkBehavior { 39 EditableLinkDefaultBehavior, 40 EditableLinkAlwaysLive, 41 EditableLinkOnlyLiveWithShiftKey, 42 EditableLinkLiveWhenNotFocused, 43 EditableLinkNeverLive 44 }; 45 46 enum TextDirectionSubmenuInclusionBehavior { 47 TextDirectionSubmenuNeverIncluded, 48 TextDirectionSubmenuAutomaticallyIncluded, 49 TextDirectionSubmenuAlwaysIncluded 50 }; 51 52 // There are multiple editing details that are different on Windows than Macintosh. 53 // We use a single switch for all of them. Some examples: 54 // 55 // 1) Clicking below the last line of an editable area puts the caret at the end 56 // of the last line on Mac, but in the middle of the last line on Windows. 57 // 2) Pushing the down arrow key on the last line puts the caret at the end of the 58 // last line on Mac, but does nothing on Windows. A similar case exists on the 59 // top line. 60 // 61 // This setting is intended to control these sorts of behaviors. There are some other 62 // behaviors with individual function calls on EditorClient (smart copy and paste and 63 // selecting the space after a double click) that could be combined with this if 64 // if possible in the future. 65 enum EditingBehavior { EditingMacBehavior, EditingWindowsBehavior }; 66 67 class Settings : public Noncopyable { 68 public: 69 Settings(Page*); 70 71 #ifdef ANDROID_LAYOUT 72 // FIXME: How do we determine the margins other than guessing? 73 #define ANDROID_SSR_MARGIN_PADDING 3 74 #define ANDROID_FCTS_MARGIN_PADDING 10 75 76 enum LayoutAlgorithm { 77 kLayoutNormal, 78 kLayoutSSR, 79 kLayoutFitColumnToScreen 80 }; 81 #endif 82 void setStandardFontFamily(const AtomicString&); standardFontFamily()83 const AtomicString& standardFontFamily() const { return m_standardFontFamily; } 84 85 void setFixedFontFamily(const AtomicString&); fixedFontFamily()86 const AtomicString& fixedFontFamily() const { return m_fixedFontFamily; } 87 88 #ifdef ANDROID_LAYOUT layoutAlgorithm()89 LayoutAlgorithm layoutAlgorithm() const { return m_layoutAlgorithm; } setLayoutAlgorithm(LayoutAlgorithm algorithm)90 void setLayoutAlgorithm(LayoutAlgorithm algorithm) { m_layoutAlgorithm = algorithm; } 91 useWideViewport()92 bool useWideViewport() const { return m_useWideViewport; } setUseWideViewport(bool use)93 void setUseWideViewport(bool use) { m_useWideViewport = use; } 94 #endif 95 96 void setSerifFontFamily(const AtomicString&); serifFontFamily()97 const AtomicString& serifFontFamily() const { return m_serifFontFamily; } 98 99 void setSansSerifFontFamily(const AtomicString&); sansSerifFontFamily()100 const AtomicString& sansSerifFontFamily() const { return m_sansSerifFontFamily; } 101 102 void setCursiveFontFamily(const AtomicString&); cursiveFontFamily()103 const AtomicString& cursiveFontFamily() const { return m_cursiveFontFamily; } 104 105 void setFantasyFontFamily(const AtomicString&); fantasyFontFamily()106 const AtomicString& fantasyFontFamily() const { return m_fantasyFontFamily; } 107 108 void setMinimumFontSize(int); minimumFontSize()109 int minimumFontSize() const { return m_minimumFontSize; } 110 111 void setMinimumLogicalFontSize(int); minimumLogicalFontSize()112 int minimumLogicalFontSize() const { return m_minimumLogicalFontSize; } 113 114 void setDefaultFontSize(int); defaultFontSize()115 int defaultFontSize() const { return m_defaultFontSize; } 116 117 void setDefaultFixedFontSize(int); defaultFixedFontSize()118 int defaultFixedFontSize() const { return m_defaultFixedFontSize; } 119 120 // Unlike areImagesEnabled, this only suppresses the network load of 121 // the image URL. A cached image will still be rendered if requested. 122 void setLoadsImagesAutomatically(bool); loadsImagesAutomatically()123 bool loadsImagesAutomatically() const { return m_loadsImagesAutomatically; } 124 125 #ifdef ANDROID_BLOCK_NETWORK_IMAGE 126 void setBlockNetworkImage(bool); blockNetworkImage()127 bool blockNetworkImage() const { return m_blockNetworkImage; } 128 #endif 129 void setJavaScriptEnabled(bool); isJavaScriptEnabled()130 bool isJavaScriptEnabled() const { return m_isJavaScriptEnabled; } 131 132 void setWebSecurityEnabled(bool); isWebSecurityEnabled()133 bool isWebSecurityEnabled() const { return m_isWebSecurityEnabled; } 134 135 void setAllowUniversalAccessFromFileURLs(bool); allowUniversalAccessFromFileURLs()136 bool allowUniversalAccessFromFileURLs() const { return m_allowUniversalAccessFromFileURLs; } 137 138 void setJavaScriptCanOpenWindowsAutomatically(bool); javaScriptCanOpenWindowsAutomatically()139 bool javaScriptCanOpenWindowsAutomatically() const { return m_javaScriptCanOpenWindowsAutomatically; } 140 141 void setJavaEnabled(bool); isJavaEnabled()142 bool isJavaEnabled() const { return m_isJavaEnabled; } 143 144 void setImagesEnabled(bool); areImagesEnabled()145 bool areImagesEnabled() const { return m_areImagesEnabled; } 146 147 void setPluginsEnabled(bool); arePluginsEnabled()148 bool arePluginsEnabled() const { return m_arePluginsEnabled; } 149 150 #ifdef ANDROID_PLUGINS setPluginsOnDemand(bool onDemand)151 void setPluginsOnDemand(bool onDemand) { m_pluginsOnDemand = onDemand; } arePluginsOnDemand()152 bool arePluginsOnDemand() const { return m_pluginsOnDemand; } 153 #endif 154 155 void setDatabasesEnabled(bool); databasesEnabled()156 bool databasesEnabled() const { return m_databasesEnabled; } 157 158 void setLocalStorageEnabled(bool); localStorageEnabled()159 bool localStorageEnabled() const { return m_localStorageEnabled; } 160 161 void setLocalStorageQuota(unsigned); localStorageQuota()162 unsigned localStorageQuota() const { return m_localStorageQuota; } 163 164 void setPrivateBrowsingEnabled(bool); privateBrowsingEnabled()165 bool privateBrowsingEnabled() const { return m_privateBrowsingEnabled; } 166 167 void setCaretBrowsingEnabled(bool); caretBrowsingEnabled()168 bool caretBrowsingEnabled() const { return m_caretBrowsingEnabled; } 169 170 void setDefaultTextEncodingName(const String&); defaultTextEncodingName()171 const String& defaultTextEncodingName() const { return m_defaultTextEncodingName; } 172 173 void setUsesEncodingDetector(bool); usesEncodingDetector()174 bool usesEncodingDetector() const { return m_usesEncodingDetector; } 175 176 void setUserStyleSheetLocation(const KURL&); userStyleSheetLocation()177 const KURL& userStyleSheetLocation() const { return m_userStyleSheetLocation; } 178 179 void setShouldPrintBackgrounds(bool); shouldPrintBackgrounds()180 bool shouldPrintBackgrounds() const { return m_shouldPrintBackgrounds; } 181 182 void setTextAreasAreResizable(bool); textAreasAreResizable()183 bool textAreasAreResizable() const { return m_textAreasAreResizable; } 184 185 void setEditableLinkBehavior(EditableLinkBehavior); editableLinkBehavior()186 EditableLinkBehavior editableLinkBehavior() const { return m_editableLinkBehavior; } 187 188 void setTextDirectionSubmenuInclusionBehavior(TextDirectionSubmenuInclusionBehavior); textDirectionSubmenuInclusionBehavior()189 TextDirectionSubmenuInclusionBehavior textDirectionSubmenuInclusionBehavior() const { return m_textDirectionSubmenuInclusionBehavior; } 190 191 #if ENABLE(DASHBOARD_SUPPORT) 192 void setUsesDashboardBackwardCompatibilityMode(bool); usesDashboardBackwardCompatibilityMode()193 bool usesDashboardBackwardCompatibilityMode() const { return m_usesDashboardBackwardCompatibilityMode; } 194 #endif 195 196 void setNeedsAdobeFrameReloadingQuirk(bool); needsAcrobatFrameReloadingQuirk()197 bool needsAcrobatFrameReloadingQuirk() const { return m_needsAdobeFrameReloadingQuirk; } 198 199 void setNeedsKeyboardEventDisambiguationQuirks(bool); needsKeyboardEventDisambiguationQuirks()200 bool needsKeyboardEventDisambiguationQuirks() const { return m_needsKeyboardEventDisambiguationQuirks; } 201 202 void setTreatsAnyTextCSSLinkAsStylesheet(bool); treatsAnyTextCSSLinkAsStylesheet()203 bool treatsAnyTextCSSLinkAsStylesheet() const { return m_treatsAnyTextCSSLinkAsStylesheet; } 204 205 void setNeedsLeopardMailQuirks(bool); needsLeopardMailQuirks()206 bool needsLeopardMailQuirks() const { return m_needsLeopardMailQuirks; } 207 208 void setNeedsTigerMailQuirks(bool); needsTigerMailQuirks()209 bool needsTigerMailQuirks() const { return m_needsTigerMailQuirks; } 210 211 void setDOMPasteAllowed(bool); isDOMPasteAllowed()212 bool isDOMPasteAllowed() const { return m_isDOMPasteAllowed; } 213 214 void setUsesPageCache(bool); usesPageCache()215 bool usesPageCache() const { return m_usesPageCache; } 216 217 void setShrinksStandaloneImagesToFit(bool); shrinksStandaloneImagesToFit()218 bool shrinksStandaloneImagesToFit() const { return m_shrinksStandaloneImagesToFit; } 219 220 void setShowsURLsInToolTips(bool); showsURLsInToolTips()221 bool showsURLsInToolTips() const { return m_showsURLsInToolTips; } 222 223 void setFTPDirectoryTemplatePath(const String&); ftpDirectoryTemplatePath()224 const String& ftpDirectoryTemplatePath() const { return m_ftpDirectoryTemplatePath; } 225 226 void setForceFTPDirectoryListings(bool); forceFTPDirectoryListings()227 bool forceFTPDirectoryListings() const { return m_forceFTPDirectoryListings; } 228 229 void setDeveloperExtrasEnabled(bool); developerExtrasEnabled()230 bool developerExtrasEnabled() const { return m_developerExtrasEnabled; } 231 232 void setFrameSetFlatteningEnabled(bool); frameSetFlatteningEnabled()233 bool frameSetFlatteningEnabled() const { return m_frameSetFlatteningEnabled; } 234 235 #ifdef ANDROID_META_SUPPORT 236 void resetMetadataSettings(); 237 void setMetadataSettings(const String& key, const String& value); 238 239 void setViewportWidth(int); viewportWidth()240 int viewportWidth() const { return m_viewport_width; } 241 242 void setViewportHeight(int); viewportHeight()243 int viewportHeight() const { return m_viewport_height; } 244 245 void setViewportInitialScale(int); viewportInitialScale()246 int viewportInitialScale() const { return m_viewport_initial_scale; } 247 248 void setViewportMinimumScale(int); viewportMinimumScale()249 int viewportMinimumScale() const { return m_viewport_minimum_scale; } 250 251 void setViewportMaximumScale(int); viewportMaximumScale()252 int viewportMaximumScale() const { return m_viewport_maximum_scale; } 253 254 void setViewportUserScalable(bool); viewportUserScalable()255 bool viewportUserScalable() const { return m_viewport_user_scalable; } 256 257 void setViewportTargetDensityDpi(int); viewportTargetDensityDpi()258 int viewportTargetDensityDpi() const { return m_viewport_target_densitydpi; } 259 260 void setFormatDetectionAddress(bool); formatDetectionAddress()261 bool formatDetectionAddress() const { return m_format_detection_address; } 262 263 void setFormatDetectionEmail(bool); formatDetectionEmail()264 bool formatDetectionEmail() const { return m_format_detection_email; } 265 266 void setFormatDetectionTelephone(bool); formatDetectionTelephone()267 bool formatDetectionTelephone() const { return m_format_detection_telephone; } 268 #endif 269 #ifdef ANDROID_MULTIPLE_WINDOWS supportMultipleWindows()270 bool supportMultipleWindows() const { return m_supportMultipleWindows; } setSupportMultipleWindows(bool support)271 void setSupportMultipleWindows(bool support) { m_supportMultipleWindows = support; } 272 #endif 273 void setAuthorAndUserStylesEnabled(bool); authorAndUserStylesEnabled()274 bool authorAndUserStylesEnabled() const { return m_authorAndUserStylesEnabled; } 275 276 void setFontRenderingMode(FontRenderingMode mode); 277 FontRenderingMode fontRenderingMode() const; 278 279 void setNeedsSiteSpecificQuirks(bool); needsSiteSpecificQuirks()280 bool needsSiteSpecificQuirks() const { return m_needsSiteSpecificQuirks; } 281 282 void setWebArchiveDebugModeEnabled(bool); webArchiveDebugModeEnabled()283 bool webArchiveDebugModeEnabled() const { return m_webArchiveDebugModeEnabled; } 284 285 void setLocalFileContentSniffingEnabled(bool); localFileContentSniffingEnabled()286 bool localFileContentSniffingEnabled() const { return m_localFileContentSniffingEnabled; } 287 288 void setLocalStorageDatabasePath(const String&); localStorageDatabasePath()289 const String& localStorageDatabasePath() const { return m_localStorageDatabasePath; } 290 291 void setApplicationChromeMode(bool); inApplicationChromeMode()292 bool inApplicationChromeMode() const { return m_inApplicationChromeMode; } 293 294 void setOfflineWebApplicationCacheEnabled(bool); offlineWebApplicationCacheEnabled()295 bool offlineWebApplicationCacheEnabled() const { return m_offlineWebApplicationCacheEnabled; } 296 297 void setShouldPaintCustomScrollbars(bool); shouldPaintCustomScrollbars()298 bool shouldPaintCustomScrollbars() const { return m_shouldPaintCustomScrollbars; } 299 300 void setZoomsTextOnly(bool); zoomsTextOnly()301 bool zoomsTextOnly() const { return m_zoomsTextOnly; } 302 303 void setEnforceCSSMIMETypeInStrictMode(bool); enforceCSSMIMETypeInStrictMode()304 bool enforceCSSMIMETypeInStrictMode() { return m_enforceCSSMIMETypeInStrictMode; } 305 setMaximumDecodedImageSize(size_t size)306 void setMaximumDecodedImageSize(size_t size) { m_maximumDecodedImageSize = size; } maximumDecodedImageSize()307 size_t maximumDecodedImageSize() const { return m_maximumDecodedImageSize; } 308 309 #if USE(SAFARI_THEME) 310 // Windows debugging pref (global) for switching between the Aqua look and a native windows look. 311 static void setShouldPaintNativeControls(bool); shouldPaintNativeControls()312 static bool shouldPaintNativeControls() { return gShouldPaintNativeControls; } 313 #endif 314 315 void setAllowScriptsToCloseWindows(bool); allowScriptsToCloseWindows()316 bool allowScriptsToCloseWindows() const { return m_allowScriptsToCloseWindows; } 317 setEditingBehavior(EditingBehavior behavior)318 void setEditingBehavior(EditingBehavior behavior) { m_editingBehavior = behavior; } editingBehavior()319 EditingBehavior editingBehavior() const { return static_cast<EditingBehavior>(m_editingBehavior); } 320 321 void setDownloadableBinaryFontsEnabled(bool); downloadableBinaryFontsEnabled()322 bool downloadableBinaryFontsEnabled() const { return m_downloadableBinaryFontsEnabled; } 323 324 void setXSSAuditorEnabled(bool); xssAuditorEnabled()325 bool xssAuditorEnabled() const { return m_xssAuditorEnabled; } 326 327 void setAcceleratedCompositingEnabled(bool); acceleratedCompositingEnabled()328 bool acceleratedCompositingEnabled() const { return m_acceleratedCompositingEnabled; } 329 330 void setShowDebugBorders(bool); showDebugBorders()331 bool showDebugBorders() const { return m_showDebugBorders; } 332 333 void setShowRepaintCounter(bool); showRepaintCounter()334 bool showRepaintCounter() const { return m_showRepaintCounter; } 335 336 void setExperimentalNotificationsEnabled(bool); experimentalNotificationsEnabled()337 bool experimentalNotificationsEnabled() const { return m_experimentalNotificationsEnabled; } 338 339 #if PLATFORM(WIN) || (OS(WINDOWS) && PLATFORM(WX)) 340 static void setShouldUseHighResolutionTimers(bool); shouldUseHighResolutionTimers()341 static bool shouldUseHighResolutionTimers() { return gShouldUseHighResolutionTimers; } 342 #endif 343 344 void setPluginAllowedRunTime(unsigned); pluginAllowedRunTime()345 unsigned pluginAllowedRunTime() const { return m_pluginAllowedRunTime; } 346 347 void setWebGLEnabled(bool); webGLEnabled()348 bool webGLEnabled() const { return m_webGLEnabled; } 349 350 void setGeolocationEnabled(bool); geolocationEnabled()351 bool geolocationEnabled() const { return m_geolocationEnabled; } 352 353 void setLoadDeferringEnabled(bool); loadDeferringEnabled()354 bool loadDeferringEnabled() const { return m_loadDeferringEnabled; } 355 356 private: 357 Page* m_page; 358 359 String m_defaultTextEncodingName; 360 String m_ftpDirectoryTemplatePath; 361 String m_localStorageDatabasePath; 362 KURL m_userStyleSheetLocation; 363 AtomicString m_standardFontFamily; 364 AtomicString m_fixedFontFamily; 365 AtomicString m_serifFontFamily; 366 AtomicString m_sansSerifFontFamily; 367 AtomicString m_cursiveFontFamily; 368 AtomicString m_fantasyFontFamily; 369 #ifdef ANDROID_LAYOUT 370 LayoutAlgorithm m_layoutAlgorithm; 371 #endif 372 EditableLinkBehavior m_editableLinkBehavior; 373 TextDirectionSubmenuInclusionBehavior m_textDirectionSubmenuInclusionBehavior; 374 int m_minimumFontSize; 375 int m_minimumLogicalFontSize; 376 int m_defaultFontSize; 377 int m_defaultFixedFontSize; 378 #ifdef ANDROID_META_SUPPORT 379 // range is from 200 to 10,000. 0 is a special value means device-width. 380 // default is -1, which means undefined. 381 int m_viewport_width; 382 // range is from 223 to 10,000. 0 is a special value means device-height 383 // default is -1, which means undefined. 384 int m_viewport_height; 385 // range is from 1 to 1000 in percent. default is 0, which means undefined. 386 int m_viewport_initial_scale; 387 // range is from 1 to 1000 in percent. default is 0, which means undefined. 388 int m_viewport_minimum_scale; 389 // range is from 1 to 1000 in percent. default is 0, which means undefined. 390 int m_viewport_maximum_scale; 391 // default is yes 392 bool m_viewport_user_scalable : 1; 393 // range is from 70 to 400. 0 is a special value means device-dpi 394 // default is -1, which means undefined. 395 int m_viewport_target_densitydpi; 396 // default is yes 397 bool m_format_detection_telephone : 1; 398 // default is yes 399 bool m_format_detection_address : 1; 400 // default is yes 401 bool m_format_detection_email : 1; 402 #endif 403 #ifdef ANDROID_LAYOUT 404 bool m_useWideViewport : 1; 405 #endif 406 #ifdef ANDROID_MULTIPLE_WINDOWS 407 bool m_supportMultipleWindows : 1; 408 #endif 409 #ifdef ANDROID_BLOCK_NETWORK_IMAGE 410 bool m_blockNetworkImage : 1; 411 #endif 412 size_t m_maximumDecodedImageSize; 413 unsigned m_localStorageQuota; 414 unsigned m_pluginAllowedRunTime; 415 bool m_isJavaEnabled : 1; 416 bool m_loadsImagesAutomatically : 1; 417 bool m_privateBrowsingEnabled : 1; 418 bool m_caretBrowsingEnabled : 1; 419 bool m_areImagesEnabled : 1; 420 bool m_arePluginsEnabled : 1; 421 bool m_databasesEnabled : 1; 422 bool m_localStorageEnabled : 1; 423 bool m_isJavaScriptEnabled : 1; 424 bool m_isWebSecurityEnabled : 1; 425 bool m_allowUniversalAccessFromFileURLs: 1; 426 bool m_javaScriptCanOpenWindowsAutomatically : 1; 427 bool m_shouldPrintBackgrounds : 1; 428 bool m_textAreasAreResizable : 1; 429 #if ENABLE(DASHBOARD_SUPPORT) 430 bool m_usesDashboardBackwardCompatibilityMode : 1; 431 #endif 432 bool m_needsAdobeFrameReloadingQuirk : 1; 433 bool m_needsKeyboardEventDisambiguationQuirks : 1; 434 bool m_treatsAnyTextCSSLinkAsStylesheet : 1; 435 bool m_needsLeopardMailQuirks : 1; 436 bool m_needsTigerMailQuirks : 1; 437 bool m_isDOMPasteAllowed : 1; 438 bool m_shrinksStandaloneImagesToFit : 1; 439 bool m_usesPageCache: 1; 440 bool m_showsURLsInToolTips : 1; 441 bool m_forceFTPDirectoryListings : 1; 442 bool m_developerExtrasEnabled : 1; 443 bool m_authorAndUserStylesEnabled : 1; 444 bool m_needsSiteSpecificQuirks : 1; 445 unsigned m_fontRenderingMode : 1; 446 bool m_frameSetFlatteningEnabled : 1; 447 bool m_webArchiveDebugModeEnabled : 1; 448 bool m_localFileContentSniffingEnabled : 1; 449 bool m_inApplicationChromeMode : 1; 450 bool m_offlineWebApplicationCacheEnabled : 1; 451 bool m_shouldPaintCustomScrollbars : 1; 452 bool m_zoomsTextOnly : 1; 453 bool m_enforceCSSMIMETypeInStrictMode : 1; 454 bool m_usesEncodingDetector : 1; 455 bool m_allowScriptsToCloseWindows : 1; 456 unsigned m_editingBehavior : 1; 457 bool m_downloadableBinaryFontsEnabled : 1; 458 bool m_xssAuditorEnabled : 1; 459 bool m_acceleratedCompositingEnabled : 1; 460 bool m_showDebugBorders : 1; 461 bool m_showRepaintCounter : 1; 462 bool m_experimentalNotificationsEnabled : 1; 463 bool m_webGLEnabled : 1; 464 bool m_geolocationEnabled : 1; 465 bool m_loadDeferringEnabled : 1; 466 #ifdef ANDROID_PLUGINS 467 bool m_pluginsOnDemand : 1; 468 #endif 469 470 #if USE(SAFARI_THEME) 471 static bool gShouldPaintNativeControls; 472 #endif 473 #if PLATFORM(WIN) || (OS(WINDOWS) && PLATFORM(WX)) 474 static bool gShouldUseHighResolutionTimers; 475 #endif 476 }; 477 478 } // namespace WebCore 479 480 #endif // Settings_h 481