#ifndef Settings_h
#define Settings_h
#include "AtomicString.h"
#include "FontRenderingMode.h"
#include "KURL.h"
#include "ZoomMode.h"
#include "Document.h"
namespace WebCore {
class Page;
enum EditableLinkBehavior {
EditableLinkDefaultBehavior,
EditableLinkAlwaysLive,
EditableLinkOnlyLiveWithShiftKey,
EditableLinkLiveWhenNotFocused,
EditableLinkNeverLive
};
enum TextDirectionSubmenuInclusionBehavior {
TextDirectionSubmenuNeverIncluded,
TextDirectionSubmenuAutomaticallyIncluded,
TextDirectionSubmenuAlwaysIncluded
};
enum EditingBehavior { EditingMacBehavior, EditingWindowsBehavior };
class Settings : public Noncopyable {
public:
Settings(Page*);
void setStandardFontFamily(const AtomicString&);
const AtomicString& standardFontFamily() const { return m_standardFontFamily; }
void setFixedFontFamily(const AtomicString&);
const AtomicString& fixedFontFamily() const { return m_fixedFontFamily; }
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; }
void setLoadsImagesAutomatically(bool);
bool loadsImagesAutomatically() const { return m_loadsImagesAutomatically; }
void setJavaScriptEnabled(bool);
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; }
void setLocalStorageEnabled(bool);
bool localStorageEnabled() const { return m_localStorageEnabled; }
#if ENABLE(DOM_STORAGE)
void setLocalStorageQuota(unsigned);
unsigned localStorageQuota() const { return m_localStorageQuota; }
void setSessionStorageQuota(unsigned);
unsigned sessionStorageQuota() const { return m_sessionStorageQuota; }
#endif
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; }
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; }
void setStandalone(bool flag);
bool standalone() const { return m_standalone; }
void setTelephoneNumberParsingEnabled(bool flag) { m_telephoneNumberParsingEnabled = flag; }
bool telephoneNumberParsingEnabled() const { return m_telephoneNumberParsingEnabled; }
void setMediaPlaybackAllowsInline(bool flag) { m_mediaPlaybackAllowsInline = flag; }
bool mediaPlaybackAllowsInline() const { return m_mediaPlaybackAllowsInline; }
void setMediaPlaybackRequiresUserAction(bool flag) { m_mediaPlaybackRequiresUserAction = flag; }
bool mediaPlaybackRequiresUserAction() const { return m_mediaPlaybackRequiresUserAction; }
void setMediaDataLoadsAutomatically(bool flag) { m_mediaDataLoadsAutomatically = flag; }
bool mediaDataLoadsAutomatically() const { return m_mediaDataLoadsAutomatically; }
void setMinimumZoomFontSize(float size) { m_minimumZoomFontSize = size; }
float minimumZoomFontSize() const { return m_minimumZoomFontSize; }
void setLayoutInterval(int t) { m_layoutInterval = t < cLayoutScheduleThreshold ? cLayoutScheduleThreshold : t; }
int layoutInterval() const { return m_layoutInterval; }
void setMaxParseDuration(double maxParseDuration) { m_maxParseDuration = maxParseDuration; }
double maxParseDuration() const { return m_maxParseDuration; }
void setAlwaysUseBaselineOfPrimaryFont(bool flag) { m_alwaysUseBaselineOfPrimaryFont = flag; }
bool alwaysUseBaselineOfPrimaryFont() const { return m_alwaysUseBaselineOfPrimaryFont; }
void setAllowMultiElementImplicitSubmission(bool flag) { m_allowMultiElementImplicitFormSubmission = flag; }
bool allowMultiElementImplicitSubmission() { return m_allowMultiElementImplicitFormSubmission; }
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; }
void setWebArchiveDebugModeEnabled(bool);
bool webArchiveDebugModeEnabled() const { return m_webArchiveDebugModeEnabled; }
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 setZoomMode(ZoomMode);
ZoomMode zoomMode() const { return m_zoomMode; }
void setEnforceCSSMIMETypeInStrictMode(bool);
bool enforceCSSMIMETypeInStrictMode() { return m_enforceCSSMIMETypeInStrictMode; }
void setMaximumDecodedImageSize(size_t size) { m_maximumDecodedImageSize = size; }
size_t maximumDecodedImageSize() const { return m_maximumDecodedImageSize; }
#if USE(SAFARI_THEME)
static void setShouldPaintNativeControls(bool);
static bool shouldPaintNativeControls() { return gShouldPaintNativeControls; }
#endif
void setAllowScriptsToCloseWindows(bool);
bool allowScriptsToCloseWindows() const { return m_allowScriptsToCloseWindows; }
void setEditingBehavior(EditingBehavior behavior) { m_editingBehavior = behavior; }
EditingBehavior editingBehavior() const { return static_cast<EditingBehavior>(m_editingBehavior); }
void setDownloadableBinaryFontsEnabled(bool);
bool downloadableBinaryFontsEnabled() const { return m_downloadableBinaryFontsEnabled; }
void setXSSAuditorEnabled(bool);
bool xssAuditorEnabled() const { return m_xssAuditorEnabled; }
void setAcceleratedCompositingEnabled(bool);
bool acceleratedCompositingEnabled() const { return m_acceleratedCompositingEnabled; }
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 setWebGLEnabled(bool);
bool webGLEnabled() const { return m_webGLEnabled; }
void setLoadDeferringEnabled(bool);
bool loadDeferringEnabled() const { return m_loadDeferringEnabled; }
void setTiledBackingStoreEnabled(bool);
bool tiledBackingStoreEnabled() const { return m_tiledBackingStoreEnabled; }
void setInteractiveFormValidationEnabled(bool flag) { m_interactiveFormValidation = flag; }
bool interactiveFormValidationEnabled() const { return m_interactiveFormValidation; }
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;
size_t m_maximumDecodedImageSize;
float m_minimumZoomFontSize;
int m_layoutInterval;
double m_maxParseDuration;
bool m_alwaysUseBaselineOfPrimaryFont;
bool m_allowMultiElementImplicitFormSubmission;
#if ENABLE(DOM_STORAGE)
unsigned m_localStorageQuota;
unsigned m_sessionStorageQuota;
#endif
unsigned m_pluginAllowedRunTime;
ZoomMode m_zoomMode;
bool m_isSpatialNavigationEnabled : 1;
bool m_isJavaEnabled : 1;
bool m_loadsImagesAutomatically : 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_standalone : 1;
bool m_telephoneNumberParsingEnabled : 1;
bool m_mediaPlaybackAllowsInline : 1;
bool m_mediaPlaybackRequiresUserAction : 1;
bool m_mediaDataLoadsAutomatically : 1;
bool m_webArchiveDebugModeEnabled : 1;
bool m_localFileContentSniffingEnabled : 1;
bool m_inApplicationChromeMode : 1;
bool m_offlineWebApplicationCacheEnabled : 1;
bool m_shouldPaintCustomScrollbars : 1;
bool m_enforceCSSMIMETypeInStrictMode : 1;
bool m_usesEncodingDetector : 1;
bool m_allowScriptsToCloseWindows : 1;
unsigned m_editingBehavior : 1;
bool m_downloadableBinaryFontsEnabled : 1;
bool m_xssAuditorEnabled : 1;
bool m_acceleratedCompositingEnabled : 1;
bool m_showDebugBorders : 1;
bool m_showRepaintCounter : 1;
bool m_experimentalNotificationsEnabled : 1;
bool m_webGLEnabled : 1;
bool m_loadDeferringEnabled : 1;
bool m_tiledBackingStoreEnabled : 1;
bool m_dnsPrefetchingEnabled : 1;
bool m_interactiveFormValidation: 1;
#if USE(SAFARI_THEME)
static bool gShouldPaintNativeControls;
#endif
#if PLATFORM(WIN) || (OS(WINDOWS) && PLATFORM(WX))
static bool gShouldUseHighResolutionTimers;
#endif
};
}
#endif // Settings_h