6a523e6425f85fad1bf1d6eb2d16ae472546f333
[WebKit-https.git] / Source / WebKit / Shared / WebPreferencesDefinitions.h
1 /*
2  * Copyright (C) 2010-2016 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #pragma once
27
28 #if PLATFORM(GTK)
29 #define DEFAULT_WEBKIT_TABSTOLINKS_ENABLED true
30 #else
31 #define DEFAULT_WEBKIT_TABSTOLINKS_ENABLED false
32 #endif
33
34 #if ENABLE(SMOOTH_SCROLLING)
35 #define DEFAULT_WEBKIT_SCROLL_ANIMATOR_ENABLED true
36 #else
37 #define DEFAULT_WEBKIT_SCROLL_ANIMATOR_ENABLED false
38 #endif
39
40 #if PLATFORM(COCOA) || PLATFORM(GTK)
41 #define DEFAULT_HIDDEN_PAGE_DOM_TIMER_THROTTLING_ENABLED true
42 #define DEFAULT_HIDDEN_PAGE_CSS_ANIMATION_SUSPENSION_ENABLED true
43 #else
44 #define DEFAULT_HIDDEN_PAGE_DOM_TIMER_THROTTLING_ENABLED false
45 #define DEFAULT_HIDDEN_PAGE_CSS_ANIMATION_SUSPENSION_ENABLED false
46 #endif
47
48 #if ENABLE(SERVER_PRECONNECT)
49 #define DEFAULT_LINK_PRECONNECT_ENABLED true
50 #else
51 #define DEFAULT_LINK_PRECONNECT_ENABLED false
52 #endif
53
54 #if PLATFORM(COCOA)
55 #define DEFAULT_PDFPLUGIN_ENABLED true
56 #else
57 #define DEFAULT_PDFPLUGIN_ENABLED false
58 #endif
59
60 #if PLATFORM(IOS)
61 #define DEFAULT_ALLOWS_PICTURE_IN_PICTURE_MEDIA_PLAYBACK true
62 #define DEFAULT_BACKSPACE_KEY_NAVIGATION_ENABLED false
63 #define DEFAULT_FRAME_FLATTENING FrameFlattening::FullyEnabled
64 #define DEFAULT_SHOULD_PRINT_BACKGROUNDS true
65 #define DEFAULT_TEXT_AREAS_ARE_RESIZABLE false
66 #define DEFAULT_JAVASCRIPT_CAN_OPEN_WINDOWS_AUTOMATICALLY false
67 #define DEFAULT_SHOULD_RESPECT_IMAGE_ORIENTATION true
68 #define DEFAULT_PASSWORD_ECHO_ENABLED true
69 #define DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK false
70 #define DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK_AFTER_FULLSCREEN true
71 #define DEFAULT_INLINE_MEDIA_PLAYBACK_REQUIRES_PLAYS_INLINE_ATTRIBUTE true
72 #define DEFAULT_INVISIBLE_AUTOPLAY_NOT_PERMITTED true
73 #define DEFAULT_MEDIA_DATA_LOADS_AUTOMATICALLY false
74 #define DEFAULT_MEDIA_CONTROLS_SCALE_WITH_PAGE_ZOOM false
75 #define DEFAULT_TEMPORARY_TILE_COHORT_RETENTION_ENABLED false
76 #define DEFAULT_REQUIRES_USER_GESTURE_FOR_AUDIO_PLAYBACK true
77 #define DEFAULT_LEGACY_ENCRYPTED_MEDIA_API_ENABLED false
78 #else
79 #define DEFAULT_ALLOWS_PICTURE_IN_PICTURE_MEDIA_PLAYBACK false
80 #define DEFAULT_BACKSPACE_KEY_NAVIGATION_ENABLED true
81 #define DEFAULT_FRAME_FLATTENING FrameFlattening::Disabled
82 #define DEFAULT_SHOULD_PRINT_BACKGROUNDS false
83 #define DEFAULT_TEXT_AREAS_ARE_RESIZABLE true
84 #define DEFAULT_JAVASCRIPT_CAN_OPEN_WINDOWS_AUTOMATICALLY true
85 #define DEFAULT_SHOULD_RESPECT_IMAGE_ORIENTATION false
86 #define DEFAULT_PASSWORD_ECHO_ENABLED false
87 #define DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK true
88 #define DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK_AFTER_FULLSCREEN false
89 #define DEFAULT_INLINE_MEDIA_PLAYBACK_REQUIRES_PLAYS_INLINE_ATTRIBUTE false
90 #define DEFAULT_INVISIBLE_AUTOPLAY_NOT_PERMITTED false
91 #define DEFAULT_MEDIA_DATA_LOADS_AUTOMATICALLY true
92 #define DEFAULT_MEDIA_CONTROLS_SCALE_WITH_PAGE_ZOOM true
93 #define DEFAULT_TEMPORARY_TILE_COHORT_RETENTION_ENABLED true
94 #define DEFAULT_REQUIRES_USER_GESTURE_FOR_AUDIO_PLAYBACK false
95 #define DEFAULT_LEGACY_ENCRYPTED_MEDIA_API_ENABLED true
96 #endif
97
98 #if PLATFORM(COCOA)
99 #define DEFAULT_ALLOW_MEDIA_CONTENT_TYPES_REQUIRING_HARDWARE_SUPPORT_AS_FALLBACK true
100 #else
101 #define DEFAULT_ALLOW_MEDIA_CONTENT_TYPES_REQUIRING_HARDWARE_SUPPORT_AS_FALLBACK false
102 #endif
103
104 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101300
105 #define DEFAULT_SUBPIXEL_ANTIALIASED_LAYER_TEXT_ENABLED true
106 #else
107 #define DEFAULT_SUBPIXEL_ANTIALIASED_LAYER_TEXT_ENABLED false
108 #endif
109
110 #if PLATFORM(IOS_SIMULATOR)
111 #define DEFAULT_ACCELERATED_DRAWING_ENABLED false
112 #define DEFAULT_CANVAS_USES_ACCELERATED_DRAWING false
113 #else
114 #define DEFAULT_ACCELERATED_DRAWING_ENABLED true
115 #define DEFAULT_CANVAS_USES_ACCELERATED_DRAWING true
116 #endif
117
118 #if PLATFORM(COCOA)
119 #define DEFAULT_SHOULD_CAPTURE_AUDIO_IN_UIPROCESS true
120 #else
121 #define DEFAULT_SHOULD_CAPTURE_AUDIO_IN_UIPROCESS false
122 #endif
123
124 #if PLATFORM(COCOA)
125 #define DEFAULT_MODERN_MEDIA_CONTROLS_ENABLED true
126 #else
127 #define DEFAULT_MODERN_MEDIA_CONTROLS_ENABLED false
128 #endif
129
130 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101200
131 // <https://webkit.org/b/168415> El Capitan NetworkLoadTiming values are sometimes jumbled
132 #define DEFAULT_RESOURCE_TIMING_ENABLED false
133 #else
134 #define DEFAULT_RESOURCE_TIMING_ENABLED true
135 #endif
136
137 #if PLATFORM(COCOA)
138 #define DEFAULT_DATA_TRANSFER_ITEMS_ENABLED true
139 #define DEFAULT_DIRECTORY_UPLOAD_ENABLED true
140 #else
141 #define DEFAULT_DATA_TRANSFER_ITEMS_ENABLED false
142 #define DEFAULT_DIRECTORY_UPLOAD_ENABLED false
143 #endif
144
145 // macro(KeyUpper, KeyLower, TypeNameUpper, TypeName, DefaultValue, HumanReadableName, HumanReadableDescription)
146
147 #define FOR_EACH_WEBKIT_BOOL_PREFERENCE(macro) \
148     macro(JavaScriptEnabled, javaScriptEnabled, Bool, bool, true, "", "") \
149     macro(JavaScriptMarkupEnabled, javaScriptMarkupEnabled, Bool, bool, true, "", "") \
150     macro(LoadsImagesAutomatically, loadsImagesAutomatically, Bool, bool, true, "", "") \
151     macro(LoadsSiteIconsIgnoringImageLoadingPreference, loadsSiteIconsIgnoringImageLoadingPreference, Bool, bool, false, "", "") \
152     macro(PluginsEnabled, pluginsEnabled, Bool, bool, false, "", "") \
153     macro(JavaEnabled, javaEnabled, Bool, bool, false, "", "") \
154     macro(JavaEnabledForLocalFiles, javaEnabledForLocalFiles, Bool, bool, false, "", "") \
155     macro(OfflineWebApplicationCacheEnabled, offlineWebApplicationCacheEnabled, Bool, bool, true, "", "") \
156     macro(LocalStorageEnabled, localStorageEnabled, Bool, bool, true, "", "") \
157     macro(DatabasesEnabled, databasesEnabled, Bool, bool, true, "", "") \
158     macro(XSSAuditorEnabled, xssAuditorEnabled, Bool, bool, true, "", "") \
159     macro(PrivateBrowsingEnabled, privateBrowsingEnabled, Bool, bool, false, "", "") \
160     macro(TextAreasAreResizable, textAreasAreResizable, Bool, bool, DEFAULT_TEXT_AREAS_ARE_RESIZABLE, "", "") \
161     macro(JavaScriptCanOpenWindowsAutomatically, javaScriptCanOpenWindowsAutomatically, Bool, bool, DEFAULT_JAVASCRIPT_CAN_OPEN_WINDOWS_AUTOMATICALLY, "", "") \
162     macro(HyperlinkAuditingEnabled, hyperlinkAuditingEnabled, Bool, bool, true, "", "") \
163     macro(NeedsSiteSpecificQuirks, needsSiteSpecificQuirks, Bool, bool, false, "", "") \
164     macro(AcceleratedCompositingEnabled, acceleratedCompositingEnabled, Bool, bool, true, "", "") \
165     macro(ForceCompositingMode, forceCompositingMode, Bool, bool, false, "", "") \
166     macro(CanvasUsesAcceleratedDrawing, canvasUsesAcceleratedDrawing, Bool, bool, DEFAULT_CANVAS_USES_ACCELERATED_DRAWING, "", "") \
167     macro(WebGLEnabled, webGLEnabled, Bool, bool, true, "", "") \
168     macro(ForceSoftwareWebGLRendering, forceSoftwareWebGLRendering, Bool, bool, false, "", "") \
169     macro(Accelerated2dCanvasEnabled, accelerated2dCanvasEnabled, Bool, bool, false, "", "") \
170     macro(CSSAnimationTriggersEnabled, cssAnimationTriggersEnabled, Bool, bool, true, "", "") \
171     macro(ForceFTPDirectoryListings, forceFTPDirectoryListings, Bool, bool, false, "", "") \
172     macro(TabsToLinks, tabsToLinks, Bool, bool, DEFAULT_WEBKIT_TABSTOLINKS_ENABLED, "", "") \
173     macro(DNSPrefetchingEnabled, dnsPrefetchingEnabled, Bool, bool, false, "", "") \
174     macro(DOMTimersThrottlingEnabled, domTimersThrottlingEnabled, Bool, bool, true, "", "") \
175     macro(WebArchiveDebugModeEnabled, webArchiveDebugModeEnabled, Bool, bool, false, "", "") \
176     macro(LocalFileContentSniffingEnabled, localFileContentSniffingEnabled, Bool, bool, false, "", "") \
177     macro(UsesPageCache, usesPageCache, Bool, bool, true, "", "") \
178     macro(PageCacheSupportsPlugins, pageCacheSupportsPlugins, Bool, bool, true, "", "") \
179     macro(AuthorAndUserStylesEnabled, authorAndUserStylesEnabled, Bool, bool, true, "", "") \
180     macro(PaginateDuringLayoutEnabled, paginateDuringLayoutEnabled, Bool, bool, false, "", "") \
181     macro(DOMPasteAllowed, domPasteAllowed, Bool, bool, false, "", "") \
182     macro(JavaScriptCanAccessClipboard, javaScriptCanAccessClipboard, Bool, bool, false, "", "") \
183     macro(ShouldPrintBackgrounds, shouldPrintBackgrounds, Bool, bool, DEFAULT_SHOULD_PRINT_BACKGROUNDS, "", "") \
184     macro(LinkPreconnect, linkPreconnect, Bool, bool, DEFAULT_LINK_PRECONNECT_ENABLED, "", "") \
185     macro(FullScreenEnabled, fullScreenEnabled, Bool, bool, false, "", "") \
186     macro(AsynchronousSpellCheckingEnabled, asynchronousSpellCheckingEnabled, Bool, bool, false, "", "") \
187     macro(WebSecurityEnabled, webSecurityEnabled, Bool, bool, true, "", "") \
188     macro(AllowUniversalAccessFromFileURLs, allowUniversalAccessFromFileURLs, Bool, bool, false, "", "") \
189     macro(AllowFileAccessFromFileURLs, allowFileAccessFromFileURLs, Bool, bool, false, "", "") \
190     macro(AVFoundationEnabled, isAVFoundationEnabled, Bool, bool, true, "", "") \
191     macro(AVFoundationNSURLSessionEnabled, isAVFoundationNSURLSessionEnabled, Bool, bool, true, "", "") \
192     macro(GStreamerEnabled, isGStreamerEnabled, Bool, bool, true, "", "") \
193     macro(RequiresUserGestureForMediaPlayback, requiresUserGestureForMediaPlayback, Bool, bool, false, "", "") \
194     macro(RequiresUserGestureForVideoPlayback, requiresUserGestureForVideoPlayback, Bool, bool, false, "", "") \
195     macro(RequiresUserGestureForAudioPlayback, requiresUserGestureForAudioPlayback, Bool, bool, DEFAULT_REQUIRES_USER_GESTURE_FOR_AUDIO_PLAYBACK, "", "") \
196     macro(RequiresUserGestureToLoadVideo, requiresUserGestureToLoadVideo, Bool, bool, false, "", "") \
197     macro(MainContentUserGestureOverrideEnabled, mainContentUserGestureOverrideEnabled, Bool, bool, false, "", "") \
198     macro(MediaUserGestureInheritsFromDocument, mediaUserGestureInheritsFromDocument, Bool, bool, false, "", "") \
199     macro(AllowsInlineMediaPlayback, allowsInlineMediaPlayback, Bool, bool, DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK, "", "") \
200     macro(AllowsInlineMediaPlaybackAfterFullscreen, allowsInlineMediaPlaybackAfterFullscreen, Bool, bool, DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK_AFTER_FULLSCREEN, "", "") \
201     macro(InlineMediaPlaybackRequiresPlaysInlineAttribute, inlineMediaPlaybackRequiresPlaysInlineAttribute, Bool, bool, DEFAULT_INLINE_MEDIA_PLAYBACK_REQUIRES_PLAYS_INLINE_ATTRIBUTE, "", "") \
202     macro(InvisibleAutoplayNotPermitted, invisibleAutoplayNotPermitted, Bool, bool, DEFAULT_INVISIBLE_AUTOPLAY_NOT_PERMITTED, "", "") \
203     macro(MediaDataLoadsAutomatically, mediaDataLoadsAutomatically, Bool, bool, DEFAULT_MEDIA_DATA_LOADS_AUTOMATICALLY, "", "") \
204     macro(AllowsPictureInPictureMediaPlayback, allowsPictureInPictureMediaPlayback, Bool, bool, DEFAULT_ALLOWS_PICTURE_IN_PICTURE_MEDIA_PLAYBACK, "", "") \
205     macro(AllowsAirPlayForMediaPlayback, allowsAirPlayForMediaPlayback, Bool, bool, true, "", "") \
206     macro(MediaControlsScaleWithPageZoom, mediaControlsScaleWithPageZoom, Bool, bool, DEFAULT_MEDIA_CONTROLS_SCALE_WITH_PAGE_ZOOM, "", "") \
207     macro(InspectorStartsAttached, inspectorStartsAttached, Bool, bool, true, "", "") \
208     macro(ShowsToolTipOverTruncatedText, showsToolTipOverTruncatedText, Bool, bool, false, "", "") \
209     macro(MockScrollbarsEnabled, mockScrollbarsEnabled, Bool, bool, false, "", "") \
210     macro(WebAudioEnabled, webAudioEnabled, Bool, bool, true, "", "") \
211     macro(AttachmentElementEnabled, attachmentElementEnabled, Bool, bool, false, "", "") \
212     macro(SuppressesIncrementalRendering, suppressesIncrementalRendering, Bool, bool, false, "", "") \
213     macro(BackspaceKeyNavigationEnabled, backspaceKeyNavigationEnabled, Bool, bool, DEFAULT_BACKSPACE_KEY_NAVIGATION_ENABLED, "", "") \
214     macro(CaretBrowsingEnabled, caretBrowsingEnabled, Bool, bool, false, "", "") \
215     macro(ShouldDisplaySubtitles, shouldDisplaySubtitles, Bool, bool, false, "", "") \
216     macro(ShouldDisplayCaptions, shouldDisplayCaptions, Bool, bool, false, "", "") \
217     macro(ShouldDisplayTextDescriptions, shouldDisplayTextDescriptions, Bool, bool, false, "", "") \
218     macro(NotificationsEnabled, notificationsEnabled, Bool, bool, true, "", "") \
219     macro(ShouldRespectImageOrientation, shouldRespectImageOrientation, Bool, bool, DEFAULT_SHOULD_RESPECT_IMAGE_ORIENTATION, "", "") \
220     macro(WantsBalancedSetDefersLoadingBehavior, wantsBalancedSetDefersLoadingBehavior, Bool, bool, false, "", "") \
221     macro(RequestAnimationFrameEnabled, requestAnimationFrameEnabled, Bool, bool, true, "", "") \
222     macro(DiagnosticLoggingEnabled, diagnosticLoggingEnabled, Bool, bool, false, "", "") \
223     macro(AsynchronousPluginInitializationEnabled, asynchronousPluginInitializationEnabled, Bool, bool, false, "", "") \
224     macro(AsynchronousPluginInitializationEnabledForAllPlugins, asynchronousPluginInitializationEnabledForAllPlugins, Bool, bool, false, "", "") \
225     macro(ArtificialPluginInitializationDelayEnabled, artificialPluginInitializationDelayEnabled, Bool, bool, false, "", "") \
226     macro(TabToLinksEnabled, tabToLinksEnabled, Bool, bool, false, "", "") \
227     macro(ScrollingPerformanceLoggingEnabled, scrollingPerformanceLoggingEnabled, Bool, bool, false, "", "") \
228     macro(ScrollAnimatorEnabled, scrollAnimatorEnabled, Bool, bool, DEFAULT_WEBKIT_SCROLL_ANIMATOR_ENABLED, "", "") \
229     macro(ForceUpdateScrollbarsOnMainThreadForPerformanceTesting, forceUpdateScrollbarsOnMainThreadForPerformanceTesting, Bool, bool, false, "", "") \
230     macro(CookieEnabled, cookieEnabled, Bool, bool, true, "", "") \
231     macro(PlugInSnapshottingEnabled, plugInSnapshottingEnabled, Bool, bool, false, "", "") \
232     macro(SnapshotAllPlugIns, snapshotAllPlugIns, Bool, bool, false, "", "") \
233     macro(AutostartOriginPlugInSnapshottingEnabled, autostartOriginPlugInSnapshottingEnabled, Bool, bool, true, "", "") \
234     macro(PrimaryPlugInSnapshotDetectionEnabled, primaryPlugInSnapshotDetectionEnabled, Bool, bool, true, "", "") \
235     macro(PDFPluginEnabled, pdfPluginEnabled, Bool, bool, DEFAULT_PDFPLUGIN_ENABLED, "", "") \
236     macro(UsesEncodingDetector, usesEncodingDetector, Bool, bool, false, "", "") \
237     macro(TextAutosizingEnabled, textAutosizingEnabled, Bool, bool, WebCore::Settings::defaultTextAutosizingEnabled(), "", "") \
238     macro(AggressiveTileRetentionEnabled, aggressiveTileRetentionEnabled, Bool, bool, false, "", "") \
239     macro(TemporaryTileCohortRetentionEnabled, temporaryTileCohortRetentionEnabled, Bool, bool, DEFAULT_TEMPORARY_TILE_COHORT_RETENTION_ENABLED, "", "") \
240     macro(QTKitEnabled, isQTKitEnabled, Bool, bool, WebCore::Settings::isQTKitEnabled(), "", "") \
241     macro(PageVisibilityBasedProcessSuppressionEnabled, pageVisibilityBasedProcessSuppressionEnabled, Bool, bool, true, "", "") \
242     macro(SmartInsertDeleteEnabled, smartInsertDeleteEnabled, Bool, bool, true, "", "") \
243     macro(SelectTrailingWhitespaceEnabled, selectTrailingWhitespaceEnabled, Bool, bool, false, "", "") \
244     macro(ShowsURLsInToolTipsEnabled, showsURLsInToolTipsEnabled, Bool, bool, false, "", "") \
245     macro(AcceleratedCompositingForOverflowScrollEnabled, acceleratedCompositingForOverflowScrollEnabled, Bool, bool, false, "", "") \
246     macro(HiddenPageDOMTimerThrottlingEnabled, hiddenPageDOMTimerThrottlingEnabled, Bool, bool, DEFAULT_HIDDEN_PAGE_DOM_TIMER_THROTTLING_ENABLED, "", "") \
247     macro(HiddenPageDOMTimerThrottlingAutoIncreases, hiddenPageDOMTimerThrottlingAutoIncreases, Bool, bool, false, "", "") \
248     macro(HiddenPageCSSAnimationSuspensionEnabled, hiddenPageCSSAnimationSuspensionEnabled, Bool, bool, DEFAULT_HIDDEN_PAGE_CSS_ANIMATION_SUSPENSION_ENABLED, "", "") \
249     macro(LowPowerVideoAudioBufferSizeEnabled, lowPowerVideoAudioBufferSizeEnabled, Bool, bool, false, "", "") \
250     macro(ThreadedScrollingEnabled, threadedScrollingEnabled, Bool, bool, true, "", "") \
251     macro(SimpleLineLayoutEnabled, simpleLineLayoutEnabled, Bool, bool, true, "", "") \
252     macro(SubpixelCSSOMElementMetricsEnabled, subpixelCSSOMElementMetricsEnabled, Bool, bool, false, "", "") \
253     macro(UseGiantTiles, useGiantTiles, Bool, bool, false, "", "") \
254     macro(MediaDevicesEnabled, mediaDevicesEnabled, Bool, bool, false, "", "") \
255     macro(MediaStreamEnabled, mediaStreamEnabled, Bool, bool, true, "", "") \
256     macro(PeerConnectionEnabled, peerConnectionEnabled, Bool, bool, WebCore::LibWebRTCProvider::webRTCAvailable(), "", "") \
257     macro(UseLegacyTextAlignPositionedElementBehavior, useLegacyTextAlignPositionedElementBehavior, Bool, bool, false, "", "") \
258     macro(SpatialNavigationEnabled, spatialNavigationEnabled, Bool, bool, false, "", "") \
259     macro(MediaSourceEnabled, mediaSourceEnabled, Bool, bool, true, "", "") \
260     macro(ViewGestureDebuggingEnabled, viewGestureDebuggingEnabled, Bool, bool, false, "", "") \
261     macro(ShouldConvertPositionStyleOnCopy, shouldConvertPositionStyleOnCopy, Bool, bool, false, "", "") \
262     macro(Standalone, standalone, Bool, bool, false, "", "") \
263     macro(TelephoneNumberParsingEnabled, telephoneNumberParsingEnabled, Bool, bool, false, "", "") \
264     macro(AllowMultiElementImplicitSubmission, allowMultiElementImplicitSubmission, Bool, bool, false, "", "") \
265     macro(AlwaysUseAcceleratedOverflowScroll, alwaysUseAcceleratedOverflowScroll, Bool, bool, false, "", "") \
266     macro(PasswordEchoEnabled, passwordEchoEnabled, Bool, bool, DEFAULT_PASSWORD_ECHO_ENABLED, "", "") \
267     macro(ImageControlsEnabled, imageControlsEnabled, Bool, bool, false, "", "") \
268     macro(EnableInheritURIQueryComponent, enableInheritURIQueryComponent, Bool, bool, false, "", "") \
269     macro(ServiceControlsEnabled, serviceControlsEnabled, Bool, bool, false, "", "") \
270     macro(DeferredCSSParserEnabled, deferredCSSParserEnabled, Bool, bool, false, "", "") \
271     macro(HTTPEquivEnabled, httpEquivEnabled, Bool, bool, true, "", "") \
272     macro(MockCaptureDevicesEnabled, mockCaptureDevicesEnabled, Bool, bool, false, "", "") \
273     macro(MockCaptureDevicesPromptEnabled, mockCaptureDevicesPromptEnabled, Bool, bool, true, "", "") \
274     macro(MediaCaptureRequiresSecureConnection, mediaCaptureRequiresSecureConnection, Bool, bool, true, "", "") \
275     macro(EnumeratingAllNetworkInterfacesEnabled, enumeratingAllNetworkInterfacesEnabled, Bool, bool, false, "", "") \
276     macro(ICECandidateFilteringEnabled, iceCandidateFilteringEnabled, Bool, bool, true, "", "") \
277     macro(ShadowDOMEnabled, shadowDOMEnabled, Bool, bool, true, "Shadow DOM", "HTML Shadow DOM prototype") \
278     macro(FetchAPIEnabled, fetchAPIEnabled, Bool, bool, true, "", "") \
279     macro(DownloadAttributeEnabled, downloadAttributeEnabled, Bool, bool, true, "", "") \
280     macro(SelectionPaintingWithoutSelectionGapsEnabled, selectionPaintingWithoutSelectionGapsEnabled, Bool, bool, false, "", "") \
281     macro(ApplePayEnabled, applePayEnabled, Bool, bool, false, "", "") \
282     macro(ApplePayCapabilityDisclosureAllowed, applePayCapabilityDisclosureAllowed, Bool, bool, true, "", "") \
283     macro(VisualViewportEnabled, visualViewportEnabled, Bool, bool, true, "", "") \
284     macro(NeedsStorageAccessFromFileURLsQuirk, needsStorageAccessFromFileURLsQuirk, Bool, bool, true, "", "") \
285     macro(LargeImageAsyncDecodingEnabled, largeImageAsyncDecodingEnabled, Bool, bool, true, "", "") \
286     macro(AnimatedImageAsyncDecodingEnabled, animatedImageAsyncDecodingEnabled, Bool, bool, true, "", "") \
287     macro(CustomElementsEnabled, customElementsEnabled, Bool, bool, true, "", "") \
288     macro(EncryptedMediaAPIEnabled, encryptedMediaAPIEnabled, Bool, bool, false, "", "") \
289     macro(MediaPreloadingEnabled, mediaPreloadingEnabled, Bool, bool, false, "", "") \
290     macro(IntersectionObserverEnabled, intersectionObserverEnabled, Bool, bool, false, "Intersection Observer", "Enable Intersection Observer support") \
291     macro(InteractiveFormValidationEnabled, interactiveFormValidationEnabled, Bool, bool, true, "HTML Interactive Form Validation", "HTML interactive form validation") \
292     macro(ShouldSuppressKeyboardInputDuringProvisionalNavigation, shouldSuppressKeyboardInputDuringProvisionalNavigation, Bool, bool, false, "", "") \
293     macro(CSSGridLayoutEnabled, cssGridLayoutEnabled, Bool, bool, true, "CSS Grid", "CSS Grid Layout Module support") \
294     macro(GamepadsEnabled, gamepadsEnabled, Bool, bool, true, "Gamepads", "Web Gamepad API support") \
295     macro(InputEventsEnabled, inputEventsEnabled, Bool, bool, true, "Input Events", "Enable InputEvents support") \
296     macro(CredentialManagementEnabled, credentialManagementEnabled, Bool, bool, false, "Credential Management", "Enable Credential Management support") \
297     macro(ModernMediaControlsEnabled, modernMediaControlsEnabled, Bool, bool, DEFAULT_MODERN_MEDIA_CONTROLS_ENABLED, "Modern Media Controls", "Use modern media controls look") \
298     macro(ResourceTimingEnabled, resourceTimingEnabled, Bool, bool, DEFAULT_RESOURCE_TIMING_ENABLED, "Resource Timing", "Enable ResourceTiming API") \
299     macro(UserTimingEnabled, userTimingEnabled, Bool, bool, true, "User Timing", "Enable UserTiming API") \
300     macro(BeaconAPIEnabled, beaconAPIEnabled, Bool, bool, true, "Beacon API", "Beacon API") \
301     macro(LegacyEncryptedMediaAPIEnabled, legacyEncryptedMediaAPIEnabled, Bool, bool, DEFAULT_LEGACY_ENCRYPTED_MEDIA_API_ENABLED, "Enable Legacy EME API", "Enable legacy EME API") \
302     macro(AllowMediaContentTypesRequiringHardwareSupportAsFallback, allowMediaContentTypesRequiringHardwareSupportAsFallback, Bool, bool, DEFAULT_ALLOW_MEDIA_CONTENT_TYPES_REQUIRING_HARDWARE_SUPPORT_AS_FALLBACK, "Allow Media Content Types Requirining Hardware As Fallback", "Allow Media Content Types Requirining Hardware As Fallback") \
303     macro(InspectorAdditionsEnabled, inspectorAdditionsEnabled, Bool, bool, false, "Web Inspector Additions", "Enable additional page APIs used by the Web Inspector frontend page") \
304     macro(DirectoryUploadEnabled, directoryUploadEnabled, Bool, bool, DEFAULT_DIRECTORY_UPLOAD_ENABLED, "Directory Upload", "input.webkitdirectory / dataTransferItem.webkitGetAsEntry()") \
305     macro(DataTransferItemsEnabled, dataTransferItemsEnabled, Bool, bool, DEFAULT_DATA_TRANSFER_ITEMS_ENABLED, "Data Transfer Items", "Enables DataTransferItem in the clipboard API") \
306     macro(CustomPasteboardDataEnabled, customPasteboardDataEnabled, Bool, bool, WebCore::Settings::defaultCustomPasteboardDataEnabled(), "Custom pateboard data", "Enable custom clipboard types and better security model for clipboard API.") \
307     macro(WebVREnabled, webVREnabled, Bool, bool, false, "WebVR", "WebVR Module support") \
308     macro(ViewportFitEnabled, viewportFitEnabled, Bool, bool, true, "Viewport Fit", "Enable viewport-fit viewport parameter") \
309     \
310
311 #define FOR_EACH_WEBKIT_DOUBLE_PREFERENCE(macro) \
312     macro(IncrementalRenderingSuppressionTimeout, incrementalRenderingSuppressionTimeout, Double, double, 5, "", "") \
313     macro(MinimumFontSize, minimumFontSize, Double, double, 0, "", "") \
314     macro(MinimumLogicalFontSize, minimumLogicalFontSize, Double, double, 9, "", "") \
315     macro(MinimumZoomFontSize, minimumZoomFontSize, Double, double, WebCore::Settings::defaultMinimumZoomFontSize(), "", "") \
316     macro(DefaultFontSize, defaultFontSize, Double, double, 16, "", "") \
317     macro(DefaultFixedFontSize, defaultFixedFontSize, Double, double, 13, "", "") \
318     macro(LayoutInterval, layoutInterval, Double, double, -1, "", "") \
319     macro(MaxParseDuration, maxParseDuration, Double, double, -1, "", "") \
320     macro(PasswordEchoDuration, passwordEchoDuration, Double, double, 2, "", "") \
321 \
322
323 #define FOR_EACH_WEBKIT_UINT32_PREFERENCE(macro) \
324     macro(FontSmoothingLevel, fontSmoothingLevel, UInt32, uint32_t, FontSmoothingLevelMedium, "", "") \
325     macro(LayoutFallbackWidth, layoutFallbackWidth, UInt32, uint32_t, 980, "", "") \
326     macro(DeviceWidth, deviceWidth, UInt32, uint32_t, 0, "", "") \
327     macro(DeviceHeight, deviceHeight, UInt32, uint32_t, 0, "", "") \
328     macro(EditableLinkBehavior, editableLinkBehavior, UInt32, uint32_t, WebCore::EditableLinkNeverLive, "", "") \
329     macro(InspectorAttachedHeight, inspectorAttachedHeight, UInt32, uint32_t, 300, "", "") \
330     macro(InspectorAttachedWidth, inspectorAttachedWidth, UInt32, uint32_t, 750, "", "") \
331     macro(InspectorAttachmentSide, inspectorAttachmentSide, UInt32, uint32_t, 0, "", "") \
332     macro(StorageBlockingPolicy, storageBlockingPolicy, UInt32, uint32_t, WebCore::SecurityOrigin::BlockThirdPartyStorage, "", "") \
333     macro(JavaScriptRuntimeFlags, javaScriptRuntimeFlags, UInt32, uint32_t, 0, "", "") \
334     macro(DataDetectorTypes, dataDetectorTypes, UInt32, uint32_t, 0, "", "") \
335     macro(UserInterfaceDirectionPolicy, userInterfaceDirectionPolicy, UInt32, uint32_t, 0, "", "") \
336     macro(SystemLayoutDirection, systemLayoutDirection, UInt32, uint32_t, 0, "", "") \
337     macro(FrameFlattening, frameFlattening, UInt32, uint32_t, DEFAULT_FRAME_FLATTENING, "", "") \
338     \
339
340 #define FOR_EACH_WEBKIT_DEBUG_BOOL_PREFERENCE(macro) \
341     macro(AcceleratedDrawingEnabled, acceleratedDrawingEnabled, Bool, bool, DEFAULT_ACCELERATED_DRAWING_ENABLED, "", "") \
342     macro(SubpixelAntialiasedLayerTextEnabled, subpixelAntialiasedLayerTextEnabled, Bool, bool, DEFAULT_SUBPIXEL_ANTIALIASED_LAYER_TEXT_ENABLED, "", "") \
343     macro(DisplayListDrawingEnabled, displayListDrawingEnabled, Bool, bool, false, "", "") \
344     macro(CompositingBordersVisible, compositingBordersVisible, Bool, bool, false, "", "") \
345     macro(CompositingRepaintCountersVisible, compositingRepaintCountersVisible, Bool, bool, false, "", "") \
346     macro(TiledScrollingIndicatorVisible, tiledScrollingIndicatorVisible, Bool, bool, false, "", "") \
347     macro(SimpleLineLayoutDebugBordersEnabled, simpleLineLayoutDebugBordersEnabled, Bool, bool, false, "", "") \
348     macro(DeveloperExtrasEnabled, developerExtrasEnabled, Bool, bool, false, "", "") \
349     macro(LogsPageMessagesToSystemConsoleEnabled, logsPageMessagesToSystemConsoleEnabled, Bool, bool, false, "", "") \
350     macro(IgnoreViewportScalingConstraints, ignoreViewportScalingConstraints, Bool, bool, true, "", "") \
351     macro(ForceAlwaysUserScalable, forceAlwaysUserScalable, Bool, bool, false, "", "") \
352     macro(ResourceUsageOverlayVisible, resourceUsageOverlayVisible, Bool, bool, false, "", "") \
353     \
354
355 #define FOR_EACH_WEBKIT_DEBUG_UINT32_PREFERENCE(macro) \
356     macro(VisibleDebugOverlayRegions, visibleDebugOverlayRegions, UInt32, uint32_t, 0, "", "")
357
358 // Our Xcode build system does not currently have any concept of DEVELOPER_MODE.
359 // Cocoa ports must disable experimental features on release branches for now.
360 #if ENABLE(DEVELOPER_MODE) || PLATFORM(COCOA)
361 #define DEFAULT_EXPERIMENTAL_FEATURES_ENABLED true
362 #else
363 #define DEFAULT_EXPERIMENTAL_FEATURES_ENABLED false
364 #endif
365
366 // For experimental features:
367 // - The type should be boolean.
368 // - You must provide the last two parameters for all experimental features. They
369 //   are the text exposed to the user from the WebKit client.
370 // - They should be alphabetically ordered by the human readable text (the first string).
371 // - The default value may be either false (for unstable features) or
372 //   DEFAULT_EXPERIMENTAL_FEATURES_ENABLED (for features that are ready for
373 //   wider testing).
374
375 #define FOR_EACH_WEBKIT_EXPERIMENTAL_FEATURE_PREFERENCE(macro) \
376     macro(AsyncFrameScrollingEnabled, asyncFrameScrollingEnabled, Bool, bool, false, "Async Frame Scrolling", "Perform frame scrolling in a dedicated thread or process") \
377     macro(CacheAPIEnabled, cacheAPIEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "Cache API", "Enable Cache API") \
378     macro(ConstantPropertiesEnabled, constantPropertiesEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "Constant Properties", "Enable CSS constant() properties") \
379     macro(DisplayContentsEnabled, displayContentsEnabled, Bool, bool, false, "CSS display: contents", "Enable CSS display: contents support") \
380     macro(SpringTimingFunctionEnabled, springTimingFunctionEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "CSS Spring Animations", "CSS Spring Animation prototype") \
381     macro(LinkPreloadEnabled, linkPreloadEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "Link Preload", "Link preload support") \
382     macro(PaymentRequestEnabled, paymentRequestEnabled, Bool, bool, false, "Payment Request", "W3C Payment Request API") \
383     macro(WebRTCLegacyAPIDisabled, webRTCLegacyAPIDisabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "Remove Legacy WebRTC API", "Remove Legacy WebRTC API") \
384     macro(IsSecureContextAttributeEnabled, isSecureContextAttributeEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "Secure Contexts API", "Enable Secure Contexts API") \
385     macro(ServiceWorkersEnabled, serviceWorkersEnabled, Bool, bool, false, "ServiceWorkers", "Enable ServiceWorkers") \
386     macro(StorageAccessAPIEnabled, storageAccessAPIEnabled, Bool, bool, false, "Storage Access API", "Enable Storage Access API") \
387     macro(SubresourceIntegrityEnabled, subresourceIntegrityEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "SubresourceIntegrity", "Enable SubresourceIntegrity") \
388     macro(WebAnimationsEnabled, webAnimationsEnabled, Bool, bool, false, "Web Animations", "Web Animations prototype") \
389     macro(WebGL2Enabled, webGL2Enabled, Bool, bool, false, "WebGL 2.0", "WebGL 2 prototype") \
390     macro(WebGPUEnabled, webGPUEnabled, Bool, bool, false, "WebGPU", "WebGPU prototype") \
391     \
392
393 #if PLATFORM(COCOA)
394
395 #if PLATFORM(IOS)
396 #define DEFAULT_CURSIVE_FONT_FAMILY "Snell Roundhand"
397 #define DEFAULT_PICTOGRAPH_FONT_FAMILY "AppleColorEmoji"
398 #else
399 #define DEFAULT_CURSIVE_FONT_FAMILY "Apple Chancery"
400 #define DEFAULT_PICTOGRAPH_FONT_FAMILY "Apple Color Emoji"
401 #endif
402
403
404 #define FOR_EACH_WEBKIT_FONT_FAMILY_PREFERENCE(macro) \
405     macro(StandardFontFamily, standardFontFamily, String, String, "Times", "", "") \
406     macro(CursiveFontFamily, cursiveFontFamily, String, String, DEFAULT_CURSIVE_FONT_FAMILY, "", "") \
407     macro(FantasyFontFamily, fantasyFontFamily, String, String, "Papyrus", "", "") \
408     macro(FixedFontFamily, fixedFontFamily, String, String, "Courier", "", "") \
409     macro(SansSerifFontFamily, sansSerifFontFamily, String, String, "Helvetica", "", "") \
410     macro(SerifFontFamily, serifFontFamily, String, String, "Times", "", "") \
411     macro(PictographFontFamily, pictographFontFamily, String, String, "Apple Color Emoji", "", "") \
412     \
413
414 #else
415
416 #define FOR_EACH_WEBKIT_FONT_FAMILY_PREFERENCE(macro) \
417     macro(StandardFontFamily, standardFontFamily, String, String, "Times", "", "") \
418     macro(CursiveFontFamily, cursiveFontFamily, String, String, "Comic Sans MS", "", "") \
419     macro(FantasyFontFamily, fantasyFontFamily, String, String, "Impact", "", "") \
420     macro(FixedFontFamily, fixedFontFamily, String, String, "Courier New", "", "") \
421     macro(SansSerifFontFamily, sansSerifFontFamily, String, String, "Helvetica", "", "") \
422     macro(SerifFontFamily, serifFontFamily, String, String, "Times", "", "") \
423     macro(PictographFontFamily, pictographFontFamily, String, String, "Times", "", "") \
424     \
425
426 #endif
427
428 #define FOR_EACH_WEBKIT_STRING_PREFERENCE(macro) \
429     FOR_EACH_WEBKIT_FONT_FAMILY_PREFERENCE(macro) \
430     macro(DefaultTextEncodingName, defaultTextEncodingName, String, String, defaultTextEncodingNameForSystemLanguage(), "", "") \
431     macro(FTPDirectoryTemplatePath, ftpDirectoryTemplatePath, String, String, "", "", "") \
432     macro(MediaContentTypesRequiringHardwareSupport, mediaContentTypesRequiringHardwareSupport, String, String, WebCore::Settings::defaultMediaContentTypesRequiringHardwareSupport(), "", "") \
433     \
434
435 #define FOR_EACH_WEBKIT_STRING_PREFERENCE_NOT_IN_WEBCORE(macro) \
436     macro(InspectorWindowFrame, inspectorWindowFrame, String, String, "", "", "") \
437     \
438
439 #define FOR_EACH_WEBKIT_DEBUG_PREFERENCE(macro) \
440     FOR_EACH_WEBKIT_DEBUG_BOOL_PREFERENCE(macro) \
441     FOR_EACH_WEBKIT_DEBUG_UINT32_PREFERENCE(macro) \
442     \
443
444 #define FOR_EACH_WEBKIT_PREFERENCE(macro) \
445     FOR_EACH_WEBKIT_BOOL_PREFERENCE(macro) \
446     FOR_EACH_WEBKIT_DOUBLE_PREFERENCE(macro) \
447     FOR_EACH_WEBKIT_UINT32_PREFERENCE(macro) \
448     FOR_EACH_WEBKIT_STRING_PREFERENCE(macro) \
449     FOR_EACH_WEBKIT_STRING_PREFERENCE_NOT_IN_WEBCORE(macro) \
450     \
451