blob: b3ee84d24d518c3904679b863b171a096f08be1d [file] [log] [blame]
/*
* Copyright (C) 2009 Google Inc. All rights reserved.
* Copyright (C) 2013-2017 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * 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.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "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 THE COPYRIGHT
* OWNER 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.
*/
#pragma once
#include <wtf/Forward.h>
#include <wtf/Noncopyable.h>
#include <wtf/Optional.h>
namespace WebCore {
// A class that stores static enablers for all experimental features. Note that
// the method names must line up with the JavaScript method they enable for code
// generation to work properly.
class RuntimeEnabledFeatures {
WTF_MAKE_NONCOPYABLE(RuntimeEnabledFeatures);
public:
void setBlankAnchorTargetImpliesNoOpenerEnabled(bool isEnabled) { m_blankAnchorTargetImpliesNoOpenerEnabled = isEnabled; }
bool blankAnchorTargetImpliesNoOpenerEnabled() const { return m_blankAnchorTargetImpliesNoOpenerEnabled; }
void setLinkPreloadEnabled(bool isEnabled) { m_isLinkPreloadEnabled = isEnabled; }
bool linkPreloadEnabled() const { return m_isLinkPreloadEnabled; }
void setLinkPrefetchEnabled(bool isEnabled) { m_isLinkPrefetchEnabled = isEnabled; }
bool linkPrefetchEnabled() const { return m_isLinkPrefetchEnabled; }
void setMediaPreloadingEnabled(bool isEnabled) { m_isMediaPreloadingEnabled = isEnabled; }
bool mediaPreloadingEnabled() const { return m_isMediaPreloadingEnabled; }
void setResourceTimingEnabled(bool isEnabled) { m_isResourceTimingEnabled = isEnabled; }
bool resourceTimingEnabled() const { return m_isResourceTimingEnabled; }
void setUserTimingEnabled(bool isEnabled) { m_isUserTimingEnabled = isEnabled; }
bool userTimingEnabled() const { return m_isUserTimingEnabled; }
void setPaintTimingEnabled(bool isEnabled) { m_isPaintTimingEnabled = isEnabled; }
bool paintTimingEnabled() const { return m_isPaintTimingEnabled; }
bool performanceTimelineEnabled() const { return resourceTimingEnabled() || userTimingEnabled(); }
void setShadowDOMEnabled(bool isEnabled) { m_isShadowDOMEnabled = isEnabled; }
bool shadowDOMEnabled() const { return m_isShadowDOMEnabled; }
void setInputEventsEnabled(bool isEnabled) { m_inputEventsEnabled = isEnabled; }
bool inputEventsEnabled() const { return m_inputEventsEnabled; }
void setInteractiveFormValidationEnabled(bool isEnabled) { m_isInteractiveFormValidationEnabled = isEnabled; }
bool interactiveFormValidationEnabled() const { return m_isInteractiveFormValidationEnabled; }
void setCustomElementsEnabled(bool areEnabled) { m_areCustomElementsEnabled = areEnabled; }
bool customElementsEnabled() const { return m_areCustomElementsEnabled; }
void setMenuItemElementEnabled(bool isEnabled) { m_isMenuItemElementEnabled = isEnabled; }
bool menuItemElementEnabled() const { return m_isMenuItemElementEnabled; }
void setDirectoryUploadEnabled(bool isEnabled) { m_isDirectoryUploadEnabled = isEnabled; }
bool directoryUploadEnabled() const { return m_isDirectoryUploadEnabled; }
void setDataTransferItemsEnabled(bool areEnabled) { m_areDataTransferItemsEnabled = areEnabled; }
bool dataTransferItemsEnabled() const { return m_areDataTransferItemsEnabled; }
void setCustomPasteboardDataEnabled(bool isEnabled) { m_isCustomPasteboardDataEnabled = isEnabled; }
bool customPasteboardDataEnabled() const { return m_isCustomPasteboardDataEnabled; }
void setWebShareEnabled(bool isEnabled) { m_isWebShareEnabled = isEnabled; }
bool webShareEnabled() const { return m_isWebShareEnabled; }
void setModernMediaControlsEnabled(bool areEnabled) { m_areModernMediaControlsEnabled = areEnabled; }
bool modernMediaControlsEnabled() const { return m_areModernMediaControlsEnabled; }
void setWebAuthenticationEnabled(bool isEnabled) { m_isWebAuthenticationEnabled = isEnabled; }
bool webAuthenticationEnabled() const { return m_isWebAuthenticationEnabled; }
void setWebAuthenticationLocalAuthenticatorEnabled(bool isEnabled) { m_isWebAuthenticationLocalAuthenticatorEnabled = isEnabled; }
bool webAuthenticationLocalAuthenticatorEnabled() const { return m_isWebAuthenticationLocalAuthenticatorEnabled; }
void setIsSecureContextAttributeEnabled(bool isEnabled) { m_isSecureContextAttributeEnabled = isEnabled; }
bool isSecureContextAttributeEnabled() const { return m_isSecureContextAttributeEnabled; }
void setWebAnimationsEnabled(bool areEnabled) { m_areWebAnimationsEnabled = areEnabled; }
bool webAnimationsEnabled() const { return m_areWebAnimationsEnabled; }
void setWebAnimationsCSSIntegrationEnabled(bool isEnabled) { m_isWebAnimationsCSSIntegrationEnabled = isEnabled; }
bool webAnimationsCSSIntegrationEnabled() const { return m_areWebAnimationsEnabled && m_isWebAnimationsCSSIntegrationEnabled; }
void setWebAnimationsCompositeOperationsEnabled(bool areEnabled) { m_areWebAnimationsCompositeOperationsEnabled = areEnabled; }
bool webAnimationsCompositeOperationsEnabled() const { return m_areWebAnimationsCompositeOperationsEnabled; }
void setWebAnimationsMutableTimelinesEnabled(bool areEnabled) { m_areWebAnimationsMutableTimelinesEnabled = areEnabled; }
bool webAnimationsMutableTimelinesEnabled() const { return m_areWebAnimationsMutableTimelinesEnabled; }
void setImageBitmapEnabled(bool isEnabled) { m_isImageBitmapEnabled = isEnabled; }
bool imageBitmapEnabled() const { return m_isImageBitmapEnabled; }
#if ENABLE(OFFSCREEN_CANVAS)
void setOffscreenCanvasEnabled(bool isEnabled) { m_isOffscreenCanvasEnabled = isEnabled; }
bool offscreenCanvasEnabled() const { return m_isOffscreenCanvasEnabled; }
#endif
void setCacheAPIEnabled(bool isEnabled) { m_isCacheAPIEnabled = isEnabled; }
bool cacheAPIEnabled() const { return m_isCacheAPIEnabled; }
void setFetchAPIEnabled(bool isEnabled) { m_isFetchAPIEnabled = isEnabled; }
bool fetchAPIEnabled() const { return m_isFetchAPIEnabled; }
void setWebSocketEnabled(bool isEnabled) { m_isWebSocketEnabled = isEnabled; }
bool webSocketEnabled() const { return m_isWebSocketEnabled; }
bool fetchAPIKeepAliveEnabled() const { return m_fetchAPIKeepAliveEnabled; }
void setFetchAPIKeepAliveEnabled(bool isEnabled) { m_fetchAPIKeepAliveEnabled = isEnabled; }
void setInspectorAdditionsEnabled(bool isEnabled) { m_inspectorAdditionsEnabled = isEnabled; }
bool inspectorAdditionsEnabled() const { return m_inspectorAdditionsEnabled; }
#if ENABLE(WEBXR)
void setWebXREnabled(bool isEnabled) { m_webXREnabled = isEnabled; }
bool webXREnabled() const { return m_webXREnabled; }
#endif
void setAccessibilityObjectModelEnabled(bool isEnabled) { m_accessibilityObjectModelEnabled = isEnabled; }
bool accessibilityObjectModelEnabled() const { return m_accessibilityObjectModelEnabled; }
void setAriaReflectionEnabled(bool isEnabled) { m_ariaReflectionEnabled = isEnabled; }
bool ariaReflectionEnabled() const { return m_ariaReflectionEnabled; }
void setItpDebugModeEnabled(bool isEnabled) { m_itpDebugMode = isEnabled; }
bool itpDebugModeEnabled() const { return m_itpDebugMode; }
void setIsITPDatabaseEnabled(bool isEnabled) { m_isITPDatabaseEnabled = isEnabled; }
bool isITPDatabaseEnabled() const { return m_isITPDatabaseEnabled; }
void setRestrictedHTTPResponseAccess(bool isEnabled) { m_isRestrictedHTTPResponseAccess = isEnabled; }
bool restrictedHTTPResponseAccess() const { return m_isRestrictedHTTPResponseAccess; }
void setCrossOriginResourcePolicyEnabled(bool isEnabled) { m_crossOriginResourcePolicyEnabled = isEnabled; }
bool crossOriginResourcePolicyEnabled() const { return m_crossOriginResourcePolicyEnabled; }
void setServerTimingEnabled(bool isEnabled) { m_isServerTimingEnabled = isEnabled; }
bool serverTimingEnabled() const { return m_isServerTimingEnabled; }
void setExperimentalPlugInSandboxProfilesEnabled(bool isEnabled) { m_experimentalPlugInSandboxProfilesEnabled = isEnabled; }
bool experimentalPlugInSandboxProfilesEnabled() const { return m_experimentalPlugInSandboxProfilesEnabled; }
void setDisabledAdaptationsMetaTagEnabled(bool isEnabled) { m_disabledAdaptationsMetaTagEnabled = isEnabled; }
bool disabledAdaptationsMetaTagEnabled() const { return m_disabledAdaptationsMetaTagEnabled; }
void setAttrStyleEnabled(bool isEnabled) { m_attrStyleEnabled = isEnabled; }
bool attrStyleEnabled() const { return m_attrStyleEnabled; }
void setWebAPIStatisticsEnabled(bool isEnabled) { m_webAPIStatisticsEnabled = isEnabled; }
bool webAPIStatisticsEnabled() const { return m_webAPIStatisticsEnabled; }
void setCSSCustomPropertiesAndValuesEnabled(bool isEnabled) { m_CSSCustomPropertiesAndValuesEnabled = isEnabled; }
bool cssCustomPropertiesAndValuesEnabled() const { return m_CSSCustomPropertiesAndValuesEnabled; }
void setSyntheticEditingCommandsEnabled(bool isEnabled) { m_syntheticEditingCommandsEnabled = isEnabled; }
bool syntheticEditingCommandsEnabled() const { return m_syntheticEditingCommandsEnabled; }
#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
void setLayoutFormattingContextEnabled(bool isEnabled) { m_layoutFormattingContextEnabled = isEnabled; }
bool layoutFormattingContextEnabled() const { return m_layoutFormattingContextEnabled; }
void setLayoutFormattingContextIntegrationEnabled(bool isEnabled) { m_layoutFormattingContextIntegrationEnabled = isEnabled; }
bool layoutFormattingContextIntegrationEnabled() const { return m_layoutFormattingContextIntegrationEnabled; }
#endif
#if ENABLE(CSS_PAINTING_API)
void setCSSPaintingAPIEnabled(bool isEnabled) { m_CSSPaintingAPIEnabled = isEnabled; }
bool cssPaintingAPIEnabled() const { return m_CSSPaintingAPIEnabled; }
#endif
#if ENABLE(CSS_TYPED_OM)
void setCSSTypedOMEnabled(bool isEnabled) { m_CSSTypedOMEnabled = isEnabled; }
bool cssTypedOMEnabled() const { return m_CSSTypedOMEnabled; }
#endif
void setWebSQLDisabled(bool isDisabled) { m_webSQLEnabled = !isDisabled; }
bool webSQLEnabled() const { return m_webSQLEnabled; }
void setDialogElementEnabled(bool isEnabled) { m_dialogElementEnabled = isEnabled; }
bool dialogElementEnabled() const { return m_dialogElementEnabled; }
void setKeygenElementEnabled(bool isEnabled) { m_keygenElementEnabled = isEnabled; }
bool keygenElementEnabled() const { return m_keygenElementEnabled; }
void setHighlightAPIEnabled(bool isEnabled) { m_highlightAPIEnabled = isEnabled; }
bool highlightAPIEnabled() const { return m_highlightAPIEnabled; }
#if ENABLE(ATTACHMENT_ELEMENT)
void setAttachmentElementEnabled(bool areEnabled) { m_isAttachmentElementEnabled = areEnabled; }
bool attachmentElementEnabled() const { return m_isAttachmentElementEnabled; }
#endif
#if ENABLE(INDEXED_DATABASE_IN_WORKERS)
void setIndexedDBWorkersEnabled(bool isEnabled) { m_isIndexedDBWorkersEnabled = isEnabled; }
bool indexedDBWorkersEnabled() const { return m_isIndexedDBWorkersEnabled; }
#endif
#if ENABLE(MEDIA_STREAM)
bool mediaRecorderEnabled() const { return m_isMediaRecorderEnabled; }
void setMediaRecorderEnabled(bool isEnabled) { m_isMediaRecorderEnabled = isEnabled; }
bool mediaDevicesEnabled() const { return m_isMediaDevicesEnabled; }
void setMediaDevicesEnabled(bool isEnabled) { m_isMediaDevicesEnabled = isEnabled; }
bool mediaStreamEnabled() const { return m_isMediaStreamEnabled; }
void setMediaStreamEnabled(bool isEnabled) { m_isMediaStreamEnabled = isEnabled; }
bool screenCaptureEnabled() const { return m_isScreenCaptureEnabled; }
void setScreenCaptureEnabled(bool isEnabled) { m_isScreenCaptureEnabled = isEnabled; }
#endif
#if ENABLE(WEB_RTC)
bool webRTCDTMFEnabled() const { return m_isWebRTCDTMFEnabled; }
void setWebRTCDTMFEnabled(bool isEnabled) { m_isWebRTCDTMFEnabled = isEnabled; }
bool webRTCH265CodecEnabled() const { return m_isWebRTCH265CodecEnabled; }
void setWebRTCH265CodecEnabled(bool isEnabled) { m_isWebRTCH265CodecEnabled = isEnabled; }
bool peerConnectionEnabled() const { return m_isPeerConnectionEnabled; }
void setPeerConnectionEnabled(bool isEnabled) { m_isPeerConnectionEnabled = isEnabled; }
bool webRTCMDNSICECandidatesEnabled() const { return m_isWebRTCMDNSICECandidatesEnabled; }
void setWebRTCMDNSICECandidatesEnabled(bool isEnabled) { m_isWebRTCMDNSICECandidatesEnabled = isEnabled; }
bool webRTCH264SimulcastEnabled() const { return m_isWebRTCH264SimulcastEnabled; }
void setWebRTCH264SimulcastEnabled(bool isEnabled) { m_isWebRTCH264SimulcastEnabled = isEnabled; }
bool webRTCPlatformCodecsInGPUProcessEnabled() const { return m_isWebRTCPlatformCodecsInGPUProcessEnabled; }
void setWebRTCPlatformCodecsInGPUProcessEnabled(bool isEnabled) { m_isWebRTCPlatformCodecsInGPUProcessEnabled = isEnabled; }
#endif
#if ENABLE(LEGACY_CSS_VENDOR_PREFIXES)
void setLegacyCSSVendorPrefixesEnabled(bool isEnabled) { m_isLegacyCSSVendorPrefixesEnabled = isEnabled; }
bool legacyCSSVendorPrefixesEnabled() const { return m_isLegacyCSSVendorPrefixesEnabled; }
#endif
#if ENABLE(INPUT_TYPE_COLOR)
bool inputTypeColorEnabled() const { return m_isInputTypeColorEnabled; }
void setInputTypeColorEnabled(bool isEnabled) { m_isInputTypeColorEnabled = isEnabled; }
#endif
#if ENABLE(DATALIST_ELEMENT)
bool dataListElementEnabled() const { return m_isDataListElementEnabled; }
void setDataListElementEnabled(bool isEnabled) { m_isDataListElementEnabled = isEnabled; }
#endif
#if ENABLE(INPUT_TYPE_DATE)
bool inputTypeDateEnabled() const { return m_isInputTypeDateEnabled; }
void setInputTypeDateEnabled(bool isEnabled) { m_isInputTypeDateEnabled = isEnabled; }
#endif
#if ENABLE(INPUT_TYPE_DATETIME_INCOMPLETE)
bool inputTypeDateTimeEnabled() const { return m_isInputTypeDateTimeEnabled; }
void setInputTypeDateTimeEnabled(bool isEnabled) { m_isInputTypeDateTimeEnabled = isEnabled; }
#endif
#if ENABLE(INPUT_TYPE_DATETIMELOCAL)
bool inputTypeDateTimeLocalEnabled() const { return m_isInputTypeDateTimeLocalEnabled; }
void setInputTypeDateTimeLocalEnabled(bool isEnabled) { m_isInputTypeDateTimeLocalEnabled = isEnabled; }
#endif
#if ENABLE(INPUT_TYPE_MONTH)
bool inputTypeMonthEnabled() const { return m_isInputTypeMonthEnabled; }
void setInputTypeMonthEnabled(bool isEnabled) { m_isInputTypeMonthEnabled = isEnabled; }
#endif
#if ENABLE(INPUT_TYPE_TIME)
bool inputTypeTimeEnabled() const { return m_isInputTypeTimeEnabled; }
void setInputTypeTimeEnabled(bool isEnabled) { m_isInputTypeTimeEnabled = isEnabled; }
#endif
#if ENABLE(INPUT_TYPE_WEEK)
bool inputTypeWeekEnabled() const { return m_isInputTypeWeekEnabled; }
void setInputTypeWeekEnabled(bool isEnabled) { m_isInputTypeWeekEnabled = isEnabled; }
#endif
#if ENABLE(GAMEPAD)
void setGamepadsEnabled(bool areEnabled) { m_areGamepadsEnabled = areEnabled; }
bool gamepadsEnabled() const { return m_areGamepadsEnabled; }
#endif
#if ENABLE(WEBGL2)
void setWebGL2Enabled(bool isEnabled) { m_isWebGL2Enabled = isEnabled; }
bool webGL2Enabled() const { return m_isWebGL2Enabled; }
#endif
#if ENABLE(WEBGPU)
void setWebGPUEnabled(bool isEnabled) { m_isWebGPUEnabled = isEnabled; }
bool webGPUEnabled() const { return m_isWebGPUEnabled; }
#endif
#if ENABLE(WEBGL) || ENABLE(WEBGL2)
void setMaskWebGLStringsEnabled(bool isEnabled) { m_isMaskWebGLStringsEnabled = isEnabled; }
bool maskWebGLStringsEnabled() const { return m_isMaskWebGLStringsEnabled; }
#endif
#if ENABLE(STREAMS_API)
void setReadableByteStreamAPIEnabled(bool isEnabled) { m_isReadableByteStreamAPIEnabled = isEnabled; }
bool readableByteStreamAPIEnabled() const { return m_isReadableByteStreamAPIEnabled; }
void setWritableStreamAPIEnabled(bool isEnabled) { m_isWritableStreamAPIEnabled = isEnabled; }
bool writableStreamAPIEnabled() const { return m_isWritableStreamAPIEnabled; }
#endif
#if ENABLE(DOWNLOAD_ATTRIBUTE)
void setDownloadAttributeEnabled(bool isEnabled) { m_isDownloadAttributeEnabled = isEnabled; }
bool downloadAttributeEnabled() const { return m_isDownloadAttributeEnabled; }
#endif
#if ENABLE(INTERSECTION_OBSERVER)
void setIntersectionObserverEnabled(bool isEnabled) { m_intersectionObserverEnabled = isEnabled; }
bool intersectionObserverEnabled() const { return m_intersectionObserverEnabled; }
#endif
void setUndoManagerAPIEnabled(bool isEnabled) { m_undoManagerAPIEnabled = isEnabled; }
bool undoManagerAPIEnabled() const { return m_undoManagerAPIEnabled; }
#if ENABLE(ENCRYPTED_MEDIA)
void setEncryptedMediaAPIEnabled(bool isEnabled) { m_encryptedMediaAPIEnabled = isEnabled; }
bool encryptedMediaAPIEnabled() const { return m_encryptedMediaAPIEnabled; }
#endif
#if ENABLE(LEGACY_ENCRYPTED_MEDIA)
void setLegacyEncryptedMediaAPIEnabled(bool isEnabled) { m_legacyEncryptedMediaAPIEnabled = isEnabled; }
bool legacyEncryptedMediaAPIEnabled() const { return m_legacyEncryptedMediaAPIEnabled; }
#endif
#if ENABLE(SERVICE_WORKER)
bool serviceWorkerEnabled() const { return m_serviceWorkerEnabled; }
void setServiceWorkerEnabled(bool isEnabled) { m_serviceWorkerEnabled = isEnabled; }
#endif
#if USE(SYSTEM_PREVIEW)
void setSystemPreviewEnabled(bool isEnabled) { m_systemPreviewEnabled = isEnabled; }
bool systemPreviewEnabled() const { return m_systemPreviewEnabled; }
#endif
void setCSSLogicalEnabled(bool isEnabled) { m_CSSLogicalEnabled = isEnabled; }
bool cssLogicalEnabled() const { return m_CSSLogicalEnabled; }
void setLegacyBeforeLoadEventEnabled(bool isEnabled) { m_legacyBeforeLoadEventEnabled = isEnabled; }
bool legacyBeforeLoadEventEnabled() const { return m_legacyBeforeLoadEventEnabled; }
void setLineHeightUnitsEnabled(bool isEnabled) { m_lineHeightUnitsEnabled = isEnabled; }
bool lineHeightUnitsEnabled() const { return m_lineHeightUnitsEnabled; }
bool adClickAttributionEnabled() const { return m_adClickAttributionEnabled; }
void setAdClickAttributionEnabled(bool isEnabled) { m_adClickAttributionEnabled = isEnabled; }
bool adClickAttributionDebugModeEnabled() const { return m_adClickAttributionDebugModeEnabled; }
void setAdClickAttributionDebugModeEnabled(bool isEnabled) { m_adClickAttributionDebugModeEnabled = isEnabled; }
#if ENABLE(TOUCH_EVENTS)
bool mouseEventsSimulationEnabled() const { return m_mouseEventsSimulationEnabled; }
void setMouseEventsSimulationEnabled(bool isEnabled) { m_mouseEventsSimulationEnabled = isEnabled; }
bool touchEventsEnabled() const;
void setTouchEventsEnabled(bool isEnabled) { m_touchEventsEnabled = isEnabled; }
#endif
bool referrerPolicyAttributeEnabled() const { return m_referrerPolicyAttributeEnabled; }
void setReferrerPolicyAttributeEnabled(bool isEnabled) { m_referrerPolicyAttributeEnabled = isEnabled; }
bool pageAtRuleSupportEnabled() const { return m_pageAtRuleSupportEnabled; }
void setPageAtRuleSupportEnabled(bool isEnabled) { m_pageAtRuleSupportEnabled = isEnabled; }
bool interruptAudioOnPageVisibilityChangeEnabled() const { return m_interruptAudioOnPageVisibilityChangeEnabled; }
void setInterruptAudioOnPageVisibilityChangeEnabled(bool enabled) { m_interruptAudioOnPageVisibilityChangeEnabled = enabled; }
bool linkPreloadResponsiveImagesEnabled() const { return m_linkPreloadResponsiveImagesEnabled; }
void setLinkPreloadResponsiveImagesEnabled(bool isEnabled) { m_linkPreloadResponsiveImagesEnabled = isEnabled; }
void setLazyImageLoadingEnabled(bool areEnabled) { m_lazyImageLoadingEnabled = areEnabled; }
bool lazyImageLoadingEnabled() const { return m_lazyImageLoadingEnabled; }
void setCSSShadowPartsEnabled(bool isEnabled) { m_isCSSShadowPartsEnabled = isEnabled; }
bool cssShadowPartsEnabled() const { return m_isCSSShadowPartsEnabled; }
WEBCORE_EXPORT static RuntimeEnabledFeatures& sharedFeatures();
#if HAVE(NSURLSESSION_WEBSOCKET)
bool isNSURLSessionWebSocketEnabled() const { return m_isNSURLSessionWebSocketEnabled; }
void setIsNSURLSessionWebSocketEnabled(bool isEnabled) { m_isNSURLSessionWebSocketEnabled = isEnabled; }
#endif
bool secureContextChecksEnabled() const { return m_secureContextChecksEnabled; }
void setSecureContextChecksEnabled(bool isEnabled) { m_secureContextChecksEnabled = isEnabled; }
void setIsInAppBrowserPrivacyEnabled(bool isEnabled) { m_isInAppBrowserPrivacyEnabled = isEnabled; }
bool isInAppBrowserPrivacyEnabled() const { return m_isInAppBrowserPrivacyEnabled; }
void setNeedsInAppBrowserPrivacyQuirks(bool isEnabled) { m_needsInAppBrowserPrivacyQuirks = isEnabled; }
bool needsInAppBrowserPrivacyQuirks() const { return m_needsInAppBrowserPrivacyQuirks; }
#if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
void setIsAccessibilityIsolatedTreeEnabled(bool isEnabled) { m_accessibilityIsolatedTree = isEnabled; }
bool isAccessibilityIsolatedTreeEnabled() const { return m_accessibilityIsolatedTree; }
#endif
void setWebShareFileAPIEnabled(bool isEnabled) { m_webShareFileAPIEnabled = isEnabled; }
bool webShareFileAPIEnabled() const { return m_webShareFileAPIEnabled; }
#if HAVE(INCREMENTAL_PDF_APIS)
void setIncrementalPDFLoadingEnabled(bool isEnabled) { m_incrementalPDFLoadingEnabled = isEnabled; }
bool incrementalPDFLoadingEnabled() const { return m_incrementalPDFLoadingEnabled; }
#endif
private:
// Never instantiate.
RuntimeEnabledFeatures();
bool m_blankAnchorTargetImpliesNoOpenerEnabled { true };
bool m_areModernMediaControlsEnabled { false };
bool m_isLinkPreloadEnabled { true };
bool m_isLinkPrefetchEnabled { false };
bool m_isMediaPreloadingEnabled { false };
bool m_isPaintTimingEnabled { false };
bool m_isResourceTimingEnabled { false };
bool m_isUserTimingEnabled { false };
bool m_isInteractiveFormValidationEnabled { false };
bool m_isWebAuthenticationEnabled { false };
bool m_isWebAuthenticationLocalAuthenticatorEnabled { false };
bool m_isSecureContextAttributeEnabled { false };
bool m_isShadowDOMEnabled { true };
bool m_areCustomElementsEnabled { true };
bool m_isMenuItemElementEnabled { false };
bool m_isDirectoryUploadEnabled { false };
bool m_areDataTransferItemsEnabled { false };
bool m_isCustomPasteboardDataEnabled { false };
bool m_isWebShareEnabled { false };
bool m_inputEventsEnabled { true };
bool m_areWebAnimationsEnabled { true };
bool m_isWebAnimationsCSSIntegrationEnabled { true };
bool m_areWebAnimationsCompositeOperationsEnabled { false };
bool m_areWebAnimationsMutableTimelinesEnabled { false };
bool m_isImageBitmapEnabled { true };
#if ENABLE(OFFSCREEN_CANVAS)
bool m_isOffscreenCanvasEnabled { false };
#endif
bool m_isCacheAPIEnabled { false };
bool m_isFetchAPIEnabled { true };
bool m_isWebSocketEnabled { true };
bool m_fetchAPIKeepAliveEnabled { false };
bool m_inspectorAdditionsEnabled { false };
#if ENABLE(WEBXR)
bool m_webXREnabled { false };
#endif
bool m_accessibilityObjectModelEnabled { false };
bool m_ariaReflectionEnabled { true };
bool m_itpDebugMode { false };
bool m_isRestrictedHTTPResponseAccess { true };
bool m_crossOriginResourcePolicyEnabled { true };
bool m_isServerTimingEnabled { false };
bool m_experimentalPlugInSandboxProfilesEnabled { false };
bool m_disabledAdaptationsMetaTagEnabled { false };
bool m_attrStyleEnabled { false };
bool m_webAPIStatisticsEnabled { false };
bool m_CSSCustomPropertiesAndValuesEnabled { false };
bool m_syntheticEditingCommandsEnabled { true };
bool m_dialogElementEnabled { false };
bool m_webSQLEnabled { false };
bool m_keygenElementEnabled { false };
bool m_pageAtRuleSupportEnabled { false };
bool m_highlightAPIEnabled { false };
#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
bool m_layoutFormattingContextEnabled { false };
bool m_layoutFormattingContextIntegrationEnabled { true };
#endif
#if ENABLE(CSS_PAINTING_API)
bool m_CSSPaintingAPIEnabled { false };
#endif
#if ENABLE(CSS_TYPED_OM)
bool m_CSSTypedOMEnabled { false };
#endif
#if ENABLE(ATTACHMENT_ELEMENT)
bool m_isAttachmentElementEnabled { false };
#endif
#if ENABLE(INDEXED_DATABASE_IN_WORKERS)
bool m_isIndexedDBWorkersEnabled { true };
#endif
#if ENABLE(MEDIA_STREAM)
bool m_isMediaRecorderEnabled { false };
bool m_isMediaDevicesEnabled { false };
bool m_isMediaStreamEnabled { true };
bool m_isScreenCaptureEnabled { false };
#endif
#if ENABLE(WEB_RTC)
bool m_isWebRTCDTMFEnabled { true };
bool m_isWebRTCH265CodecEnabled { true };
bool m_isPeerConnectionEnabled { true };
bool m_isWebRTCMDNSICECandidatesEnabled { false };
bool m_isWebRTCH264SimulcastEnabled { true };
bool m_isWebRTCPlatformCodecsInGPUProcessEnabled { true };
#endif
#if ENABLE(LEGACY_CSS_VENDOR_PREFIXES)
bool m_isLegacyCSSVendorPrefixesEnabled { false };
#endif
#if ENABLE(INPUT_TYPE_COLOR)
bool m_isInputTypeColorEnabled { false };
#endif
#if ENABLE(DATALIST_ELEMENT)
bool m_isDataListElementEnabled { false };
#endif
#if ENABLE(INPUT_TYPE_DATE)
bool m_isInputTypeDateEnabled { true };
#endif
#if ENABLE(INPUT_TYPE_DATETIME_INCOMPLETE)
bool m_isInputTypeDateTimeEnabled { false };
#endif
#if ENABLE(INPUT_TYPE_DATETIMELOCAL)
bool m_isInputTypeDateTimeLocalEnabled { true };
#endif
#if ENABLE(INPUT_TYPE_MONTH)
bool m_isInputTypeMonthEnabled { true };
#endif
#if ENABLE(INPUT_TYPE_TIME)
bool m_isInputTypeTimeEnabled { true };
#endif
#if ENABLE(INPUT_TYPE_WEEK)
bool m_isInputTypeWeekEnabled { true };
#endif
#if ENABLE(GAMEPAD)
bool m_areGamepadsEnabled { false };
#endif
#if ENABLE(STREAMS_API)
bool m_isReadableByteStreamAPIEnabled { false };
bool m_isWritableStreamAPIEnabled { false };
#endif
#if ENABLE(WEBGL2)
bool m_isWebGL2Enabled { false };
#endif
#if ENABLE(WEBGPU)
bool m_isWebGPUEnabled { false };
#endif
#if ENABLE(WEBGL) || ENABLE(WEBGL2)
bool m_isMaskWebGLStringsEnabled { false };
#endif
#if ENABLE(DOWNLOAD_ATTRIBUTE)
bool m_isDownloadAttributeEnabled { false };
#endif
#if ENABLE(ENCRYPTED_MEDIA)
bool m_encryptedMediaAPIEnabled { false };
#endif
#if ENABLE(LEGACY_ENCRYPTED_MEDIA)
bool m_legacyEncryptedMediaAPIEnabled { true };
#endif
#if ENABLE(INTERSECTION_OBSERVER)
bool m_intersectionObserverEnabled { false };
#endif
#if ENABLE(SERVICE_WORKER)
bool m_serviceWorkerEnabled { false };
#endif
#if USE(SYSTEM_PREVIEW)
bool m_systemPreviewEnabled { false };
#endif
bool m_undoManagerAPIEnabled { false };
bool m_CSSLogicalEnabled { false };
// False by default until https://bugs.webkit.org/show_bug.cgi?id=211351 /
// https://github.com/w3c/csswg-drafts/issues/3257 have been sorted out.
bool m_lineHeightUnitsEnabled { false };
bool m_adClickAttributionEnabled { false };
bool m_adClickAttributionDebugModeEnabled { false };
#if ENABLE(TOUCH_EVENTS)
bool m_mouseEventsSimulationEnabled { false };
Optional<bool> m_touchEventsEnabled;
#endif
bool m_isITPDatabaseEnabled { true };
bool m_referrerPolicyAttributeEnabled { true };
bool m_interruptAudioOnPageVisibilityChangeEnabled { false };
bool m_linkPreloadResponsiveImagesEnabled { false };
#if HAVE(NSURLSESSION_WEBSOCKET)
bool m_isNSURLSessionWebSocketEnabled { false };
#endif
bool m_lazyImageLoadingEnabled { false };
bool m_secureContextChecksEnabled { true };
bool m_isCSSShadowPartsEnabled { true };
bool m_isInAppBrowserPrivacyEnabled { false };
bool m_needsInAppBrowserPrivacyQuirks { false };
bool m_legacyBeforeLoadEventEnabled { false };
#if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
bool m_accessibilityIsolatedTree { false };
#endif
bool m_webShareFileAPIEnabled { false };
#if HAVE(INCREMENTAL_PDF_APIS)
bool m_incrementalPDFLoadingEnabled { false };
#endif
friend class WTF::NeverDestroyed<RuntimeEnabledFeatures>;
};
} // namespace WebCore