Home | History | Annotate | Download | only in page
      1 /*
      2  * Copyright (C) 2003, 2006, 2007, 2008, 2009, 2011 Apple Inc. All rights reserved.
      3  *           (C) 2006 Graham Dennis (graham.dennis (at) 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 "EditingBehaviorTypes.h"
     31 #include "FontRenderingMode.h"
     32 #include "KURL.h"
     33 #include <wtf/text/AtomicString.h>
     34 
     35 namespace WebCore {
     36 
     37     class Page;
     38 
     39     enum EditableLinkBehavior {
     40         EditableLinkDefaultBehavior,
     41         EditableLinkAlwaysLive,
     42         EditableLinkOnlyLiveWithShiftKey,
     43         EditableLinkLiveWhenNotFocused,
     44         EditableLinkNeverLive
     45     };
     46 
     47     enum TextDirectionSubmenuInclusionBehavior {
     48         TextDirectionSubmenuNeverIncluded,
     49         TextDirectionSubmenuAutomaticallyIncluded,
     50         TextDirectionSubmenuAlwaysIncluded
     51     };
     52 
     53     class Settings {
     54         WTF_MAKE_NONCOPYABLE(Settings); WTF_MAKE_FAST_ALLOCATED;
     55     public:
     56         Settings(Page*);
     57 
     58 #ifdef ANDROID_LAYOUT
     59         // FIXME: How do we determine the margins other than guessing?
     60         #define ANDROID_SSR_MARGIN_PADDING  3
     61         #define ANDROID_FCTS_MARGIN_PADDING  10
     62 
     63         enum LayoutAlgorithm {
     64             kLayoutNormal,
     65             kLayoutSSR,
     66             kLayoutFitColumnToScreen
     67         };
     68 #endif
     69         void setStandardFontFamily(const AtomicString&);
     70         const AtomicString& standardFontFamily() const { return m_standardFontFamily; }
     71 
     72         void setFixedFontFamily(const AtomicString&);
     73         const AtomicString& fixedFontFamily() const { return m_fixedFontFamily; }
     74 
     75 #ifdef ANDROID_LAYOUT
     76         LayoutAlgorithm layoutAlgorithm() const { return m_layoutAlgorithm; }
     77         void setLayoutAlgorithm(LayoutAlgorithm algorithm) { m_layoutAlgorithm = algorithm; }
     78 
     79         bool useWideViewport() const { return m_useWideViewport; }
     80         void setUseWideViewport(bool use) { m_useWideViewport = use; }
     81 #endif
     82 
     83         void setSerifFontFamily(const AtomicString&);
     84         const AtomicString& serifFontFamily() const { return m_serifFontFamily; }
     85 
     86         void setSansSerifFontFamily(const AtomicString&);
     87         const AtomicString& sansSerifFontFamily() const { return m_sansSerifFontFamily; }
     88 
     89         void setCursiveFontFamily(const AtomicString&);
     90         const AtomicString& cursiveFontFamily() const { return m_cursiveFontFamily; }
     91 
     92         void setFantasyFontFamily(const AtomicString&);
     93         const AtomicString& fantasyFontFamily() const { return m_fantasyFontFamily; }
     94 
     95         void setMinimumFontSize(int);
     96         int minimumFontSize() const { return m_minimumFontSize; }
     97 
     98         void setMinimumLogicalFontSize(int);
     99         int minimumLogicalFontSize() const { return m_minimumLogicalFontSize; }
    100 
    101         void setDefaultFontSize(int);
    102         int defaultFontSize() const { return m_defaultFontSize; }
    103 
    104         void setDefaultFixedFontSize(int);
    105         int defaultFixedFontSize() const { return m_defaultFixedFontSize; }
    106 
    107         // Unlike areImagesEnabled, this only suppresses the network load of
    108         // the image URL.  A cached image will still be rendered if requested.
    109         void setLoadsImagesAutomatically(bool);
    110         bool loadsImagesAutomatically() const { return m_loadsImagesAutomatically; }
    111 
    112         // This setting only affects site icon image loading if loadsImagesAutomatically setting is false and this setting is true.
    113         // All other permutations still heed loadsImagesAutomatically setting.
    114         void setLoadsSiteIconsIgnoringImageLoadingSetting(bool);
    115         bool loadsSiteIconsIgnoringImageLoadingSetting() const { return m_loadsSiteIconsIgnoringImageLoadingSetting; }
    116 
    117         void setJavaScriptEnabled(bool);
    118         // Instead of calling isJavaScriptEnabled directly, please consider calling
    119         // ScriptController::canExecuteScripts, which takes things like the
    120         // HTML sandbox attribute into account.
    121         bool isJavaScriptEnabled() const { return m_isJavaScriptEnabled; }
    122 
    123         void setWebSecurityEnabled(bool);
    124         bool isWebSecurityEnabled() const { return m_isWebSecurityEnabled; }
    125 
    126         void setAllowUniversalAccessFromFileURLs(bool);
    127         bool allowUniversalAccessFromFileURLs() const { return m_allowUniversalAccessFromFileURLs; }
    128 
    129         void setAllowFileAccessFromFileURLs(bool);
    130         bool allowFileAccessFromFileURLs() const { return m_allowFileAccessFromFileURLs; }
    131 
    132         void setJavaScriptCanOpenWindowsAutomatically(bool);
    133         bool javaScriptCanOpenWindowsAutomatically() const { return m_javaScriptCanOpenWindowsAutomatically; }
    134 
    135         void setJavaScriptCanAccessClipboard(bool);
    136         bool javaScriptCanAccessClipboard() const { return m_javaScriptCanAccessClipboard; }
    137 
    138         void setSpatialNavigationEnabled(bool);
    139         bool isSpatialNavigationEnabled() const { return m_isSpatialNavigationEnabled; }
    140 
    141         void setJavaEnabled(bool);
    142         bool isJavaEnabled() const { return m_isJavaEnabled; }
    143 
    144         void setImagesEnabled(bool);
    145         bool areImagesEnabled() const { return m_areImagesEnabled; }
    146 
    147         void setMediaEnabled(bool);
    148         bool isMediaEnabled() const { return m_isMediaEnabled; }
    149 
    150         void setPluginsEnabled(bool);
    151         bool arePluginsEnabled() const { return m_arePluginsEnabled; }
    152 
    153 #ifdef ANDROID_PLUGINS
    154         void setPluginsOnDemand(bool onDemand) { m_pluginsOnDemand = onDemand; }
    155         bool arePluginsOnDemand() const { return m_pluginsOnDemand; }
    156 #endif
    157 
    158         void setLocalStorageEnabled(bool);
    159         bool localStorageEnabled() const { return m_localStorageEnabled; }
    160 
    161 #if ENABLE(DOM_STORAGE)
    162         // Allow clients concerned with memory consumption to set a quota on session storage
    163         // since the memory used won't be released until the Page is destroyed.
    164         // Default is noQuota.
    165         void setSessionStorageQuota(unsigned);
    166         unsigned sessionStorageQuota() const { return m_sessionStorageQuota; }
    167 #endif
    168 
    169         // When this option is set, WebCore will avoid storing any record of browsing activity
    170         // that may persist on disk or remain displayed when the option is reset.
    171         // This option does not affect the storage of such information in RAM.
    172         // The following functions respect this setting:
    173         //  - HTML5/DOM Storage
    174         //  - Icon Database
    175         //  - Console Messages
    176         //  - MemoryCache
    177         //  - Application Cache
    178         //  - Back/Forward Page History
    179         //  - Page Search Results
    180         //  - HTTP Cookies
    181         //  - Plug-ins (that support NPNVprivateModeBool)
    182         void setPrivateBrowsingEnabled(bool);
    183         bool privateBrowsingEnabled() const { return m_privateBrowsingEnabled; }
    184 
    185         void setCaretBrowsingEnabled(bool);
    186         bool caretBrowsingEnabled() const { return m_caretBrowsingEnabled; }
    187 
    188         void setDefaultTextEncodingName(const String&);
    189         const String& defaultTextEncodingName() const { return m_defaultTextEncodingName; }
    190 
    191         void setUsesEncodingDetector(bool);
    192         bool usesEncodingDetector() const { return m_usesEncodingDetector; }
    193 
    194         void setDNSPrefetchingEnabled(bool);
    195         bool dnsPrefetchingEnabled() const { return m_dnsPrefetchingEnabled; }
    196 
    197         void setUserStyleSheetLocation(const KURL&);
    198         const KURL& userStyleSheetLocation() const { return m_userStyleSheetLocation; }
    199 
    200         void setShouldPrintBackgrounds(bool);
    201         bool shouldPrintBackgrounds() const { return m_shouldPrintBackgrounds; }
    202 
    203         void setTextAreasAreResizable(bool);
    204         bool textAreasAreResizable() const { return m_textAreasAreResizable; }
    205 
    206         void setEditableLinkBehavior(EditableLinkBehavior);
    207         EditableLinkBehavior editableLinkBehavior() const { return m_editableLinkBehavior; }
    208 
    209         void setTextDirectionSubmenuInclusionBehavior(TextDirectionSubmenuInclusionBehavior);
    210         TextDirectionSubmenuInclusionBehavior textDirectionSubmenuInclusionBehavior() const { return m_textDirectionSubmenuInclusionBehavior; }
    211 
    212 #if ENABLE(DASHBOARD_SUPPORT)
    213         void setUsesDashboardBackwardCompatibilityMode(bool);
    214         bool usesDashboardBackwardCompatibilityMode() const { return m_usesDashboardBackwardCompatibilityMode; }
    215 #endif
    216 
    217         void setNeedsAdobeFrameReloadingQuirk(bool);
    218         bool needsAcrobatFrameReloadingQuirk() const { return m_needsAdobeFrameReloadingQuirk; }
    219 
    220         void setNeedsKeyboardEventDisambiguationQuirks(bool);
    221         bool needsKeyboardEventDisambiguationQuirks() const { return m_needsKeyboardEventDisambiguationQuirks; }
    222 
    223         void setTreatsAnyTextCSSLinkAsStylesheet(bool);
    224         bool treatsAnyTextCSSLinkAsStylesheet() const { return m_treatsAnyTextCSSLinkAsStylesheet; }
    225 
    226         void setNeedsLeopardMailQuirks(bool);
    227         bool needsLeopardMailQuirks() const { return m_needsLeopardMailQuirks; }
    228 
    229         void setNeedsTigerMailQuirks(bool);
    230         bool needsTigerMailQuirks() const { return m_needsTigerMailQuirks; }
    231 
    232         void setDOMPasteAllowed(bool);
    233         bool isDOMPasteAllowed() const { return m_isDOMPasteAllowed; }
    234 
    235         static void setDefaultMinDOMTimerInterval(double); // Interval specified in seconds.
    236         static double defaultMinDOMTimerInterval();
    237 
    238         void setMinDOMTimerInterval(double); // Per-page; initialized to default value.
    239         double minDOMTimerInterval();
    240 
    241         void setUsesPageCache(bool);
    242         bool usesPageCache() const { return m_usesPageCache; }
    243 
    244         void setShrinksStandaloneImagesToFit(bool);
    245         bool shrinksStandaloneImagesToFit() const { return m_shrinksStandaloneImagesToFit; }
    246 
    247         void setShowsURLsInToolTips(bool);
    248         bool showsURLsInToolTips() const { return m_showsURLsInToolTips; }
    249 
    250         void setFTPDirectoryTemplatePath(const String&);
    251         const String& ftpDirectoryTemplatePath() const { return m_ftpDirectoryTemplatePath; }
    252 
    253         void setForceFTPDirectoryListings(bool);
    254         bool forceFTPDirectoryListings() const { return m_forceFTPDirectoryListings; }
    255 
    256         void setDeveloperExtrasEnabled(bool);
    257         bool developerExtrasEnabled() const { return m_developerExtrasEnabled; }
    258 
    259         void setFrameFlatteningEnabled(bool);
    260         bool frameFlatteningEnabled() const { return m_frameFlatteningEnabled; }
    261 
    262 #ifdef ANDROID_META_SUPPORT
    263         void resetMetadataSettings();
    264         void setMetadataSettings(const String& key, const String& value);
    265 
    266         void setViewportWidth(int);
    267         int viewportWidth() const { return m_viewport_width; }
    268 
    269         void setViewportHeight(int);
    270         int viewportHeight() const { return m_viewport_height; }
    271 
    272         void setViewportInitialScale(int);
    273         int viewportInitialScale() const { return m_viewport_initial_scale; }
    274 
    275         void setViewportMinimumScale(int);
    276         int viewportMinimumScale() const { return m_viewport_minimum_scale; }
    277 
    278         void setViewportMaximumScale(int);
    279         int viewportMaximumScale() const { return m_viewport_maximum_scale; }
    280 
    281         void setViewportUserScalable(bool);
    282         bool viewportUserScalable() const { return m_viewport_user_scalable; }
    283 
    284         void setViewportTargetDensityDpi(int);
    285         int viewportTargetDensityDpi() const { return m_viewport_target_densitydpi; }
    286 
    287         void setFormatDetectionAddress(bool);
    288         bool formatDetectionAddress() const { return m_format_detection_address; }
    289 
    290         void setFormatDetectionEmail(bool);
    291         bool formatDetectionEmail() const { return m_format_detection_email; }
    292 
    293         void setFormatDetectionTelephone(bool);
    294         bool formatDetectionTelephone() const { return m_format_detection_telephone; }
    295 
    296         void setDefaultFormatDetection(bool flag) { m_default_format_detection = flag; }
    297 #endif
    298 #ifdef ANDROID_MULTIPLE_WINDOWS
    299         bool supportMultipleWindows() const { return m_supportMultipleWindows; }
    300         void setSupportMultipleWindows(bool support) { m_supportMultipleWindows = support; }
    301 #endif
    302         void setAuthorAndUserStylesEnabled(bool);
    303         bool authorAndUserStylesEnabled() const { return m_authorAndUserStylesEnabled; }
    304 
    305         void setFontRenderingMode(FontRenderingMode mode);
    306         FontRenderingMode fontRenderingMode() const;
    307 
    308         void setNeedsSiteSpecificQuirks(bool);
    309         bool needsSiteSpecificQuirks() const { return m_needsSiteSpecificQuirks; }
    310 
    311 #if ENABLE(WEB_ARCHIVE)
    312         void setWebArchiveDebugModeEnabled(bool);
    313         bool webArchiveDebugModeEnabled() const { return m_webArchiveDebugModeEnabled; }
    314 #endif
    315 
    316         void setLocalFileContentSniffingEnabled(bool);
    317         bool localFileContentSniffingEnabled() const { return m_localFileContentSniffingEnabled; }
    318 
    319         void setLocalStorageDatabasePath(const String&);
    320         const String& localStorageDatabasePath() const { return m_localStorageDatabasePath; }
    321 
    322         void setApplicationChromeMode(bool);
    323         bool inApplicationChromeMode() const { return m_inApplicationChromeMode; }
    324 
    325         void setOfflineWebApplicationCacheEnabled(bool);
    326         bool offlineWebApplicationCacheEnabled() const { return m_offlineWebApplicationCacheEnabled; }
    327 
    328         void setShouldPaintCustomScrollbars(bool);
    329         bool shouldPaintCustomScrollbars() const { return m_shouldPaintCustomScrollbars; }
    330 
    331         void setEnforceCSSMIMETypeInNoQuirksMode(bool);
    332         bool enforceCSSMIMETypeInNoQuirksMode() { return m_enforceCSSMIMETypeInNoQuirksMode; }
    333 
    334         void setMaximumDecodedImageSize(size_t size) { m_maximumDecodedImageSize = size; }
    335         size_t maximumDecodedImageSize() const { return m_maximumDecodedImageSize; }
    336 
    337 #if USE(SAFARI_THEME)
    338         // Windows debugging pref (global) for switching between the Aqua look and a native windows look.
    339         static void setShouldPaintNativeControls(bool);
    340         static bool shouldPaintNativeControls() { return gShouldPaintNativeControls; }
    341 #endif
    342 
    343         void setAllowScriptsToCloseWindows(bool);
    344         bool allowScriptsToCloseWindows() const { return m_allowScriptsToCloseWindows; }
    345 
    346         void setEditingBehaviorType(EditingBehaviorType behavior) { m_editingBehaviorType = behavior; }
    347         EditingBehaviorType editingBehaviorType() const { return static_cast<EditingBehaviorType>(m_editingBehaviorType); }
    348 
    349         void setDownloadableBinaryFontsEnabled(bool);
    350         bool downloadableBinaryFontsEnabled() const { return m_downloadableBinaryFontsEnabled; }
    351 
    352         void setXSSAuditorEnabled(bool);
    353         bool xssAuditorEnabled() const { return m_xssAuditorEnabled; }
    354 
    355 #if ENABLE(LINK_PREFETCH)
    356         void setLinkPrefetchEnabled(bool);
    357         bool linkPrefetchEnabled() const { return m_linkPrefetchEnabled; }
    358 #endif
    359 
    360         void setCanvasUsesAcceleratedDrawing(bool);
    361         bool canvasUsesAcceleratedDrawing() const { return m_canvasUsesAcceleratedDrawing; }
    362 
    363         void setAcceleratedDrawingEnabled(bool);
    364         bool acceleratedDrawingEnabled() const { return m_acceleratedDrawingEnabled; }
    365 
    366         void setAcceleratedCompositingEnabled(bool);
    367         bool acceleratedCompositingEnabled() const { return m_acceleratedCompositingEnabled; }
    368 
    369         void setAcceleratedCompositingFor3DTransformsEnabled(bool);
    370         bool acceleratedCompositingFor3DTransformsEnabled() const { return m_acceleratedCompositingFor3DTransformsEnabled; }
    371 
    372         void setAcceleratedCompositingForVideoEnabled(bool);
    373         bool acceleratedCompositingForVideoEnabled() const { return m_acceleratedCompositingForVideoEnabled; }
    374 
    375         void setAcceleratedCompositingForPluginsEnabled(bool);
    376         bool acceleratedCompositingForPluginsEnabled() const { return m_acceleratedCompositingForPluginsEnabled; }
    377 
    378         void setAcceleratedCompositingForCanvasEnabled(bool);
    379         bool acceleratedCompositingForCanvasEnabled() const { return m_acceleratedCompositingForCanvasEnabled; }
    380 
    381         void setAcceleratedCompositingForAnimationEnabled(bool);
    382         bool acceleratedCompositingForAnimationEnabled() const { return m_acceleratedCompositingForAnimationEnabled; }
    383 
    384         void setShowDebugBorders(bool);
    385         bool showDebugBorders() const { return m_showDebugBorders; }
    386 
    387         void setShowRepaintCounter(bool);
    388         bool showRepaintCounter() const { return m_showRepaintCounter; }
    389 
    390         void setExperimentalNotificationsEnabled(bool);
    391         bool experimentalNotificationsEnabled() const { return m_experimentalNotificationsEnabled; }
    392 
    393 #if PLATFORM(WIN) || (OS(WINDOWS) && PLATFORM(WX))
    394         static void setShouldUseHighResolutionTimers(bool);
    395         static bool shouldUseHighResolutionTimers() { return gShouldUseHighResolutionTimers; }
    396 #endif
    397 
    398         void setPluginAllowedRunTime(unsigned);
    399         unsigned pluginAllowedRunTime() const { return m_pluginAllowedRunTime; }
    400 
    401         void setWebAudioEnabled(bool);
    402         bool webAudioEnabled() const { return m_webAudioEnabled; }
    403 
    404         void setWebGLEnabled(bool);
    405         bool webGLEnabled() const { return m_webGLEnabled; }
    406 
    407         void setOpenGLMultisamplingEnabled(bool);
    408         bool openGLMultisamplingEnabled() const { return m_openGLMultisamplingEnabled; }
    409 
    410         void setAccelerated2dCanvasEnabled(bool);
    411         bool accelerated2dCanvasEnabled() const { return m_acceleratedCanvas2dEnabled; }
    412 
    413         void setLoadDeferringEnabled(bool);
    414         bool loadDeferringEnabled() const { return m_loadDeferringEnabled; }
    415 
    416         void setTiledBackingStoreEnabled(bool);
    417         bool tiledBackingStoreEnabled() const { return m_tiledBackingStoreEnabled; }
    418 
    419         void setPaginateDuringLayoutEnabled(bool flag) { m_paginateDuringLayoutEnabled = flag; }
    420         bool paginateDuringLayoutEnabled() const { return m_paginateDuringLayoutEnabled; }
    421 
    422 #if ENABLE(FULLSCREEN_API)
    423         void setFullScreenEnabled(bool flag) { m_fullScreenAPIEnabled = flag; }
    424         bool fullScreenEnabled() const  { return m_fullScreenAPIEnabled; }
    425 #endif
    426 
    427         void setAsynchronousSpellCheckingEnabled(bool flag) { m_asynchronousSpellCheckingEnabled = flag; }
    428         bool asynchronousSpellCheckingEnabled() const  { return m_asynchronousSpellCheckingEnabled; }
    429 
    430         void setMemoryInfoEnabled(bool flag) { m_memoryInfoEnabled = flag; }
    431         bool memoryInfoEnabled() const { return m_memoryInfoEnabled; }
    432 
    433         // This setting will be removed when an HTML5 compatibility issue is
    434         // resolved and WebKit implementation of interactive validation is
    435         // completed. See http://webkit.org/b/40520, http://webkit.org/b/40747,
    436         // and http://webkit.org/b/40908
    437         void setInteractiveFormValidationEnabled(bool flag) { m_interactiveFormValidation = flag; }
    438         bool interactiveFormValidationEnabled() const { return m_interactiveFormValidation; }
    439 
    440         // Sets the maginication value for validation message timer.
    441         // If the maginication value is N, a validation message disappears
    442         // automatically after <message length> * N / 1000 seconds. If N is
    443         // equal to or less than 0, a validation message doesn't disappears
    444         // automaticaly. The default value is 50.
    445         void setValidationMessageTimerMagnification(int newValue) { m_validationMessageTimerMagnification = newValue; }
    446         int validationMessageTimerMaginification() const { return m_validationMessageTimerMagnification; }
    447 
    448         void setUsePreHTML5ParserQuirks(bool flag) { m_usePreHTML5ParserQuirks = flag; }
    449         bool usePreHTML5ParserQuirks() const { return m_usePreHTML5ParserQuirks; }
    450 
    451         void setHyperlinkAuditingEnabled(bool flag) { m_hyperlinkAuditingEnabled = flag; }
    452         bool hyperlinkAuditingEnabled() const { return m_hyperlinkAuditingEnabled; }
    453 
    454         void setCrossOriginCheckInGetMatchedCSSRulesDisabled(bool flag) { m_crossOriginCheckInGetMatchedCSSRulesDisabled = flag; }
    455         bool crossOriginCheckInGetMatchedCSSRulesDisabled() const { return m_crossOriginCheckInGetMatchedCSSRulesDisabled; }
    456 
    457         void setUseQuickLookResourceCachingQuirks(bool flag) { m_useQuickLookResourceCachingQuirks = flag; }
    458         bool useQuickLookResourceCachingQuirks() const { return m_useQuickLookResourceCachingQuirks; }
    459 
    460         void setForceCompositingMode(bool flag) { m_forceCompositingMode = flag; }
    461         bool forceCompositingMode() { return m_forceCompositingMode; }
    462 
    463         void setShouldInjectUserScriptsInInitialEmptyDocument(bool flag) { m_shouldInjectUserScriptsInInitialEmptyDocument = flag; }
    464         bool shouldInjectUserScriptsInInitialEmptyDocument() { return m_shouldInjectUserScriptsInInitialEmptyDocument; }
    465 
    466         void setPasswordEchoEnabled(bool flag) { m_passwordEchoEnabled = flag; }
    467         bool passwordEchoEnabled() const { return m_passwordEchoEnabled; }
    468 
    469         void setPasswordEchoDurationInSeconds(double durationInSeconds) { m_passwordEchoDurationInSeconds = durationInSeconds; }
    470         double passwordEchoDurationInSeconds() const { return m_passwordEchoDurationInSeconds; }
    471 
    472 #if ENABLE(WEB_AUTOFILL)
    473         void setAutoFillEnabled(bool flag) { m_autoFillEnabled = flag; }
    474         bool autoFillEnabled() { return m_autoFillEnabled; }
    475 #endif
    476 
    477 #ifdef ANDROID_BLOCK_NETWORK_IMAGE
    478         void setBlockNetworkImage(bool);
    479         bool blockNetworkImage() const { return m_blockNetworkImage; }
    480 #endif
    481 
    482         void setMediaPlaybackRequiresUserGesture(bool flag) { m_mediaPlaybackRequiresUserGesture = flag; };
    483         bool mediaPlaybackRequiresUserGesture() const { return m_mediaPlaybackRequiresUserGesture; }
    484 
    485         void setMediaPlaybackAllowsInline(bool flag) { m_mediaPlaybackAllowsInline = flag; };
    486         bool mediaPlaybackAllowsInline() const { return m_mediaPlaybackAllowsInline; }
    487 
    488     private:
    489         Page* m_page;
    490 
    491         String m_defaultTextEncodingName;
    492         String m_ftpDirectoryTemplatePath;
    493         String m_localStorageDatabasePath;
    494         KURL m_userStyleSheetLocation;
    495         AtomicString m_standardFontFamily;
    496         AtomicString m_fixedFontFamily;
    497         AtomicString m_serifFontFamily;
    498         AtomicString m_sansSerifFontFamily;
    499         AtomicString m_cursiveFontFamily;
    500         AtomicString m_fantasyFontFamily;
    501         EditableLinkBehavior m_editableLinkBehavior;
    502         TextDirectionSubmenuInclusionBehavior m_textDirectionSubmenuInclusionBehavior;
    503         int m_minimumFontSize;
    504         int m_minimumLogicalFontSize;
    505         int m_defaultFontSize;
    506         int m_defaultFixedFontSize;
    507         int m_validationMessageTimerMagnification;
    508         size_t m_maximumDecodedImageSize;
    509 #if ENABLE(DOM_STORAGE)
    510         unsigned m_sessionStorageQuota;
    511 #endif
    512         unsigned m_pluginAllowedRunTime;
    513         unsigned m_editingBehaviorType;
    514 #ifdef ANDROID_META_SUPPORT
    515         // range is from 200 to 10,000. 0 is a special value means device-width.
    516         // default is -1, which means undefined.
    517         int m_viewport_width;
    518         // range is from 223 to 10,000. 0 is a special value means device-height
    519         // default is -1, which means undefined.
    520         int m_viewport_height;
    521         // range is from 1 to 1000 in percent. default is 0, which means undefined.
    522         int m_viewport_initial_scale;
    523         // range is from 1 to 1000 in percent. default is 0, which means undefined.
    524         int m_viewport_minimum_scale;
    525         // range is from 1 to 1000 in percent. default is 0, which means undefined.
    526         int m_viewport_maximum_scale;
    527 #endif
    528 #ifdef ANDROID_LAYOUT
    529         LayoutAlgorithm m_layoutAlgorithm;
    530 #endif
    531         double m_passwordEchoDurationInSeconds;
    532 
    533         bool m_isSpatialNavigationEnabled : 1;
    534         bool m_isJavaEnabled : 1;
    535         bool m_loadsImagesAutomatically : 1;
    536         bool m_loadsSiteIconsIgnoringImageLoadingSetting : 1;
    537         bool m_privateBrowsingEnabled : 1;
    538         bool m_caretBrowsingEnabled : 1;
    539         bool m_areImagesEnabled : 1;
    540         bool m_isMediaEnabled : 1;
    541         bool m_arePluginsEnabled : 1;
    542         bool m_localStorageEnabled : 1;
    543         bool m_isJavaScriptEnabled : 1;
    544         bool m_isWebSecurityEnabled : 1;
    545         bool m_allowUniversalAccessFromFileURLs: 1;
    546         bool m_allowFileAccessFromFileURLs: 1;
    547         bool m_javaScriptCanOpenWindowsAutomatically : 1;
    548         bool m_javaScriptCanAccessClipboard : 1;
    549         bool m_shouldPrintBackgrounds : 1;
    550         bool m_textAreasAreResizable : 1;
    551 #if ENABLE(DASHBOARD_SUPPORT)
    552         bool m_usesDashboardBackwardCompatibilityMode : 1;
    553 #endif
    554         bool m_needsAdobeFrameReloadingQuirk : 1;
    555         bool m_needsKeyboardEventDisambiguationQuirks : 1;
    556         bool m_treatsAnyTextCSSLinkAsStylesheet : 1;
    557         bool m_needsLeopardMailQuirks : 1;
    558         bool m_needsTigerMailQuirks : 1;
    559         bool m_isDOMPasteAllowed : 1;
    560         bool m_shrinksStandaloneImagesToFit : 1;
    561         bool m_usesPageCache: 1;
    562         bool m_showsURLsInToolTips : 1;
    563         bool m_forceFTPDirectoryListings : 1;
    564         bool m_developerExtrasEnabled : 1;
    565         bool m_authorAndUserStylesEnabled : 1;
    566         bool m_needsSiteSpecificQuirks : 1;
    567         unsigned m_fontRenderingMode : 1;
    568         bool m_frameFlatteningEnabled : 1;
    569         bool m_webArchiveDebugModeEnabled : 1;
    570         bool m_localFileContentSniffingEnabled : 1;
    571         bool m_inApplicationChromeMode : 1;
    572         bool m_offlineWebApplicationCacheEnabled : 1;
    573         bool m_shouldPaintCustomScrollbars : 1;
    574         bool m_enforceCSSMIMETypeInNoQuirksMode : 1;
    575         bool m_usesEncodingDetector : 1;
    576         bool m_allowScriptsToCloseWindows : 1;
    577         bool m_canvasUsesAcceleratedDrawing : 1;
    578         bool m_acceleratedDrawingEnabled : 1;
    579         bool m_downloadableBinaryFontsEnabled : 1;
    580         bool m_xssAuditorEnabled : 1;
    581 #if ENABLE(LINK_PREFETCH)
    582         bool m_linkPrefetchEnabled : 1;
    583 #endif
    584         bool m_acceleratedCompositingEnabled : 1;
    585         bool m_acceleratedCompositingFor3DTransformsEnabled : 1;
    586         bool m_acceleratedCompositingForVideoEnabled : 1;
    587         bool m_acceleratedCompositingForPluginsEnabled : 1;
    588         bool m_acceleratedCompositingForCanvasEnabled : 1;
    589         bool m_acceleratedCompositingForAnimationEnabled : 1;
    590         bool m_showDebugBorders : 1;
    591         bool m_showRepaintCounter : 1;
    592         bool m_experimentalNotificationsEnabled : 1;
    593         bool m_webGLEnabled : 1;
    594         bool m_openGLMultisamplingEnabled : 1;
    595         bool m_webAudioEnabled : 1;
    596         bool m_acceleratedCanvas2dEnabled : 1;
    597         bool m_loadDeferringEnabled : 1;
    598         bool m_tiledBackingStoreEnabled : 1;
    599         bool m_paginateDuringLayoutEnabled : 1;
    600         bool m_dnsPrefetchingEnabled : 1;
    601 #if ENABLE(FULLSCREEN_API)
    602         bool m_fullScreenAPIEnabled : 1;
    603 #endif
    604         bool m_asynchronousSpellCheckingEnabled: 1;
    605         bool m_memoryInfoEnabled: 1;
    606         bool m_interactiveFormValidation: 1;
    607         bool m_usePreHTML5ParserQuirks: 1;
    608         bool m_hyperlinkAuditingEnabled : 1;
    609         bool m_crossOriginCheckInGetMatchedCSSRulesDisabled : 1;
    610         bool m_useQuickLookResourceCachingQuirks : 1;
    611         bool m_forceCompositingMode : 1;
    612         bool m_shouldInjectUserScriptsInInitialEmptyDocument : 1;
    613 #ifdef ANDROID_META_SUPPORT
    614         // default is yes
    615         bool m_viewport_user_scalable : 1;
    616         // range is from 70 to 400. 0 is a special value means device-dpi
    617         // default is -1, which means undefined.
    618         int m_viewport_target_densitydpi;
    619         // default is yes
    620         bool m_format_detection_telephone : 1;
    621         // default is yes
    622         bool m_format_detection_address : 1;
    623         // default is yes
    624         bool m_format_detection_email : 1;
    625         bool m_default_format_detection : 1;
    626 #endif
    627 #ifdef ANDROID_LAYOUT
    628         bool m_useWideViewport : 1;
    629 #endif
    630 #ifdef ANDROID_MULTIPLE_WINDOWS
    631         bool m_supportMultipleWindows : 1;
    632 #endif
    633 #ifdef ANDROID_BLOCK_NETWORK_IMAGE
    634         bool m_blockNetworkImage : 1;
    635 #endif
    636 #if ENABLE(WEB_AUTOFILL)
    637         bool m_autoFillEnabled: 1;
    638 #endif
    639 #ifdef ANDROID_PLUGINS
    640         bool m_pluginsOnDemand : 1;
    641 #endif
    642         bool m_mediaPlaybackRequiresUserGesture : 1;
    643         bool m_mediaPlaybackAllowsInline : 1;
    644         bool m_passwordEchoEnabled : 1;
    645 
    646 #if USE(SAFARI_THEME)
    647         static bool gShouldPaintNativeControls;
    648 #endif
    649 #if PLATFORM(WIN) || (OS(WINDOWS) && PLATFORM(WX))
    650         static bool gShouldUseHighResolutionTimers;
    651 #endif
    652     };
    653 
    654 } // namespace WebCore
    655 
    656 #endif // Settings_h
    657