/*
* Copyright (C) 2003, 2006, 2007, 2008, 2009, 2011 Apple Inc. All rights reserved.
* (C) 2006 Graham Dennis (graham.dennis@gmail.com)
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef Settings_h
#define Settings_h
#include "EditingBehaviorTypes.h"
#include "FontRenderingMode.h"
#include "KURL.h"
#include <wtf/text/AtomicString.h>
namespace WebCore {
class Page;
enum EditableLinkBehavior {
EditableLinkDefaultBehavior,
EditableLinkAlwaysLive,
EditableLinkOnlyLiveWithShiftKey,
EditableLinkLiveWhenNotFocused,
EditableLinkNeverLive
};
enum TextDirectionSubmenuInclusionBehavior {
TextDirectionSubmenuNeverIncluded,
TextDirectionSubmenuAutomaticallyIncluded,
TextDirectionSubmenuAlwaysIncluded
};
class Settings {
WTF_MAKE_NONCOPYABLE(Settings); WTF_MAKE_FAST_ALLOCATED;
public:
Settings(Page*);
#ifdef ANDROID_LAYOUT
// FIXME: How do we determine the margins other than guessing?
#define ANDROID_SSR_MARGIN_PADDING 3
#define ANDROID_FCTS_MARGIN_PADDING 10
enum LayoutAlgorithm {
kLayoutNormal,
kLayoutSSR,
kLayoutFitColumnToScreen
};
#endif
void setStandardFontFamily(const AtomicString&);
const AtomicString& standardFontFamily() const { return m_standardFontFamily; }
void setFixedFontFamily(const AtomicString&);
const AtomicString& fixedFontFamily() const { return m_fixedFontFamily; }
#ifdef ANDROID_LAYOUT
LayoutAlgorithm layoutAlgorithm() const { return m_layoutAlgorithm; }
void setLayoutAlgorithm(LayoutAlgorithm algorithm) { m_layoutAlgorithm = algorithm; }
bool useWideViewport() const { return m_useWideViewport; }
void setUseWideViewport(bool use) { m_useWideViewport = use; }
#endif
void setSerifFontFamily(const AtomicString&);
const AtomicString& serifFontFamily() const { return m_serifFontFamily; }
void setSansSerifFontFamily(const AtomicString&);
const AtomicString& sansSerifFontFamily() const { return m_sansSerifFontFamily; }
void setCursiveFontFamily(const AtomicString&);
const AtomicString& cursiveFontFamily() const { return m_cursiveFontFamily; }
void setFantasyFontFamily(const AtomicString&);
const AtomicString& fantasyFontFamily() const { return m_fantasyFontFamily; }
void setMinimumFontSize(int);
int minimumFontSize() const { return m_minimumFontSize; }
void setMinimumLogicalFontSize(int);
int minimumLogicalFontSize() const { return m_minimumLogicalFontSize; }
void setDefaultFontSize(int);
int defaultFontSize() const { return m_defaultFontSize; }
void setDefaultFixedFontSize(int);
int defaultFixedFontSize() const { return m_defaultFixedFontSize; }
// Unlike areImagesEnabled, this only suppresses the network load of
// the image URL. A cached image will still be rendered if requested.
void setLoadsImagesAutomatically(bool);
bool loadsImagesAutomatically() const { return m_loadsImagesAutomatically; }
// This setting only affects site icon image loading if loadsImagesAutomatically setting is false and this setting is true.
// All other permutations still heed loadsImagesAutomatically setting.
void setLoadsSiteIconsIgnoringImageLoadingSetting(bool);
bool loadsSiteIconsIgnoringImageLoadingSetting() const { return m_loadsSiteIconsIgnoringImageLoadingSetting; }
void setJavaScriptEnabled(bool);
// Instead of calling isJavaScriptEnabled directly, please consider calling
// ScriptController::canExecuteScripts, which takes things like the
// HTML sandbox attribute into account.
bool isJavaScriptEnabled() const { return m_isJavaScriptEnabled; }
void setWebSecurityEnabled(bool);
bool isWebSecurityEnabled() const { return m_isWebSecurityEnabled; }
void setAllowUniversalAccessFromFileURLs(bool);
bool allowUniversalAccessFromFileURLs() const { return m_allowUniversalAccessFromFileURLs; }
void setAllowFileAccessFromFileURLs(bool);
bool allowFileAccessFromFileURLs() const { return m_allowFileAccessFromFileURLs; }
void setJavaScriptCanOpenWindowsAutomatically(bool);
bool javaScriptCanOpenWindowsAutomatically() const { return m_javaScriptCanOpenWindowsAutomatically; }
void setJavaScriptCanAccessClipboard(bool);
bool javaScriptCanAccessClipboard() const { return m_javaScriptCanAccessClipboard; }
void setSpatialNavigationEnabled(bool);
bool isSpatialNavigationEnabled() const { return m_isSpatialNavigationEnabled; }
void setJavaEnabled(bool);
bool isJavaEnabled() const { return m_isJavaEnabled; }
void setImagesEnabled(bool);
bool areImagesEnabled() const { return m_areImagesEnabled; }
void setMediaEnabled(bool);
bool isMediaEnabled() const { return m_isMediaEnabled; }
void setPluginsEnabled(bool);
bool arePluginsEnabled() const { return m_arePluginsEnabled; }
#ifdef ANDROID_PLUGINS
void setPluginsOnDemand(bool onDemand) { m_pluginsOnDemand = onDemand; }
bool arePluginsOnDemand() const { return m_pluginsOnDemand; }
#endif
void setLocalStorageEnabled(bool);
bool localStorageEnabled() const { return m_localStorageEnabled; }
#if ENABLE(DOM_STORAGE)
// Allow clients concerned with memory consumption to set a quota on session storage
// since the memory used won't be released until the Page is destroyed.
// Default is noQuota.
void setSessionStorageQuota(unsigned);
unsigned sessionStorageQuota() const { return m_sessionStorageQuota; }
#endif
// When this option is set, WebCore will avoid storing any record of browsing activity
// that may persist on disk or remain displayed when the option is reset.
// This option does not affect the storage of such information in RAM.
// The following functions respect this setting:
// - HTML5/DOM Storage
// - Icon Database
// - Console Messages
// - MemoryCache
// - Application Cache
// - Back/Forward Page History
// - Page Search Results
// - HTTP Cookies
// - Plug-ins (that support NPNVprivateModeBool)
void setPrivateBrowsingEnabled(bool);
bool privateBrowsingEnabled() const { return m_privateBrowsingEnabled; }
void setCaretBrowsingEnabled(bool);
bool caretBrowsingEnabled() const { return m_caretBrowsingEnabled; }
void setDefaultTextEncodingName(const String&);
const String& defaultTextEncodingName() const { return m_defaultTextEncodingName; }
void setUsesEncodingDetector(bool);
bool usesEncodingDetector() const { return m_usesEncodingDetector; }
void setDNSPrefetchingEnabled(bool);
bool dnsPrefetchingEnabled() const { return m_dnsPrefetchingEnabled; }
void setUserStyleSheetLocation(const KURL&);
const KURL& userStyleSheetLocation() const { return m_userStyleSheetLocation; }
void setShouldPrintBackgrounds(bool);
bool shouldPrintBackgrounds() const { return m_shouldPrintBackgrounds; }
void setTextAreasAreResizable(bool);
bool textAreasAreResizable() const { return m_textAreasAreResizable; }
void setEditableLinkBehavior(EditableLinkBehavior);
EditableLinkBehavior editableLinkBehavior() const { return m_editableLinkBehavior; }
void setTextDirectionSubmenuInclusionBehavior(TextDirectionSubmenuInclusionBehavior);
TextDirectionSubmenuInclusionBehavior textDirectionSubmenuInclusionBehavior() const { return m_textDirectionSubmenuInclusionBehavior; }
#if ENABLE(DASHBOARD_SUPPORT)
void setUsesDashboardBackwardCompatibilityMode(bool);
bool usesDashboardBackwardCompatibilityMode() const { return m_usesDashboardBackwardCompatibilityMode; }
#endif
void setNeedsAdobeFrameReloadingQuirk(bool);
bool needsAcrobatFrameReloadingQuirk() const { return m_needsAdobeFrameReloadingQuirk; }
void setNeedsKeyboardEventDisambiguationQuirks(bool);
bool needsKeyboardEventDisambiguationQuirks() const { return m_needsKeyboardEventDisambiguationQuirks; }
void setTreatsAnyTextCSSLinkAsStylesheet(bool);
bool treatsAnyTextCSSLinkAsStylesheet() const { return m_treatsAnyTextCSSLinkAsStylesheet; }
void setNeedsLeopardMailQuirks(bool);
bool needsLeopardMailQuirks() const { return m_needsLeopardMailQuirks; }
void setNeedsTigerMailQuirks(bool);
bool needsTigerMailQuirks() const { return m_needsTigerMailQuirks; }
void setDOMPasteAllowed(bool);
bool isDOMPasteAllowed() const { return m_isDOMPasteAllowed; }
static void setDefaultMinDOMTimerInterval(double); // Interval specified in seconds.
static double defaultMinDOMTimerInterval();
void setMinDOMTimerInterval(double); // Per-page; initialized to default value.
double minDOMTimerInterval();
void setUsesPageCache(bool);
bool usesPageCache() const { return m_usesPageCache; }
void setShrinksStandaloneImagesToFit(bool);
bool shrinksStandaloneImagesToFit() const { return m_shrinksStandaloneImagesToFit; }
void setShowsURLsInToolTips(bool);
bool showsURLsInToolTips() const { return m_showsURLsInToolTips; }
void setFTPDirectoryTemplatePath(const String&);
const String& ftpDirectoryTemplatePath() const { return m_ftpDirectoryTemplatePath; }
void setForceFTPDirectoryListings(bool);
bool forceFTPDirectoryListings() const { return m_forceFTPDirectoryListings; }
void setDeveloperExtrasEnabled(bool);
bool developerExtrasEnabled() const { return m_developerExtrasEnabled; }
void setFrameFlatteningEnabled(bool);
bool frameFlatteningEnabled() const { return m_frameFlatteningEnabled; }
#ifdef ANDROID_META_SUPPORT
void resetMetadataSettings();
void setMetadataSettings(const String& key, const String& value);
void setViewportWidth(int);
int viewportWidth() const { return m_viewport_width; }
void setViewportHeight(int);
int viewportHeight() const { return m_viewport_height; }
void setViewportInitialScale(int);
int viewportInitialScale() const { return m_viewport_initial_scale; }
void setViewportMinimumScale(int);
int viewportMinimumScale() const { return m_viewport_minimum_scale; }
void setViewportMaximumScale(int);
int viewportMaximumScale() const { return m_viewport_maximum_scale; }
void setViewportUserScalable(bool);
bool viewportUserScalable() const { return m_viewport_user_scalable; }
void setViewportTargetDensityDpi(int);
int viewportTargetDensityDpi() const { return m_viewport_target_densitydpi; }
void setFormatDetectionAddress(bool);
bool formatDetectionAddress() const { return m_format_detection_address; }
void setFormatDetectionEmail(bool);
bool formatDetectionEmail() const { return m_format_detection_email; }
void setFormatDetectionTelephone(bool);
bool formatDetectionTelephone() const { return m_format_detection_telephone; }
void setDefaultFormatDetection(bool flag) { m_default_format_detection = flag; }
#endif
#ifdef ANDROID_MULTIPLE_WINDOWS
bool supportMultipleWindows() const { return m_supportMultipleWindows; }
void setSupportMultipleWindows(bool support) { m_supportMultipleWindows = support; }
#endif
void setAuthorAndUserStylesEnabled(bool);
bool authorAndUserStylesEnabled() const { return m_authorAndUserStylesEnabled; }
void setFontRenderingMode(FontRenderingMode mode);
FontRenderingMode fontRenderingMode() const;
void setNeedsSiteSpecificQuirks(bool);
bool needsSiteSpecificQuirks() const { return m_needsSiteSpecificQuirks; }
#if ENABLE(WEB_ARCHIVE)
void setWebArchiveDebugModeEnabled(bool);
bool webArchiveDebugModeEnabled() const { return m_webArchiveDebugModeEnabled; }
#endif
void setLocalFileContentSniffingEnabled(bool);
bool localFileContentSniffingEnabled() const { return m_localFileContentSniffingEnabled; }
void setLocalStorageDatabasePath(const String&);
const String& localStorageDatabasePath() const { return m_localStorageDatabasePath; }
void setApplicationChromeMode(bool);
bool inApplicationChromeMode() const { return m_inApplicationChromeMode; }
void setOfflineWebApplicationCacheEnabled(bool);
bool offlineWebApplicationCacheEnabled() const { return m_offlineWebApplicationCacheEnabled; }
void setShouldPaintCustomScrollbars(bool);
bool shouldPaintCustomScrollbars() const { return m_shouldPaintCustomScrollbars; }
void setEnforceCSSMIMETypeInNoQuirksMode(bool);
bool enforceCSSMIMETypeInNoQuirksMode() { return m_enforceCSSMIMETypeInNoQuirksMode; }
void setMaximumDecodedImageSize(size_t size) { m_maximumDecodedImageSize = size; }
size_t maximumDecodedImageSize() const { return m_maximumDecodedImageSize; }
#if USE(SAFARI_THEME)
// Windows debugging pref (global) for switching between the Aqua look and a native windows look.
static void setShouldPaintNativeControls(bool);
static bool shouldPaintNativeControls() { return gShouldPaintNativeControls; }
#endif
void setAllowScriptsToCloseWindows(bool);
bool allowScriptsToCloseWindows() const { return m_allowScriptsToCloseWindows; }
void setEditingBehaviorType(EditingBehaviorType behavior) { m_editingBehaviorType = behavior; }
EditingBehaviorType editingBehaviorType() const { return static_cast<EditingBehaviorType>(m_editingBehaviorType); }
void setDownloadableBinaryFontsEnabled(bool);
bool downloadableBinaryFontsEnabled() const { return m_downloadableBinaryFontsEnabled; }
void setXSSAuditorEnabled(bool);
bool xssAuditorEnabled() const { return m_xssAuditorEnabled; }
#if ENABLE(LINK_PREFETCH)
void setLinkPrefetchEnabled(bool);
bool linkPrefetchEnabled() const { return m_linkPrefetchEnabled; }
#endif
void setCanvasUsesAcceleratedDrawing(bool);
bool canvasUsesAcceleratedDrawing() const { return m_canvasUsesAcceleratedDrawing; }
void setAcceleratedDrawingEnabled(bool);
bool acceleratedDrawingEnabled() const { return m_acceleratedDrawingEnabled; }
void setAcceleratedCompositingEnabled(bool);
bool acceleratedCompositingEnabled() const { return m_acceleratedCompositingEnabled; }
void setAcceleratedCompositingFor3DTransformsEnabled(bool);
bool acceleratedCompositingFor3DTransformsEnabled() const { return m_acceleratedCompositingFor3DTransformsEnabled; }
void setAcceleratedCompositingForVideoEnabled(bool);
bool acceleratedCompositingForVideoEnabled() const { return m_acceleratedCompositingForVideoEnabled; }
void setAcceleratedCompositingForPluginsEnabled(bool);
bool acceleratedCompositingForPluginsEnabled() const { return m_acceleratedCompositingForPluginsEnabled; }
void setAcceleratedCompositingForCanvasEnabled(bool);
bool acceleratedCompositingForCanvasEnabled() const { return m_acceleratedCompositingForCanvasEnabled; }
void setAcceleratedCompositingForAnimationEnabled(bool);
bool acceleratedCompositingForAnimationEnabled() const { return m_acceleratedCompositingForAnimationEnabled; }
void setShowDebugBorders(bool);
bool showDebugBorders() const { return m_showDebugBorders; }
void setShowRepaintCounter(bool);
bool showRepaintCounter() const { return m_showRepaintCounter; }
void setExperimentalNotificationsEnabled(bool);
bool experimentalNotificationsEnabled() const { return m_experimentalNotificationsEnabled; }
#if PLATFORM(WIN) || (OS(WINDOWS) && PLATFORM(WX))
static void setShouldUseHighResolutionTimers(bool);
static bool shouldUseHighResolutionTimers() { return gShouldUseHighResolutionTimers; }
#endif
void setPluginAllowedRunTime(unsigned);
unsigned pluginAllowedRunTime() const { return m_pluginAllowedRunTime; }
void setWebAudioEnabled(bool);
bool webAudioEnabled() const { return m_webAudioEnabled; }
void setWebGLEnabled(bool);
bool webGLEnabled() const { return m_webGLEnabled; }
void setOpenGLMultisamplingEnabled(bool);
bool openGLMultisamplingEnabled() const { return m_openGLMultisamplingEnabled; }
void setAccelerated2dCanvasEnabled(bool);
bool accelerated2dCanvasEnabled() const { return m_acceleratedCanvas2dEnabled; }
void setLoadDeferringEnabled(bool);
bool loadDeferringEnabled() const { return m_loadDeferringEnabled; }
void setTiledBackingStoreEnabled(bool);
bool tiledBackingStoreEnabled() const { return m_tiledBackingStoreEnabled; }
void setPaginateDuringLayoutEnabled(bool flag) { m_paginateDuringLayoutEnabled = flag; }
bool paginateDuringLayoutEnabled() const { return m_paginateDuringLayoutEnabled; }
#if ENABLE(FULLSCREEN_API)
void setFullScreenEnabled(bool flag) { m_fullScreenAPIEnabled = flag; }
bool fullScreenEnabled() const { return m_fullScreenAPIEnabled; }
#endif
void setAsynchronousSpellCheckingEnabled(bool flag) { m_asynchronousSpellCheckingEnabled = flag; }
bool asynchronousSpellCheckingEnabled() const { return m_asynchronousSpellCheckingEnabled; }
void setMemoryInfoEnabled(bool flag) { m_memoryInfoEnabled = flag; }
bool memoryInfoEnabled() const { return m_memoryInfoEnabled; }
// This setting will be removed when an HTML5 compatibility issue is
// resolved and WebKit implementation of interactive validation is
// completed. See http://webkit.org/b/40520, http://webkit.org/b/40747,
// and http://webkit.org/b/40908
void setInteractiveFormValidationEnabled(bool flag) { m_interactiveFormValidation = flag; }
bool interactiveFormValidationEnabled() const { return m_interactiveFormValidation; }
// Sets the maginication value for validation message timer.
// If the maginication value is N, a validation message disappears
// automatically after <message length> * N / 1000 seconds. If N is
// equal to or less than 0, a validation message doesn't disappears
// automaticaly. The default value is 50.
void setValidationMessageTimerMagnification(int newValue) { m_validationMessageTimerMagnification = newValue; }
int validationMessageTimerMaginification() const { return m_validationMessageTimerMagnification; }
void setUsePreHTML5ParserQuirks(bool flag) { m_usePreHTML5ParserQuirks = flag; }
bool usePreHTML5ParserQuirks() const { return m_usePreHTML5ParserQuirks; }
void setHyperlinkAuditingEnabled(bool flag) { m_hyperlinkAuditingEnabled = flag; }
bool hyperlinkAuditingEnabled() const { return m_hyperlinkAuditingEnabled; }
void setCrossOriginCheckInGetMatchedCSSRulesDisabled(bool flag) { m_crossOriginCheckInGetMatchedCSSRulesDisabled = flag; }
bool crossOriginCheckInGetMatchedCSSRulesDisabled() const { return m_crossOriginCheckInGetMatchedCSSRulesDisabled; }
void setUseQuickLookResourceCachingQuirks(bool flag) { m_useQuickLookResourceCachingQuirks = flag; }
bool useQuickLookResourceCachingQuirks() const { return m_useQuickLookResourceCachingQuirks; }
void setForceCompositingMode(bool flag) { m_forceCompositingMode = flag; }
bool forceCompositingMode() { return m_forceCompositingMode; }
void setShouldInjectUserScriptsInInitialEmptyDocument(bool flag) { m_shouldInjectUserScriptsInInitialEmptyDocument = flag; }
bool shouldInjectUserScriptsInInitialEmptyDocument() { return m_shouldInjectUserScriptsInInitialEmptyDocument; }
void setPasswordEchoEnabled(bool flag) { m_passwordEchoEnabled = flag; }
bool passwordEchoEnabled() const { return m_passwordEchoEnabled; }
void setPasswordEchoDurationInSeconds(double durationInSeconds) { m_passwordEchoDurationInSeconds = durationInSeconds; }
double passwordEchoDurationInSeconds() const { return m_passwordEchoDurationInSeconds; }
#if ENABLE(WEB_AUTOFILL)
void setAutoFillEnabled(bool flag) { m_autoFillEnabled = flag; }
bool autoFillEnabled() { return m_autoFillEnabled; }
#endif
#ifdef ANDROID_BLOCK_NETWORK_IMAGE
void setBlockNetworkImage(bool);
bool blockNetworkImage() const { return m_blockNetworkImage; }
#endif
void setMediaPlaybackRequiresUserGesture(bool flag) { m_mediaPlaybackRequiresUserGesture = flag; };
bool mediaPlaybackRequiresUserGesture() const { return m_mediaPlaybackRequiresUserGesture; }
void setMediaPlaybackAllowsInline(bool flag) { m_mediaPlaybackAllowsInline = flag; };
bool mediaPlaybackAllowsInline() const { return m_mediaPlaybackAllowsInline; }
private:
Page* m_page;
String m_defaultTextEncodingName;
String m_ftpDirectoryTemplatePath;
String m_localStorageDatabasePath;
KURL m_userStyleSheetLocation;
AtomicString m_standardFontFamily;
AtomicString m_fixedFontFamily;
AtomicString m_serifFontFamily;
AtomicString m_sansSerifFontFamily;
AtomicString m_cursiveFontFamily;
AtomicString m_fantasyFontFamily;
EditableLinkBehavior m_editableLinkBehavior;
TextDirectionSubmenuInclusionBehavior m_textDirectionSubmenuInclusionBehavior;
int m_minimumFontSize;
int m_minimumLogicalFontSize;
int m_defaultFontSize;
int m_defaultFixedFontSize;
int m_validationMessageTimerMagnification;
size_t m_maximumDecodedImageSize;
#if ENABLE(DOM_STORAGE)
unsigned m_sessionStorageQuota;
#endif
unsigned m_pluginAllowedRunTime;
unsigned m_editingBehaviorType;
#ifdef ANDROID_META_SUPPORT
// range is from 200 to 10,000. 0 is a special value means device-width.
// default is -1, which means undefined.
int m_viewport_width;
// range is from 223 to 10,000. 0 is a special value means device-height
// default is -1, which means undefined.
int m_viewport_height;
// range is from 1 to 1000 in percent. default is 0, which means undefined.
int m_viewport_initial_scale;
// range is from 1 to 1000 in percent. default is 0, which means undefined.
int m_viewport_minimum_scale;
// range is from 1 to 1000 in percent. default is 0, which means undefined.
int m_viewport_maximum_scale;
#endif
#ifdef ANDROID_LAYOUT
LayoutAlgorithm m_layoutAlgorithm;
#endif
double m_passwordEchoDurationInSeconds;
bool m_isSpatialNavigationEnabled : 1;
bool m_isJavaEnabled : 1;
bool m_loadsImagesAutomatically : 1;
bool m_loadsSiteIconsIgnoringImageLoadingSetting : 1;
bool m_privateBrowsingEnabled : 1;
bool m_caretBrowsingEnabled : 1;
bool m_areImagesEnabled : 1;
bool m_isMediaEnabled : 1;
bool m_arePluginsEnabled : 1;
bool m_localStorageEnabled : 1;
bool m_isJavaScriptEnabled : 1;
bool m_isWebSecurityEnabled : 1;
bool m_allowUniversalAccessFromFileURLs: 1;
bool m_allowFileAccessFromFileURLs: 1;
bool m_javaScriptCanOpenWindowsAutomatically : 1;
bool m_javaScriptCanAccessClipboard : 1;
bool m_shouldPrintBackgrounds : 1;
bool m_textAreasAreResizable : 1;
#if ENABLE(DASHBOARD_SUPPORT)
bool m_usesDashboardBackwardCompatibilityMode : 1;
#endif
bool m_needsAdobeFrameReloadingQuirk : 1;
bool m_needsKeyboardEventDisambiguationQuirks : 1;
bool m_treatsAnyTextCSSLinkAsStylesheet : 1;
bool m_needsLeopardMailQuirks : 1;
bool m_needsTigerMailQuirks : 1;
bool m_isDOMPasteAllowed : 1;
bool m_shrinksStandaloneImagesToFit : 1;
bool m_usesPageCache: 1;
bool m_showsURLsInToolTips : 1;
bool m_forceFTPDirectoryListings : 1;
bool m_developerExtrasEnabled : 1;
bool m_authorAndUserStylesEnabled : 1;
bool m_needsSiteSpecificQuirks : 1;
unsigned m_fontRenderingMode : 1;
bool m_frameFlatteningEnabled : 1;
bool m_webArchiveDebugModeEnabled : 1;
bool m_localFileContentSniffingEnabled : 1;
bool m_inApplicationChromeMode : 1;
bool m_offlineWebApplicationCacheEnabled : 1;
bool m_shouldPaintCustomScrollbars : 1;
bool m_enforceCSSMIMETypeInNoQuirksMode : 1;
bool m_usesEncodingDetector : 1;
bool m_allowScriptsToCloseWindows : 1;
bool m_canvasUsesAcceleratedDrawing : 1;
bool m_acceleratedDrawingEnabled : 1;
bool m_downloadableBinaryFontsEnabled : 1;
bool m_xssAuditorEnabled : 1;
#if ENABLE(LINK_PREFETCH)
bool m_linkPrefetchEnabled : 1;
#endif
bool m_acceleratedCompositingEnabled : 1;
bool m_acceleratedCompositingFor3DTransformsEnabled : 1;
bool m_acceleratedCompositingForVideoEnabled : 1;
bool m_acceleratedCompositingForPluginsEnabled : 1;
bool m_acceleratedCompositingForCanvasEnabled : 1;
bool m_acceleratedCompositingForAnimationEnabled : 1;
bool m_showDebugBorders : 1;
bool m_showRepaintCounter : 1;
bool m_experimentalNotificationsEnabled : 1;
bool m_webGLEnabled : 1;
bool m_openGLMultisamplingEnabled : 1;
bool m_webAudioEnabled : 1;
bool m_acceleratedCanvas2dEnabled : 1;
bool m_loadDeferringEnabled : 1;
bool m_tiledBackingStoreEnabled : 1;
bool m_paginateDuringLayoutEnabled : 1;
bool m_dnsPrefetchingEnabled : 1;
#if ENABLE(FULLSCREEN_API)
bool m_fullScreenAPIEnabled : 1;
#endif
bool m_asynchronousSpellCheckingEnabled: 1;
bool m_memoryInfoEnabled: 1;
bool m_interactiveFormValidation: 1;
bool m_usePreHTML5ParserQuirks: 1;
bool m_hyperlinkAuditingEnabled : 1;
bool m_crossOriginCheckInGetMatchedCSSRulesDisabled : 1;
bool m_useQuickLookResourceCachingQuirks : 1;
bool m_forceCompositingMode : 1;
bool m_shouldInjectUserScriptsInInitialEmptyDocument : 1;
#ifdef ANDROID_META_SUPPORT
// default is yes
bool m_viewport_user_scalable : 1;
// range is from 70 to 400. 0 is a special value means device-dpi
// default is -1, which means undefined.
int m_viewport_target_densitydpi;
// default is yes
bool m_format_detection_telephone : 1;
// default is yes
bool m_format_detection_address : 1;
// default is yes
bool m_format_detection_email : 1;
bool m_default_format_detection : 1;
#endif
#ifdef ANDROID_LAYOUT
bool m_useWideViewport : 1;
#endif
#ifdef ANDROID_MULTIPLE_WINDOWS
bool m_supportMultipleWindows : 1;
#endif
#ifdef ANDROID_BLOCK_NETWORK_IMAGE
bool m_blockNetworkImage : 1;
#endif
#if ENABLE(WEB_AUTOFILL)
bool m_autoFillEnabled: 1;
#endif
#ifdef ANDROID_PLUGINS
bool m_pluginsOnDemand : 1;
#endif
bool m_mediaPlaybackRequiresUserGesture : 1;
bool m_mediaPlaybackAllowsInline : 1;
bool m_passwordEchoEnabled : 1;
#if USE(SAFARI_THEME)
static bool gShouldPaintNativeControls;
#endif
#if PLATFORM(WIN) || (OS(WINDOWS) && PLATFORM(WX))
static bool gShouldUseHighResolutionTimers;
#endif
};
} // namespace WebCore
#endif // Settings_h