diff options
Diffstat (limited to 'Source/WebCore/page/Settings.h')
-rw-r--r-- | Source/WebCore/page/Settings.h | 450 |
1 files changed, 251 insertions, 199 deletions
diff --git a/Source/WebCore/page/Settings.h b/Source/WebCore/page/Settings.h index a3e527d52..7fc5708ec 100644 --- a/Source/WebCore/page/Settings.h +++ b/Source/WebCore/page/Settings.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2003, 2006, 2007, 2008, 2009, 2011, 2012, 2013 Apple Inc. All rights reserved. + * Copyright (C) 2003-2016 Apple Inc. All rights reserved. * (C) 2006 Graham Dennis (graham.dennis@gmail.com) * * Redistribution and use in source and binary forms, with or without @@ -11,10 +11,10 @@ * 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 + * THIS SOFTWARE IS PROVIDED BY APPLE 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 + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE 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 @@ -24,22 +24,28 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef Settings_h -#define Settings_h +#pragma once +#include "ClipboardAccessPolicy.h" #include "EditingBehaviorTypes.h" -#include "FontRenderingMode.h" #include "IntSize.h" -#include "URL.h" #include "SecurityOrigin.h" #include "SettingsMacros.h" +#include "TextFlags.h" #include "Timer.h" +#include "URL.h" +#include "WritingMode.h" #include <chrono> +#include <runtime/RuntimeFlags.h> +#include <unicode/uscript.h> #include <wtf/HashMap.h> #include <wtf/RefCounted.h> #include <wtf/text/AtomicString.h> #include <wtf/text/AtomicStringHash.h> -#include <wtf/unicode/Unicode.h> + +#if ENABLE(DATA_DETECTION) +#include "DataDetection.h" +#endif namespace WebCore { @@ -60,262 +66,270 @@ enum TextDirectionSubmenuInclusionBehavior { TextDirectionSubmenuAlwaysIncluded }; +enum DebugOverlayRegionFlags { + NonFastScrollableRegion = 1 << 0, + WheelEventHandlerRegion = 1 << 1, +}; + +enum class UserInterfaceDirectionPolicy { + Content, + System +}; + +enum PDFImageCachingPolicy { + PDFImageCachingEnabled, + PDFImageCachingBelowMemoryLimit, + PDFImageCachingDisabled, + PDFImageCachingClipBoundsOnly, +#if PLATFORM(IOS) + PDFImageCachingDefault = PDFImageCachingBelowMemoryLimit +#else + PDFImageCachingDefault = PDFImageCachingEnabled +#endif +}; + +typedef unsigned DebugOverlayRegions; + class Settings : public RefCounted<Settings> { WTF_MAKE_NONCOPYABLE(Settings); WTF_MAKE_FAST_ALLOCATED; public: - static PassRefPtr<Settings> create(Page*); + static Ref<Settings> create(Page*); ~Settings(); void pageDestroyed() { m_page = nullptr; } - void setStandardFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON); - const AtomicString& standardFontFamily(UScriptCode = USCRIPT_COMMON) const; - - void setFixedFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON); - const AtomicString& fixedFontFamily(UScriptCode = USCRIPT_COMMON) const; + enum class ForcedAccessibilityValue { System, On, Off }; + static const Settings::ForcedAccessibilityValue defaultForcedColorsAreInvertedAccessibilityValue = ForcedAccessibilityValue::System; + static const Settings::ForcedAccessibilityValue defaultForcedDisplayIsMonochromeAccessibilityValue = ForcedAccessibilityValue::System; + static const Settings::ForcedAccessibilityValue defaultForcedPrefersReducedMotionAccessibilityValue = ForcedAccessibilityValue::System; - void setSerifFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON); - const AtomicString& serifFontFamily(UScriptCode = USCRIPT_COMMON) const; + WEBCORE_EXPORT void setStandardFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON); + WEBCORE_EXPORT const AtomicString& standardFontFamily(UScriptCode = USCRIPT_COMMON) const; - void setSansSerifFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON); - const AtomicString& sansSerifFontFamily(UScriptCode = USCRIPT_COMMON) const; + WEBCORE_EXPORT void setFixedFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON); + WEBCORE_EXPORT const AtomicString& fixedFontFamily(UScriptCode = USCRIPT_COMMON) const; - void setCursiveFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON); - const AtomicString& cursiveFontFamily(UScriptCode = USCRIPT_COMMON) const; + WEBCORE_EXPORT void setSerifFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON); + WEBCORE_EXPORT const AtomicString& serifFontFamily(UScriptCode = USCRIPT_COMMON) const; - void setFantasyFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON); - const AtomicString& fantasyFontFamily(UScriptCode = USCRIPT_COMMON) const; + WEBCORE_EXPORT void setSansSerifFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON); + WEBCORE_EXPORT const AtomicString& sansSerifFontFamily(UScriptCode = USCRIPT_COMMON) const; - void setPictographFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON); - const AtomicString& pictographFontFamily(UScriptCode = USCRIPT_COMMON) const; + WEBCORE_EXPORT void setCursiveFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON); + WEBCORE_EXPORT const AtomicString& cursiveFontFamily(UScriptCode = USCRIPT_COMMON) const; -#if ENABLE(TEXT_AUTOSIZING) - void setTextAutosizingEnabled(bool); - bool textAutosizingEnabled() const { return m_textAutosizingEnabled; } + WEBCORE_EXPORT void setFantasyFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON); + WEBCORE_EXPORT const AtomicString& fantasyFontFamily(UScriptCode = USCRIPT_COMMON) const; - void setTextAutosizingFontScaleFactor(float); - float textAutosizingFontScaleFactor() const { return m_textAutosizingFontScaleFactor; } + WEBCORE_EXPORT void setPictographFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON); + WEBCORE_EXPORT const AtomicString& pictographFontFamily(UScriptCode = USCRIPT_COMMON) const; - // Only set by Layout Tests, and only used if textAutosizingEnabled() returns true. - void setTextAutosizingWindowSizeOverride(const IntSize&); - const IntSize& textAutosizingWindowSizeOverride() const { return m_textAutosizingWindowSizeOverride; } -#endif + WEBCORE_EXPORT static bool defaultTextAutosizingEnabled(); + WEBCORE_EXPORT static float defaultMinimumZoomFontSize(); // Only set by Layout Tests. - void setMediaTypeOverride(const String&); + WEBCORE_EXPORT void setMediaTypeOverride(const String&); const String& mediaTypeOverride() const { return m_mediaTypeOverride; } // Unlike areImagesEnabled, this only suppresses the network load of // the image URL. A cached image will still be rendered if requested. - void setLoadsImagesAutomatically(bool); + WEBCORE_EXPORT void setLoadsImagesAutomatically(bool); bool loadsImagesAutomatically() const { return m_loadsImagesAutomatically; } // Clients that execute script should call ScriptController::canExecuteScripts() // instead of this function. ScriptController::canExecuteScripts() checks the // HTML sandbox, plug-in sandboxing, and other important details. bool isScriptEnabled() const { return m_isScriptEnabled; } - void setScriptEnabled(bool); + WEBCORE_EXPORT void setScriptEnabled(bool); SETTINGS_GETTERS_AND_SETTERS - void setScreenFontSubstitutionEnabled(bool); - bool screenFontSubstitutionEnabled() const { return m_screenFontSubstitutionEnabled; } - - void setJavaEnabled(bool); + WEBCORE_EXPORT void setJavaEnabled(bool); bool isJavaEnabled() const { return m_isJavaEnabled; } // This settings is only consulted if isJavaEnabled() returns true; - void setJavaEnabledForLocalFiles(bool); + WEBCORE_EXPORT void setJavaEnabledForLocalFiles(bool); bool isJavaEnabledForLocalFiles() const { return m_isJavaEnabledForLocalFiles; } - void setImagesEnabled(bool); + WEBCORE_EXPORT void setImagesEnabled(bool); bool areImagesEnabled() const { return m_areImagesEnabled; } - void setPluginsEnabled(bool); + WEBCORE_EXPORT void setPreferMIMETypeForImages(bool); + bool preferMIMETypeForImages() const { return m_preferMIMETypeForImages; } + + WEBCORE_EXPORT void setPluginsEnabled(bool); bool arePluginsEnabled() const { return m_arePluginsEnabled; } - // 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 setDNSPrefetchingEnabled(bool); + WEBCORE_EXPORT void setDNSPrefetchingEnabled(bool); bool dnsPrefetchingEnabled() const { return m_dnsPrefetchingEnabled; } - void setUserStyleSheetLocation(const URL&); + WEBCORE_EXPORT void setUserStyleSheetLocation(const URL&); const URL& userStyleSheetLocation() const { return m_userStyleSheetLocation; } - void setNeedsAdobeFrameReloadingQuirk(bool); + WEBCORE_EXPORT void setNeedsAdobeFrameReloadingQuirk(bool); bool needsAcrobatFrameReloadingQuirk() const { return m_needsAdobeFrameReloadingQuirk; } - static void setDefaultMinDOMTimerInterval(double); // Interval specified in seconds. - static double defaultMinDOMTimerInterval(); - - static void setHiddenPageDOMTimerAlignmentInterval(double); // Interval specified in seconds. - static double hiddenPageDOMTimerAlignmentInterval(); - - void setMinDOMTimerInterval(double); // Per-page; initialized to default value. - double minDOMTimerInterval(); + WEBCORE_EXPORT void setMinimumDOMTimerInterval(std::chrono::milliseconds); // Initialized to DOMTimer::defaultMinimumInterval(). + std::chrono::milliseconds minimumDOMTimerInterval() const { return m_minimumDOMTimerInterval; } - static void setDefaultDOMTimerAlignmentInterval(double); - static double defaultDOMTimerAlignmentInterval(); + WEBCORE_EXPORT void setLayoutInterval(Seconds); + Seconds layoutInterval() const { return m_layoutInterval; } - void setDOMTimerAlignmentInterval(double); - double domTimerAlignmentInterval() const; - - void setLayoutInterval(std::chrono::milliseconds); - std::chrono::milliseconds layoutInterval() const { return m_layoutInterval; } - -#if ENABLE(HIDDEN_PAGE_DOM_TIMER_THROTTLING) bool hiddenPageDOMTimerThrottlingEnabled() const { return m_hiddenPageDOMTimerThrottlingEnabled; } - void setHiddenPageDOMTimerThrottlingEnabled(bool); -#endif - -#if PLATFORM(IOS) - // FIXME: This setting isn't specific to iOS. - void setMaxParseDuration(double maxParseDuration) { m_maxParseDuration = maxParseDuration; } - double maxParseDuration() const { return m_maxParseDuration; } - - void setStandalone(bool); - bool standalone() const { return m_standalone; } + WEBCORE_EXPORT void setHiddenPageDOMTimerThrottlingEnabled(bool); + bool hiddenPageDOMTimerThrottlingAutoIncreases() const { return m_hiddenPageDOMTimerThrottlingAutoIncreases; } + WEBCORE_EXPORT void setHiddenPageDOMTimerThrottlingAutoIncreases(bool); - void setTelephoneNumberParsingEnabled(bool flag) { m_telephoneNumberParsingEnabled = flag; } - bool telephoneNumberParsingEnabled() const { return m_telephoneNumberParsingEnabled; } - - void setMediaDataLoadsAutomatically(bool flag) { m_mediaDataLoadsAutomatically = flag; } - bool mediaDataLoadsAutomatically() const { return m_mediaDataLoadsAutomatically; } - - void setShouldTransformsAffectOverflow(bool flag) { m_shouldTransformsAffectOverflow = flag; } - bool shouldTransformsAffectOverflow() const { return m_shouldTransformsAffectOverflow; } - - void setShouldDispatchJavaScriptWindowOnErrorEvents(bool flag) { m_shouldDispatchJavaScriptWindowOnErrorEvents = flag; } - bool shouldDispatchJavaScriptWindowOnErrorEvents() const { return m_shouldDispatchJavaScriptWindowOnErrorEvents; } - - void setAlwaysUseBaselineOfPrimaryFont(bool flag) { m_alwaysUseBaselineOfPrimaryFont = flag; } - bool alwaysUseBaselineOfPrimaryFont() const { return m_alwaysUseBaselineOfPrimaryFont; } - - void setAlwaysUseAcceleratedOverflowScroll(bool flag) { m_alwaysUseAcceleratedOverflowScroll = flag; } - bool alwaysUseAcceleratedOverflowScroll() const { return m_alwaysUseAcceleratedOverflowScroll; } -#endif - - void setUsesPageCache(bool); + WEBCORE_EXPORT void setUsesPageCache(bool); bool usesPageCache() const { return m_usesPageCache; } void setFontRenderingMode(FontRenderingMode mode); FontRenderingMode fontRenderingMode() const; -#if ENABLE(CSS_STICKY_POSITION) - void setCSSStickyPositionEnabled(bool enabled) { m_cssStickyPositionEnabled = enabled; } - bool cssStickyPositionEnabled() const { return m_cssStickyPositionEnabled; } -#else - void setCSSStickyPositionEnabled(bool) { } - bool cssStickyPositionEnabled() const { return false; } -#endif - - void setShowTiledScrollingIndicator(bool); + WEBCORE_EXPORT void setShowTiledScrollingIndicator(bool); bool showTiledScrollingIndicator() const { return m_showTiledScrollingIndicator; } +#if ENABLE(RESOURCE_USAGE) + bool resourceUsageOverlayVisible() const { return m_resourceUsageOverlayVisible; } + WEBCORE_EXPORT void setResourceUsageOverlayVisible(bool); +#endif + #if PLATFORM(WIN) static void setShouldUseHighResolutionTimers(bool); static bool shouldUseHighResolutionTimers() { return gShouldUseHighResolutionTimers; } #endif - void setTiledBackingStoreEnabled(bool); - bool tiledBackingStoreEnabled() const { return m_tiledBackingStoreEnabled; } + static bool isPostLoadCPUUsageMeasurementEnabled(); + static bool isPostBackgroundingCPUUsageMeasurementEnabled(); + static bool isPerActivityStateCPUUsageMeasurementEnabled(); + + static bool isPostLoadMemoryUsageMeasurementEnabled(); + static bool isPostBackgroundingMemoryUsageMeasurementEnabled(); - void setBackgroundShouldExtendBeyondPage(bool); + static bool globalConstRedeclarationShouldThrow(); + + WEBCORE_EXPORT void setBackgroundShouldExtendBeyondPage(bool); bool backgroundShouldExtendBeyondPage() const { return m_backgroundShouldExtendBeyondPage; } #if USE(AVFOUNDATION) - static void setAVFoundationEnabled(bool flag); + WEBCORE_EXPORT static void setAVFoundationEnabled(bool flag); static bool isAVFoundationEnabled() { return gAVFoundationEnabled; } + WEBCORE_EXPORT static void setAVFoundationNSURLSessionEnabled(bool flag); + static bool isAVFoundationNSURLSessionEnabled() { return gAVFoundationNSURLSessionEnabled; } #endif -#if PLATFORM(MAC) - static void setQTKitEnabled(bool flag); +#if PLATFORM(COCOA) + WEBCORE_EXPORT static void setQTKitEnabled(bool flag); static bool isQTKitEnabled() { return gQTKitEnabled; } +#else + static bool isQTKitEnabled() { return false; } #endif - static const unsigned defaultMaximumHTMLParserDOMTreeDepth = 512; - -#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; } +#if USE(GSTREAMER) + WEBCORE_EXPORT static void setGStreamerEnabled(bool flag); + static bool isGStreamerEnabled() { return gGStreamerEnabled; } #endif - static void setMockScrollbarsEnabled(bool flag); - static bool mockScrollbarsEnabled(); + static const unsigned defaultMaximumHTMLParserDOMTreeDepth = 512; + static const unsigned defaultMaximumRenderTreeDepth = 512; + + WEBCORE_EXPORT static void setMockScrollbarsEnabled(bool flag); + WEBCORE_EXPORT static bool mockScrollbarsEnabled(); - static void setUsesOverlayScrollbars(bool flag); + WEBCORE_EXPORT static void setUsesOverlayScrollbars(bool flag); static bool usesOverlayScrollbars(); + WEBCORE_EXPORT static void setUsesMockScrollAnimator(bool); + static bool usesMockScrollAnimator(); + #if ENABLE(TOUCH_EVENTS) void setTouchEventEmulationEnabled(bool enabled) { m_touchEventEmulationEnabled = enabled; } bool isTouchEventEmulationEnabled() const { return m_touchEventEmulationEnabled; } #endif - void setStorageBlockingPolicy(SecurityOrigin::StorageBlockingPolicy); + WEBCORE_EXPORT void setStorageBlockingPolicy(SecurityOrigin::StorageBlockingPolicy); SecurityOrigin::StorageBlockingPolicy storageBlockingPolicy() const { return m_storageBlockingPolicy; } - void setScrollingPerformanceLoggingEnabled(bool); + WEBCORE_EXPORT void setScrollingPerformanceLoggingEnabled(bool); bool scrollingPerformanceLoggingEnabled() { return m_scrollingPerformanceLoggingEnabled; } - - void setAggressiveTileRetentionEnabled(bool); - bool aggressiveTileRetentionEnabled() { return m_aggressiveTileRetentionEnabled; } - static void setShouldRespectPriorityInCSSAttributeSetters(bool); + WEBCORE_EXPORT static void setShouldRespectPriorityInCSSAttributeSetters(bool); static bool shouldRespectPriorityInCSSAttributeSetters(); void setTimeWithoutMouseMovementBeforeHidingControls(double time) { m_timeWithoutMouseMovementBeforeHidingControls = time; } double timeWithoutMouseMovementBeforeHidingControls() const { return m_timeWithoutMouseMovementBeforeHidingControls; } -#if ENABLE(PAGE_VISIBILITY_API) bool hiddenPageCSSAnimationSuspensionEnabled() const { return m_hiddenPageCSSAnimationSuspensionEnabled; } - void setHiddenPageCSSAnimationSuspensionEnabled(bool); -#endif + WEBCORE_EXPORT void setHiddenPageCSSAnimationSuspensionEnabled(bool); - void setFontFallbackPrefersPictographs(bool); + WEBCORE_EXPORT void setFontFallbackPrefersPictographs(bool); bool fontFallbackPrefersPictographs() const { return m_fontFallbackPrefersPictographs; } + WEBCORE_EXPORT void setWebFontsAlwaysFallBack(bool); + bool webFontsAlwaysFallBack() const { return m_webFontsAlwaysFallBack; } + static bool lowPowerVideoAudioBufferSizeEnabled() { return gLowPowerVideoAudioBufferSizeEnabled; } - static void setLowPowerVideoAudioBufferSizeEnabled(bool); + WEBCORE_EXPORT static void setLowPowerVideoAudioBufferSizeEnabled(bool); -#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) - static void setVideoPluginProxyEnabled(bool flag); - static bool isVideoPluginProxyEnabled() { return gVideoPluginProxyEnabled; } -#endif + static bool resourceLoadStatisticsEnabled() { return gResourceLoadStatisticsEnabledEnabled; } + WEBCORE_EXPORT static void setResourceLoadStatisticsEnabled(bool); #if PLATFORM(IOS) - static void setAudioSessionCategoryOverride(unsigned); + WEBCORE_EXPORT static void setAudioSessionCategoryOverride(unsigned); static unsigned audioSessionCategoryOverride(); - static void setNetworkDataUsageTrackingEnabled(bool); + WEBCORE_EXPORT static void setNetworkDataUsageTrackingEnabled(bool); static bool networkDataUsageTrackingEnabled(); - static void setNetworkInterfaceName(const String&); + WEBCORE_EXPORT static void setNetworkInterfaceName(const String&); static const String& networkInterfaceName(); +#if HAVE(AVKIT) static void setAVKitEnabled(bool flag) { gAVKitEnabled = flag; } +#endif static bool avKitEnabled() { return gAVKitEnabled; } + + static void setShouldOptOutOfNetworkStateObservation(bool flag) { gShouldOptOutOfNetworkStateObservation = flag; } + static bool shouldOptOutOfNetworkStateObservation() { return gShouldOptOutOfNetworkStateObservation; } + + static void setShouldManageAudioSessionCategory(bool flag) { gManageAudioSession = flag; } + static bool shouldManageAudioSessionCategory() { return gManageAudioSession; } +#endif + +#if ENABLE(LEGACY_ENCRYPTED_MEDIA) + void setMediaKeysStorageDirectory(const String& directory) { m_mediaKeysStorageDirectory = directory; } + const String& mediaKeysStorageDirectory() const { return m_mediaKeysStorageDirectory; } +#endif + +#if ENABLE(MEDIA_STREAM) + void setMediaDeviceIdentifierStorageDirectory(const String& directory) { m_mediaDeviceIdentifierStorageDirectory = directory; } + const String& mediaDeviceIdentifierStorageDirectory() const { return m_mediaDeviceIdentifierStorageDirectory; } + + static bool mockCaptureDevicesEnabled(); + WEBCORE_EXPORT static void setMockCaptureDevicesEnabled(bool); + + bool mediaCaptureRequiresSecureConnection() const; + WEBCORE_EXPORT static void setMediaCaptureRequiresSecureConnection(bool); #endif +#if ENABLE(APPLE_PAY) + bool applePayEnabled() const { return m_applePayEnabled; } + void setApplePayEnabled(bool applePayEnabled) { m_applePayEnabled = applePayEnabled; } + + bool applePayCapabilityDisclosureAllowed() const { return m_applePayCapabilityDisclosureAllowed; } + void setApplePayCapabilityDisclosureAllowed(bool applePayCapabilityDisclosureAllowed) { m_applePayCapabilityDisclosureAllowed = applePayCapabilityDisclosureAllowed; } +#endif + + WEBCORE_EXPORT void setForcePendingWebGLPolicy(bool); + bool isForcePendingWebGLPolicy() const { return m_forcePendingWebGLPolicy; } + + WEBCORE_EXPORT static void setAllowsAnySSLCertificate(bool); + static bool allowsAnySSLCertificate(); + private: explicit Settings(Page*); void initializeDefaultFontFamilies(); - static bool shouldEnableScreenFontSubstitutionByDefault(); Page* m_page; @@ -323,44 +337,22 @@ private: URL m_userStyleSheetLocation; const std::unique_ptr<FontGenericFamilies> m_fontGenericFamilies; SecurityOrigin::StorageBlockingPolicy m_storageBlockingPolicy; - std::chrono::milliseconds m_layoutInterval; -#if PLATFORM(IOS) - double m_maxParseDuration; -#endif -#if ENABLE(TEXT_AUTOSIZING) - float m_textAutosizingFontScaleFactor; - IntSize m_textAutosizingWindowSizeOverride; - bool m_textAutosizingEnabled : 1; -#endif + Seconds m_layoutInterval; + std::chrono::milliseconds m_minimumDOMTimerInterval; SETTINGS_MEMBER_VARIABLES - bool m_screenFontSubstitutionEnabled : 1; bool m_isJavaEnabled : 1; bool m_isJavaEnabledForLocalFiles : 1; bool m_loadsImagesAutomatically : 1; - bool m_privateBrowsingEnabled : 1; bool m_areImagesEnabled : 1; + bool m_preferMIMETypeForImages : 1; bool m_arePluginsEnabled : 1; bool m_isScriptEnabled : 1; bool m_needsAdobeFrameReloadingQuirk : 1; bool m_usesPageCache : 1; unsigned m_fontRenderingMode : 1; -#if PLATFORM(IOS) - bool m_standalone : 1; - bool m_telephoneNumberParsingEnabled : 1; - bool m_mediaDataLoadsAutomatically : 1; - bool m_shouldTransformsAffectOverflow : 1; - bool m_shouldDispatchJavaScriptWindowOnErrorEvents : 1; - bool m_alwaysUseBaselineOfPrimaryFont : 1; - bool m_allowMultiElementImplicitFormSubmission : 1; - bool m_alwaysUseAcceleratedOverflowScroll : 1; -#endif -#if ENABLE(CSS_STICKY_POSITION) - bool m_cssStickyPositionEnabled : 1; -#endif bool m_showTiledScrollingIndicator : 1; - bool m_tiledBackingStoreEnabled : 1; bool m_backgroundShouldExtendBeyondPage : 1; bool m_dnsPrefetchingEnabled : 1; @@ -368,56 +360,116 @@ private: bool m_touchEventEmulationEnabled : 1; #endif bool m_scrollingPerformanceLoggingEnabled : 1; - bool m_aggressiveTileRetentionEnabled : 1; double m_timeWithoutMouseMovementBeforeHidingControls; - Timer<Settings> m_setImageLoadingSettingsTimer; - void imageLoadingSettingsTimerFired(Timer<Settings>*); + Timer m_setImageLoadingSettingsTimer; + void imageLoadingSettingsTimerFired(); -#if ENABLE(HIDDEN_PAGE_DOM_TIMER_THROTTLING) bool m_hiddenPageDOMTimerThrottlingEnabled : 1; -#endif -#if ENABLE(PAGE_VISIBILITY_API) bool m_hiddenPageCSSAnimationSuspensionEnabled : 1; -#endif bool m_fontFallbackPrefersPictographs : 1; + bool m_webFontsAlwaysFallBack : 1; - static double gDefaultMinDOMTimerInterval; - static double gDefaultDOMTimerAlignmentInterval; + bool m_forcePendingWebGLPolicy : 1; + +#if ENABLE(RESOURCE_USAGE) + bool m_resourceUsageOverlayVisible { false }; +#endif + + bool m_hiddenPageDOMTimerThrottlingAutoIncreases { false }; #if USE(AVFOUNDATION) - static bool gAVFoundationEnabled; + WEBCORE_EXPORT static bool gAVFoundationEnabled; + WEBCORE_EXPORT static bool gAVFoundationNSURLSessionEnabled; #endif -#if PLATFORM(MAC) - static bool gQTKitEnabled; +#if PLATFORM(COCOA) + WEBCORE_EXPORT static bool gQTKitEnabled; #endif - + +#if USE(GSTREAMER) + WEBCORE_EXPORT static bool gGStreamerEnabled; +#endif + static bool gMockScrollbarsEnabled; static bool gUsesOverlayScrollbars; + static bool gMockScrollAnimatorEnabled; -#if USE(SAFARI_THEME) - static bool gShouldPaintNativeControls; -#endif #if PLATFORM(WIN) static bool gShouldUseHighResolutionTimers; #endif static bool gShouldRespectPriorityInCSSAttributeSetters; #if PLATFORM(IOS) static bool gNetworkDataUsageTrackingEnabled; - static bool gAVKitEnabled; + WEBCORE_EXPORT static bool gAVKitEnabled; + WEBCORE_EXPORT static bool gShouldOptOutOfNetworkStateObservation; + WEBCORE_EXPORT static bool gManageAudioSession; #endif - static double gHiddenPageDOMTimerAlignmentInterval; +#if ENABLE(LEGACY_ENCRYPTED_MEDIA) + String m_mediaKeysStorageDirectory; +#endif + +#if ENABLE(MEDIA_STREAM) + String m_mediaDeviceIdentifierStorageDirectory; + static bool gMockCaptureDevicesEnabled; + static bool gMediaCaptureRequiresSecureConnection; +#endif + +#if ENABLE(APPLE_PAY) + bool m_applePayEnabled { false }; + bool m_applePayCapabilityDisclosureAllowed { true }; +#endif static bool gLowPowerVideoAudioBufferSizeEnabled; + static bool gResourceLoadStatisticsEnabledEnabled; + static bool gAllowsAnySSLCertificate; +}; -#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) - static bool gVideoPluginProxyEnabled; +inline bool Settings::isPostLoadCPUUsageMeasurementEnabled() +{ +#if PLATFORM(COCOA) + return true; +#else + return false; #endif -}; +} -} // namespace WebCore +inline bool Settings::isPostBackgroundingCPUUsageMeasurementEnabled() +{ +#if PLATFORM(MAC) + return true; +#else + return false; +#endif +} + +inline bool Settings::isPerActivityStateCPUUsageMeasurementEnabled() +{ +#if PLATFORM(MAC) + return true; +#else + return false; +#endif +} + +inline bool Settings::isPostLoadMemoryUsageMeasurementEnabled() +{ +#if PLATFORM(COCOA) + return true; +#else + return false; +#endif +} +inline bool Settings::isPostBackgroundingMemoryUsageMeasurementEnabled() +{ +#if PLATFORM(MAC) + return true; +#else + return false; #endif +} + +} // namespace WebCore |