{
  // Defines properties which are available on the Settings object.
  //
  // Please think carefully before adding a new Setting.  Some questions to
  // consider are:
  // - Should this be a RuntimeEnabledFeature instead? Settings are for things
  //   which we support either values of at runtime.  Features are set at renderer
  //   process startup and are never changed. Features also tend to be set to a
  //   value based on the platform or the stability of the code in question, where
  //   as settings both codepaths need to be stable.
  // - How will you ensure test coverage of all relevant values of your setting?
  // - Is the default value appropriate for other platforms or ports which may
  //   not be aware of your setting?
  // - Can your setting result in behavior differences observable to web
  //   developers?
  // - Should this setting ideally be removed in the future?  If so please file
  //   a bug and reference it in the comments for your setting.
  //
  // One reason to add a Setting is to manage the risk associated with adding a
  // new feature.  For example, we may choose to ship a new UI behavior or
  // performance optimization to ChromeOS users first (in order to gather feedback
  // and metrics on its use from the wild) before attempting to ship it to
  // Windows.
  //
  // FIXME: Add support for global settings.
  // FIXME: Add support for custom getters/setters.

  // Valid parameters for data entries below.
  parameters: {
    type: {
      default: "bool"
    },
    initial: {},
    invalidate: {},
  },

  data: [
    {
      name: "defaultTextEncodingName",
      type: "String",
    },

    // Do not hide chars typed in password fields immediately, but let the last char stay
    // visible for N seconds, configured by the passwordEchoDurationInSeconds setting
    // FIXME: Enable automatically if passwordEchoDurationInSeconds is set to a positive value.
    {
      name: "passwordEchoEnabled",
      initial: false,
    },

    // Configure how long the last char should say visible in seconds.
    {
      name: "passwordEchoDurationInSeconds",
      initial: 1,
      type: "double",
    },

    // 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.
    {
      name: "validationMessageTimerMagnification",
      initial: 50,
      type: "int",
    },

    // 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.
    {
      name: "minimumAccelerated2dCanvasSize",
      initial: "129*128",
      type: "int",
    },

    {
      name: "minimumFontSize",
      initial: 0,
      invalidate: "Style",
      type: "int",
    },
    {
      name: "minimumLogicalFontSize",
      initial: 0,
      invalidate: "Style",
      type: "int",
    },
    {
      name: "defaultFontSize",
      initial: 0,
      invalidate: "Style",
      type: "int",
    },
    {
      name: "defaultFixedFontSize",
      initial: 0,
      invalidate: "Style",
      type: "int",
    },

    {
      name: "editingBehaviorType",
      initial: "EditingBehaviorTypeForPlatform()",
      type: "EditingBehaviorType",
    },

    {
      name: "localStorageEnabled",
      initial: false,
    },
    {
      name: "allowUniversalAccessFromFileURLs",
      initial: true,
    },
    {
      name: "allowFileAccessFromFileURLs",
      initial: true,
    },
    {
      name: "supportsMultipleWindows",
      initial: true,
    },
    {
      name: "javaScriptCanAccessClipboard",
      initial: false,
    },
    {
      name: "shouldPrintBackgrounds",
      initial: false,
    },
    {
      name: "shouldClearDocumentBackground",
      initial: true,
    },

    {
      name: "textAreasAreResizable",
      initial: false,
      invalidate: "Style",
    },
    {
      name: "acceleratedCompositingEnabled",
      initial: true,
      invalidate: "AcceleratedCompositing",
    },

    {
      name: "offlineWebApplicationCacheEnabled",
      initial: true,
    },
    {
      name: "allowScriptsToCloseWindows",
      initial: false,
    },

    // 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.
    {
      name: "downloadableBinaryFontsEnabled",
      initial: true,
    },

    {
      name: "xssAuditorEnabled",
      initial: false,
    },

    {
      name: "preferCompositingToLCDTextEnabled",
      initial: false,
      invalidate: "AcceleratedCompositing",
    },

    {
      name: "webGL1Enabled",
      initial: true,
    },

    {
      name: "webGL2Enabled",
      initial: true,
    },

    {
      name: "webGLErrorsToConsoleEnabled",
      initial: true,
    },
    {
      name: "antialiased2dCanvasEnabled",
      initial: true,
    },
    {
      name: "antialiasedClips2dCanvasEnabled",
      initial: true,
    },
    {
      name: "accelerated2dCanvasMSAASampleCount",
      initial: 0,
      type: "int",
    },

    {
      name: "hyperlinkAuditingEnabled",
      initial: false,
    },
    {
      name: "allowRunningOfInsecureContent",
      initial: true,
    },

    {
      name: "pictureInPictureEnabled",
      initial: true,
    },

    {
      name: "mediaPlaybackGestureWhitelistScope",
      type: "String",
    },

    {
      name: "presentationRequiresUserGesture",
      initial: true,
    },

    {
      name: "embeddedMediaExperienceEnabled",
      initial: false,
    },

    // This is true when the page is being displayed in a 3D context (eg, a VR
    // headset).
    {
      name: "immersiveModeEnabled",
      initial: false,
      invalidate: "MediaControls",
    },

    {
      name: "scrollAnimatorEnabled",
      initial: true,
    },

    // Used to disable threaded, compositor scrolling for testing purposes.
    // crbug.com/410974 tracks removal once alternative solutions for selective
    // main thread scrolling are supported.
    {
      name: "threadedScrollingEnabled",
      initial: true,
      invalidate: "Style",
    },

    // Used in layout tests for gesture tap highlights. Makes the highlights square
    // (rather than rounded) to make it possible to reftest the results.
    {
      name: "mockGestureTapHighlightsEnabled",
      initial: false,
    },

    {
      name: "shouldRespectImageOrientation",
      initial: false,
    },

    // Limited use by features which behave differently depending on the input
    // devices available.  For example, the pointer and hover media queries.
    // Note that we need to be careful when basing behavior or UI on this -
    // just because a device is present doesn't mean the user cares about it
    // or uses it (i.e. Chromebook Pixel users generally don't want to give up
    // screen real estate just because they happen to have a touchscreen).
    {
      name: "deviceSupportsTouch",
      initial: false,
    },

    // This value indicates the number of simultaneous multi-touch points supported
    // by the currently connected screen/digitizer that supports the most points.
    // From Pointer Events spec:
    //   http://www.w3.org/TR/pointerevents///widl-Navigator-maxTouchPoints
    {
      name: "maxTouchPoints",
      initial: 0,
      type: "int",
    },

    // Whether touch gestures should be "fuzzed" to nearest touch targets.
    // It's expected that this is enabled everywhere by default, but it may be
    // disabled for testing purposes as the algorithm is not yet perfect.
    // crbug.com/304895 tracks removal once we're satisfied with the algorithm.
    {
      name: "touchAdjustmentEnabled",
      initial: true,
    },

    // Determines whether WebViewClient::didTapMultipleTargets will be used for
    // touch disambiguation.
    {
      name: "multiTargetTapNotificationEnabled",
      initial: true,
    },

    // Determines whether the barrel on stylus input should be used for selecting
    // text and dragging.
    {
      name: "barrelButtonForDragEnabled",
      initial: false,
    },

    {
      name: "syncXHRInDocumentsEnabled",
      initial: true,
    },
    {
      name: "cookieEnabled",
      initial: true,
    },
    {
      name: "navigateOnDragDrop",
      initial: true,
    },
    {
      name: "DOMPasteAllowed",
      initial: false,
    },

    {
      name: "allowCustomScrollbarInMainFrame",
      initial: true,
    },
    {
      name: "webSecurityEnabled",
      initial: true,
    },

    // Special keyboard navigation mode intented for platforms with no
    // proper mouse or touch support, such as a TV controller with a remote.
    {
      name: "spatialNavigationEnabled",
      initial: false,
    },

    // This setting adds a means to enable/disable touch initiated drag & drop. If
    // enabled, the user can initiate drag using long press.
    // crbug.com/304894 tracks removal once it's been enabled on all platforms.
    {
      name: "touchDragDropEnabled",
      initial: false,
    },

    // Some apps could have a default video poster if it is not set.
    {
      name: "defaultVideoPosterURL",
      type: "String",
    },

    {
      name: "smartInsertDeleteEnabled",
      initial: false,
    },
    {
      name: "selectTrailingWhitespaceEnabled",
      initial: "kDefaultSelectTrailingWhitespaceEnabled",
    },

    {
      name: "selectionIncludesAltImageText",
      initial: false,
    },

    {
      name: "selectionStrategy",
      initial: "SelectionStrategy::kCharacter",
      type: "SelectionStrategy",
    },

    //////////////// Settings used by Android WebView below ////////////////

    {
      name: "useLegacyBackgroundSizeShorthandBehavior",
      initial: false,
    },

    // This quirk is to maintain compatibility with Android apps built on
    // the Android SDK prior to and including version 18.
    // Presumably, this can be removed any time after 2015.
    // See http://crbug.com/282130.
    {
      name: "viewportMetaZeroValuesQuirk",
      initial: false,
    },

    // Another Android SDK <= 18 quirk, removable 2015.
    // See http://crbug.com/295287
    {
      name: "ignoreMainFrameOverflowHiddenQuirk",
      initial: false,
    },

    // Yet another Android SDK <= 18 quirk, removable 2015.
    // See http://crbug.com/305236
    {
      name: "reportScreenSizeInPhysicalPixelsQuirk",
      initial: false,
    },

    // One more Android SDK <= 18 quirk, removable 2015.
    // See http://crbug.com/306548
    {
      name: "viewportMetaMergeContentQuirk",
      initial: false,
    },

    // This quirk is to maintain compatibility with Android apps.
    // It will be possible to remove it once WebSettings.{get|set}UseWideViewPort
    // API function will be removed.
    // See http://crbug.com/288037.
    {
      name: "wideViewportQuirkEnabled",
      initial: false,
    },

    // Used by the android_webview to support a horizontal height auto-sizing
    // mode.
    {
      name: "forceZeroLayoutHeight",
      initial: false,
      invalidate: "ViewportDescription",
    },

    {
      name: "mainFrameClipsContent",
      initial: true,
    },

    // For android.webkit.WebSettings.setUseWideViewport()
    // http://developer.android.com/reference/android/webkit/WebSettings.html//setUseWideViewPort(boolean)
    {
      name: "useWideViewport",
      initial: true,
      invalidate: "ViewportDescription",
    },

    // For android.webkit.WebSettings.setLoadWithOverviewMode()
    // http://developer.android.com/reference/android/webkit/WebSettings.html//setLoadWithOverviewMode(boolean)
    {
      name: "loadWithOverviewMode",
      initial: true,
      invalidate: "ViewportDescription",
    },

    // Used by android_webview to support legacy apps that inject script into a top-level initial empty
    // document and expect it to persist on navigation, even though the origin is unique. Note that this
    // behavior violates the requirements described by [Initialising a new Document object] in
    // https://html.spec.whatwg.org/multipage/browsers.html//navigating-across-documents.
    {
      name: "shouldReuseGlobalForUnownedMainFrame",
      initial: false,
    },

    //////////////// End of settings used by Android WebView ////////////////


    // Touch based text selection and editing on desktop.
    // crbug.com/304873 tracks removal once it's been enabled on all platforms.
    {
      name: "touchEditingEnabled",
      initial: false,
    },

    // If true, scrollers will use overlay scrollbars.  These do not take up any
    // layout width, are drawn using solid color quads by the compositor, and fade away
    // after a timeout.
    {
      name: "useSolidColorScrollbars",
      initial: false,
    },

    // The rubber-band overscroll effect is implemented in Blink and is being moved
    // to the compositor thread. This will be set to true and eventually removed.
    // crbug.com/133097
    {
      name: "rubberBandingOnCompositorThread",
      initial: false,
    },

    // Font scale factor for accessibility, applied as part of text autosizing.
    {
      name: "accessibilityFontScaleFactor",
      initial: "1.0",
      invalidate: "TextAutosizing",
      type: "double",
    },

    // Only used by Layout Tests and inspector emulation.
    {
      name: "mediaTypeOverride",
      initial: "\"\"",
      invalidate: "MediaQuery",
      type: "String",
    },
    {
      name: "displayModeOverride",
      initial: "kWebDisplayModeUndefined",
      invalidate: "MediaQuery",
      type: "WebDisplayMode",
    },

    // loadsImagesAutomatically only suppresses the network load of
    // the image URL. A cached image will still be rendered if requested.
    {
      name: "loadsImagesAutomatically",
      initial: false,
      invalidate: "ImageLoading",
    },
    {
      name: "imagesEnabled",
      initial: true,
      invalidate: "ImageLoading",
    },
    {
      name: "imageAnimationPolicy",
      initial: "kImageAnimationPolicyAllowed",
      type: "ImageAnimationPolicy",
    },

    // Html preload scanning is a fast, early scan of HTML documents to find loadable
    // resources before the parser advances to them. If it is disabled, resources will
    // be loaded later.
    {
      name: "doHtmlPreloadScanning",
      initial: true,
    },

    {
      name: "pluginsEnabled",
      initial: false,
      invalidate: "Plugins",
    },

    {
      name: "viewportEnabled",
      initial: false,
      invalidate: "ViewportDescription",
    },
    {
      name: "viewportMetaEnabled",
      initial: false,
      invalidate: "ViewportDescription",
    },

    {
      name: "dnsPrefetchingEnabled",
      initial: false,
      invalidate: "DNSPrefetching",
    },

    // Clients that execute script should call ExecutionContext::canExecuteScripts()
    // instead of this function. ExecutionContext::canExecuteScripts() checks the
    // HTML sandbox, plugin sandboxing, and other important details.
    {
      name: "scriptEnabled",
      initial: false,
    },

    // Forces Android Overlay Scrollbar for mobile emulator.
    {
      name: "forceAndroidOverlayScrollbar",
      initial: false,
    },

    // Set the timeout seconds of NetworkQuietTimers in FirstMeaningfulPainterDetector.
    // Used by embedders who want to change the timeout time in order to run web contents
    // on various embedded devices and changeable network bandwidths in different regions.
    {
      name: "FMPNetworkQuietTimeout",
      initial: "0.5",
      type: "double",
    },

    // Forces initialization of main world, even if no scripts will be executed.
    // Used by inspector to report all contexts.
    {
      name: "forceMainWorldInitialization",
      initial: false,
      invalidate: "DOMWorlds",
    },

    // Forces TouchEventFeatureDetection conditional feature for all main
    // worlds in the page. Used by inspector to emulate touch on devices
    // which don't support it naturally.
    {
      name: "forceTouchEventFeatureDetectionForInspector",
      initial: false,
    },

    // Compensates for poor text legibility on mobile devices. This value is
    // multiplied by the font scale factor when performing text autosizing of
    // websites that do not set an explicit viewport description.
    {
      name: "deviceScaleAdjustment",
      initial: "1.0",
      invalidate: "TextAutosizing",
      type: "double",
    },

    // This value is set to false if the platform does not support fullscreen.
    // When set to false all the requests to enter fullscreen will return an error
    // (fullscreenerror or webkitfullscreenerror) as specified in the standard:
    // http://fullscreen.spec.whatwg.org///dom-element-requestfullscreen
    {
      name: "fullscreenSupported",
      initial: true,
    },

    // V8 supports different types of caching. Used by V8 bindings.
    {
      name: "v8CacheOptions",
      initial: "kV8CacheOptionsDefault",
      type: "V8CacheOptions",
    },

    // These values are bit fields for the properties of available pointing devices
    // and may take on multiple values (e.g. laptop with touchpad and touchscreen
    // has pointerType coarse *and* fine).
    {
      name: "availablePointerTypes",
      initial: "kPointerTypeNone",
      invalidate: "MediaQuery",
      type: "int",
    },
    {
      name: "availableHoverTypes",
      initial: "kHoverTypeNone",
      invalidate: "MediaQuery",
      type: "int",
    },

    // These values specify properties of the user's primary pointing device only.
    {
      name: "primaryPointerType",
      initial: "kPointerTypeNone",
      invalidate: "MediaQuery",
      type: "PointerType",
    },
    {
      name: "primaryHoverType",
      initial: "kHoverTypeNone",
      invalidate: "MediaQuery",
      type: "HoverType",
    },

    // Whether accessibility support is enabled at all.
    {
      name: "accessibilityEnabled",
      initial: false,
      invalidate: "AccessibilityState",
    },

    // If true, the value in password fields is exposed to assistive technologies.
    {
      name: "accessibilityPasswordValuesEnabled",
      initial: false,
    },

    // If true, static text nodes expose inline text box children.
    {
      name: "inlineTextBoxAccessibilityEnabled",
      initial: false,
    },

    // If true, context menu will be shown on mouse up instead of mouse down.
    // Typically enabled on Windows to match platform convention.
    {
      name: "showContextMenuOnMouseUp",
      initial: false,
    },

    // If true, context menu will be shown on any long press event.
    // Used on Android to prevent a context menu from being shown in certain situations
    // (i.e. long pressing an empty div)
    {
      name: "alwaysShowContextMenuOnTouch",
      initial: true,
    },

    {
      name: "disableReadingFromCanvas",
      initial: false,
    },
    {
      name: "strictMixedContentChecking",
      initial: false,
    },
    {
      name: "strictMixedContentCheckingForPlugin",
      initial: false,
    },
    {
      name: "strictPowerfulFeatureRestrictions",
      initial: false,
    },
    {
      name: "strictlyBlockBlockableMixedContent",
      initial: false,
    },
    {
      name: "allowGeolocationOnInsecureOrigins",
      initial: false,
    },
    {
      name: "logDnsPrefetchAndPreconnect",
      initial: false,
    },
    {
      name: "logPreload",
      initial: false,
    },
    {
      name: "smoothScrollForFindEnabled",
      initial: false,
    },

    // These values specify the UA intial viewport style.
    // It is dynamically set by the inspector for mobile emulation and can be
    // used by content embedders to specify custom style on certain platforms.
    {
      name: "viewportStyle",
      initial: "WebViewportStyle::kDefault",
      invalidate: "ViewportRule",
      type: "WebViewportStyle",
    },

    // Automatic track selection is performed based on user preference for track kind specified
    // by this setting.
    {
      name: "textTrackKindUserPreference",
      initial: "TextTrackKindUserPreference::kDefault",
      invalidate: "TextTrackKindUserPreference",
      type: "TextTrackKindUserPreference",
    },

    // User style overrides for captions and subtitles
    {
      name: "textTrackBackgroundColor",
      type: "String",
    },
    {
      name: "textTrackFontFamily",
      type: "String",
    },
    {
      name: "textTrackFontStyle",
      type: "String",
    },
    {
      name: "textTrackFontVariant",
      type: "String",
    },
    {
      name: "textTrackTextColor",
      type: "String",
    },
    {
      name: "textTrackTextShadow",
      type: "String",
    },
    {
      name: "textTrackTextSize",
      type: "String",
    },

    // Margin for title-safe placement of cues with overscan, gives top and bottom margin size as
    // percentage of video element height (for horizontal text) into which cues will not be placed.
    {
      name: "textTrackMarginPercentage",
      initial: 0,
      type: "double",
    },

    {
      name: "savePreviousDocumentResources",
      initial: "SavePreviousDocumentResources::kNever",
      type: "SavePreviousDocumentResources",
    },

    {
      name: "historyEntryRequiresUserGesture",
      initial: false,
    },

    // Do we want to try to save screen real estate in the media player by hiding
    // the volume slider / mute button?
    {
      name: "preferHiddenVolumeControls",
      initial: false,
    },

    // Whether to disallow network fetches for parser blocking scripts in the main
    // frame inserted via document.write, for users on 2G or connections that are
    // effectively 2G.
    {
      name: "disallowFetchForDocWrittenScriptsInMainFrameIfEffectively2G",
      initial: false,
    },

    // Whether to disallow network fetches for parser blocking scripts in the main
    // frame inserted via document.write, for users on slow connections.
    {
      name: "disallowFetchForDocWrittenScriptsInMainFrameOnSlowConnections",
      initial: true,
    },

    // Whether to disallow network fetches for parser blocking scripts in the main
    // frame inserted via document.write, regardless of connection type.
    {
      name: "disallowFetchForDocWrittenScriptsInMainFrame",
      initial: false,
    },

    // Whether data saver holdback for Web APIs is enabled. If enabled, data saver appears
    // as disabled to the web consumers even if it has been actually enabled by the user.
    {
      name: "dataSaverHoldbackWebApi",
      initial: false,
    },

    // Whether data saver holdback is enabled when queried by the media APIs within Blink. If
    // enabled, data saver appears as disabled to the media APIs even if it has been actually
    // enabled by the user.
    {
      name: "dataSaverHoldbackMediaApi",
      initial: false,
    },

    // Whether to invalidate device-dependent media queries and restore scroll positions
    // on frame resize assuming device rotation.
    {
      name: "mainFrameResizesAreOrientationChanges",
      initial: false,
    },

    // Ability to override the default 'passive' value in AddEventListenerOptions. This
    // is useful to demonstrate the power of passive event listeners. This can be removed
    // when there is greater adoption, interventions to force it on and associated devtools
    // to enable it have been shipped.
    {
      name: "passiveListenerDefault",
      initial: "PassiveListenerDefault::kFalse",
      type: "PassiveListenerDefault",
    },

    // Whether the CSSPreloadScanner is used for externally CSS preloads. NoPreload
    // indicates that the scanner will be used, but no preloads issued.
    {
      name: "cssExternalScannerNoPreload",
      initial: false,
    },
    {
      name: "cssExternalScannerPreload",
      initial: false,
    },

    // Some platforms have media subsystems which are too buggy to allow preloading
    // of content by default. See http://crbug.com/612909 for details.
    {
      name: "forcePreloadNoneForMediaElements",
      initial: false,
    },

    {
      name: "hideScrollbars",
      initial: false,
      invalidate: "ViewportScrollbar",
    },

    // Spellchecking is enabled by default for elements that do not specify it explicitly
    // using the "spellcheck" attribute.
    {
      name: "spellCheckEnabledByDefault",
      initial: true,
    },

    // Whether download UI should be hidden for the current page content.
    {
      name: "hideDownloadUI",
      initial: false,
    },

    // Whether or not to issue range requests for images and show placeholders.
    {
      name: "fetchImagePlaceholders",
      initial: false,
    },

    // Whether the frame is a presentation receiver and should expose
    // `navigator.presentation.receiver`.
    {
      name: "presentationReceiver",
      initial: false,
    },

    // Whether Blink should show media controls when `controls` attribute is used.
    {
      name: "mediaControlsEnabled",
      initial: true,
      invalidate: "MediaControls",
    },

    // Whether we should not update selection attributes when mutating selection range.
    // TODO(changwan): remove this flag when we no longer support Android M.
    {
      name: "doNotUpdateSelectionOnMutatingSelectionRange",
      initial: false,
    },

    // Defines the autoplay policy to use.
    {
      name: "autoplayPolicy",
      type: "AutoplayPolicy::Type",
      initial: "AutoplayPolicy::Type::kNoUserGestureRequired",
    },

    //
    // High contrast mode
    //
    {
      name: "highContrastMode",
      initial: "HighContrastMode::kOff",
      type: "HighContrastMode",
    },
    {
      name: "highContrastGrayscale",
      initial: false,
    },
    {
      name: "highContrastContrast",
      initial: 0,
      type: "double",
    },
    {
      name: "highContrastImagePolicy",
      initial: "HighContrastImagePolicy::kFilterAll",
      type: "HighContrastImagePolicy",
    },
    {
      name: "mediaDownloadInProductHelpEnabled",
      initial: false,
    },
    {
      name: "navigatorPlatformOverride",
      type: "String",
    },
    {
      name: "lowPriorityIframesThreshold",
      initial: "WebEffectiveConnectionType::kTypeUnknown",
      type: "WebEffectiveConnectionType",
    },
    {
      name: "shouldThrottlePushState",
      initial: true,
    },

    //
    // Lazy frame loading distance-from-viewport thresholds for different effective connection types.
    //
    {
      name: "lazyFrameLoadingDistanceThresholdPxUnknown",
      initial: 800,
      type: "int",
    },
    {
      name: "lazyFrameLoadingDistanceThresholdPxOffline",
      initial: 800,
      type: "int",
    },
    {
      name: "lazyFrameLoadingDistanceThresholdPxSlow2G",
      initial: 800,
      type: "int",
    },
    {
      name: "lazyFrameLoadingDistanceThresholdPx2G",
      initial: 800,
      type: "int",
    },
    {
      name: "lazyFrameLoadingDistanceThresholdPx3G",
      initial: 800,
      type: "int",
    },
    {
      name: "lazyFrameLoadingDistanceThresholdPx4G",
      initial: 800,
      type: "int",
    },
  ],
}
