2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * Copyright (C) 2013-2017 Apple Inc. All rights reserved.
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * * Redistributions in binary form must reproduce the above
12 * copyright notice, this list of conditions and the following disclaimer
13 * in the documentation and/or other materials provided with the
15 * * Neither the name of Google Inc. nor the names of its
16 * contributors may be used to endorse or promote products derived from
17 * this software without specific prior written permission.
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 #include <wtf/Forward.h>
35 #include <wtf/Noncopyable.h>
39 // A class that stores static enablers for all experimental features. Note that
40 // the method names must line up with the JavaScript method they enable for code
41 // generation to work properly.
43 class RuntimeEnabledFeatures {
44 WTF_MAKE_NONCOPYABLE(RuntimeEnabledFeatures);
46 void setBlankAnchorTargetImpliesNoOpenerEnabled(bool isEnabled) { m_blankAnchorTargetImpliesNoOpenerEnabled = isEnabled; }
47 bool blankAnchorTargetImpliesNoOpenerEnabled() const { return m_blankAnchorTargetImpliesNoOpenerEnabled; }
49 void setDisplayContentsEnabled(bool isEnabled) { m_isDisplayContentsEnabled = isEnabled; }
50 bool displayContentsEnabled() const { return m_isDisplayContentsEnabled; }
52 void setLinkPreloadEnabled(bool isEnabled) { m_isLinkPreloadEnabled = isEnabled; }
53 bool linkPreloadEnabled() const { return m_isLinkPreloadEnabled; }
55 void setLinkPrefetchEnabled(bool isEnabled) { m_isLinkPrefetchEnabled = isEnabled; }
56 bool linkPrefetchEnabled() const { return m_isLinkPrefetchEnabled; }
58 void setMediaPreloadingEnabled(bool isEnabled) { m_isMediaPreloadingEnabled = isEnabled; }
59 bool mediaPreloadingEnabled() const { return m_isMediaPreloadingEnabled; }
61 void setResourceTimingEnabled(bool isEnabled) { m_isResourceTimingEnabled = isEnabled; }
62 bool resourceTimingEnabled() const { return m_isResourceTimingEnabled; }
64 void setUserTimingEnabled(bool isEnabled) { m_isUserTimingEnabled = isEnabled; }
65 bool userTimingEnabled() const { return m_isUserTimingEnabled; }
67 bool performanceTimelineEnabled() const { return resourceTimingEnabled() || userTimingEnabled(); }
69 void setShadowDOMEnabled(bool isEnabled) { m_isShadowDOMEnabled = isEnabled; }
70 bool shadowDOMEnabled() const { return m_isShadowDOMEnabled; }
72 void setInputEventsEnabled(bool isEnabled) { m_inputEventsEnabled = isEnabled; }
73 bool inputEventsEnabled() const { return m_inputEventsEnabled; }
75 void setInteractiveFormValidationEnabled(bool isEnabled) { m_isInteractiveFormValidationEnabled = isEnabled; }
76 bool interactiveFormValidationEnabled() const { return m_isInteractiveFormValidationEnabled; }
78 void setCustomElementsEnabled(bool areEnabled) { m_areCustomElementsEnabled = areEnabled; }
79 bool customElementsEnabled() const { return m_areCustomElementsEnabled; }
81 void setMenuItemElementEnabled(bool isEnabled) { m_isMenuItemElementEnabled = isEnabled; }
82 bool menuItemElementEnabled() const { return m_isMenuItemElementEnabled; }
84 void setDirectoryUploadEnabled(bool isEnabled) { m_isDirectoryUploadEnabled = isEnabled; }
85 bool directoryUploadEnabled() const { return m_isDirectoryUploadEnabled; }
87 #if ENABLE(DARK_MODE_CSS)
88 void setDarkModeCSSEnabled(bool isEnabled) { m_isDarkModeCSSEnabled = isEnabled; }
89 bool darkModeCSSEnabled() const { return m_isDarkModeCSSEnabled; }
92 void setDataTransferItemsEnabled(bool areEnabled) { m_areDataTransferItemsEnabled = areEnabled; }
93 bool dataTransferItemsEnabled() const { return m_areDataTransferItemsEnabled; }
95 void setCustomPasteboardDataEnabled(bool isEnabled) { m_isCustomPasteboardDataEnabled = isEnabled; }
96 bool customPasteboardDataEnabled() const { return m_isCustomPasteboardDataEnabled; }
98 void setWebShareEnabled(bool isEnabled) { m_isWebShareEnabled = isEnabled; }
99 bool webShareEnabled() const { return m_isWebShareEnabled; }
101 void setModernMediaControlsEnabled(bool areEnabled) { m_areModernMediaControlsEnabled = areEnabled; }
102 bool modernMediaControlsEnabled() const { return m_areModernMediaControlsEnabled; }
104 void setWebAuthenticationEnabled(bool isEnabled) { m_isWebAuthenticationEnabled = isEnabled; }
105 bool webAuthenticationEnabled() const { return m_isWebAuthenticationEnabled; }
107 void setWebAuthenticationLocalAuthenticatorEnabled(bool isEnabled) { m_isWebAuthenticationLocalAuthenticatorEnabled = isEnabled; }
108 bool webAuthenticationLocalAuthenticatorEnabled() const { return m_isWebAuthenticationLocalAuthenticatorEnabled; }
110 void setIsSecureContextAttributeEnabled(bool isEnabled) { m_isSecureContextAttributeEnabled = isEnabled; }
111 bool isSecureContextAttributeEnabled() const { return m_isSecureContextAttributeEnabled; }
113 void setWebAnimationsEnabled(bool areEnabled) { m_areWebAnimationsEnabled = areEnabled; }
114 bool webAnimationsEnabled() const { return m_areWebAnimationsEnabled; }
116 void setWebAnimationsCSSIntegrationEnabled(bool isEnabled) { m_isWebAnimationsCSSIntegrationEnabled = isEnabled; }
117 bool webAnimationsCSSIntegrationEnabled() const { return m_areWebAnimationsEnabled && m_isWebAnimationsCSSIntegrationEnabled; }
119 void setImageBitmapOffscreenCanvasEnabled(bool isEnabled) { m_isImageBitmapOffscreenCanvasEnabled = isEnabled; }
120 bool imageBitmapOffscreenCanvasEnabled() const { return m_isImageBitmapOffscreenCanvasEnabled; }
122 void setCacheAPIEnabled(bool isEnabled) { m_isCacheAPIEnabled = isEnabled; }
123 bool cacheAPIEnabled() const { return m_isCacheAPIEnabled; }
125 void setFetchAPIEnabled(bool isEnabled) { m_isFetchAPIEnabled = isEnabled; }
126 bool fetchAPIEnabled() const { return m_isFetchAPIEnabled; }
128 void setWebSocketEnabled(bool isEnabled) { m_isWebSocketEnabled = isEnabled; }
129 bool webSocketEnabled() const { return m_isWebSocketEnabled; }
131 bool fetchAPIKeepAliveEnabled() const { return m_fetchAPIKeepAliveEnabled; }
132 void setFetchAPIKeepAliveEnabled(bool isEnabled) { m_fetchAPIKeepAliveEnabled = isEnabled; }
134 bool spectreGadgetsEnabled() const;
136 void setInspectorAdditionsEnabled(bool isEnabled) { m_inspectorAdditionsEnabled = isEnabled; }
137 bool inspectorAdditionsEnabled() const { return m_inspectorAdditionsEnabled; }
139 void setWebVREnabled(bool isEnabled) { m_webVREnabled = isEnabled; }
140 bool webVREnabled() const { return m_webVREnabled; }
142 void setAccessibilityObjectModelEnabled(bool isEnabled) { m_accessibilityObjectModelEnabled = isEnabled; }
143 bool accessibilityObjectModelEnabled() const { return m_accessibilityObjectModelEnabled; }
145 void setAriaReflectionEnabled(bool isEnabled) { m_ariaReflectionEnabled = isEnabled; }
146 bool ariaReflectionEnabled() const { return m_ariaReflectionEnabled; }
148 void setItpDebugModeEnabled(bool isEnabled) { m_itpDebugMode = isEnabled; }
149 bool itpDebugModeEnabled() const { return m_itpDebugMode; }
151 void setRestrictedHTTPResponseAccess(bool isEnabled) { m_isRestrictedHTTPResponseAccess = isEnabled; }
152 bool restrictedHTTPResponseAccess() const { return m_isRestrictedHTTPResponseAccess; }
154 void setCrossOriginResourcePolicyEnabled(bool isEnabled) { m_crossOriginResourcePolicyEnabled = isEnabled; }
155 bool crossOriginResourcePolicyEnabled() const { return m_crossOriginResourcePolicyEnabled; }
157 void setWebGLCompressedTextureASTCSupportEnabled(bool isEnabled) { m_isWebGLCompressedTextureASTCSupportEnabled = isEnabled; }
158 bool webGLCompressedTextureASTCSupportEnabled() const { return m_isWebGLCompressedTextureASTCSupportEnabled; }
160 void setStorageAccessPromptsEnabled(bool isEnabled) { m_promptForStorageAccessAPIEnabled = isEnabled; }
161 bool storageAccessPromptsEnabled() const { return m_promptForStorageAccessAPIEnabled; }
163 void setServerTimingEnabled(bool isEnabled) { m_isServerTimingEnabled = isEnabled; }
164 bool serverTimingEnabled() const { return m_isServerTimingEnabled; }
166 void setExperimentalPlugInSandboxProfilesEnabled(bool isEnabled) { m_experimentalPlugInSandboxProfilesEnabled = isEnabled; }
167 bool experimentalPlugInSandboxProfilesEnabled() const { return m_experimentalPlugInSandboxProfilesEnabled; }
169 void setDisabledAdaptationsMetaTagEnabled(bool isEnabled) { m_disabledAdaptationsMetaTagEnabled = isEnabled; }
170 bool disabledAdaptationsMetaTagEnabled() const { return m_disabledAdaptationsMetaTagEnabled; }
172 void setAttrStyleEnabled(bool isEnabled) { m_attrStyleEnabled = isEnabled; }
173 bool attrStyleEnabled() const { return m_attrStyleEnabled; }
175 void setWebAPIStatisticsEnabled(bool isEnabled) { m_webAPIStatisticsEnabled = isEnabled; }
176 bool webAPIStatisticsEnabled() const { return m_webAPIStatisticsEnabled; }
178 void setCSSCustomPropertiesAndValuesEnabled(bool isEnabled) { m_CSSCustomPropertiesAndValuesEnabled = isEnabled; }
179 bool cssCustomPropertiesAndValuesEnabled() const { return m_CSSCustomPropertiesAndValuesEnabled; }
181 void setPointerEventsEnabled(bool isEnabled) { m_pointerEventsEnabled = isEnabled; }
182 bool pointerEventsEnabled() const { return m_pointerEventsEnabled; }
184 #if ENABLE(LAYOUT_FORMATTING_CONTEXT)
185 void setLayoutFormattingContextEnabled(bool isEnabled) { m_layoutFormattingContextEnabled = isEnabled; }
186 bool layoutFormattingContextEnabled() const { return m_layoutFormattingContextEnabled; }
189 #if ENABLE(CSS_PAINTING_API)
190 void setCSSPaintingAPIEnabled(bool isEnabled) { m_CSSPaintingAPIEnabled = isEnabled; }
191 bool cssPaintingAPIEnabled() const { return m_CSSPaintingAPIEnabled; }
194 #if ENABLE(CSS_TYPED_OM)
195 void setCSSTypedOMEnabled(bool isEnabled) { m_CSSTypedOMEnabled = isEnabled; }
196 bool cssTypedOMEnabled() const { return m_CSSTypedOMEnabled; }
199 void setWebSQLDisabled(bool isDisabled) { m_webSQLEnabled = !isDisabled; }
200 bool webSQLEnabled() const { return m_webSQLEnabled; }
202 #if ENABLE(ATTACHMENT_ELEMENT)
203 void setAttachmentElementEnabled(bool areEnabled) { m_isAttachmentElementEnabled = areEnabled; }
204 bool attachmentElementEnabled() const { return m_isAttachmentElementEnabled; }
207 #if ENABLE(INDEXED_DATABASE_IN_WORKERS)
208 void setIndexedDBWorkersEnabled(bool isEnabled) { m_isIndexedDBWorkersEnabled = isEnabled; }
209 bool indexedDBWorkersEnabled() const { return m_isIndexedDBWorkersEnabled; }
212 #if ENABLE(MEDIA_STREAM)
213 bool mediaRecorderEnabled() const { return m_isMediaRecorderEnabled; }
214 void setMediaRecorderEnabled(bool isEnabled) { m_isMediaRecorderEnabled = isEnabled; }
215 bool mediaDevicesEnabled() const { return m_isMediaDevicesEnabled; }
216 void setMediaDevicesEnabled(bool isEnabled) { m_isMediaDevicesEnabled = isEnabled; }
217 bool mediaStreamEnabled() const { return m_isMediaStreamEnabled; }
218 void setMediaStreamEnabled(bool isEnabled) { m_isMediaStreamEnabled = isEnabled; }
219 bool screenCaptureEnabled() const { return m_isScreenCaptureEnabled; }
220 void setScreenCaptureEnabled(bool isEnabled) { m_isScreenCaptureEnabled = isEnabled; }
224 bool webRTCVP8CodecEnabled() const { return m_isWebRTCVP8CodecEnabled; }
225 void setWebRTCVP8CodecEnabled(bool isEnabled) { m_isWebRTCVP8CodecEnabled = isEnabled; }
226 bool webRTCUnifiedPlanEnabled() const { return m_isWebRTCUnifiedPlanEnabled; }
227 void setWebRTCUnifiedPlanEnabled(bool isEnabled) { m_isWebRTCUnifiedPlanEnabled = isEnabled; }
228 bool peerConnectionEnabled() const { return m_isPeerConnectionEnabled; }
229 void setPeerConnectionEnabled(bool isEnabled) { m_isPeerConnectionEnabled = isEnabled; }
230 bool webRTCMDNSICECandidatesEnabled() const { return m_isWebRTCMDNSICECandidatesEnabled; }
231 void setWebRTCMDNSICECandidatesEnabled(bool isEnabled) { m_isWebRTCMDNSICECandidatesEnabled = isEnabled; }
232 bool webRTCH264SimulcastEnabled() const { return m_isWebRTCH264SimulcastEnabled; }
233 void setWebRTCH264SimulcastEnabled(bool isEnabled) { m_isWebRTCH264SimulcastEnabled = isEnabled; }
236 #if ENABLE(LEGACY_CSS_VENDOR_PREFIXES)
237 void setLegacyCSSVendorPrefixesEnabled(bool isEnabled) { m_isLegacyCSSVendorPrefixesEnabled = isEnabled; }
238 bool legacyCSSVendorPrefixesEnabled() const { return m_isLegacyCSSVendorPrefixesEnabled; }
241 #if ENABLE(INPUT_TYPE_COLOR)
242 bool inputTypeColorEnabled() const { return m_isInputTypeColorEnabled; }
243 void setInputTypeColorEnabled(bool isEnabled) { m_isInputTypeColorEnabled = isEnabled; }
246 #if ENABLE(DATALIST_ELEMENT)
247 bool dataListElementEnabled() const { return m_isDataListElementEnabled; }
248 void setDataListElementEnabled(bool isEnabled) { m_isDataListElementEnabled = isEnabled; }
251 #if ENABLE(INPUT_TYPE_DATE)
252 bool inputTypeDateEnabled() const { return m_isInputTypeDateEnabled; }
253 void setInputTypeDateEnabled(bool isEnabled) { m_isInputTypeDateEnabled = isEnabled; }
256 #if ENABLE(INPUT_TYPE_DATETIME_INCOMPLETE)
257 bool inputTypeDateTimeEnabled() const { return m_isInputTypeDateTimeEnabled; }
258 void setInputTypeDateTimeEnabled(bool isEnabled) { m_isInputTypeDateTimeEnabled = isEnabled; }
261 #if ENABLE(INPUT_TYPE_DATETIMELOCAL)
262 bool inputTypeDateTimeLocalEnabled() const { return m_isInputTypeDateTimeLocalEnabled; }
263 void setInputTypeDateTimeLocalEnabled(bool isEnabled) { m_isInputTypeDateTimeLocalEnabled = isEnabled; }
266 #if ENABLE(INPUT_TYPE_MONTH)
267 bool inputTypeMonthEnabled() const { return m_isInputTypeMonthEnabled; }
268 void setInputTypeMonthEnabled(bool isEnabled) { m_isInputTypeMonthEnabled = isEnabled; }
271 #if ENABLE(INPUT_TYPE_TIME)
272 bool inputTypeTimeEnabled() const { return m_isInputTypeTimeEnabled; }
273 void setInputTypeTimeEnabled(bool isEnabled) { m_isInputTypeTimeEnabled = isEnabled; }
276 #if ENABLE(INPUT_TYPE_WEEK)
277 bool inputTypeWeekEnabled() const { return m_isInputTypeWeekEnabled; }
278 void setInputTypeWeekEnabled(bool isEnabled) { m_isInputTypeWeekEnabled = isEnabled; }
282 void setGamepadsEnabled(bool areEnabled) { m_areGamepadsEnabled = areEnabled; }
283 bool gamepadsEnabled() const { return m_areGamepadsEnabled; }
287 void setWebGL2Enabled(bool isEnabled) { m_isWebGL2Enabled = isEnabled; }
288 bool webGL2Enabled() const { return m_isWebGL2Enabled; }
292 void setWebGPUEnabled(bool isEnabled) { m_isWebGPUEnabled = isEnabled; }
293 bool webGPUEnabled() const { return m_isWebGPUEnabled; }
297 void setWebMetalEnabled(bool isEnabled) { m_isWebMetalEnabled = isEnabled; }
298 bool webMetalEnabled() const { return m_isWebMetalEnabled; }
301 #if ENABLE(STREAMS_API)
302 void setReadableByteStreamAPIEnabled(bool isEnabled) { m_isReadableByteStreamAPIEnabled = isEnabled; }
303 bool readableByteStreamAPIEnabled() const { return m_isReadableByteStreamAPIEnabled; }
304 void setWritableStreamAPIEnabled(bool isEnabled) { m_isWritableStreamAPIEnabled = isEnabled; }
305 bool writableStreamAPIEnabled() const { return m_isWritableStreamAPIEnabled; }
308 #if ENABLE(DOWNLOAD_ATTRIBUTE)
309 void setDownloadAttributeEnabled(bool isEnabled) { m_isDownloadAttributeEnabled = isEnabled; }
310 bool downloadAttributeEnabled() const { return m_isDownloadAttributeEnabled; }
313 #if ENABLE(INTERSECTION_OBSERVER)
314 void setIntersectionObserverEnabled(bool isEnabled) { m_intersectionObserverEnabled = isEnabled; }
315 bool intersectionObserverEnabled() const { return m_intersectionObserverEnabled; }
318 void setUndoManagerAPIEnabled(bool isEnabled) { m_undoManagerAPIEnabled = isEnabled; }
319 bool undoManagerAPIEnabled() const { return m_undoManagerAPIEnabled; }
321 #if ENABLE(ENCRYPTED_MEDIA)
322 void setEncryptedMediaAPIEnabled(bool isEnabled) { m_encryptedMediaAPIEnabled = isEnabled; }
323 bool encryptedMediaAPIEnabled() const { return m_encryptedMediaAPIEnabled; }
326 #if ENABLE(LEGACY_ENCRYPTED_MEDIA)
327 void setLegacyEncryptedMediaAPIEnabled(bool isEnabled) { m_legacyEncryptedMediaAPIEnabled = isEnabled; }
328 bool legacyEncryptedMediaAPIEnabled() const { return m_legacyEncryptedMediaAPIEnabled; }
331 #if ENABLE(SERVICE_WORKER)
332 bool serviceWorkerEnabled() const { return m_serviceWorkerEnabled; }
333 void setServiceWorkerEnabled(bool isEnabled) { m_serviceWorkerEnabled = isEnabled; }
336 #if USE(SYSTEM_PREVIEW)
337 void setSystemPreviewEnabled(bool isEnabled) { m_systemPreviewEnabled = isEnabled; }
338 bool systemPreviewEnabled() const { return m_systemPreviewEnabled; }
341 void setCSSLogicalEnabled(bool isEnabled) { m_CSSLogicalEnabled = isEnabled; }
342 bool cssLogicalEnabled() const { return m_CSSLogicalEnabled; }
344 bool adClickAttributionEnabled() const { return m_adClickAttributionEnabled; }
345 void setAdClickAttributionEnabled(bool isEnabled) { m_adClickAttributionEnabled = isEnabled; }
347 #if ENABLE(TOUCH_EVENTS)
348 bool mouseEventsSimulationEnabled() const { return m_mouseEventsSimulationEnabled; }
349 void setMouseEventsSimulationEnabled(bool isEnabled) { m_mouseEventsSimulationEnabled = isEnabled; }
351 bool mousemoveEventHandlingPreventsDefaultEnabled() const { return m_mousemoveEventHandlingPreventsDefaultEnabled; }
352 void setMousemoveEventHandlingPreventsDefaultEnabled(bool isEnabled) { m_mousemoveEventHandlingPreventsDefaultEnabled = isEnabled; }
355 WEBCORE_EXPORT static RuntimeEnabledFeatures& sharedFeatures();
358 // Never instantiate.
359 RuntimeEnabledFeatures();
361 bool m_blankAnchorTargetImpliesNoOpenerEnabled { true };
362 bool m_areModernMediaControlsEnabled { false };
363 bool m_isLinkPreloadEnabled { true };
364 bool m_isLinkPrefetchEnabled { false };
365 bool m_isMediaPreloadingEnabled { false };
366 bool m_isResourceTimingEnabled { false };
367 bool m_isUserTimingEnabled { false };
368 bool m_isInteractiveFormValidationEnabled { false };
369 bool m_isWebAuthenticationEnabled { false };
370 bool m_isWebAuthenticationLocalAuthenticatorEnabled { false };
371 bool m_isSecureContextAttributeEnabled { false };
372 bool m_isDisplayContentsEnabled { true };
373 bool m_isShadowDOMEnabled { true };
374 bool m_areCustomElementsEnabled { true };
375 bool m_isMenuItemElementEnabled { false };
376 bool m_isDirectoryUploadEnabled { false };
377 bool m_areDataTransferItemsEnabled { false };
378 bool m_isCustomPasteboardDataEnabled { false };
379 bool m_isWebShareEnabled { false };
380 bool m_inputEventsEnabled { true };
381 bool m_areWebAnimationsEnabled { false };
382 bool m_isWebAnimationsCSSIntegrationEnabled { false };
383 bool m_isImageBitmapOffscreenCanvasEnabled { true };
384 bool m_isCacheAPIEnabled { false };
385 bool m_isFetchAPIEnabled { true };
386 bool m_isWebSocketEnabled { true };
387 bool m_fetchAPIKeepAliveEnabled { false };
388 bool m_inspectorAdditionsEnabled { false };
389 bool m_webVREnabled { false };
390 bool m_accessibilityObjectModelEnabled { false };
391 bool m_ariaReflectionEnabled { true };
392 bool m_itpDebugMode { false };
393 bool m_isRestrictedHTTPResponseAccess { true };
394 bool m_crossOriginResourcePolicyEnabled { true };
395 bool m_isWebGLCompressedTextureASTCSupportEnabled { false };
396 bool m_promptForStorageAccessAPIEnabled { false };
397 bool m_isServerTimingEnabled { false };
398 bool m_experimentalPlugInSandboxProfilesEnabled { false };
399 bool m_disabledAdaptationsMetaTagEnabled { false };
400 bool m_attrStyleEnabled { false };
401 bool m_webAPIStatisticsEnabled { false };
402 bool m_CSSCustomPropertiesAndValuesEnabled { false };
403 bool m_pointerEventsEnabled { true };
404 bool m_webSQLEnabled { true };
406 #if ENABLE(LAYOUT_FORMATTING_CONTEXT)
407 bool m_layoutFormattingContextEnabled { false };
410 #if ENABLE(CSS_PAINTING_API)
411 bool m_CSSPaintingAPIEnabled { false };
414 #if ENABLE(CSS_TYPED_OM)
415 bool m_CSSTypedOMEnabled { false };
418 #if ENABLE(ATTACHMENT_ELEMENT)
419 bool m_isAttachmentElementEnabled { false };
422 #if ENABLE(DARK_MODE_CSS)
423 bool m_isDarkModeCSSEnabled { true };
426 #if ENABLE(INDEXED_DATABASE_IN_WORKERS)
427 bool m_isIndexedDBWorkersEnabled { true };
430 #if ENABLE(MEDIA_STREAM)
431 bool m_isMediaRecorderEnabled { false };
432 bool m_isMediaDevicesEnabled { false };
433 bool m_isMediaStreamEnabled { true };
434 bool m_isScreenCaptureEnabled { false };
438 bool m_isWebRTCVP8CodecEnabled { true };
439 bool m_isWebRTCUnifiedPlanEnabled { true };
440 bool m_isPeerConnectionEnabled { true };
441 bool m_isWebRTCMDNSICECandidatesEnabled { false };
442 bool m_isWebRTCH264SimulcastEnabled { true };
445 #if ENABLE(LEGACY_CSS_VENDOR_PREFIXES)
446 bool m_isLegacyCSSVendorPrefixesEnabled { false };
449 #if ENABLE(INPUT_TYPE_COLOR)
450 bool m_isInputTypeColorEnabled { false };
453 #if ENABLE(DATALIST_ELEMENT)
454 bool m_isDataListElementEnabled { false };
457 #if ENABLE(INPUT_TYPE_DATE)
458 bool m_isInputTypeDateEnabled { true };
461 #if ENABLE(INPUT_TYPE_DATETIME_INCOMPLETE)
462 bool m_isInputTypeDateTimeEnabled { false };
465 #if ENABLE(INPUT_TYPE_DATETIMELOCAL)
466 bool m_isInputTypeDateTimeLocalEnabled { true };
469 #if ENABLE(INPUT_TYPE_MONTH)
470 bool m_isInputTypeMonthEnabled { true };
473 #if ENABLE(INPUT_TYPE_TIME)
474 bool m_isInputTypeTimeEnabled { true };
477 #if ENABLE(INPUT_TYPE_WEEK)
478 bool m_isInputTypeWeekEnabled { true };
482 bool m_areGamepadsEnabled { false };
485 #if ENABLE(STREAMS_API)
486 bool m_isReadableByteStreamAPIEnabled { false };
487 bool m_isWritableStreamAPIEnabled { false };
491 bool m_isWebGL2Enabled { false };
495 bool m_isWebGPUEnabled { false };
499 bool m_isWebMetalEnabled { false };
502 #if ENABLE(DOWNLOAD_ATTRIBUTE)
503 bool m_isDownloadAttributeEnabled { false };
506 #if ENABLE(ENCRYPTED_MEDIA)
507 bool m_encryptedMediaAPIEnabled { false };
510 #if ENABLE(LEGACY_ENCRYPTED_MEDIA)
511 bool m_legacyEncryptedMediaAPIEnabled { false };
514 #if ENABLE(INTERSECTION_OBSERVER)
515 bool m_intersectionObserverEnabled { false };
518 #if ENABLE(SERVICE_WORKER)
519 bool m_serviceWorkerEnabled { false };
522 #if USE(SYSTEM_PREVIEW)
523 bool m_systemPreviewEnabled { false };
526 bool m_undoManagerAPIEnabled { false };
528 bool m_CSSLogicalEnabled { false };
530 bool m_adClickAttributionEnabled { false };
532 #if ENABLE(TOUCH_EVENTS)
533 bool m_mouseEventsSimulationEnabled { true };
534 bool m_mousemoveEventHandlingPreventsDefaultEnabled { false };
537 friend class WTF::NeverDestroyed<RuntimeEnabledFeatures>;
540 } // namespace WebCore