#
# 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.

AcceleratedCompositedAnimationsEnabled:
  type: bool
  webcoreOnChange: setNeedsRecalcStyleInAllFrames
  defaultValue:
    WebCore:
      default: true

AcceleratedFiltersEnabled:
  type: bool
  defaultValue:
    WebCore:
      default: false

AnimatedImageDebugCanvasDrawingEnabled:
  type: bool
  defaultValue:
    WebCore:
      default: false

AudioPlaybackRequiresUserGesture:
  type: bool
  defaultValue:
    WebCore:
      PLATFORM(IOS_FAMILY): true
      default: false

AutoscrollForDragAndDropEnabled:
  type: bool
  defaultValue:
    WebCore:
      default: false

BackForwardCacheExpirationInterval:
  type: double
  refinedType: Seconds
  defaultValue:
    WebCore:
      default: 30_min

BackgroundShouldExtendBeyondPage:
  type: bool
  webcoreOnChange: backgroundShouldExtendBeyondPageChanged
  defaultValue:
    WebCore:
      default: false

ClientCoordinatesRelativeToLayoutViewport:
  type: bool
  webcoreOnChange: setNeedsRecalcStyleInAllFrames
  defaultValue:
    WebCore:
      default: false

ClipboardAccessPolicy:
  type: uint32_t
  refinedType: ClipboardAccessPolicy
  defaultValue:
    WebCore:
      default: ClipboardAccessPolicy::RequiresUserGesture

CrossOriginCheckInGetMatchedCSSRulesDisabled:
  type: bool
  defaultValue:
    WebCore:
      default: false

DataDetectorTypes:
  type: uint32_t
  refinedType: DataDetectorType
  condition: ENABLE(DATA_DETECTION)
  defaultValue:
    WebCore:
      default: DataDetectorType::None

DefaultVideoPosterURL:
  comment: >-
    Some apps could have a default video poster if it is not set.
  type: String
  defaultValue:
    WebCore:
      default: '{ }'

DisableScreenSizeOverride:
  type: bool
  defaultValue:
    WebCore:
      default: false

DownloadableBinaryFontsEnabled:
  comment: >-
    FIXME: This should really be disabled by default as it makes platforms that don't support the
    feature download files they can't use by. Leaving enabled for now to not change existing behavior.
  type: bool
  defaultValue:
    WebCore:
      PLATFORM(WATCHOS): false
      default: true

EditableLinkBehavior:
  type: uint32_t
  refinedType: EditableLinkBehavior
  defaultValue:
    WebCore:
      default: EditableLinkBehavior::Default

EditingBehaviorType:
  type: uint32_t
  refinedType: EditingBehaviorType
  defaultValue:
    WebCore:
      PLATFORM(IOS_FAMILY): EditingBehaviorType::iOS
      OS(DARWIN): EditingBehaviorType::Mac
      OS(WINDOWS): EditingBehaviorType::Windows
      OS(UNIX): EditingBehaviorType::Unix
      default: EditingBehaviorType::Mac

FixedBackgroundsPaintRelativeToDocument:
  type: bool
  defaultValue:
    WebCore:
      PLATFORM(IOS_FAMILY): true
      default: false

FixedElementsLayoutRelativeToFrame:
  type: bool
  defaultValue:
    WebCore:
      default: false

FontFallbackPrefersPictographs:
  type: bool
  webcoreOnChange: setNeedsRecalcStyleInAllFrames
  defaultValue:
    WebCore:
      default: false

FontLoadTimingOverride:
  type: uint32_t
  refinedType: FontLoadTimingOverride
  defaultValue:
    WebCore:
      default: FontLoadTimingOverride::None

FontRenderingMode:
  type: uint32_t
  refinedType: FontRenderingMode
  defaultValue:
    WebCore:
      default: FontRenderingMode::Normal

ForceCompositingMode:
  type: bool
  defaultValue:
    WebCore:
      default: false

ForcePendingWebGLPolicy:
  type: bool
  webcoreGetter: isForcePendingWebGLPolicy
  defaultValue:
    WebCore:
      default: false

ForcedPrefersContrastAccessibilityValue:
  type: uint32_t
  refinedType: ForcedAccessibilityValue
  defaultValue:
    WebCore:
      default: ForcedAccessibilityValue::System

ForcedColorsAreInvertedAccessibilityValue:
  type: uint32_t
  refinedType: ForcedAccessibilityValue
  defaultValue:
    WebCore:
      default: ForcedAccessibilityValue::System

ForcedDisplayIsMonochromeAccessibilityValue:
  type: uint32_t
  refinedType: ForcedAccessibilityValue
  defaultValue:
    WebCore:
      default: ForcedAccessibilityValue::System

ForcedPrefersReducedMotionAccessibilityValue:
  type: uint32_t
  refinedType: ForcedAccessibilityValue
  defaultValue:
    WebCore:
      default: ForcedAccessibilityValue::System

ForcedSupportsHighDynamicRangeValue:
  type: uint32_t
  refinedType: ForcedAccessibilityValue
  webcoreOnChange: setNeedsRecalcStyleInAllFrames
  defaultValue:
    WebCore:
      default: ForcedAccessibilityValue::System

FrameFlattening:
  type: uint32_t
  refinedType: FrameFlattening
  webcoreOnChange: setNeedsRelayoutAllFrames
  defaultValue:
    WebCore:
      default: FrameFlattening::Disabled

GeolocationFloorLevelEnabled:
  type: bool
  defaultValue:
    WebCore:
      default: true

HTMLParserScriptingFlagPolicy:
  type: uint32_t
  refinedType: HTMLParserScriptingFlagPolicy
  defaultValue:
    WebCore:
      default: HTMLParserScriptingFlagPolicy::OnlyIfScriptIsEnabled

IdempotentModeAutosizingOnlyHonorsPercentages:
  type: bool
  condition: ENABLE(TEXT_AUTOSIZING)
  defaultValue:
    WebCore:
      default: false

ImageSubsamplingEnabled:
  type: bool
  defaultValue:
    WebCore:
      PLATFORM(IOS_FAMILY): true
      default: false

ImagesEnabled:
  type: bool
  webcoreGetter: areImagesEnabled
  webcoreOnChange: imagesEnabledChanged
  inspectorOverride: true
  defaultValue:
    WebCore:
      default: true

IsAccessibilityIsolatedTreeEnabled:
  type: bool
  defaultValue:
    WebCore:
      USE(ATSPI): true
      default: false

IsPerActivityStateCPUUsageMeasurementEnabled:
  type: bool
  defaultValue:
    WebCore:
      PLATFORM(MAC): true
      default: false

IsPostBackgroundingCPUUsageMeasurementEnabled:
  type: bool
  defaultValue:
    WebCore:
      PLATFORM(MAC): true
      default: false

IsPostBackgroundingMemoryUsageMeasurementEnabled:
  type: bool
  defaultValue:
    WebCore:
      PLATFORM(MAC): true
      default: false

IsPostLoadCPUUsageMeasurementEnabled:
  type: bool
  defaultValue:
    WebCore:
      PLATFORM(COCOA): true
      default: false

IsPostLoadMemoryUsageMeasurementEnabled:
  type: bool
  defaultValue:
    WebCore:
      PLATFORM(COCOA): true
      default: false

JavaScriptRuntimeFlags:
  type: uint32_t
  refinedType: JSC::RuntimeFlags
  defaultValue:
    WebCore:
      default: '{ }'

LangAttributeAwareFormControlUIEnabled:
  type: bool
  defaultValue:
    WebCore:
      default: false

LegacyBeforeLoadEventEnabled:
  comment: >-
    FIMXE: This does not appear to ever be set to true. Remove once verified.
  type: bool
  defaultValue:
    WebCore:
      default: false

LocalStorageDatabasePath:
  type: String
  defaultValue:
    WebCore:
      default: '{ }'

MaximumAccelerated2dCanvasSize:
  type: uint32_t
  defaultValue:
    WebCore:
      default: 5120*2880

MaximumHTMLParserDOMTreeDepth:
  type: uint32_t
  defaultValue:
    WebCore:
      default: defaultMaximumHTMLParserDOMTreeDepth

MaximumSourceBufferSize:
  comment: >-
    Allow SourceBuffers to store up to 304MB each, enough for approximately five minutes
    of 1080p video and stereo audio.
  type: uint32_t
  condition: ENABLE(MEDIA_SOURCE)
  defaultValue:
    WebCore:
      default: 318767104

MediaDeviceIdentifierStorageDirectory:
  type: String
  condition: ENABLE(MEDIA_STREAM)
  defaultValue:
    WebCore:
      default: '{ }'

MediaKeysStorageDirectory:
  type: String
  defaultValue:
    WebCore:
      default: '{ }'

MediaTypeOverride:
  type: String
  webcoreOnChange: mediaTypeOverrideChanged
  defaultValue:
    WebCore:
      default: '"screen"'

MinimumAccelerated2dCanvasSize:
  comment: >-
    Number of pixels below which 2D canvas is rendered in software
    even if hardware acceleration is enabled.
    Hardware acceleration is useful for large canvases where it can avoid the
    pixel bandwidth between the CPU and GPU. But GPU acceleration comes at
    a price - extra back-buffer and texture copy. Small canvases are also
    widely used for stylized fonts. Anti-aliasing text in hardware at that
    scale is generally slower. So below a certain size it is better to
    draw canvas in software.
  type: uint32_t
  defaultValue:
    WebCore:
      default: 257*256

NeedsDeferKeyDownAndKeyPressTimersUntilNextEditingCommandQuirk:
  comment: >-
    This is an iOS-specific quirk. Unlike Mac, keyboard operations are asynchronous and hence a DOM update as
    a result of text insertion or deletion does not occur within the same event loop iteration as a dispatched
    DOM keydown event. Some sites, notably Google Sheets, schedule timers on keypress and expect on a DOM update
    to have occurred on expiration. When enabled, this quirk puts all such scheduled timers in a holding tank
    until the keyboard performs the insertion or deletion. This gives Google Sheets the illusion that the DOM
    update happened within the same event loop iteration that the keypress event was dispatched in.
  type: bool
  defaultValue:
    WebCore:
      default: false

PaymentRequestEnabled:
  type: bool
  condition: ENABLE(PAYMENT_REQUEST)
  defaultValue:
    WebCore:
      default: false

PitchCorrectionAlgorithm:
  type: uint32_t
  refinedType: MediaPlayerEnums::PitchCorrectionAlgorithm
  defaultValue:
    WebCore:
      default: MediaPlayerEnums::PitchCorrectionAlgorithm::BestAllAround

PDFImageCachingPolicy:
  type: uint32_t
  refinedType: PDFImageCachingPolicy
  defaultValue:
    WebCore:
      PLATFORM(IOS_FAMILY): PDFImageCachingPolicy::BelowMemoryLimit
      default: PDFImageCachingPolicy::Enabled

PreferMIMETypeForImages:
  type: bool
  defaultValue:
    WebCore:
      default: false

PreventKeyboardDOMEventDispatch:
  type: bool
  defaultValue:
    WebCore:
      default: false

PrivateClickMeasurementFraudPreventionEnabled:
  type: bool
  defaultValue:
    WebCore:
      "HAVE(RSA_BSSA)": true
      default: false

QuickTimePluginReplacementEnabled:
  type: bool
  defaultValue:
    WebCore:
      default: false

RepaintOutsideLayoutEnabled:
  type: bool
  defaultValue:
    WebCore:
      default: false

ScrollingCoordinatorEnabled:
  type: bool
  defaultValue:
    WebCore:
      default: false

ScrollingTreeIncludesFrames:
  type: bool
  defaultValue:
    WebCore:
      PLATFORM(IOS_FAMILY): true
      default: false

SessionStorageQuota:
  comment: >-
    Allow clients concerned with memory consumption to set a quota on session storage
    since the memory used won't be released until the Page is destroyed.
  type: uint32_t
  defaultValue:
    WebCore:
      default: 5242880

ShouldDispatchSyntheticMouseEventsWhenModifyingSelection:
  type: bool
  defaultValue:
    WebCore:
      default: false

ShouldDispatchSyntheticMouseOutAfterSyntheticClick:
  type: bool
  defaultValue:
    WebCore:
      default: false

ShouldIgnoreFontLoadCompletions:
  type: bool
  defaultValue:
    WebCore:
      default: false

ShouldInjectUserScriptsInInitialEmptyDocument:
  type: bool
  defaultValue:
    WebCore:
      default: false

StorageAccessAPIPerPageScopeEnabled:
  type: bool
  defaultValue:
    WebCore:
      default: true

StorageBlockingPolicy:
  type: uint32_t
  refinedType: StorageBlockingPolicy
  webcoreOnChange: storageBlockingPolicyChanged
  defaultValue:
    WebCore:
      default: StorageBlockingPolicy::AllowAll

SystemLayoutDirection:
  type: uint32_t
  refinedType: TextDirection
  defaultValue:
    WebCore:
      default: TextDirection::LTR

TextAutosizingWindowSizeOverrideHeight:
  type: uint32_t
  webcoreOnChange: setNeedsRecalcStyleInAllFrames
  condition: ENABLE(TEXT_AUTOSIZING)
  defaultValue:
    WebCore:
      default: 0

TextAutosizingWindowSizeOverrideWidth:
  type: uint32_t
  webcoreOnChange: setNeedsRecalcStyleInAllFrames
  condition: ENABLE(TEXT_AUTOSIZING)
  defaultValue:
    WebCore:
      default: 0

TextDirectionSubmenuInclusionBehavior:
  type: uint32_t
  refinedType: TextDirectionSubmenuInclusionBehavior
  defaultValue:
    WebCore:
      default: TextDirectionSubmenuInclusionBehavior::AutomaticallyIncluded

TimeWithoutMouseMovementBeforeHidingControls:
  type: double
  refinedType: Seconds
  defaultValue:
    WebCore:
      default: 3_s

TouchEventEmulationEnabled:
  type: bool
  webcoreGetter: isTouchEventEmulationEnabled
  condition: ENABLE(TOUCH_EVENTS)
  defaultValue:
    WebCore:
      default: false

TreatIPAddressAsDomain:
  type: bool
  defaultValue:
    WebCore:
      default: false

UnhandledPromiseRejectionToConsoleEnabled:
  type: bool
  defaultValue:
    WebCore:
      default: true

UnifiedTextCheckerEnabled:
  type: bool
  defaultValue:
    WebCore:
      USE(UNIFIED_TEXT_CHECKING): true
      default: false

UseAnonymousModeWhenFetchingMaskImages:
  type: bool
  defaultValue:
    WebCore:
      default: true

UserInterfaceDirectionPolicy:
  type: uint32_t
  refinedType: UserInterfaceDirectionPolicy
  defaultValue:
    WebCore:
      default: UserInterfaceDirectionPolicy::Content

UserStyleSheetLocation:
  type: String
  refinedType: URL
  webcoreOnChange: userStyleSheetLocationChanged
  defaultValue:
    WebCore:
      default: '{ }'

ValidationMessageTimerMagnification:
  comment: >-
    Sets the magnification value for validation message timer. If the
    magnification value is N, a validation message disappears automatically after
    message length * N / 1000 seconds.  If N is equal to or less than 0, a
    validation message doesn't disappears automaticaly.
  type: uint32_t
  defaultValue:
    WebCore:
      default: 50

VideoPlaybackRequiresUserGesture:
  type: bool
  defaultValue:
    WebCore:
      PLATFORM(IOS_FAMILY): true
      default: false

WebGLErrorsToConsoleEnabled:
  type: bool
  defaultValue:
    WebCore:
      default: true

WebRTCEncryptionEnabled:
  type: bool
  inspectorOverride: true
  defaultValue:
    WebCore:
      default: true

WebkitImageReadyEventEnabled:
  type: bool
  defaultValue:
    WebCore:
      default: false

YouTubeFlashPluginReplacementEnabled:
  type: bool
  defaultValue:
    WebCore:
      default: false
