# Copyright (c) 2020 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:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. 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.
#
# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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.

AVFoundationEnabled:
  type: bool
  getter: isAVFoundationEnabled
  webcoreBinding: DeprecatedGlobalSettings
  condition: USE(AVFOUNDATION)
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      "PLATFORM(WATCHOS)": false
      default: true

AVFoundationNSURLSessionEnabled:
  type: bool
  getter: isAVFoundationNSURLSessionEnabled
  webcoreBinding: DeprecatedGlobalSettings
  condition: USE(AVFOUNDATION)
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true

AcceleratedCompositingEnabled:
  type: bool
  webcoreOnChange: setNeedsRecalcStyleInAllFrames
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

AcceleratedCompositingForFixedPositionEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      PLATFORM(IOS_FAMILY): true
      default: false
    WebCore:
      PLATFORM(IOS_FAMILY): true
      default: false

AggressiveTileRetentionEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

AllowContentSecurityPolicySourceStarToMatchAnyProtocol:
  type: bool
  defaultValue:
    WebKitLegacy:
      PLATFORM(IOS_FAMILY): WebKit::defaultAllowContentSecurityPolicySourceStarToMatchAnyProtocol()
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

AllowCrossOriginSubresourcesToAskForCredentials:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

AllowDisplayOfInsecureContent:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: WebKit::defaultAllowDisplayOfInsecureContent()
    WebKit:
      default: false
    WebCore:
      default: false

AllowFileAccessFromFileURLs:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: false
    WebCore:
      default: true

AllowMediaContentTypesRequiringHardwareSupportAsFallback:
  type: bool
  humanReadableName: "Allow Media Content Types Requirining Hardware As Fallback"
  humanReadableDescription: "Allow Media Content Types Requirining Hardware As Fallback"
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      "PLATFORM(COCOA)": true
      default: false
    WebCore:
      default: false

AllowMultiElementImplicitSubmission:
  type: bool
  webKitLegacyPreferenceKey: WebKitAllowMultiElementImplicitFormSubmissionPreferenceKey
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

AllowRunningOfInsecureContent:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: WebKit::defaultAllowRunningOfInsecureContent()
    WebKit:
      default: false
    WebCore:
      default: false

AllowSettingAnyXHRHeaderFromFileURLs:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

AllowTopNavigationToDataURLs:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: false
    WebCore:
      default: false

AllowUniversalAccessFromFileURLs:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: false
    WebCore:
      default: true

AllowsAirPlayForMediaPlayback:
  type: bool
  webKitLegacyPreferenceKey: WebKitMediaPlaybackAllowsAirPlay
  condition: ENABLE(WIRELESS_PLAYBACK_TARGET)
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

AllowsInlineMediaPlayback:
  type: bool
  webKitLegacyPreferenceKey: WebKitMediaPlaybackAllowsInline
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY)": WebKit::defaultAllowsInlineMediaPlayback()
      default: true
    WebKit:
      "PLATFORM(IOS_FAMILY)": false
      default: true
    WebCore:
      "PLATFORM(IOS_FAMILY)": false
      default: true

AllowsInlineMediaPlaybackAfterFullscreen:
  type: bool
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY)": WebKit::defaultAllowsInlineMediaPlaybackAfterFullscreen()
      default: false
    WebKit:
      "PLATFORM(IOS_FAMILY)": true
      default: false
    WebCore:
      default: true

AllowsPictureInPictureMediaPlayback:
  type: bool
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY)": WebKit::defaultAllowsPictureInPictureMediaPlayback()
      default: false
    WebKit:
      "PLATFORM(IOS_FAMILY)": true
      default: false
    WebCore:
      default: true

AlwaysUseAcceleratedOverflowScroll:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

AnimatedImageAsyncDecodingEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

AppleMailPaginationQuirkEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      PLATFORM(MAC): WebKit::defaultAppleMailPaginationQuirkEnabled()
      default: false
    WebCore:
      default: false

# FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely (though we should still set the default value to false when initializing settings).
ApplePayCapabilityDisclosureAllowed:
  type: bool
  condition: ENABLE(APPLE_PAY)
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

# FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely (though we should still set the default value to false when initializing settings).
ApplePayEnabled:
  type: bool
  condition: ENABLE(APPLE_PAY)
  defaultValue:
    WebKitLegacy:
      "ENABLE(APPLE_PAY_REMOTE_UI)": true
      default: false
    WebKit:
      "ENABLE(APPLE_PAY_REMOTE_UI)": true
      default: false
    WebCore:
      "ENABLE(APPLE_PAY_REMOTE_UI)": true
      default: false

ArtificialPluginInitializationDelayEnabled:
  type: bool
  webcoreBinding: none
  exposed: [ WebKit ]
  defaultValue:
    WebKit:
      default: false

AsynchronousPluginInitializationEnabled:
  type: bool
  webcoreBinding: none
  exposed: [ WebKit ]
  defaultValue:
    WebKit:
      default: false

AsynchronousPluginInitializationEnabledForAllPlugins:
  type: bool
  webcoreBinding: none
  exposed: [ WebKit ]
  defaultValue:
    WebKit:
      default: false

AsynchronousSpellCheckingEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

AttachmentElementEnabled:
  type: bool
  webcoreBinding: RuntimeEnabledFeatures
  condition: ENABLE(ATTACHMENT_ELEMENT)
  defaultValue:
    WebKitLegacy:
      default: WebKit::defaultAttachmentElementEnabled()
    WebKit:
      default: false

AuthorAndUserStylesEnabled:
  type: bool
  webKitLegacyPreferenceKey: WebKitAuthorAndUserStylesEnabledPreferenceKey
  webcoreOnChange: setNeedsRecalcStyleInAllFrames
  inspectorOverride: true
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

BackForwardCacheSupportsPlugins:
  type: bool
  webKitLegacyPreferenceKey: WebKitPageCacheSupportsPluginsPreferenceKey
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: false

BackspaceKeyNavigationEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY)": false
      default: true
    WebKit:
      "PLATFORM(IOS_FAMILY)": false
      default: true
    WebCore:
      default: true

# FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well.
BeaconAPIEnabled:
  type: bool
  humanReadableName: "Beacon API"
  humanReadableDescription: "Beacon API"
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: true
    WebCore:
      default: false

# FIXME: This is not relevent for WebKitLegacy, so should be excluded from WebKitLegacy entirely (though we should still set the default value to false when initializing settings).
CacheAPIEnabled:
  type: bool
  webcoreBinding: RuntimeEnabledFeatures
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: true

CanvasUsesAcceleratedDrawing:
  type: bool
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY) && !PLATFORM(IOS_FAMILY_SIMULATOR)": true
      default: false
    WebKit:
      default: true
    WebCore:
      default: false

CaretBrowsingEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

ColorFilterEnabled:
  type: bool
  webcoreOnChange: setNeedsRecalcStyleInAllFrames
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

# FIXME: This needs a more clear name to explain that it is a CSS related preference. (Maybe we need namespacing? CSS.ConstantPropertiesEnabled?)
ConstantPropertiesEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: false

ContentChangeObserverEnabled:
  type: bool
  condition: PLATFORM(IOS_FAMILY)
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      "PLATFORM(IOS_FAMILY) && !PLATFORM(MACCATALYST)": true
      default: false

ContentDispositionAttachmentSandboxEnabled:
  comment: 'Some ports (e.g. iOS) might choose to display attachments inline, regardless
    of whether the response includes the HTTP header \"Content-Disposition: attachment\".
    This setting enables a sandbox around these attachments. The sandbox enforces
    all frame sandbox flags (see enum SandboxFlag in SecurityContext.h), and also
    disables <meta http-equiv> processing and subframe loading.'
  type: bool
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      PLATFORM(COCOA): true
      default: false
    WebCore:
      default: false

# FIXME: This is handled via WebView SPI rather than WebPreferences for WebKitLegacy. We should change the SPI to lookup the WebPreferences value instead.
CookieEnabled:
  type: bool
  webKitLegacyBinding: custom
  defaultValue:
    WebKit:
      default: true
    WebKitLegacy:
      default: true
    WebCore:
      default: true

CursiveFontFamily:
  type: String
  webKitLegacyPreferenceKey: WebKitCursiveFont
  webcoreImplementation: custom
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY)": '"Snell Roundhand"'
      default: '"Apple Chancery"'
    WebKit:
      "PLATFORM(COCOA) && PLATFORM(IOS_FAMILY)": '"Snell Roundhand"'
      "PLATFORM(COCOA) && !PLATFORM(IOS_FAMILY)": '"Apple Chancery"'
      default: '"Comic Sans MS"'
    WebCore:
      default: '""'

CustomPasteboardDataEnabled:
  type: bool
  humanReadableName: "Custom pasteboard data"
  humanReadableDescription: "Enable custom clipboard types and better security model for clipboard API."
  webcoreBinding: RuntimeEnabledFeatures
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      "PLATFORM(COCOA) || PLATFORM(GTK) || PLATFORM(WIN)": true
      default: false
  
DNSPrefetchingEnabled:
  type: bool
  webcoreOnChange: dnsPrefetchingEnabledChanged
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

DOMPasteAllowed:
  type: bool
  webKitLegacyPreferenceKey: WebKitDOMPasteAllowedPreferenceKey
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

DOMTimersThrottlingEnabled:
  type: bool
  webKitLegacyPreferenceKey: WebKitDOMTimersThrottlingEnabledPreferenceKey
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

# FIXME: There is no custom binding implemented for WebKitLegacy.
DataDetectorTypes:
  type: uint32_t
  webcoreBinding: custom
  condition: ENABLE(DATA_DETECTION)
  defaultValue:
    WebKitLegacy:
      default: 0
    WebKit:
      default: 0

DataTransferItemsEnabled:
  type: bool
  humanReadableName: "Data Transfer Items"
  humanReadableDescription: "Enables DataTransferItem in the clipboard API"
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      "PLATFORM(COCOA) || PLATFORM(GTK) || PLATFORM(WPE)": true
      default: false
    WebCore:
      default: false

DatabasesEnabled:
  type: bool
  webKitLegacyPreferenceKey: WebKitDatabasesEnabledPreferenceKey
  webcoreBinding: custom
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true

DefaultFixedFontSize:
  type: double
  webcoreOnChange: setNeedsRecalcStyleInAllFrames
  defaultValue:
    WebKitLegacy:
      default: 13
    WebKit:
      default: 13
    WebCore:
      default: 13

DefaultFontSize:
  type: double
  webcoreOnChange: setNeedsRecalcStyleInAllFrames
  defaultValue:
    WebKitLegacy:
      default: 16
    WebKit:
      default: 16
    WebCore:
      default: 16

DefaultTextEncodingName:
  type: String
  defaultValue:
    WebKitLegacy:
      default: '"ISO-8859-1"'
    WebKit:
      default: WebCore::defaultTextEncodingNameForSystemLanguage()
    WebCore:
      default: '{ }'

DeferredCSSParserEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

DeviceHeight:
  type: uint32_t
  defaultValue:
    WebKitLegacy:
      default: 0
    WebKit:
      default: 0
    WebCore:
      default: 0

DeviceOrientationEventEnabled:
  type: bool
  condition: ENABLE(DEVICE_ORIENTATION)
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

DeviceOrientationPermissionAPIEnabled:
  type: bool
  condition: ENABLE(DEVICE_ORIENTATION)
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

DeviceWidth:
  type: uint32_t
  defaultValue:
    WebKitLegacy:
      default: 0
    WebKit:
      default: 0
    WebCore:
      default: 0

DiagnosticLoggingEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

DirectoryUploadEnabled:
  type: bool
  humanReadableName: "Directory Upload"
  humanReadableDescription: "input.webkitdirectory / dataTransferItem.webkitGetAsEntry()"
  webcoreBinding: RuntimeEnabledFeatures
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      "PLATFORM(COCOA) || PLATFORM(GTK) || PLATFORM(WPE)": true
      default: false

DisabledAdaptationsMetaTagEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      "PLATFORM(WATCHOS)": true
      default: false
    WebCore:
      default: false

# FIXME: This is on by default in WebKit2. Perhaps we should consider turning it on for WebKitLegacy as well.
DownloadAttributeEnabled:
  type: bool
  condition: ENABLE(DOWNLOAD_ATTRIBUTE)
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: true
    WebCore:
      default: false

EditableLinkBehavior:
  type: uint32_t
  webcoreBinding: custom
  defaultValue:
    WebKitLegacy:
      default: WebKitEditableLinkDefaultBehavior
    WebKit:
      default: WebCore::EditableLinkBehavior::NeverLive

EnableInheritURIQueryComponent:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

EncryptedMediaAPIEnabled:
  type: bool
  condition: ENABLE(ENCRYPTED_MEDIA)
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: true
    WebCore:
      default: false

EnforceCSSMIMETypeInNoQuirksMode:
  type: bool
  defaultValue:
    WebKitLegacy:
      PLATFORM(MAC): WebKit::defaultEnforceCSSMIMETypeInNoQuirksMode()
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

EnumeratingAllNetworkInterfacesEnabled:
  type: bool
  webcoreBinding: none
  exposed: [ WebKit ]
  defaultValue:
    WebKit:
      default: false

FTPDirectoryTemplatePath:
  type: String
  defaultValue:
    WebKitLegacy:
      default: '""'
    WebKit:
      default: '""'
    WebCore:
      default: '""'

FantasyFontFamily:
  type: String
  webKitLegacyPreferenceKey: WebKitFantasyFont
  webcoreImplementation: custom
  defaultValue:
    WebKitLegacy:
      default: '"Papyrus"'
    WebKit:
      "PLATFORM(COCOA)": '"Papyrus"'
      default: '"Impact"'
    WebCore:
      default: '""'

FixedFontFamily:
  type: String
  webKitLegacyPreferenceKey: WebKitFixedFont
  webcoreImplementation: custom
  defaultValue:
    WebKitLegacy:
      default: '"Courier"'
    WebKit:
      "PLATFORM(COCOA)": '"Courier"'
      default: '"Courier New"'
    WebCore:
      default: '""'

ForceCompositingMode:
  type: bool
  webcoreBinding: none
  exposed: [ WebKit ]
  defaultValue:
    WebKit:
      default: false

ForceFTPDirectoryListings:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

ForceWebGLUsesLowPower:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: false
    WebCore:
      default: false

# FIXME: We should make autogeneration smart enough to deal with enums to avoid explicitly casting in this file and custom binding to WebCore.
# FIXME: This should be reconciled with 'FrameFlatteningEnabled' in WebPreferencesInternal.yaml.
FrameFlattening:
  type: uint32_t
  webcoreBinding: custom
  exposed: [ WebKitLegacy ]
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY)": static_cast<uint32_t>(FrameFlattening::FullyEnabled)
      default: static_cast<uint32_t>(FrameFlattening::Disabled)

GStreamerEnabled:
  type: bool
  getter: isGStreamerEnabled
  webcoreBinding: DeprecatedGlobalSettings
  condition: USE(GSTREAMER)
  exposed: [ WebKit ]
  defaultValue:
    WebKit:
      default: true

GamepadsEnabled:
  type: bool
  humanReadableName: "Gamepads"
  humanReadableDescription: "Web Gamepad API support"
  condition: ENABLE(GAMEPAD)
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: true
    WebCore:
      default: false

HTTPEquivEnabled:
  type: bool
  webcoreName: httpEquivEnabled
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

HiddenPageCSSAnimationSuspensionEnabled:
  type: bool
  webcoreOnChange: hiddenPageCSSAnimationSuspensionEnabledChanged
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      "PLATFORM(COCOA) || PLATFORM(GTK)": true
      default: false
    WebCore:
      default: false

HiddenPageDOMTimerThrottlingAutoIncreases:
  type: bool
  webcoreOnChange: hiddenPageDOMTimerThrottlingStateChanged
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

HiddenPageDOMTimerThrottlingEnabled:
  type: bool
  webcoreOnChange: hiddenPageDOMTimerThrottlingStateChanged
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      "PLATFORM(COCOA) || PLATFORM(GTK)": true
      default: false
    WebCore:
      default: false

HyperlinkAuditingEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: false

ImageControlsEnabled:
  type: bool
  condition: ENABLE(SERVICE_CONTROLS)
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

InactiveMediaCaptureSteamRepromptIntervalInMinutes:
  type: double
  webcoreBinding: none
  exposed: [ WebKit ]
  defaultValue:
    WebKit:
      "PLATFORM(IOS_FAMILY)": 1
      default: 10

IncompleteImageBorderEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

IncrementalRenderingSuppressionTimeout:
  type: double
  webKitLegacyPreferenceKey: WebKitIncrementalRenderingSuppressionTimeoutInSeconds
  webcoreName: incrementalRenderingSuppressionTimeoutInSeconds
  defaultValue:
    WebKitLegacy:
      default: 5
    WebKit:
      default: 5
    WebCore:
      default: 5

InlineMediaPlaybackRequiresPlaysInlineAttribute:
  type: bool
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY)": WebKit::defaultInlineMediaPlaybackRequiresPlaysInlineAttribute()
      default: false
    WebKit:
      "PLATFORM(IOS_FAMILY)": true
      default: false
    WebCore:
      "PLATFORM(IOS_FAMILY)": true
      default: false

InputEventsEnabled:
  type: bool
  humanReadableName: "Input Events"
  humanReadableDescription: "Enable InputEvents support"
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

InspectorAdditionsEnabled:
  type: bool
  humanReadableName: "Web Inspector Additions"
  humanReadableDescription: "Enable additional page APIs used by the Web Inspector frontend page"
  webcoreBinding: RuntimeEnabledFeatures
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false

InspectorAttachedHeight:
  type: uint32_t
  webcoreBinding: none
  exposed: [ WebKit ]
  defaultValue:
    WebKit:
      default: 500

InspectorAttachedWidth:
  type: uint32_t
  webcoreBinding: none
  exposed: [ WebKit ]
  defaultValue:
    WebKit:
      default: 750

InspectorAttachmentSide:
  type: uint32_t
  webcoreBinding: none
  exposed: [ WebKit ]
  defaultValue:
    WebKit:
      default: 0

InspectorStartsAttached:
  type: bool
  webcoreBinding: none
  exposed: [ WebKit ]
  defaultValue:
    WebKit:
      default: true

InspectorWindowFrame:
  type: String
  webcoreBinding: none
  exposed: [ WebKit ]
  defaultValue:
    WebKit:
      default: '""'

# FIXME: This is handled via WebView SPI rather than WebPreferences for WebKitLegacy. We should change the SPI to lookup the WebPreferences value instead.
InteractiveFormValidationEnabled:
  type: bool
  humanReadableName: "HTML Interactive Form Validation"
  humanReadableDescription: "HTML interactive form validation"
  webKitLegacyBinding: custom
  defaultValue:
    WebKit:
      default: true
    WebKitLegacy:
      default: false
    WebCore:
      default: false

# FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely (though we should still set the default value to false when initializing settings).
InterruptAudioOnPageVisibilityChangeEnabled:
  type: bool
  condition: ENABLE(MEDIA_STREAM)
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: WebCore::RealtimeMediaSourceCenter::shouldInterruptAudioOnPageVisibilityChange()
    WebCore:
      default: false

InvisibleAutoplayNotPermitted:
  type: bool
  webKitLegacyPreferenceKey: InvisibleAutoplayNotPermitted
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      "PLATFORM(IOS_FAMILY)": true
      default: false
    WebCore:
      default: false

IsAccessibilityIsolatedTreeEnabled:
  type: bool
  humanReadableName: "Isolated Accessibility Tree Mode"
  humanReadableDescription: "Enable an accessibility hierarchy for VoiceOver that can be accessed on a secondary thread for improved performance"
  webcoreBinding: RuntimeEnabledFeatures
  condition: ENABLE(ACCESSIBILITY_ISOLATED_TREE)
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

# FIXME: This is not relevent for WebKitLegacy, so should be excluded from WebKitLegacy entirely (though we should still set the default value to false when initializing settings).
ItpDebugModeEnabled:
  type: bool
  humanReadableName: "ITP Debug Mode"
  humanReadableDescription: "Intelligent Tracking Prevention Debug Mode"
  webcoreBinding: RuntimeEnabledFeatures
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false

JavaEnabled:
  type: bool
  webcoreGetter: isJavaEnabled
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY)": false
      default: true
    WebKit:
      default: false
    WebCore:
      default: false

JavaEnabledForLocalFiles:
  type: bool
  webcoreGetter: isJavaEnabledForLocalFiles
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: false
    WebCore:
      default: true

JavaScriptCanAccessClipboard:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

JavaScriptCanOpenWindowsAutomatically:
  type: bool
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY)": WebKit::defaultJavaScriptCanOpenWindowsAutomatically()
      default: true
    WebKit:
      "PLATFORM(IOS_FAMILY)": false
      default: true
    WebCore:
      default: false

JavaScriptEnabled:
  type: bool
  inspectorOverride: true
  webcoreGetter: isScriptEnabled
  webcoreName: scriptEnabled
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: false

# NOTE: Clients should use per-navigation "allowsContentJavaScript" policies instead
JavaScriptMarkupEnabled:
  type: bool
  webcoreName: scriptMarkupEnabled
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

JavaScriptRuntimeFlags:
  type: uint32_t
  webKitLegacyPreferenceKey: WebKitJavaScriptRuntimeFlagsPreferenceKey
  webcoreBinding: custom
  defaultValue:
    WebKitLegacy:
      default: 0
    WebKit:
      default: 0

LargeImageAsyncDecodingEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

LayoutFallbackWidth:
  type: uint32_t
  defaultValue:
    WebKitLegacy:
      default: 980
    WebKit:
      default: 980
    WebCore:
      default: 980

LayoutViewportHeightExpansionFactor:
  type: double
  webcoreOnChange: setNeedsRecalcStyleInAllFrames
  defaultValue:
    WebKitLegacy:
      default: 0
    WebKit:
      "PLATFORM(WATCHOS)": 1
      default: 0
    WebCore:
      default: 0

LegacyEncryptedMediaAPIEnabled:
  type: bool
  humanReadableName: "Enable Legacy EME API"
  humanReadableDescription: "Enable legacy EME API"
  condition: ENABLE(LEGACY_ENCRYPTED_MEDIA)
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

LinkPreconnect:
  type: bool
  webcoreName: linkPreconnectEnabled
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      "ENABLE(SERVER_PRECONNECT)": true
      default: false
    WebCore:
      default: false

LinkPreloadEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: true
    WebCore:
      default: true

LoadDeferringEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      PLATFORM(MAC): WebKit::defaultLoadDeferringEnabled()
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

# This only suppresses the network load of the image URL. A cached image will still be rendered if requested.
LoadsImagesAutomatically:
  type: bool
  webcoreOnChange: imagesEnabledChanged
  webKitLegacyPreferenceKey: WebKitDisplayImagesKey
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: false

# This preference only affects site icon image loading if the LoadsImagesAutomatically preference is false and
# this preference is true. All other permutations still heed LoadsImagesAutomatically preference.
LoadsSiteIconsIgnoringImageLoadingPreference:
  type: bool
  webKitLegacyPreferenceKey: WebKitLoadSiteIconsKey
  webcoreName: loadsSiteIconsIgnoringImageLoadingSetting
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

LocalFileContentSniffingEnabled:
  type: bool
  webKitLegacyPreferenceKey: WebKitLocalFileContentSniffingEnabledPreferenceKey
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

LocalStorageEnabled:
  type: bool
  webKitLegacyPreferenceKey: WebKitLocalStorageEnabledPreferenceKey
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: false

LongRunningMediaCaptureStreamRepromptIntervalInHours:
  type: double
  webcoreBinding: none
  exposed: [ WebKit ]
  defaultValue:
    WebKit:
      default: 24

LowPowerVideoAudioBufferSizeEnabled:
  type: bool
  webcoreBinding: DeprecatedGlobalSettings
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: true

MainContentUserGestureOverrideEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

MaxParseDuration:
  type: double
  webKitLegacyPreferenceKey: WebKitMaxParseDurationPreferenceKey
  defaultValue:
    WebKitLegacy:
      default: -1
    WebKit:
      default: -1
    WebCore:
      default: -1

MediaCapabilitiesEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: true
    WebCore:
      default: false

MediaContentTypesRequiringHardwareSupport:
  type: String
  webcoreExcludeFromInternalSettings: true
  webcoreImplementation: custom
  defaultValue:
    WebKitLegacy:
      default: '""'
    WebKit:
      default: '""'
    WebCore:
      default: '""'

MediaControlsScaleWithPageZoom:
  type: bool
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY)": false
      default: true
    WebKit:
      "PLATFORM(IOS_FAMILY)": false
      default: true
    WebCore:
      default: true

MediaDataLoadsAutomatically:
  type: bool
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY)": false
      default: true
    WebKit:
      "PLATFORM(IOS_FAMILY)": false
      default: true
    WebCore:
      "PLATFORM(IOS_FAMILY)": false
      default: true

# FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely (though we should still set the default value to false when initializing settings).
MediaDevicesEnabled:
  type: bool
  condition: ENABLE(MEDIA_STREAM)
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

MediaEnabled:
  type: bool
  condition: ENABLE(VIDEO)
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

MediaPreloadingEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

MediaSourceEnabled:
  type: bool
  condition: ENABLE(MEDIA_SOURCE)
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      "PLATFORM(COCOA) && PLATFORM(MAC)": true
      "PLATFORM(COCOA) && !PLATFORM(MAC)": false
      default: true
    WebCore:
      "PLATFORM(COCOA) && PLATFORM(MAC)": true
      "PLATFORM(COCOA) && !PLATFORM(MAC)": false
      default: true

# FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely (though we should still set the default value to false when initializing settings).
# FIXME: Seems to be unused. Remove once verified.
MediaStreamEnabled:
  type: bool
  condition: ENABLE(MEDIA_STREAM)
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: true
    WebCore:
      default: true

MediaUserGestureInheritsFromDocument:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

MenuItemElementEnabled:
  type: bool
  webcoreBinding: RuntimeEnabledFeatures
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false

MinimumFontSize:
  type: double
  webcoreOnChange: setNeedsRecalcStyleInAllFrames
  defaultValue:
    WebKitLegacy:
      default: 0
    WebKit:
      default: 0
    WebCore:
      default: 0

MinimumLogicalFontSize:
  type: double
  webcoreOnChange: setNeedsRecalcStyleInAllFrames
  defaultValue:
    WebKitLegacy:
      default: 9
    WebKit:
      default: 9
    WebCore:
      default: 0

MinimumZoomFontSize:
  type: double
  webKitLegacyPreferenceKey: WebKitMinimumZoomFontSizePreferenceKey
  condition: ENABLE(TEXT_AUTOSIZING)
  defaultValue:
    WebKitLegacy:
      default: 15
    WebKit:
      "PLATFORM(WATCHOS)": 30
      default: 15
    WebCore:
      "PLATFORM(WATCHOS)": 30
      default: 15

MockCaptureDevicesPromptEnabled:
  type: bool
  webcoreBinding: none
  exposed: [ WebKit ]
  defaultValue:
    WebKit:
      default: true

MockScrollbarsEnabled:
  type: bool
  webcoreBinding: DeprecatedGlobalSettings
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false

ModernMediaControlsEnabled:
  type: bool
  humanReadableName: "Modern Media Controls"
  humanReadableDescription: "Use modern media controls look"
  webcoreBinding: RuntimeEnabledFeatures
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      "PLATFORM(COCOA)": true
      default: false

NeedsAdobeFrameReloadingQuirk:
  comment: 'FIXME: This quirk is needed because of Radar 4674537 and 5211271. We need
    to phase it out once Adobe can fix the bug from their end.'
  type: bool
  webcoreGetter: needsAcrobatFrameReloadingQuirk
  defaultValue:
    WebKitLegacy:
      PLATFORM(MAC): WebKit::defaultNeedsAdobeFrameReloadingQuirk()
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

NeedsFrameNameFallbackToIdQuirk:
  type: bool
  defaultValue:
    WebKitLegacy:
      PLATFORM(MAC): WebKit::defaultNeedsFrameNameFallbackToIdQuirk()
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

NeedsIsLoadingInAPISenseQuirk:
  comment: Some apps needs isLoadingInAPISense to account for active subresource loaders.
  type: bool
  defaultValue:
    WebKitLegacy:
      PLATFORM(MAC): WebKit::defaultNeedsIsLoadingInAPISenseQuirk()
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

NeedsKeyboardEventDisambiguationQuirks:
  comment: This is a quirk we are pro-actively applying to old applications. It changes
    keyboard event dispatching, making keyIdentifier available on keypress events,
    making charCode available on keydown/keyup events, and getting keypress dispatched
    in more cases.
  type: bool
  defaultValue:
    WebKitLegacy:
      PLATFORM(MAC): WebKit::defaultNeedsKeyboardEventDisambiguationQuirks()
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

NeedsSiteSpecificQuirks:
  type: bool
  webKitLegacyPreferenceKey: WebKitUseSiteSpecificSpoofing
  inspectorOverride: true
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: true
    WebCore:
      default: false

NeedsStorageAccessFromFileURLsQuirk:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

NotificationsEnabled:
  type: bool
  condition: ENABLE(NOTIFICATIONS)
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

OfflineWebApplicationCacheEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: true
    WebCore:
      default: false

PDFPluginEnabled:
  type: bool
  webcoreBinding: none
  condition: PLATFORM(COCOA)
  exposed: [ WebKit ]
  defaultValue:
    WebKit:
      default: true

PageVisibilityBasedProcessSuppressionEnabled:
  type: bool
  webcoreBinding: none
  exposed: [ WebKit ]
  defaultValue:
    WebKit:
      default: true

PaginateDuringLayoutEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

PassiveTouchListenersAsDefaultOnDocument:
  type: bool
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY)": WebKit::defaultPassiveTouchListenersAsDefaultOnDocument()
      default: true
    WebKit:
      "PLATFORM(IOS_FAMILY)": WebKit::defaultPassiveTouchListenersAsDefaultOnDocument()
      default: true
    WebCore:
      default: true

PasswordEchoDuration:
  type: double
  webKitLegacyPreferenceKey: WebKitPasswordEchoDurationPreferenceKey
  webcoreName: passwordEchoDurationInSeconds
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY)": 2
      default: 1
    WebKit:
      default: 2
    WebCore:
      default: 1

PasswordEchoEnabled:
  type: bool
  webKitLegacyPreferenceKey: WebKitEnablePasswordEchoPreferenceKey
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY)": true
      default: false
    WebKit:
      "PLATFORM(IOS_FAMILY) && !PLATFORM(MACCATALYST)": true
      default: false
    WebCore:
      default: false

PeerConnectionEnabled:
  type: bool
  webcoreBinding: RuntimeEnabledFeatures
  condition: ENABLE(WEB_RTC)
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: WebCore::LibWebRTCProvider::webRTCAvailable()

PictographFontFamily:
  type: String
  webKitLegacyPreferenceKey: WebKitPictographFont
  webcoreImplementation: custom
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY)": '"AppleColorEmoji"'
      default: '"Apple Color Emoji"'
    WebKit:
      "PLATFORM(COCOA) && PLATFORM(IOS_FAMILY)": '"AppleColorEmoji"'
      "PLATFORM(COCOA) && !PLATFORM(IOS_FAMILY)": '"Apple Color Emoji"'
      default: '"Times"'
    WebCore:
      default: '""'

PictureInPictureAPIEnabled:
  type: bool
  condition: ENABLE(PICTURE_IN_PICTURE_API)
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: true
    WebCore:
      default: true

PitchCorrectionAlgorithm:
  type: uint32_t
  webcoreBinding: custom
  defaultValue:
    WebKitLegacy:
      "PLATFORM(COCOA)": static_cast<uint32_t>(WebCore::MediaPlayerEnums::PitchCorrectionAlgorithm::BestForSpeech)
      default: static_cast<uint32_t>(WebCore::MediaPlayerEnums::PitchCorrectionAlgorithm::BestAllAround)
    WebKit:
      "PLATFORM(COCOA)": static_cast<uint32_t>(WebCore::MediaPlayerEnums::PitchCorrectionAlgorithm::BestForSpeech)
      default: static_cast<uint32_t>(WebCore::MediaPlayerEnums::PitchCorrectionAlgorithm::BestAllAround)

PluginsEnabled:
  type: bool
  webcoreGetter: arePluginsEnabled
  webcoreOnChange: pluginsEnabledChanged
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: false
    WebCore:
      default: false

PrivateClickMeasurementEnabled:
  type: bool
  humanReadableName: "Private Click Measurement"
  humanReadableDescription: "Enable Private Click Measurement for Cross-Site Link Navigations"
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: true
    WebCore:
      default: true

PunchOutWhiteBackgroundsInDarkMode:
  type: bool
  webcoreOnChange: setNeedsRecalcStyleInAllFrames
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

RequestAnimationFrameEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

RequiresUserGestureForAudioPlayback:
  type: bool
  webKitLegacyPreferenceKey: WebKitAudioPlaybackRequiresUserGesture
  webcoreBinding: custom
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      "PLATFORM(IOS_FAMILY)": true
      default: false

RequiresUserGestureForMediaPlayback:
  type: bool
  webKitLegacyPreferenceKey: WebKitMediaPlaybackRequiresUserGesture
  webcoreBinding: custom
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY)": true
      default: false
    WebKit:
      default: false

RequiresUserGestureForVideoPlayback:
  type: bool
  webKitLegacyPreferenceKey: WebKitVideoPlaybackRequiresUserGesture
  webcoreBinding: custom
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false

RequiresUserGestureToLoadVideo:
  type: bool
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY)": WebKit::defaultRequiresUserGestureToLoadVideo()
      default: false
    WebKit:
      default: false
    WebCore:
      "PLATFORM(IOS_FAMILY)": true
      default: false

RubberBandingForSubScrollableRegionsEnabled:
  type: bool
  condition: ENABLE(RUBBER_BANDING)
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: true
    WebCore:
      default: true

SafeBrowsingEnabled:
  type: bool
  webcoreBinding: none
  exposed: [ WebKit ]
  defaultValue:
    WebKit:
      default: true

SansSerifFontFamily:
  type: String
  webKitLegacyPreferenceKey: WebKitSansSerifFont
  webcoreImplementation: custom
  defaultValue:
    WebKitLegacy:
      default: '"Helvetica"'
    WebKit:
      default: '"Helvetica"'
    WebCore:
      default: '""'

ScrollAnimatorEnabled:
  type: bool
  condition: ENABLE(SMOOTH_SCROLLING)
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

# FIXME: This is handled via WebView SPI rather than WebPreferences for WebKitLegacy. We should change the SPI to lookup the WebPreferences value instead.
SelectTrailingWhitespaceEnabled:
  type: bool
  webKitLegacyBinding: custom
  defaultValue:
    WebKit:
      default: false
    WebKitLegacy:
      default: false
    WebCore:
      default: false

SelectionPaintingWithoutSelectionGapsEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

SerifFontFamily:
  type: String
  webKitLegacyPreferenceKey: WebKitSerifFont
  webcoreImplementation: custom
  defaultValue:
    WebKitLegacy:
      default: '"Times"'
    WebKit:
      default: '"Times"'
    WebCore:
      default: '""'

ServiceControlsEnabled:
  type: bool
  condition: ENABLE(SERVICE_CONTROLS)
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

ServiceWorkerEntitlementDisabledForTesting:
  type: bool
  webcoreBinding: none
  exposed: [ WebKit ]
  defaultValue:
    WebKit:
      default: false

ShouldAllowUserInstalledFonts:
  type: bool
  webcoreOnChange: setNeedsRecalcStyleInAllFrames
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

ShouldConvertInvalidURLsToBlank:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: WebKit::defaultShouldConvertInvalidURLsToBlank()
    WebKit:
      default: true
    WebCore:
      default: true

ShouldConvertPositionStyleOnCopy:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

ShouldDecidePolicyBeforeLoadingQuickLookPreview:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

ShouldDisplayCaptions:
  type: bool
  condition: ENABLE(VIDEO)
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

ShouldDisplaySubtitles:
  type: bool
  condition: ENABLE(VIDEO)
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

ShouldDisplayTextDescriptions:
  type: bool
  condition: ENABLE(VIDEO)
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

ShouldEnableTextAutosizingBoost:
  type: bool
  webcoreOnChange: shouldEnableTextAutosizingBoostChanged
  condition: ENABLE(TEXT_AUTOSIZING)
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

# FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely (though we should still set the default value to false when initializing settings).
ShouldIgnoreMetaViewport:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

ShouldPrintBackgrounds:
  type: bool
  webKitLegacyPreferenceKey: WebKitShouldPrintBackgroundsPreferenceKey
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY)": true
      default: false
    WebKit:
      "PLATFORM(IOS_FAMILY)": true
      default: false
    WebCore:
      default: false

ShouldRespectImageOrientation:
  type: bool
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY)": true
      default: false
    WebKit:
      "PLATFORM(IOS_FAMILY)": true
      default: false
    WebCore:
      "PLATFORM(IOS_FAMILY)": true
      default: false

ShouldRestrictBaseURLSchemes:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: WebKit::defaultShouldRestrictBaseURLSchemes()
    WebKit:
      default: false
    WebCore:
      default: true

ShouldSuppressTextInputFromEditingDuringProvisionalNavigation:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

# FIXME: This is not relevent for WebKitLegacy, so should be excluded from WebKitLegacy entirely (though we should still set the default value to false when initializing settings).
# FIXME: This is not used in WebCore, so should not have a binding to WebCore::Settings.
ShouldUseServiceWorkerShortTimeout:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

ShowsToolTipOverTruncatedText:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

ShowsURLsInToolTipsEnabled:
  type: bool
  webKitLegacyPreferenceKey: WebKitShowsURLsInToolTips
  webcoreName: showsURLsInToolTips
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

ShrinksStandaloneImagesToFit:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: true
    WebCore:
      default: true

# FIXME: This is handled via WebView SPI rather than WebPreferences for WebKitLegacy. We should change the SPI to lookup the WebPreferences value instead.
SmartInsertDeleteEnabled:
  type: bool
  webKitLegacyBinding: custom
  defaultValue:
    WebKit:
      default: true
    WebKitLegacy:
      default: true
    WebCore:
      default: true

SourceBufferChangeTypeEnabled:
  type: bool
  condition: ENABLE(MEDIA_SOURCE)
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

SpatialNavigationEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

Standalone:
  type: bool
  webKitLegacyPreferenceKey: WebKitStandalonePreferenceKey
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

StandardFontFamily:
  type: String
  webKitLegacyPreferenceKey: WebKitStandardFont
  webcoreImplementation: custom
  defaultValue:
    WebKitLegacy:
      default: '"Times"'
    WebKit:
      "PLATFORM(WATCHOS)": '"system-ui"'
      default: '"Times"'
    WebCore:
      default: '""'

StorageAccessAPIEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

StorageBlockingPolicy:
  type: uint32_t
  webcoreOnChange: storageBlockingPolicyChanged
  webcoreBinding: custom
  defaultValue:
    WebKitLegacy:
      default: WebAllowAllStorage
    WebKit:
      default: WebCore::StorageBlockingPolicy::BlockThirdParty

SubresourceIntegrityEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

SuppressesIncrementalRendering:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

# FIXME: There is no custom binding implemented for WebKitLegacy.
SystemLayoutDirection:
  type: uint32_t
  webcoreBinding: custom
  defaultValue:
    WebKitLegacy:
      default: 0
    WebKit:
      default: 0

# FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely (though we should still set the default value to false when initializing settings).
SystemPreviewEnabled:
  type: bool
  condition: USE(SYSTEM_PREVIEW)
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

TabsToLinks:
  type: bool
  webKitLegacyPreferenceKey: WebKitTabToLinksPreferenceKey
  webcoreBinding: none
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      "PLATFORM(GTK)": true
      default: false

TelephoneNumberParsingEnabled:
  type: bool
  webKitLegacyPreferenceKey: WebKitTelephoneParsingEnabledPreferenceKey
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

TemporaryTileCohortRetentionEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      "PLATFORM(IOS_FAMILY)": false
      default: true
    WebCore:
      default: true

TextAreasAreResizable:
  type: bool
  webcoreOnChange: setNeedsRecalcStyleInAllFrames
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      "PLATFORM(IOS_FAMILY)": false
      default: true
    WebCore:
      default: false

TextAutosizingEnabled:
  type: bool
  webcoreOnChange: setNeedsRecalcStyleInAllFrames
  condition: ENABLE(TEXT_AUTOSIZING)
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS_FAMILY)": true
      default: false
    WebKit:
      "PLATFORM(IOS_FAMILY)": true
      default: false
    WebCore:
      "PLATFORM(IOS_FAMILY)": true
      default: false

TextInteractionEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      "PLATFORM(WATCH_OS)": false
      default: true
    WebKit:
      "PLATFORM(WATCH_OS)": false
      default: true
    WebCore:
      "PLATFORM(WATCH_OS)": false
      default: true

ThreadedScrollingEnabled:
  type: bool
  webcoreBinding: none
  exposed: [ WebKit ]
  defaultValue:
    WebKit:
      default: true

TreatsAnyTextCSSLinkAsStylesheet:
  type: bool
  defaultValue:
    WebKitLegacy:
      PLATFORM(MAC): WebKit::defaultTreatsAnyTextCSSLinkAsStylesheet()
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

UseGiantTiles:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

UseImageDocumentForSubframePDF:
  type: bool
  defaultValue:
    WebKitLegacy:
      PLATFORM(IOS_FAMILY): true
      default: false
    WebKit:
      PLATFORM(IOS_FAMILY): true
      default: false
    WebCore:
      PLATFORM(IOS_FAMILY): true
      default: false

UseLegacyBackgroundSizeShorthandBehavior:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: WebKit::defaultUseLegacyBackgroundSizeShorthandBehavior()
    WebKit:
      default: false
    WebCore:
      default: false

UseLegacyTextAlignPositionedElementBehavior:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

UsePreHTML5ParserQuirks:
  type: bool
  defaultValue:
    WebKitLegacy:
      PLATFORM(MAC): WebKit::defaultUsePreHTML5ParserQuirks()
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

# FIXME: There is no custom binding implemented for WebKitLegacy.
UserInterfaceDirectionPolicy:
  type: uint32_t
  webcoreBinding: custom
  defaultValue:
    WebKitLegacy:
      default: 0
    WebKit:
      default: 0

UsesBackForwardCache:
  type: bool
  webcoreOnChange: usesBackForwardCacheChanged
  webcoreExcludeFromInternalSettings: true
  webKitLegacyPreferenceKey: WebKitUsesPageCachePreferenceKey
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

UsesEncodingDetector:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

VideoQualityIncludesDisplayCompositingEnabled:
  type: bool
  condition: ENABLE(VIDEO)
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

ViewGestureDebuggingEnabled:
  type: bool
  webcoreBinding: none
  exposed: [ WebKit ]
  defaultValue:
    WebKit:
      default: false

ViewportFitEnabled:
  type: bool
  humanReadableName: "Viewport Fit"
  humanReadableDescription: "Enable viewport-fit viewport parameter"
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: false

VisualViewportEnabled:
  type: bool
  webcoreOnChange: setNeedsRecalcStyleInAllFrames
  defaultValue:
    WebKitLegacy:
      PLATFORM(IOS_FAMILY): false
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

WantsBalancedSetDefersLoadingBehavior:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

WebArchiveDebugModeEnabled:
  type: bool
  webKitLegacyPreferenceKey: WebKitWebArchiveDebugModeEnabledPreferenceKey
  condition: ENABLE(WEB_ARCHIVE)
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      default: false
    WebCore:
      default: false

WebAudioEnabled:
  type: bool
  condition: ENABLE(WEB_AUDIO)
  defaultValue:
    WebKitLegacy:
      "PLATFORM(IOS)": true
      default: false
    WebKit:
      default: true
    WebCore:
      default: false

WebGLEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: false

WebSecurityEnabled:
  type: bool
  inspectorOverride: true
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

# FIXME: Is this implemented for WebKitLegacy? If not, this should be excluded from WebKitLegacy entirely (though we should still set the default value to false when initializing settings).
WebShareEnabled:
  type: bool
  humanReadableName: "Web Share"
  humanReadableDescription: "Enable support for share sheet via Web Share API"
  defaultValue:
    WebKitLegacy:
      default: false
    WebKit:
      "PLATFORM(COCOA) && !PLATFORM(WATCHOS) && !PLATFORM(APPLETV)": true
      default: false
    WebCore:
      default: false

WindowFocusRestricted:
  comment: When enabled, window.blur() does not change focus, and window.focus() only
    changes focus when invoked from the context that created the window.
  type: bool
  defaultValue:
    WebKitLegacy:
      PLATFORM(MAC): WebKit::defaultWindowFocusRestricted()
      default: true
    WebKit:
      default: true
    WebCore:
      default: true

XSSAuditorEnabled:
  type: bool
  defaultValue:
    WebKitLegacy:
      default: true
    WebKit:
      default: true
    WebCore:
      default: false
