tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

StaticPrefList.yaml (571749B)


      1 # This Source Code Form is subject to the terms of the Mozilla Public
      2 # License, v. 2.0. If a copy of the MPL was not distributed with this
      3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 # This file defines static prefs, i.e. those that are defined at startup and
      6 # used entirely or mostly from C++ and/or Rust code.
      7 #
      8 # The file is separated into sections, where each section contains a group of
      9 # prefs that all share the same first segment of their name -- all the "gfx.*"
     10 # prefs are together, all the "network.*" prefs are together, etc. Sections
     11 # must be kept in alphabetical order, but prefs within sections need not be.
     12 #
     13 # Basics
     14 # ------
     15 # Any pref defined in one of the files included here should *not* be defined
     16 # in a data file such as all.js; that would just be useless duplication.
     17 #
     18 # (Except under unusual circumstances where the value defined here must be
     19 # overridden, e.g. for some Thunderbird prefs. In those cases the default
     20 # value from the data file will override the static default value defined
     21 # here.)
     22 #
     23 # Please follow the existing prefs naming convention when considering adding a
     24 # new pref, and don't create a new pref group unless it's appropriate and there
     25 # are likely to be multiple prefs within that group. (If you do, you'll need to
     26 # update the `pref_groups` variable in modules/libpref/moz.build.)
     27 #
     28 # Definitions
     29 # -----------
     30 # A pref definition looks like this:
     31 #
     32 #   - name: <pref-name>                                 # mandatory
     33 #     type: <cpp-type>                                  # mandatory
     34 #     value: <default-value>                            # mandatory
     35 #     mirror: <never | once | always>                   # mandatory
     36 #     do_not_use_directly: <true | false>               # optional
     37 #     include: <header-file>                            # optional
     38 #     rust: <true | false>                              # optional
     39 #     set_spidermonkey_pref: <false | startup | always> # optional
     40 #
     41 # - `name` is the name of the pref, without double-quotes, as it appears
     42 #   in about:config. It is used in most libpref API functions (from both C++
     43 #   and JS code).
     44 #
     45 # - `type` is one of `bool`, `int32_t`, `uint32_t`, `float`, an atomic version
     46 #   of one of those, `String` or `DataMutexString`. Note that float prefs are
     47 #   stored internally as strings. The C++ preprocessor doesn't like template
     48 #   syntax in a macro argument, so use the typedefs defined in
     49 #   StaticPrefsBase.h; for example, use `RelaxedAtomicBool` instead of
     50 #   `Atomic<bool, Relaxed>`.
     51 #
     52 # - `value` is the default value. Its type should be appropriate for
     53 #   <cpp-type>, otherwise the generated code will fail to compile. A complex
     54 #   C++ numeric expressions like `60 * 60` (which the YAML parser cannot treat
     55 #   as an integer or float) is treated as a string and passed through without
     56 #   change, which is useful.
     57 #
     58 # - `mirror` indicates how the pref value is mirrored into a C++ variable.
     59 #
     60 #   * `never`: There is no C++ mirror variable. The pref value can only be
     61 #     accessed via the standard libpref API functions.
     62 #
     63 #   * `once`: The pref value is mirrored into a variable at startup; the
     64 #     mirror variable is left unchanged after that. (The exact point at which
     65 #     all `once` mirror variables are set is when the first `once` mirror
     66 #     variable is accessed, via its getter function.) This is mostly useful for
     67 #     graphics prefs where we often don't want a new pref value to apply until
     68 #     restart. Otherwise, this update policy is best avoided because its
     69 #     behaviour can cause confusion and bugs.
     70 #
     71 #   * `always`: The mirror variable is always kept in sync with the pref value.
     72 #     This is the most common choice.
     73 #
     74 #   When a mirror variable is present, a getter will be created that can access
     75 #   it. Using the getter function to read the pref's value has the two
     76 #   following advantages over the normal API functions.
     77 #
     78 #   * A direct variable access is faster than a hash table lookup.
     79 #
     80 #   * A mirror variable can be accessed off the main thread. If a pref *is*
     81 #     accessed off the main thread, it should have an atomic type. Assertions
     82 #     enforce this.
     83 #
     84 #   Note that Rust code must access the mirror variable directly, rather than
     85 #   via the getter function.
     86 #
     87 # - `do_not_use_directly` indicates if `_DoNotUseDirectly` should be appended to
     88 #   the name of the getter function. This is simply a naming convention
     89 #   indicating that there is some other wrapper getter function that should be
     90 #   used in preference to the normal static pref getter. Defaults to `false` if
     91 #   not present. Cannot be used with a `never` mirror value, because there is
     92 #   no getter function in that case.
     93 #
     94 # - `include` names a header file that must be included for the pref value to
     95 #   compile correctly, e.g. because it refers to a code constant. System
     96 #   headers should be surrounded with angle brackets, e.g. `<cmath>`.
     97 #
     98 # - `rust` indicates if the mirror variable is used by Rust code. If so, it
     99 #   will be usable via the `static_prefs::pref!` macro, e.g.
    100 #   `static_prefs::pref!("layout.css.cross-fade.enabled")`.
    101 #
    102 # - `set_spidermonkey_pref` indicates whether SpiderMonkey boilerplate code
    103 #   should be generated for this pref. If this is set to 'startup', the
    104 #   pref on the SpiderMonkey side is only set during process startup. If set to
    105 #   'always', the SpiderMonkey pref value is also updated when this pref is
    106 #   changed at runtime.
    107 #   This option is only valid for javascript.options.* prefs.
    108 #
    109 # The getter function's base name is the same as the pref's name, but with
    110 # '.' or '-' chars converted to '_', to make a valid identifier. For example,
    111 # the getter for `foo.bar_baz` is `foo_bar_baz()`. This is ugly but clear,
    112 # and you can search for both the pref name and the getter using the regexp
    113 # /foo.bar.baz/. Suffixes are added as follows:
    114 #
    115 # - If the `mirror` value is `once`, `_AtStartup` is appended, to indicate the
    116 #   value was obtained at startup.
    117 #
    118 # - If the `do_not_use_directly` value is true, `_DoNotUseDirectly` is
    119 #   appended.
    120 #
    121 # Preprocessor
    122 # ------------
    123 # Note finally that this file is preprocessed by preprocessor.py, not the C++
    124 # preprocessor. As a result, the following things may be surprising.
    125 #
    126 # - YAML comments start with a '#', so putting a comment on the same line as a
    127 #   preprocessor directive is dubious. E.g. avoid lines like `#define X 3 #
    128 #   three` because the ` # three` will be part of `X`.
    129 #
    130 # - '@' use is required for substitutions to occur. E.g. with `#define FOO 1`,
    131 #   `FOO` won't be replaced with `1` unless it has '@' chars around it.
    132 #
    133 # - Spaces aren't permitted between the leading '#' and the name of a
    134 #   directive, e.g. `#ifdef XYZ` works but `# ifdef XYZ` does not.
    135 #
    136 # Please indent all prefs defined within #ifdef/#ifndef conditions. This
    137 # improves readability, particular for conditional blocks that exceed a single
    138 # screen. But note that the leading '-' in a definition must remain in the
    139 # first column for it to be valid YAML.
    140 
    141 #ifdef RELEASE_OR_BETA
    142 #define IS_NOT_RELEASE_OR_BETA false
    143 #else
    144 #define IS_NOT_RELEASE_OR_BETA true
    145 #endif
    146 
    147 #ifdef NIGHTLY_BUILD
    148 #define IS_NIGHTLY_BUILD      true
    149 #define IS_NOT_NIGHTLY_BUILD  false
    150 #else
    151 #define IS_NIGHTLY_BUILD      false
    152 #define IS_NOT_NIGHTLY_BUILD  true
    153 #endif
    154 
    155 #if defined(NIGHTLY_BUILD) || defined(MOZ_DEV_EDITION)
    156 #define IS_NIGHTLY_OR_DEV_EDITION true
    157 #else
    158 #define IS_NIGHTLY_OR_DEV_EDITION false
    159 #endif
    160 
    161 #ifdef MOZILLA_OFFICIAL
    162 #define IS_NOT_MOZILLA_OFFICIAL false
    163 #else
    164 #define IS_NOT_MOZILLA_OFFICIAL true
    165 #endif
    166 
    167 #ifdef EARLY_BETA_OR_EARLIER
    168 #define IS_EARLY_BETA_OR_EARLIER true
    169 #define IS_NOT_EARLY_BETA_OR_EARLIER false
    170 #else
    171 #define IS_EARLY_BETA_OR_EARLIER false
    172 #define IS_NOT_EARLY_BETA_OR_EARLIER true
    173 #endif
    174 
    175 #if defined(MOZ_DEV_EDITION) || defined(EARLY_BETA_OR_EARLIER)
    176 #define IS_DEV_EDITION_OR_EARLY_BETA_OR_EARLIER true
    177 #else
    178 #define IS_DEV_EDITION_OR_EARLY_BETA_OR_EARLIER false
    179 #endif
    180 
    181 #ifdef ANDROID
    182 #define IS_ANDROID true
    183 #define IS_NOT_ANDROID false
    184 #else
    185 #define IS_ANDROID false
    186 #define IS_NOT_ANDROID true
    187 #endif
    188 
    189 #ifdef XP_WIN
    190 #define IS_XP_WIN true
    191 #define IS_NOT_XP_WIN false
    192 #else
    193 #define IS_XP_WIN false
    194 #define IS_NOT_XP_WIN true
    195 #endif
    196 
    197 #ifdef XP_MACOSX
    198 #define IS_XP_MACOSX true
    199 #define IS_NOT_XP_MACOSX false
    200 #else
    201 #define IS_XP_MACOSX false
    202 #define IS_NOT_XP_MACOSX true
    203 #endif
    204 
    205 #ifdef XP_IOS
    206 #define IS_IOS true
    207 #define IS_NOT_IOS false
    208 #else
    209 #define IS_IOS false
    210 #define IS_NOT_IOS true
    211 #endif
    212 
    213 #if defined(ANDROID) || defined(XP_IOS)
    214 #define IS_MOBILE true
    215 #define IS_NOT_MOBILE false
    216 #else
    217 #define IS_MOBILE false
    218 #define IS_NOT_MOBILE true
    219 #endif
    220 
    221 #---------------------------------------------------------------------------
    222 # Prefs starting with "accessibility."
    223 #---------------------------------------------------------------------------
    224 
    225 # Tab focus model bit field:
    226 # 1 focuses text controls, 2 focuses other form elements, 4 adds links.
    227 # Most users will want 1, 3, or 7. On macOS we expose a checkbox to alter
    228 # between 7 and 3.
    229 - name: accessibility.tabfocus
    230  type: int32_t
    231  value: 7
    232  mirror: always
    233 
    234 # Only on mac tabfocus is expected to handle UI widgets as well as web content.
    235 # FIXME(emilio): This is weird now that we have a lot of HTML in our pages.
    236 - name: accessibility.tabfocus_applies_to_xul
    237  type: bool
    238  value: @IS_XP_MACOSX@
    239  mirror: always
    240 
    241 - name: accessibility.accesskeycausesactivation
    242  type: bool
    243  value: true
    244  mirror: always
    245 
    246 - name: accessibility.monoaudio.enable
    247  type: RelaxedAtomicBool
    248  value: false
    249  mirror: always
    250 
    251 - name: accessibility.browsewithcaret
    252  type: RelaxedAtomicBool
    253  value: false
    254  mirror: always
    255 
    256 - name: accessibility.AOM.enabled
    257  type: bool
    258  value: false
    259  mirror: always
    260 
    261 - name: accessibility.ARIAElementReflection.enabled
    262  type: bool
    263  value: true
    264  mirror: always
    265 
    266 # Whether to enable automatic details relationships for
    267 # anchor positioned content.
    268 - name: accessibility.anchorPositionedAsDetails.enabled
    269  type: bool
    270  value: false
    271  mirror: always
    272 
    273 # Whether to enable all accessibility cache domains on startup.
    274 #  * false: enable domains as needed
    275 #  * true:  enable all domains regardless of need (cache everything)
    276 - name: accessibility.enable_all_cache_domains
    277  type: bool
    278  value: false
    279  mirror: once
    280 
    281 # Whether form controls and images should be focusable with mouse, in content
    282 # documents.
    283 #
    284 # This matches historical macOS / Safari behavior.
    285 #
    286 #  * 0: never
    287 #  * 1: always
    288 #  * 2: on content documents
    289 - name: accessibility.mouse_focuses_formcontrol
    290  type: int32_t
    291 #ifdef XP_MACOSX
    292  value: 2
    293 #else
    294  value: 1
    295 #endif
    296  mirror: always
    297 
    298 # Whether to enable support for the UI Automation API on Windows. Values:
    299 # * 0: Never.
    300 # * 1: Always.
    301 # * 2: Enable unless incompatible accessibility clients are detected.
    302 - name: accessibility.uia.enable
    303  type: uint32_t
    304  value: 2
    305  mirror: always
    306  do_not_use_directly: true
    307 
    308 #ifdef XP_WIN
    309 # Whether to avoid accessibility activation on Windows shortly after clipboard
    310 # copy.
    311 #
    312 # Possible values are:
    313 #  * 0: never
    314 #  * 1: always
    315 #  * 2 (or others): when needed
    316 - name: accessibility.windows.suppress-after-clipboard-copy
    317  type: uint32_t
    318  value: 2
    319  mirror: always
    320 
    321 # Whether to avoid accessibility activation on Windows shortly after max button
    322 # hit-test for the "snap layout" feature.
    323 #
    324 # Possible values are:
    325 #  * 0: never
    326 #  * 1: always
    327 #  * 2 (or others): when needed
    328 - name: accessibility.windows.suppress-for-snap-layout
    329  type: uint32_t
    330  value: 2
    331  mirror: always
    332 #endif
    333 
    334 #---------------------------------------------------------------------------
    335 # Prefs starting with "alerts."
    336 #---------------------------------------------------------------------------
    337 
    338 # Whether to use platform-specific backends for showing desktop notifications.
    339 # If no such backend is available, or if the pref is false, then XUL
    340 # notifications are used.
    341 - name: alerts.useSystemBackend
    342  type: bool
    343  value: true
    344  mirror: always
    345 
    346 #if defined(XP_WIN)
    347 # On Windows, a COM Surrogate notification server receives notification events
    348 # and can relaunch the application after it has been closed.
    349 - name: alerts.useSystemBackend.windows.notificationserver.enabled
    350  type: bool
    351  value: true
    352  mirror: never
    353 #endif
    354 
    355 #ifdef ANDROID
    356  #---------------------------------------------------------------------------
    357  # Prefs starting with "android."
    358  #---------------------------------------------------------------------------
    359 
    360  # On Android, we want an opaque background to be visible under the page,
    361  # so layout should not force a default background.
    362 -   name: android.widget_paints_background
    363    type: RelaxedAtomicBool
    364    value: true
    365    mirror: always
    366 
    367 -   name: android.touch_resampling.enabled
    368    type: RelaxedAtomicBool
    369    value: false
    370    mirror: always
    371 
    372 #endif
    373 
    374 #---------------------------------------------------------------------------
    375 # Prefs starting with "apz."
    376 # The apz prefs are explained in AsyncPanZoomController.cpp
    377 #---------------------------------------------------------------------------
    378 
    379 # amount we zoom in for a double tap gesture if we couldn't find any content
    380 # based rect to zoom to
    381 - name: apz.doubletapzoom.defaultzoomin
    382  type: AtomicFloat
    383  value: 1.2f
    384  mirror: always
    385 
    386 # After a user has executed a pan gesture, we may receive momentum phase pan
    387 # gestures from the OS. This specifies how long we should wait following the
    388 # pan end gesture for possible momentum phase pan gestures before sending the
    389 # TransformEnd notification.
    390 - name: apz.scrollend-event.content.delay_ms
    391  type: RelaxedAtomicInt32
    392  value: 100
    393  mirror: always
    394 
    395 - name: apz.wr.activate_all_scroll_frames
    396  type: RelaxedAtomicBool
    397  value: false
    398  mirror: always
    399 
    400 - name: apz.wr.activate_all_scroll_frames_when_fission
    401  type: RelaxedAtomicBool
    402  value: true
    403  mirror: always
    404 
    405 - name: apz.prefer_jank_minimal_displayports
    406  type: RelaxedAtomicBool
    407  value: true
    408  mirror: always
    409 
    410 - name: apz.allow_double_tap_zooming
    411  type: RelaxedAtomicBool
    412  value: true
    413  mirror: always
    414 
    415 #ifdef XP_MACOSX
    416 - name: apz.mac.enable_double_tap_zoom_touchpad_gesture
    417  type: RelaxedAtomicBool
    418  value: true
    419  mirror: always
    420 #endif
    421 
    422 - name: apz.allow_immediate_handoff
    423  type: RelaxedAtomicBool
    424  value: false
    425  mirror: always
    426 
    427 - name: apz.allow_zooming
    428  type: RelaxedAtomicBool
    429  value: true
    430  mirror: always
    431 
    432 - name: apz.max_zoom
    433  type: AtomicFloat
    434  value: 10.0f
    435  mirror: always
    436 
    437 - name: apz.min_zoom
    438  type: AtomicFloat
    439  value: 0.25f
    440  mirror: always
    441 
    442 - name: apz.allow_zooming_out
    443  type: RelaxedAtomicBool
    444  value: false
    445  mirror: always
    446 
    447 #ifdef ANDROID
    448 - name: apz.android.chrome_fling_physics.friction
    449  type: AtomicFloat
    450  value: 0.015f
    451  mirror: always
    452 
    453 - name: apz.android.chrome_fling_physics.inflexion
    454  type: AtomicFloat
    455  value: 0.35f
    456  mirror: always
    457 
    458 - name: apz.android.chrome_fling_physics.stop_threshold
    459  type: AtomicFloat
    460  value: 0.1f
    461  mirror: always
    462 #endif
    463 
    464 - name: apz.autoscroll.enabled
    465  type: RelaxedAtomicBool
    466  value: true
    467  mirror: always
    468 
    469 - name: apz.axis_lock.breakout_angle
    470  type: AtomicFloat
    471  value: float(M_PI / 8.0)    # 22.5 degrees
    472  mirror: always
    473  include: <cmath>
    474 
    475 - name: apz.axis_lock.breakout_threshold
    476  type: AtomicFloat
    477  value: 1.0f / 32.0f
    478  mirror: always
    479 
    480 - name: apz.axis_lock.direct_pan_angle
    481  type: AtomicFloat
    482  value: float(M_PI / 3.0)    # 60 degrees
    483  mirror: always
    484  include: <cmath>
    485 
    486 - name: apz.axis_lock.lock_angle
    487  type: AtomicFloat
    488  value: float(M_PI / 6.0)    # 30 degrees
    489  mirror: always
    490  include: <cmath>
    491 
    492 # Whether to lock touch scrolling to one axis at a time. When a new
    493 # axis lock mode is added, the APZCAxisLockCompatTester GTest shoud
    494 # be updated to include the lock mode value.
    495 # 0 = FREE (No locking at all)
    496 # 1 = STANDARD (Once locked, remain locked until scrolling ends)
    497 # 2 = STICKY (Allow lock to be broken, with hysteresis)
    498 # 3 = DOMINANT_AXIS (Only allow movement on one axis at a time, only
    499 #     applies to touchpad scrolling)
    500 - name: apz.axis_lock.mode
    501  type: RelaxedAtomicInt32
    502 #if defined(XP_MACOSX)
    503  value: 3
    504 #else
    505  value: 2
    506 #endif
    507  mirror: always
    508 
    509 - name: apz.content_response_timeout
    510  type: RelaxedAtomicInt32
    511  value: 400
    512  mirror: always
    513 
    514 - name: apz.danger_zone_x
    515  type: RelaxedAtomicInt32
    516  value: 50
    517  mirror: always
    518 
    519 - name: apz.danger_zone_y
    520  type: RelaxedAtomicInt32
    521  value: 100
    522  mirror: always
    523 
    524 - name: apz.disable_for_scroll_linked_effects
    525  type: RelaxedAtomicBool
    526  value: false
    527  mirror: always
    528 
    529 - name: apz.displayport_expiry_ms
    530  type: RelaxedAtomicUint32
    531  value: 15000
    532  mirror: always
    533 
    534 - name: apz.drag.enabled
    535  type: RelaxedAtomicBool
    536  value: true
    537  mirror: always
    538 
    539 - name: apz.drag.touch.enabled
    540  type: RelaxedAtomicBool
    541  value: true
    542  mirror: always
    543 
    544 - name: apz.enlarge_displayport_when_clipped
    545  type: RelaxedAtomicBool
    546  value: @IS_ANDROID@
    547  mirror: always
    548 
    549 # Test only.
    550 - name: apz.fixed-margin-override.enabled
    551  type: RelaxedAtomicBool
    552  value: false
    553  mirror: always
    554 
    555 # Test only.
    556 - name: apz.fixed-margin-override.bottom
    557  type: RelaxedAtomicInt32
    558  value: 0
    559  mirror: always
    560 
    561 # Test only.
    562 - name: apz.fixed-margin-override.top
    563  type: RelaxedAtomicInt32
    564  value: 0
    565  mirror: always
    566 
    567 - name: apz.fling_accel_base_mult
    568  type: AtomicFloat
    569  value: 1.0f
    570  mirror: always
    571 
    572 - name: apz.fling_accel_supplemental_mult
    573  type: AtomicFloat
    574  value: 1.0f
    575  mirror: always
    576 
    577 - name: apz.fling_accel_min_fling_velocity
    578  type: AtomicFloat
    579  value: 1.5f
    580  mirror: always
    581 
    582 - name: apz.fling_accel_min_pan_velocity
    583  type: AtomicFloat
    584  value: 0.8f
    585  mirror: always
    586 
    587 - name: apz.fling_accel_max_pause_interval_ms
    588  type: RelaxedAtomicInt32
    589  value: 50
    590  mirror: always
    591 
    592 - name: apz.fling_curve_function_x1
    593  type: float
    594  value: 0.0f
    595  mirror: once
    596 
    597 - name: apz.fling_curve_function_x2
    598  type: float
    599  value: 1.0f
    600  mirror: once
    601 
    602 - name: apz.fling_curve_function_y1
    603  type: float
    604  value: 0.0f
    605  mirror: once
    606 
    607 - name: apz.fling_curve_function_y2
    608  type: float
    609  value: 1.0f
    610  mirror: once
    611 
    612 - name: apz.fling_curve_threshold_inches_per_ms
    613  type: AtomicFloat
    614  value: -1.0f
    615  mirror: always
    616 
    617 - name: apz.fling_friction
    618  type: AtomicFloat
    619  value: 0.002f
    620  mirror: always
    621 
    622 - name: apz.fling_min_velocity_threshold
    623  type: AtomicFloat
    624  value: 0.5f
    625  mirror: always
    626 
    627 - name: apz.fling_stop_on_tap_threshold
    628  type: AtomicFloat
    629  value: 0.05f
    630  mirror: always
    631 
    632 - name: apz.fling_stopped_threshold
    633  type: AtomicFloat
    634  value: 0.01f
    635  mirror: always
    636 
    637 - name: apz.touch_acceleration_factor_x
    638  type: float
    639  value: 1.0f
    640  mirror: always
    641 
    642 - name: apz.touch_acceleration_factor_y
    643  type: float
    644  value: 1.0f
    645  mirror: always
    646 
    647 #ifdef MOZ_WIDGET_GTK
    648 -   name: apz.gtk.kinetic_scroll.enabled
    649    type: RelaxedAtomicBool
    650    value: true
    651    mirror: always
    652 
    653 -   name: apz.gtk.pangesture.enabled
    654    type: RelaxedAtomicBool
    655    value: true
    656    mirror: always
    657 
    658 # Mode to use when receiving pan gesture input.
    659 #
    660 #  * 0: Auto mode (uses the default behavior, subject to change).
    661 #  * 1: Page mode: Uses gtk deltas as a percentage of the page size to scroll. This mode matches:
    662 #
    663 #    https://gitlab.gnome.org/GNOME/gtk/blob/c734c7e9188b56f56c3a504abee05fa40c5475ac/gtk/gtkrange.c#L3063-3074
    664 #
    665 #  * 2: Pixel mode: Uses gtk deltas as a fixed pixel multiplier. This mode matches e.g. GNOME web.
    666 #
    667 #    https://webkit-search.igalia.com/webkit/rev/215039ef09d6bfd6e088175bfe30788d95b9705d/Source/WebKit/Shared/gtk/WebEventFactory.cpp#265-296
    668 #    (multiplied then by pixelsPerLineStep which in GNOME-web is 40).
    669 -   name: apz.gtk.pangesture.delta_mode
    670    type: uint32_t
    671    value: 0
    672    mirror: always
    673 
    674 -   name: apz.gtk.pangesture.page_delta_mode_multiplier
    675    type: float
    676    value: 1.0f
    677    mirror: always
    678 
    679 -   name: apz.gtk.pangesture.pixel_delta_mode_multiplier
    680    type: float
    681    value: 40.0f
    682    mirror: always
    683 
    684 -   name: apz.gtk.touchpad_pinch.enabled
    685    type: RelaxedAtomicBool
    686    value: true
    687    mirror: always
    688 
    689 -   name: apz.gtk.touchpad_pinch.three_fingers.enabled
    690    type: RelaxedAtomicBool
    691    value: false
    692    mirror: always
    693 
    694 -   name: apz.gtk.touchpad_hold.enabled
    695    type: RelaxedAtomicBool
    696    value: true
    697    mirror: always
    698 #endif
    699 
    700 - name: apz.keyboard.enabled
    701  type: bool
    702  value: @IS_NOT_MOBILE@
    703  mirror: once
    704 
    705 - name: apz.keyboard.passive-listeners
    706  type: RelaxedAtomicBool
    707  value: @IS_NOT_MOBILE@
    708  mirror: always
    709 
    710 - name: apz.keyboard.focus-optimization
    711  type: bool
    712  value: false
    713  mirror: always
    714 
    715 - name: apz.max_tap_time
    716  type: RelaxedAtomicInt32
    717  value: 300
    718  mirror: always
    719 
    720 - name: apz.max_velocity_inches_per_ms
    721  type: AtomicFloat
    722  value: -1.0f
    723  mirror: always
    724 
    725 - name: apz.max_velocity_queue_size
    726  type: uint32_t
    727  value: 5
    728  mirror: once
    729 
    730 - name: apz.min_skate_speed
    731  type: AtomicFloat
    732  value: 1.0f
    733  mirror: always
    734 
    735 - name: apz.minimap.enabled
    736  type: RelaxedAtomicBool
    737  value: false
    738  mirror: always
    739 
    740 - name: apz.mousemove_hittest_optimization.enabled
    741  type: RelaxedAtomicBool
    742  value: true
    743  mirror: always
    744 
    745 - name: apz.one_touch_pinch.enabled
    746  type: RelaxedAtomicBool
    747  value: @IS_ANDROID@
    748  mirror: always
    749 
    750 - name: apz.overscroll.enabled
    751  type: RelaxedAtomicBool
    752  value: true
    753  mirror: always
    754 
    755 # The "test async scroll offset" (used via reftest-async-scroll
    756 # or nsIDOMWindowUtils.setAsyncScrollOffset()) can be used to
    757 # trigger overscroll. Used for tests only.
    758 - name: apz.overscroll.test_async_scroll_offset.enabled
    759  type: RelaxedAtomicBool
    760  value: false
    761  mirror: always
    762 
    763 - name: apz.overscroll.min_pan_distance_ratio
    764  type: AtomicFloat
    765  value: 1.0f
    766  mirror: always
    767 
    768 - name: apz.overscroll.stop_distance_threshold
    769  type: AtomicFloat
    770  value: 5.0f
    771  mirror: always
    772 
    773 - name: apz.overscroll.spring_stiffness
    774  type: AtomicFloat
    775  value: 200
    776  mirror: always
    777 
    778 - name: apz.overscroll.damping
    779  type: AtomicFloat
    780  value: 1.1
    781  mirror: always
    782 
    783 - name: apz.overscroll.max_velocity
    784  type: AtomicFloat
    785  value: 10
    786  mirror: always
    787 
    788 - name: apz.paint_skipping.enabled
    789  type: RelaxedAtomicBool
    790  value: true
    791  mirror: always
    792 
    793 # Fetch displayport updates early from the message queue.
    794 - name: apz.pinch_lock.mode
    795  type: RelaxedAtomicInt32
    796  value: 2
    797  mirror: always
    798 
    799 - name: apz.pinch_lock.scroll_lock_threshold
    800  type: AtomicFloat
    801  value: 1.0f / 16.0f   # 1/16 inches
    802  mirror: always
    803 
    804 - name: apz.pinch_lock.span_breakout_threshold
    805  type: AtomicFloat
    806  value: 1.0f / 32.0f   # 1/32 inches
    807  mirror: always
    808 
    809 - name: apz.pinch_lock.span_lock_threshold
    810  type: AtomicFloat
    811  value: 1.0f / 32.0f   # 1/32 inches
    812  mirror: always
    813 
    814 - name: apz.pinch_lock.buffer_max_age
    815  type: int32_t
    816  value: 80   # milliseconds
    817  mirror: once
    818 
    819 - name: apz.popups.enabled
    820  type: RelaxedAtomicBool
    821  value: true
    822  mirror: always
    823 
    824 - name: apz.popups_without_remote.enabled
    825  type: RelaxedAtomicBool
    826  value: true
    827  mirror: always
    828 
    829 # Whether to print the APZC tree for debugging.
    830 - name: apz.printtree
    831  type: RelaxedAtomicBool
    832  value: false
    833  mirror: always
    834 
    835 - name: apz.record_checkerboarding
    836  type: RelaxedAtomicBool
    837  value: @IS_NIGHTLY_BUILD@
    838  mirror: always
    839 
    840 - name: apz.second_tap_tolerance
    841  type: AtomicFloat
    842  value: 0.5f
    843  mirror: always
    844 
    845 # If this is true, APZ fully recalculates the scroll thumb size and
    846 # position in the compositor. This leads to the size and position
    847 # being more accurate in scenarios such as async zooming.
    848 - name: apz.scrollthumb.recalc
    849  type: RelaxedAtomicBool
    850  value: true
    851  mirror: always
    852 
    853 - name: apz.test.fails_with_native_injection
    854  type: RelaxedAtomicBool
    855  value: false
    856  mirror: always
    857 
    858 - name: apz.test.logging_enabled
    859  type: RelaxedAtomicBool
    860  value: false
    861  mirror: always
    862 
    863 - name: apz.touch_move_tolerance
    864  type: AtomicFloat
    865  value: 0.1f
    866  mirror: always
    867 
    868 - name: apz.touch_scroll.buffer_max_age
    869  type: int32_t
    870  value: 200  # milliseconds
    871  mirror: once
    872 
    873 - name: apz.touch_start_tolerance
    874  type: AtomicFloat
    875  value: 0.1f
    876  mirror: always
    877 
    878 - name: apz.velocity_bias
    879  type: AtomicFloat
    880  value: 0.0f
    881  mirror: always
    882 
    883 - name: apz.velocity_relevance_time_ms
    884  type: RelaxedAtomicUint32
    885  value: 100
    886  mirror: always
    887 
    888 #ifdef XP_WIN
    889 - name: apz.windows.force_disable_direct_manipulation
    890  type: RelaxedAtomicBool
    891  value: false
    892  mirror: always
    893 
    894 - name: apz.windows.check_for_pan_gesture_conversion
    895  type: RelaxedAtomicBool
    896  value: true
    897  mirror: always
    898 #endif
    899 
    900 - name: apz.x_skate_highmem_adjust
    901  type: AtomicFloat
    902  value: 0.0f
    903  mirror: always
    904 
    905 - name: apz.x_skate_size_multiplier
    906  type: AtomicFloat
    907  value: 1.25f
    908  mirror: always
    909 
    910 - name: apz.x_stationary_size_multiplier
    911  type: AtomicFloat
    912  value: 1.5f
    913  mirror: always
    914 
    915 - name: apz.y_skate_highmem_adjust
    916  type: AtomicFloat
    917  value: 0.0f
    918  mirror: always
    919 
    920 - name: apz.y_skate_size_multiplier
    921  type: AtomicFloat
    922 #if defined(MOZ_WIDGET_ANDROID)
    923  value: 1.5f
    924 #else
    925  value: 3.5f
    926 #endif
    927  mirror: always
    928 
    929 - name: apz.y_stationary_size_multiplier
    930  type: AtomicFloat
    931 #if defined(MOZ_WIDGET_ANDROID)
    932  value: 1.5f
    933 #else
    934  value: 3.5f
    935 #endif
    936  mirror: always
    937 
    938 - name: apz.zoom_animation_duration_ms
    939  type: RelaxedAtomicInt32
    940 #if defined(MOZ_WIDGET_ANDROID)
    941  value: 250
    942 #else
    943  value: 350
    944 #endif
    945  mirror: always
    946 
    947 - name: apz.scale_repaint_delay_ms
    948  type: RelaxedAtomicInt32
    949  value: 500
    950  mirror: always
    951 
    952 # Whether to use rounded external scroll offsets.
    953 - name: apz.rounded_external_scroll_offset
    954  type: bool
    955  value: false
    956  mirror: always
    957 
    958 # Whether to async scroll CSS anchor pos.
    959 - name: apz.async_scroll_css_anchor_pos
    960  type: bool
    961  value: true
    962  mirror: once
    963 
    964 #---------------------------------------------------------------------------
    965 # Prefs starting with "beacon."
    966 #---------------------------------------------------------------------------
    967 
    968 # Is support for Navigator.sendBeacon enabled?
    969 - name: beacon.enabled
    970  type: bool
    971  value: true
    972  mirror: always
    973 
    974 #---------------------------------------------------------------------------
    975 # Prefs starting with "bidi."
    976 #---------------------------------------------------------------------------
    977 
    978 # Whether delete and backspace should immediately delete characters not
    979 # visually adjacent to the caret, or adjust the visual position of the caret
    980 # on the first keypress and delete the character on a second keypress
    981 - name: bidi.edit.delete_immediately
    982  type: bool
    983  value: true
    984  mirror: always
    985 
    986 # Bidi caret movement style:
    987 # 0 = logical
    988 # 1 = visual
    989 # 2 = visual, but logical during selection
    990 - name: bidi.edit.caret_movement_style
    991  type: int32_t
    992 #if !defined(XP_LINUX) && defined(NIGHTLY_BUILD)
    993  value: 1
    994 #else
    995  value: 2 # See Bug 1638240
    996 #endif
    997  mirror: always
    998 
    999 # Bidi numeral style:
   1000 # 0 = nominalnumeralBidi *
   1001 # 1 = regularcontextnumeralBidi
   1002 # 2 = hindicontextnumeralBidi
   1003 # 3 = arabicnumeralBidi
   1004 # 4 = hindinumeralBidi
   1005 # 5 = persiancontextnumeralBidi
   1006 # 6 = persiannumeralBidi
   1007 - name: bidi.numeral
   1008  type: RelaxedAtomicUint32
   1009  value: 0
   1010  mirror: always
   1011 
   1012 # Bidi text type
   1013 # 1 = charsettexttypeBidi *
   1014 # 2 = logicaltexttypeBidi
   1015 # 3 = visualtexttypeBidi
   1016 - name: bidi.texttype
   1017  type: RelaxedAtomicUint32
   1018  value: 1
   1019  mirror: always
   1020 
   1021 # Bidi direction
   1022 # 1 = directionLTRBidi *
   1023 # 2 = directionRTLBidi
   1024 - name: bidi.direction
   1025  type: RelaxedAtomicUint32
   1026  value: 1
   1027  mirror: always
   1028 
   1029 # Setting this pref to |true| forces Bidi UI menu items and keyboard shortcuts
   1030 # to be exposed, and enables the directional caret hook. By default, only
   1031 # expose it for bidi-associated system locales.
   1032 - name: bidi.browser.ui
   1033  type: bool
   1034  value: false
   1035  mirror: always
   1036 
   1037 #---------------------------------------------------------------------------
   1038 # Prefs starting with "browser."
   1039 #---------------------------------------------------------------------------
   1040 
   1041 - name: browser.active_color
   1042  type: String
   1043  value: "#EE0000"
   1044  mirror: never
   1045 
   1046 - name: browser.active_color.dark
   1047  type: String
   1048  value: "#FF6666"
   1049  mirror: never
   1050 
   1051 - name: browser.anchor_color
   1052  type: String
   1053  value: "#0000EE"
   1054  mirror: never
   1055 
   1056 # If you change this, you probably also want to change
   1057 # nsXPLookAndFeel::GenericDarkColor for Linktext.
   1058 - name: browser.anchor_color.dark
   1059  type: String
   1060  value: "#8C8CFF"
   1061  mirror: never
   1062 
   1063 # See http://dev.w3.org/html5/spec/forms.html#attr-fe-autofocus
   1064 - name: browser.autofocus
   1065  type: bool
   1066  value: true
   1067  mirror: always
   1068 
   1069 - name: browser.cache.disk.enable
   1070  type: RelaxedAtomicBool
   1071  value: true
   1072  mirror: always
   1073 
   1074 - name: browser.cache.memory.enable
   1075  type: RelaxedAtomicBool
   1076  value: true
   1077  mirror: always
   1078 
   1079 # Limit of recent metadata we keep in memory for faster access, in KB.
   1080 - name: browser.cache.disk.metadata_memory_limit
   1081  type: RelaxedAtomicUint32
   1082  value: 1024   # 1 MB
   1083  mirror: always
   1084 
   1085 # Does the user want smart-sizing?
   1086 - name: browser.cache.disk.smart_size.enabled
   1087  type: RelaxedAtomicBool
   1088  value: true
   1089  mirror: always
   1090 
   1091 # Disk cache capacity in kilobytes. It's used only when
   1092 # browser.cache.disk.smart_size.enabled == false
   1093 - name: browser.cache.disk.capacity
   1094  type: RelaxedAtomicUint32
   1095  value: 256000
   1096  mirror: always
   1097 
   1098 # -1 = determine dynamically, 0 = none, n = memory capacity in kilobytes.
   1099 - name: browser.cache.memory.capacity
   1100  type: RelaxedAtomicInt32
   1101  value: -1
   1102  mirror: always
   1103 
   1104 # When smartsizing is disabled we could potentially fill all disk space by
   1105 # cache data when the disk capacity is not set correctly. To avoid that we
   1106 # check the free space every time we write some data to the cache. The free
   1107 # space is checked against two limits. Once the soft limit is reached we start
   1108 # evicting the least useful entries, when we reach the hard limit writing to
   1109 # the entry fails.
   1110 - name: browser.cache.disk.free_space_soft_limit
   1111  type: RelaxedAtomicUint32
   1112  value: 5 * 1024   # 5MB
   1113  mirror: always
   1114 
   1115 - name: browser.cache.disk.free_space_hard_limit
   1116  type: RelaxedAtomicUint32
   1117  value: 1024    # 1MB
   1118  mirror: always
   1119 
   1120 # The number of chunks we preload ahead of read. One chunk currently has
   1121 # 256kB.
   1122 - name: browser.cache.disk.preload_chunk_count
   1123  type: RelaxedAtomicUint32
   1124  value: 4    # 1 MB of read ahead
   1125  mirror: always
   1126 
   1127 # Max-size (in KB) for entries in disk cache. Set to -1 for no limit.
   1128 # (Note: entries bigger than 1/8 of disk-cache are never cached)
   1129 - name: browser.cache.disk.max_entry_size
   1130  type: RelaxedAtomicUint32
   1131  value: 50 * 1024    # 50 MB
   1132  mirror: always
   1133 
   1134 # Max-size (in KB) for entries in memory cache. Set to -1 for no limit.
   1135 # (Note: entries bigger than than 90% of the mem-cache are never cached.)
   1136 - name: browser.cache.memory.max_entry_size
   1137  type: RelaxedAtomicInt32
   1138  value: 5 * 1024
   1139  mirror: always
   1140 
   1141 # Memory limit (in kB) for new cache data not yet written to disk. Writes to
   1142 # the cache are buffered and written to disk on background with low priority.
   1143 # With a slow persistent storage these buffers may grow when data is coming
   1144 # fast from the network. When the amount of unwritten data is exceeded, new
   1145 # writes will simply fail. We have two buckets, one for important data
   1146 # (priority) like html, css, fonts and js, and one for other data like images,
   1147 # video, etc.
   1148 # Note: 0 means no limit.
   1149 - name: browser.cache.disk.max_chunks_memory_usage
   1150  type: RelaxedAtomicUint32
   1151  value: 40 * 1024
   1152  mirror: always
   1153 - name: browser.cache.disk.max_priority_chunks_memory_usage
   1154  type: RelaxedAtomicUint32
   1155  value: 40 * 1024
   1156  mirror: always
   1157 
   1158 
   1159 # Number of seconds the cache spends writing pending data and closing files
   1160 # after shutdown has been signalled. Past that time data is not written and
   1161 # files are left open for the OS to clean up.
   1162 - name: browser.cache.max_shutdown_io_lag
   1163  type: RelaxedAtomicUint32
   1164  value: 2
   1165  mirror: always
   1166 
   1167 # After the max_shutdown_io_lag has passed, we will attempt to cancel
   1168 # blocking IO (on windows). The CacheIOThread may pick up more blocking
   1169 # tasks so we want to cancel those too. The main thread will be woken
   1170 # up every shutdown_io_time_between_cancellations_ms to cancel the IO
   1171 # on the other thread.
   1172 - name: browser.cache.shutdown_io_time_between_cancellations_ms
   1173  type: RelaxedAtomicUint32
   1174  value: 5
   1175  mirror: always
   1176 
   1177 # A percentage limit for media content type in the disk cache. When some entries
   1178 # need to be evicted and media is over the limit, it's evicted first.
   1179 - name: browser.cache.disk.content_type_media_limit
   1180  type: RelaxedAtomicInt32
   1181  value: 50
   1182  mirror: always
   1183 
   1184 # How often to validate document in cache
   1185 #   0 = once-per-session,
   1186 #   1 = each-time,
   1187 #   2 = never,
   1188 #   3 = when-appropriate/automatically
   1189 - name: browser.cache.check_doc_frequency
   1190  type: RelaxedAtomicUint32
   1191  value: 3
   1192  mirror: always
   1193 
   1194 # Compression level for cached JavaScript bytecode
   1195 #   0 = do not compress,
   1196 #   1 = minimal compression,
   1197 #   9 = maximal compression
   1198 - name: browser.cache.jsbc_compression_level
   1199  type: RelaxedAtomicUint32
   1200  value: 0
   1201  mirror: always
   1202 
   1203 # Whether tooltips are enabled.
   1204 - name: browser.chrome.toolbar_tips
   1205  type: bool
   1206  value: true
   1207  mirror: always
   1208 
   1209 # Whether tooltips are hidden on keydown.
   1210 #  0: never
   1211 #  1: always
   1212 #  2: only on non-modifier keys
   1213 - name: browser.chrome.toolbar_tips.hide_on_keydown
   1214  type: uint32_t
   1215 #if defined(XP_WIN)
   1216  value: 0
   1217 #else
   1218  value: 2
   1219 #endif
   1220  mirror: always
   1221 
   1222 # DLP agent name, for display in the browser
   1223 - name: browser.contentanalysis.agent_name
   1224  type: String
   1225  value: "A DLP agent"
   1226  mirror: never
   1227 
   1228 # (optional) The organization name that the DLP agent should have. If this is
   1229 # non-empty and the DLP agent is not signed with this organization name,
   1230 # Firefox will fail the connection.
   1231 - name: browser.contentanalysis.client_signature
   1232  type: String
   1233  value: ""
   1234  mirror: never
   1235 
   1236 # Content analysis by external applications, e.g. data-loss prevention apps
   1237 - name: browser.contentanalysis.enabled
   1238  type: bool
   1239  value: false
   1240  mirror: always
   1241 
   1242 # On Windows, whether to bring the foreground window to the front when printing
   1243 # to avoid a DLP agent stealing focus and cancelling the print (bug 1980225)
   1244 - name: browser.contentanalysis.print_set_foreground_window
   1245  type: bool
   1246  value: true
   1247  mirror: always
   1248 
   1249 # What content analysis should return if there is a problem communicating
   1250 # with the agent. (see DefaultResponse enum in ContentAnalysis.h)
   1251 # Make sure these stay in sync with the out-of-range check in Policies.sys.mjs.
   1252 #
   1253 #   0: Block all requests
   1254 #   1: Warn on all requests (which lets the user decide)
   1255 #   2: Allow all requests
   1256 - name: browser.contentanalysis.default_result
   1257  type: uint32_t
   1258  value: 0
   1259  mirror: always
   1260 
   1261 # What content analysis should return if the agent takes too long to respond
   1262 # to a request. (see DefaultResponse enum in ContentAnalysis.h)
   1263 # Make sure these stay in sync with the out-of-range check in Policies.sys.mjs.
   1264 #
   1265 #   0: Block all requests
   1266 #   1: Warn on all requests (which lets the user decide)
   1267 #   2: Allow all requests
   1268 - name: browser.contentanalysis.timeout_result
   1269  type: uint32_t
   1270  value: 0
   1271  mirror: always
   1272 
   1273 # Is the IPC pipe to the DLP tool specific to the user or to the system?
   1274 - name: browser.contentanalysis.is_per_user
   1275  type: bool
   1276  value: true
   1277  mirror: always
   1278 
   1279 # Path name of pipe used to connect to a configured DLP agent.
   1280 - name: browser.contentanalysis.pipe_path_name
   1281  type: String
   1282  value: "path_user"
   1283  mirror: never
   1284 
   1285 # Space-separated list of regexs that are compared to URLs of resources
   1286 # being checked by content-analysis.  Resources that match are not checked
   1287 # and are always permitted.
   1288 # By default this does not check any about: page except for about:blank
   1289 # and about:srcdoc.
   1290 - name: browser.contentanalysis.allow_url_regex_list
   1291  type: String
   1292  value: "^about:(?!blank|srcdoc).*"
   1293  mirror: never
   1294 
   1295 # Space-separated list of regexs that are compared to URLs of resources
   1296 # being checked by content-analysis.  Resources that match are not checked
   1297 # and are always denied.
   1298 - name: browser.contentanalysis.deny_url_regex_list
   1299  type: String
   1300  value: ""
   1301  mirror: never
   1302 
   1303 # Should CA ignore the system setting and use silent notifications?
   1304 - name: browser.contentanalysis.silent_notifications
   1305  type: bool
   1306  value: false
   1307  mirror: always
   1308 
   1309 # Time (secs) after which content analysis operations are considered timed-out
   1310 # A non-positive value indicates a timeout of 25ms, which is used for testing.
   1311 - name: browser.contentanalysis.agent_timeout
   1312  type: int32_t
   1313  value: 300
   1314  mirror: always
   1315 
   1316 # Should Firefox show a notification or dialog when content analysis blocks
   1317 # access?
   1318 - name: browser.contentanalysis.show_blocked_result
   1319  type: bool
   1320  value: true
   1321  mirror: always
   1322 
   1323 # Should Firefox bypass content analysis for pastes and drags whose source
   1324 # is the same tab?
   1325 - name: browser.contentanalysis.bypass_for_same_tab_operations
   1326  type: bool
   1327  value: false
   1328  mirror: always
   1329 
   1330 # Max number of concurrent connections to the DLP agent.  For stability
   1331 # reasons, values exceeding 256 will be ignored.
   1332 - name: browser.contentanalysis.max_connections
   1333  type: uint32_t
   1334  value: 32
   1335  mirror: always
   1336 
   1337 # Should Firefox use content analysis for clipboard operations?
   1338 # Note that this has no effect unless browser.contentanalysis.enabled
   1339 # is true.
   1340 - name: browser.contentanalysis.interception_point.clipboard.enabled
   1341  type: bool
   1342  value: true
   1343  mirror: always
   1344 
   1345 # Should Firefox only analyze plain text contents of the clipboard?
   1346 # If this is false, all formats on the clipboard will be analyzed.
   1347 # Note that regardless of this setting, files on the clipboard
   1348 # will be analyzed.
   1349 - name: browser.contentanalysis.interception_point.clipboard.plain_text_only
   1350  type: bool
   1351  value: true
   1352  mirror: always
   1353 
   1354 # Should Firefox use content analysis for download operations?
   1355 # Note that this has no effect unless browser.contentanalysis.enabled
   1356 # is true.
   1357 # This defaults to false so as to not break existing content analysis
   1358 # configurations.
   1359 - name: browser.contentanalysis.interception_point.download.enabled
   1360  type: bool
   1361  value: false
   1362  mirror: always
   1363 
   1364 # Should Firefox use content analysis for drag and drop operations?
   1365 # Note that this has no effect unless browser.contentanalysis.enabled
   1366 # is true.
   1367 - name: browser.contentanalysis.interception_point.drag_and_drop.enabled
   1368  type: bool
   1369  value: true
   1370  mirror: always
   1371 
   1372 # Should Firefox only analyze plain text contents for drag and drop
   1373 # operations?
   1374 # If this is false, all formats that are part of the drag and drop
   1375 # operation will be analyzed.
   1376 # Note that regardless of this setting, files that are dragged and dropped
   1377 # will be analyzed.
   1378 - name: browser.contentanalysis.interception_point.drag_and_drop.plain_text_only
   1379  type: bool
   1380  value: true
   1381  mirror: always
   1382 
   1383 # Should Firefox use content analysis for file upload operations through
   1384 # a file dialog?
   1385 # Note that this has no effect unless browser.contentanalysis.enabled
   1386 # is true.
   1387 - name: browser.contentanalysis.interception_point.file_upload.enabled
   1388  type: bool
   1389  value: true
   1390  mirror: always
   1391 
   1392 # Should Firefox use content analysis for print operations?
   1393 # Note that this has no effect unless browser.contentanalysis.enabled
   1394 # is true.
   1395 - name: browser.contentanalysis.interception_point.print.enabled
   1396  type: bool
   1397  value: true
   1398  mirror: always
   1399 
   1400 # Content blocking for Enhanced Tracking Protection
   1401 - name: browser.contentblocking.database.enabled
   1402  type: bool
   1403  value: false
   1404  mirror: always
   1405 
   1406 # How many recent block/unblock actions per origins we remember in the
   1407 # Content Blocking log for each top-level window.
   1408 - name: browser.contentblocking.originlog.length
   1409  type: uint32_t
   1410  value: 32
   1411  mirror: always
   1412 
   1413 # Whether memorytesting is enabled when crash reporter client is launched
   1414 - name: browser.crashReporter.memtest
   1415  type: RelaxedAtomicBool
   1416  value: true
   1417  mirror: always
   1418 
   1419 # Space-separated list of prioritized memory test kinds
   1420 - name: browser.crashReporter.memtestKinds
   1421  type: DataMutexString
   1422  value: ""
   1423  mirror: always
   1424 
   1425 # Control whether we enable the feature of crash pull at all
   1426 - name: browser.crashReports.crashPull
   1427  type: bool
   1428  value: true
   1429  mirror: always
   1430 
   1431 # Should we prompt the user to send targeted crash report requested by devs?
   1432 - name: browser.crashReports.requestedNeverShowAgain
   1433  type: bool
   1434  value: false
   1435  mirror: always
   1436 
   1437 # Do not show crash pull prompt before this unix epoch time to avoid spamming user
   1438 - name: browser.crashReports.dontShowBefore
   1439  type: uint32_t
   1440  value: 0
   1441  mirror: always
   1442 
   1443 # Min font device pixel size at which to turn on high quality.
   1444 - name: browser.display.auto_quality_min_font_size
   1445  type: RelaxedAtomicUint32
   1446  value: 20
   1447  mirror: always
   1448 
   1449 - name: browser.display.background_color
   1450  type: String
   1451  value: "#FFFFFF"
   1452  mirror: never
   1453 
   1454 - name: browser.display.background_color.dark
   1455  type: String
   1456  value: "#1C1B22"
   1457  mirror: never
   1458 
   1459 # This preference is a bit confusing because we use the opposite
   1460 # string value in the colors dialog to indicate to users how FF HCM
   1461 # will behave.
   1462 # With resect to document colors, these values mean:
   1463 # 0 = "default" = always, except in high contrast mode
   1464 # 1 = "always"
   1465 # 2 = "never"
   1466 #
   1467 # On windows, we set this to 0, which means FF HCM will mirror OS HCM.
   1468 # Everywhere else, we set this to 1, disabling FF HCM.
   1469 - name: browser.display.document_color_use
   1470  type: RelaxedAtomicUint32
   1471 #if defined(XP_WIN)
   1472  value: 0
   1473 #else
   1474  value: 1
   1475 #endif
   1476  mirror: always
   1477  rust: true
   1478 
   1479 # This pref dictates whether or not backplates and background images
   1480 # are to be drawn, when in high-contrast mode:
   1481 #   false: do not draw backplates or render background images
   1482 #   true: render background images and draw backplates
   1483 # This condition is only considered when high-contrast mode is enabled
   1484 # in Firefox, ie. when the user has:
   1485 #   (1) mUseAccessibilityMode set to true (Widows high-contrast mode is on)
   1486 #       AND browser.display.document_color_use set to 0
   1487 #       (only with high-contrast themes) OR
   1488 #   (2) browser.display.document_color_use set to 2 (always)
   1489 - name: browser.display.permit_backplate
   1490  type: RelaxedAtomicBool
   1491  value: true
   1492  mirror: always
   1493  rust: true
   1494 
   1495 # Whether we should suppress the background-image of the canvas (the root
   1496 # frame) if we're in forced colors mode.
   1497 #
   1498 # This is important because some sites use background-image with a plain color
   1499 # and it causes undesirable results in high-contrast mode.
   1500 #
   1501 # See bug 1614921 for example.
   1502 - name: browser.display.suppress_canvas_background_image_on_forced_colors
   1503  type: bool
   1504  value: true
   1505  mirror: always
   1506 
   1507 - name: browser.display.foreground_color
   1508  type: String
   1509  value: "#000000"
   1510  mirror: never
   1511 
   1512 - name: browser.display.foreground_color.dark
   1513  type: String
   1514  value: "#FBFBFE"
   1515  mirror: never
   1516 
   1517 # Determines the behavior of OS zoom settings.
   1518 #
   1519 #   0: doesn't affect rendering at all
   1520 #   1: affects full zoom (dpi, effectively).
   1521 #   2: affects text zoom.
   1522 #
   1523 # Default is (1): Historical behavior on Linux, matches other browsers on
   1524 # Windows, and generally creates more consistent rendering.
   1525 - name: browser.display.os-zoom-behavior
   1526  type: RelaxedAtomicInt32
   1527  value: 1
   1528  mirror: always
   1529  rust: true
   1530 
   1531 # Whether focus rings are always shown by default.
   1532 #
   1533 # This is the initial value of nsWindowRoot::mShowFocusRings, but it can be
   1534 # overridden by system preferences.
   1535 - name: browser.display.show_focus_rings
   1536  type: bool
   1537  value: false
   1538  mirror: always
   1539 
   1540 # Enable showing image placeholders while image is loading or when image is broken.
   1541 - name: browser.display.show_image_placeholders
   1542  type: bool
   1543  value: true
   1544  mirror: always
   1545 
   1546 # Whether we should always enable focus rings after focus was moved by keyboard.
   1547 #
   1548 # This behavior matches both historical and GTK / Windows focus behavior.
   1549 #
   1550 # :focus-visible is intended to provide better heuristics than this.
   1551 - name: browser.display.always_show_rings_after_key_focus
   1552  type: bool
   1553  value: false
   1554  mirror: always
   1555 
   1556 # In theory: 0 = never, 1 = quick, 2 = always, though we always just use it as
   1557 # a bool!
   1558 - name: browser.display.use_document_fonts
   1559  type: RelaxedAtomicInt32
   1560  value: 1
   1561  mirror: always
   1562  rust: true
   1563 
   1564 # font-family names for which we'll override use_document_fonts=0, and always
   1565 # use the specified font.
   1566 # This is to support ligature-icon fonts, which render literal strings like
   1567 # "arrow_drop_down" with an icon, even when use_document_fonts is disabled.
   1568 # If an author provides & uses such a font, and we decline to use it, we'll end
   1569 # up rendering these literal strings where the author intended an icon, which
   1570 # can cause all sorts of overlapping/unreadable content.
   1571 - name: browser.display.use_document_fonts.icon_font_allowlist
   1572  type: String
   1573  value: >-
   1574    Material Icons,
   1575    Material Icons Extended,
   1576    Material Icons Outlined,
   1577    Material Icons Round,
   1578    Material Icons Sharp,
   1579    Material Icons Two Tone,
   1580    Google Material Icons,
   1581    Google Material Icons Filled,
   1582    Material Symbols Outlined,
   1583    Material Symbols Round,
   1584    Material Symbols Rounded,
   1585    Material Symbols Sharp,
   1586    Google Symbols,
   1587    FontAwesome
   1588  mirror: never
   1589 
   1590 - name: browser.display.use_system_colors
   1591  type: RelaxedAtomicBool
   1592 #ifdef XP_WIN
   1593  value: true
   1594 #else
   1595  value: false
   1596 #endif
   1597  mirror: always
   1598 
   1599 - name: browser.dom.window.dump.enabled
   1600  type: RelaxedAtomicBool
   1601  value: @IS_NOT_MOZILLA_OFFICIAL@
   1602  mirror: always
   1603 
   1604 # See bug 1738574
   1605 - name: browser.download.start_downloads_in_tmp_dir
   1606  type: bool
   1607  value: false
   1608  mirror: always
   1609 
   1610 # See bug 1747343
   1611 - name: browser.download.always_ask_before_handling_new_types
   1612  type: bool
   1613  value: false
   1614  mirror: always
   1615 
   1616 # See bug 1790641
   1617 - name: browser.download.enableDeletePrivate
   1618  type: bool
   1619  value: true
   1620  mirror: always
   1621 
   1622 - name: browser.download.deletePrivate
   1623  type: bool
   1624  value: false
   1625  mirror: always
   1626 
   1627 # See bug 1731668
   1628 - name: browser.download.enable_spam_prevention
   1629  type: bool
   1630  value: false
   1631  mirror: always
   1632 
   1633 # See bug 1772569
   1634 - name: browser.download.open_pdf_attachments_inline
   1635  type: bool
   1636  value: false
   1637  mirror: always
   1638 
   1639 # tor-browser#42220
   1640 - name: browser.download.ignore_content_disposition
   1641  type: bool
   1642  value: true
   1643  mirror: always
   1644 
   1645 # See bug 1811830
   1646 - name: browser.download.force_save_internally_handled_attachments
   1647  type: bool
   1648  value: false
   1649  mirror: always
   1650 
   1651 - name: browser.download.sanitize_non_media_extensions
   1652  type: bool
   1653  value: true
   1654  mirror: always
   1655 
   1656 # Image document's automatic image sizing.
   1657 - name: browser.enable_automatic_image_resizing
   1658  type: bool
   1659  value: true
   1660  mirror: always
   1661 
   1662 # Image document's click-to-resize.
   1663 - name: browser.enable_click_image_resizing
   1664  type: bool
   1665  value: @IS_NOT_MOBILE@
   1666  mirror: always
   1667 
   1668 - name: browser.find.ignore_ruby_annotations
   1669  type: bool
   1670  value: true
   1671  mirror: always
   1672 
   1673 #if defined(XP_MACOSX)
   1674 # Whether pressing Esc will exit fullscreen.
   1675 - name: browser.fullscreen.exit_on_escape
   1676  type: bool
   1677  value: true
   1678  mirror: always
   1679 #endif
   1680 
   1681 # The max url length we'll store in history.
   1682 #
   1683 # The default value is mostly a guess based on various facts:
   1684 #
   1685 # * IE didn't support urls longer than 2083 chars
   1686 # * Sitemaps protocol used to support a maximum of 2048 chars
   1687 # * Various SEO guides suggest to not go over 2000 chars
   1688 # * Various apps/services are known to have issues over 2000 chars
   1689 # * RFC 2616 - HTTP/1.1 suggests being cautious about depending
   1690 #   on URI lengths above 255 bytes
   1691 #
   1692 - name: browser.history.maxUrlLength
   1693  type: uint32_t
   1694  value: 2000
   1695  mirror: always
   1696 
   1697 # Max size of push/replaceState data parameter
   1698 - name: browser.history.maxStateObjectSize
   1699  type: int32_t
   1700  value: 16777216
   1701  mirror: always
   1702 
   1703 # True to collect wireframes upon navigations / pushState
   1704 - name: browser.history.collectWireframes
   1705  type: bool
   1706  value: false
   1707  mirror: always
   1708 
   1709 # If false, show internal error page for HTTP responses with error
   1710 # codes (4xx, 5xx) and "Content-Length": 0 instead of blank page
   1711 # See https://bugzilla.mozilla.org/show_bug.cgi?id=1325876#c32 for why this
   1712 # is disabled on Android.
   1713 - name: browser.http.blank_page_with_error_response.enabled
   1714  type: bool
   1715 #if !defined(ANDROID)
   1716  value: false
   1717 #else
   1718  value: true
   1719 #endif
   1720  mirror: always
   1721 
   1722 # The minimum area for a rect to be included in a wireframe, in CSS pixels.
   1723 #
   1724 # The current value of 50 is pretty arbitrary, and will be tuned as we refine
   1725 # and test the wireframing capability.
   1726 - name: browser.history.wireframeAreaThreshold
   1727  type: uint32_t
   1728  value: 50
   1729  mirror: always
   1730 
   1731 #if defined(XP_WIN) || defined(XP_LINUX)
   1732  # Notify TabUnloader or send the memory pressure if the memory resource
   1733  # notification is signaled AND the available commit space is lower than
   1734  # this value.
   1735 -   name: browser.low_commit_space_threshold_mb
   1736    type: RelaxedAtomicUint32
   1737    value: 200
   1738    mirror: always
   1739 #endif
   1740 
   1741 #ifdef XP_LINUX
   1742  # On Linux we also check available memory in comparison to total memory,
   1743  # and use this percent value (out of 100) to determine if we are in a
   1744  # low memory scenario.
   1745 -   name: browser.low_commit_space_threshold_percent
   1746    type: RelaxedAtomicUint32
   1747    value: 5
   1748    mirror: always
   1749 #endif
   1750 
   1751 # Render animations and videos as a solid color
   1752 - name: browser.measurement.render_anims_and_video_solid
   1753  type: RelaxedAtomicBool
   1754  value: false
   1755  mirror: always
   1756 
   1757 - name: browser.navigation.requireUserInteraction
   1758  type: bool
   1759  value: true
   1760  mirror: always
   1761 
   1762 # Indicates if about:newtab shows content (enabled) or just blank.
   1763 - name: browser.newtabpage.enabled
   1764  type: bool
   1765  value: true
   1766  mirror: always
   1767 
   1768 # Open PDFs in Edge with the --app flag if it is the default.
   1769 - name: browser.pdf.launchDefaultEdgeAsApp
   1770  type: bool
   1771  value: true
   1772  mirror: always
   1773 
   1774 # Maximium delay between keystrokes that will be considered typing (milliseconds).
   1775 - name: browser.places.interactions.typing_timeout_ms
   1776  type: RelaxedAtomicUint32
   1777  value: 3000
   1778  mirror: always
   1779 
   1780 # Maximum delay between scroll input events that will be considered a scrolling interaction (milliseconds).
   1781 - name: browser.places.interactions.scrolling_timeout_ms
   1782  type: RelaxedAtomicUint32
   1783  value: 5000
   1784  mirror: always
   1785 
   1786 # Number of seconds till the sponsored session is timeout.
   1787 - name: browser.places.sponsoredSession.timeoutSecs
   1788  type: RelaxedAtomicUint32
   1789  value: 3600
   1790  mirror: always
   1791 
   1792 # Whether to start the private browsing mode at application startup
   1793 - name: browser.privatebrowsing.autostart
   1794  type: bool
   1795  value: false
   1796  mirror: always
   1797 
   1798 # Force usage of in-memory (rather than file on disk) media cache for video streaming when private browsing
   1799 - name: browser.privatebrowsing.forceMediaMemoryCache
   1800  type: bool
   1801  value: false
   1802  mirror: always
   1803 
   1804 # Disable state restoration, allowing the kiosk desktop environment to manage state and position.
   1805 - name: browser.restoreWindowState.disabled
   1806  type: bool
   1807  value: false
   1808  mirror: always
   1809 
   1810 # Communicates the toolbar color to platform (for e.g., prefers-color-scheme).
   1811 #
   1812 # Returns whether the toolbar is dark (0), light (1), or system (2). The
   1813 # theming code overrides it if appropriate.
   1814 - name: browser.theme.toolbar-theme
   1815  type: RelaxedAtomicUint32
   1816  value: 2
   1817  mirror: always
   1818 
   1819 # Whether (-moz-native-theme) evaluates to true by default.
   1820 - name: browser.theme.native-theme
   1821  type: RelaxedAtomicBool
   1822 #ifdef MOZ_WIDGET_GTK
   1823  value: true
   1824 #else
   1825  value: false
   1826 #endif
   1827  mirror: always
   1828  rust: true
   1829 
   1830 # Communicates the preferred content theme color to platform (for e.g.,
   1831 # prefers-color-scheme).
   1832 #
   1833 # dark (0), light (1), or system (2)
   1834 #
   1835 # Default to "system", the theming code sets it appropriately.
   1836 - name: browser.theme.content-theme
   1837  type: RelaxedAtomicUint32
   1838  value: 2
   1839  mirror: always
   1840  rust: true
   1841 
   1842 # Whether the firefox titlebar respects the
   1843 # -moz-windows-accent-color-in-titlebar setting on the tab strip.
   1844 - name: browser.theme.windows.accent-color-in-tabs.enabled
   1845  type: RelaxedAtomicBool
   1846  value: false
   1847  mirror: always
   1848  rust: true
   1849 
   1850 # Blocked plugin content
   1851 - name: browser.safebrowsing.blockedURIs.enabled
   1852  type: bool
   1853  value: true
   1854  mirror: always
   1855 
   1856 # Malware protection
   1857 - name: browser.safebrowsing.malware.enabled
   1858  type: bool
   1859  value: true
   1860  mirror: always
   1861 
   1862 # Phishing protection
   1863 - name: browser.safebrowsing.phishing.enabled
   1864  type: bool
   1865  value: true
   1866  mirror: always
   1867 
   1868 # Maximum size for an array to store the safebrowsing prefixset.
   1869 - name: browser.safebrowsing.prefixset_max_array_size
   1870  type: RelaxedAtomicUint32
   1871  value: 512*1024
   1872  mirror: always
   1873 
   1874 # Whether to only classify top-level channels for safe browsing.
   1875 - name: browser.safebrowsing.only_top_level
   1876  type: bool
   1877  value: true
   1878  mirror: always
   1879 
   1880 # SessionStore prefs
   1881 # Maximum number of bytes of DOMSessionStorage data we collect per origin.
   1882 - name: browser.sessionstore.dom_storage_limit
   1883  type: uint32_t
   1884  value: 2048
   1885  mirror: always
   1886 
   1887 # Maximum number of characters of form field data per field we collect.
   1888 - name: browser.sessionstore.dom_form_limit
   1889  type: uint32_t
   1890  value: 1024*1024*2
   1891  mirror: always
   1892 
   1893 # Maximum number of characters of form data we collect per origin.
   1894 - name: browser.sessionstore.dom_form_max_limit
   1895  type: uint32_t
   1896  value: 1024*1024*50
   1897  mirror: always
   1898 
   1899 # Minimal interval between two save operations in milliseconds (while the user is active).
   1900 - name: browser.sessionstore.interval
   1901  type: RelaxedAtomicUint32
   1902  value: 15000
   1903  mirror: always
   1904 
   1905 # Disable collection of data for session store using the native collector code,
   1906 # instead use the older implementation that's not compatible with session
   1907 # history in the parent (and thus Fission).
   1908 - name: browser.sessionstore.disable_platform_collection
   1909  type: bool
   1910 #if defined(MOZ_THUNDERBIRD)
   1911  value: true
   1912 #else
   1913  value: false
   1914 #endif
   1915  mirror: once
   1916  do_not_use_directly: true
   1917 
   1918 #if defined(NIGHTLY_BUILD) || defined(MOZ_DEV_EDITION) || defined(DEBUG)
   1919 - name: browser.startup.record
   1920  type: bool
   1921  value: false
   1922  mirror: always
   1923 #endif
   1924 
   1925 # Causes SessionStore to ignore non-final update messages from
   1926 # browser tabs that were not caused by a flush from the parent.
   1927 # This is a testing flag and should not be used by end-users.
   1928 - name: browser.sessionstore.debug.no_auto_updates
   1929  type: RelaxedAtomicBool
   1930  value: false
   1931  mirror: always
   1932 
   1933 # Whether to restore windows to the virtual desktop (aka workspace)
   1934 # they were on when they were closed.
   1935 - name: browser.sessionstore.restore_windows_to_virtual_desktop
   1936  type: RelaxedAtomicBool
   1937  value: true
   1938  mirror: always
   1939 
   1940 # If set, when a link is opened to a new tab, do not switch to the new tab.
   1941 #
   1942 # This pref is used when the link is opened with "Open Link in New Tab",
   1943 # middle-click, etc.
   1944 #
   1945 # See also browser.tabs.loadDivertedInBackground, which is used when the website
   1946 # diverts the link into a new tab.
   1947 - name: browser.tabs.loadInBackground
   1948  type: bool
   1949  value: true
   1950  mirror: always
   1951 
   1952 # Whether we should draw the tabs on top of the titlebar.
   1953 #
   1954 # no (0), yes (1), or default (2), which is true everywhere except Linux.
   1955 - name: browser.tabs.inTitlebar
   1956  type: int32_t
   1957  value: 2
   1958  mirror: always
   1959 
   1960 # If set, middle clicking on a link opens the link in a new tab.
   1961 - name: browser.tabs.opentabfor.middleclick
   1962  type: bool
   1963  value: true
   1964  mirror: always
   1965 
   1966 # Testing-only pref which makes data: URIs be loaded in a "web" content process
   1967 # instead of within a process based on the URI's loader.
   1968 - name: browser.tabs.remote.dataUriInDefaultWebProcess
   1969  type: bool
   1970  value: false
   1971  mirror: always
   1972 
   1973 # Testing-only pref to force system-triggered about:blank loads to not change
   1974 # content processes. This is used for performance tests which load an
   1975 # about:blank document between navigations for historical reasons to avoid
   1976 # unnecessary process switches.
   1977 - name: browser.tabs.remote.systemTriggeredAboutBlankAnywhere
   1978  type: bool
   1979  value: false
   1980  mirror: always
   1981 
   1982 # Testing-only pref to cause PBrowser creation for a specific BrowsingContext to
   1983 # fail, to test the errored codepath.
   1984 - name: browser.tabs.remote.testOnly.failPBrowserCreation.enabled
   1985  type: bool
   1986  value: false
   1987  mirror: always
   1988 
   1989 - name: browser.tabs.remote.force-paint
   1990  type: bool
   1991  value: true
   1992  mirror: always
   1993 
   1994 # When this pref is enabled document loads with a mismatched
   1995 # Cross-Origin-Embedder-Policy header will fail to load
   1996 - name: browser.tabs.remote.useCrossOriginEmbedderPolicy
   1997  type: RelaxedAtomicBool
   1998  value: true
   1999  mirror: always
   2000 
   2001 # This pref makes `credentialless` a valid value for
   2002 # Cross-Origin-Embedder-Policy header
   2003 - name: browser.tabs.remote.coep.credentialless
   2004  type: RelaxedAtomicBool
   2005 #if defined(ANDROID)
   2006  value: @IS_NIGHTLY_BUILD@
   2007 #else
   2008  value: true
   2009 #endif
   2010  mirror: always
   2011  do_not_use_directly: true
   2012 
   2013 # When this pref is enabled top level loads with a mismatched
   2014 # Cross-Origin-Opener-Policy header will be loaded in a separate process.
   2015 - name: browser.tabs.remote.useCrossOriginOpenerPolicy
   2016  type: RelaxedAtomicBool
   2017  value: true
   2018  mirror: always
   2019 
   2020 # When this pref is enabled then we use a separate content process for
   2021 # top-level load of file:// URIs
   2022 - name: browser.tabs.remote.separateFileUriProcess
   2023  type: RelaxedAtomicBool
   2024 #if !defined(ANDROID)
   2025  value: true
   2026 #else
   2027  value: false
   2028 #endif
   2029  mirror: always
   2030 
   2031 # Pref to control whether we use a separate privileged content process
   2032 # for certain mozilla webpages (which are listed in the pref
   2033 # browser.tabs.remote.separatedMozillaDomains).
   2034 - name: browser.tabs.remote.separatePrivilegedMozillaWebContentProcess
   2035  type: bool
   2036  value: false
   2037  mirror: always
   2038 
   2039 # Whether or not process selection for subframes will prefer re-using an
   2040 # existing content process over creating a new one. Enabling this pref should
   2041 # reduce the number of processes allocated for non-first-party domains if
   2042 # dom.ipc.processCount.webIsolated > 1.
   2043 - name: browser.tabs.remote.subframesPreferUsed
   2044  type: bool
   2045  value: true
   2046  mirror: always
   2047 
   2048 # When this pref is enabled, opaque response is only allowed to enter the
   2049 # content process if it's a response for media (audio, image, video), CSS, or
   2050 # JavaScript.
   2051 - name: browser.opaqueResponseBlocking
   2052  type: RelaxedAtomicBool
   2053 #if defined(ANDROID)
   2054  value: false
   2055 #else
   2056  value: true
   2057 #endif
   2058  mirror: always
   2059 
   2060 # When this pref is enabled, the JS validator will be enabled for
   2061 # ORB.
   2062 - name: browser.opaqueResponseBlocking.javascriptValidator
   2063  type: bool
   2064  value: true
   2065  mirror: always
   2066 
   2067 # This pref controls how filtering of opaque responses for calls to `Window.fetch`.
   2068 # (and similar) is performed in the parent process. This is intended to make sure
   2069 # that data that would be filtered in a content process never actually reaches that
   2070 # content process.
   2071 # See https://fetch.spec.whatwg.org/#concept-filtered-response-opaque
   2072 #   0) Don't filter in the parent process at all, and let content processes handle
   2073 #      opaque filtering. Regardless of if ORB is enabled or not. N.B. that if ORB
   2074 #      is enabled opaque responses will be blocked.
   2075 #   1) If ORB is enabled, in the parent process, filter the responses that ORB allows.
   2076 #      N.B. any responses ORB doesn't allow will not send data to a content process
   2077 #      since they will return a NetworkError. If the request is allowed by ORB, the
   2078 #      internal response will be intact and sent to the content process as is.
   2079 #   2) If ORB is enabled, in the parent process, filter the responses that ORB blocks,
   2080 #      when they were issued by `Window.fetch` (and similar).
   2081 #   3) Filter all responses in the parent, regardless of if ORB is enabled or not.
   2082 #      This means that opaque responses coming from `Window.fetch` won't even be
   2083 #      considered for being blocked by ORB.
   2084 - name: browser.opaqueResponseBlocking.filterFetchResponse
   2085  type: uint32_t
   2086  value: 2
   2087  mirror: always
   2088  do_not_use_directly: true
   2089 
   2090 # This pref controls how exceptions to opaque response blocking for the media MIME types
   2091 # `audio/*` and `video/*` are handled. This is because step 8 in the spec that performs
   2092 # audio or video type pattern matching cannot handle certain MIME types (yet).
   2093 # See https://whatpr.org/fetch/1442.html#orb-algorithm
   2094 #   0) No exceptions
   2095 #   1) Some exceptions, explicitly hard coded in `IsOpaqueSafeListedSpecBreakingMIMEType`
   2096 #   2) Allow all MIME types beginning with `audio/*` or `video/*`.
   2097 - name: browser.opaqueResponseBlocking.mediaExceptionsStrategy
   2098  type: uint32_t
   2099  value: 1
   2100  mirror: always
   2101  do_not_use_directly: true
   2102 
   2103 # When true, zooming will be enabled on all sites, even ones that declare
   2104 # user-scalable=no or use touch-action to disable pinch gestures.
   2105 - name: browser.ui.zoom.force-user-scalable
   2106  type: RelaxedAtomicBool
   2107  value: false
   2108  mirror: always
   2109 
   2110 # tor-browser#28005, tor-browser#40458: enable .tor.onion aliases by default.
   2111 # When they are enabled, the browser will need to refresh the alias lists by
   2112 # connecting to third parties periodically.
   2113 - name: browser.urlbar.onionRewrites.enabled
   2114  type: RelaxedAtomicBool
   2115  value: true
   2116  mirror: always
   2117 
   2118 - name: browser.viewport.desktopWidth
   2119  type: RelaxedAtomicInt32
   2120  value: 980
   2121  mirror: always
   2122 
   2123 - name: browser.visited_color
   2124  type: String
   2125  value: "#551A8B"
   2126  mirror: never
   2127 
   2128 # If you change this, you probably also want to change
   2129 # nsXPLookAndFeel::GenericDarkColor for Visitedtext.
   2130 - name: browser.visited_color.dark
   2131  type: String
   2132  value: "#FFADFF"
   2133  mirror: never
   2134 
   2135 # When true, soft reloads (including location.reload())
   2136 # will only froce validate the top level document, subresources will
   2137 # be loaded normally as-if users normally navigated to the page.
   2138 - name: browser.soft_reload.only_force_validate_top_level_document
   2139  type: bool
   2140  value: true
   2141  mirror: always
   2142 
   2143 # Whether or not to save and restore zoom levels on a per-site basis.
   2144 - name: browser.zoom.siteSpecific
   2145  type: bool
   2146  value: @IS_NOT_ANDROID@
   2147  mirror: always
   2148 
   2149 # Whether we block opening pickers from background tabs.
   2150 - name: browser.disable_pickers_background_tabs
   2151  type: RelaxedAtomicBool
   2152  value: true
   2153  mirror: always
   2154 
   2155 # Whether we block opening pickers from hidden extension pages in WebExtensions.
   2156 # This includes background pages and devtools pages, but not background tabs.
   2157 - name: browser.disable_pickers_in_hidden_extension_pages
   2158  type: RelaxedAtomicBool
   2159  value: @IS_NIGHTLY_BUILD@
   2160  mirror: always
   2161 
   2162 #---------------------------------------------------------------------------
   2163 # Prefs starting with "channelclassifier."
   2164 #---------------------------------------------------------------------------
   2165 
   2166 - name: channelclassifier.allowlist_example
   2167  type: bool
   2168  value: false
   2169  mirror: always
   2170 
   2171 #---------------------------------------------------------------------------
   2172 # Prefs starting with "clipboard."
   2173 #---------------------------------------------------------------------------
   2174 
   2175 # Clipboard behavior.
   2176 - name: clipboard.autocopy
   2177  type: bool
   2178 #if !defined(ANDROID) && !defined(XP_MACOSX) && defined(XP_UNIX)
   2179  value: true
   2180 #else
   2181  value: false
   2182 #endif
   2183  mirror: always
   2184 
   2185 # Allow clipboard data to be copied to the clipboard history/cloud
   2186 # (used for sensitive data from about:logins and Private Browsing)
   2187 # On GTK this controls the usage of the x-kde-passwordManagerHint MIME.
   2188 - name: clipboard.copyPrivateDataToClipboardCloudOrHistory
   2189  type: bool
   2190  value: false
   2191  mirror: always
   2192 
   2193 #ifdef XP_WIN
   2194  # Whether to put a file promise onto the clipboard when copying images on Windows
   2195 -   name: clipboard.imageAsFile.enabled
   2196    type: bool
   2197    value: false
   2198    mirror: always
   2199 
   2200  # On Windows, whether to add PNG before BMP (CF_DIB) in the list of supported
   2201  # formats when copying an image to the clipboard.
   2202 -   name: clipboard.copy_image.as_png
   2203    type: RelaxedAtomicBool
   2204    value: true
   2205    mirror: always
   2206 
   2207  # On Windows, whether we encode an image as PNG (instead of the previous
   2208  # default of BMP) when an application to which we are copying an image
   2209  # requests that it be provided as a temporary file (CF_HDROP).
   2210 -   name: clipboard.copy_image_file.as_png
   2211    type: RelaxedAtomicBool
   2212    value: true
   2213    mirror: always
   2214 #endif
   2215 
   2216 #---------------------------------------------------------------------------
   2217 # Prefs starting with "consoleservice."
   2218 #---------------------------------------------------------------------------
   2219 
   2220 #if defined(ANDROID)
   2221  # Disable sending console to logcat on release builds.
   2222 -   name: consoleservice.logcat
   2223    type: RelaxedAtomicBool
   2224    value: @IS_NOT_RELEASE_OR_BETA@
   2225    mirror: always
   2226 #endif
   2227 
   2228 #---------------------------------------------------------------------------
   2229 # Prefs starting with "content."
   2230 #---------------------------------------------------------------------------
   2231 
   2232 - name: content.cors.disable
   2233  type: bool
   2234  value: false
   2235  mirror: always
   2236 
   2237 # If true, we'll use the triggering principal rather than the loading principal
   2238 # when doing CORS checks.  Doing so is generally not correct, but we shipped
   2239 # with this behavior for a long time, so we're leaving it preffable in case
   2240 # it's needed for testing or if we discover some edge case that requires it.
   2241 #
   2242 # TODO(dholbert): Remove this pref after the 'false' default-value has
   2243 # successfully shipped for a release or two.
   2244 - name: content.cors.use_triggering_principal
   2245  type: bool
   2246  value: false
   2247  mirror: always
   2248 
   2249 # Back off timer notification after count.
   2250 # -1 means never.
   2251 - name: content.notify.backoffcount
   2252  type: int32_t
   2253  value: -1
   2254  mirror: always
   2255 
   2256 # Notification interval in microseconds.
   2257 # The notification interval has a dramatic effect on how long it takes to
   2258 # initially display content for slow connections. The current value
   2259 # provides good incremental display of content without causing an increase
   2260 # in page load time. If this value is set below 1/10 of a second it starts
   2261 # to impact page load performance.
   2262 # See bugzilla bug 72138 for more info.
   2263 - name: content.notify.interval
   2264  type: int32_t
   2265  value: 120000
   2266  mirror: always
   2267 
   2268 # Do we notify based on time?
   2269 - name: content.notify.ontimer
   2270  type: bool
   2271  value: true
   2272  mirror: always
   2273 
   2274 # How many times to deflect in interactive mode.
   2275 - name: content.sink.interactive_deflect_count
   2276  type: int32_t
   2277  value: 0
   2278  mirror: always
   2279 
   2280 # How many times to deflect in perf mode.
   2281 - name: content.sink.perf_deflect_count
   2282  type: int32_t
   2283  value: 200
   2284  mirror: always
   2285 
   2286 # Parse mode for handling pending events.
   2287 # 0 = don't check for pending events
   2288 # 1 = don't deflect if there are pending events
   2289 # 2 = bail if there are pending events
   2290 - name: content.sink.pending_event_mode
   2291  type: int32_t
   2292 #ifdef XP_WIN
   2293  value: 1
   2294 #else
   2295  value: 0
   2296 #endif
   2297  mirror: always
   2298 
   2299 # How often to probe for pending events. 1 = every token.
   2300 - name: content.sink.event_probe_rate
   2301  type: int32_t
   2302  value: 1
   2303  mirror: always
   2304 
   2305 # How long to stay off the event loop in interactive mode (microseconds).
   2306 - name: content.sink.interactive_parse_time
   2307  type: int32_t
   2308  value: 3000
   2309  mirror: always
   2310 
   2311 # How long to stay off the event loop in perf mode.
   2312 - name: content.sink.perf_parse_time
   2313  type: int32_t
   2314  value: 30000
   2315  mirror: always
   2316 
   2317 #  How long to be in interactive mode after an event.
   2318 - name: content.sink.interactive_time
   2319  type: uint32_t
   2320  value: 750000
   2321  mirror: always
   2322 
   2323 # How long to stay in perf mode after initial loading.
   2324 - name: content.sink.initial_perf_time
   2325  type: uint32_t
   2326  value: 2000000
   2327  mirror: always
   2328 
   2329 # Should we switch between perf-mode and interactive-mode?
   2330 # 0 = Switch
   2331 # 1 = Interactive mode
   2332 # 2 = Perf mode
   2333 - name: content.sink.enable_perf_mode
   2334  type: int32_t
   2335  value: 0
   2336  mirror: always
   2337 
   2338 #---------------------------------------------------------------------------
   2339 # Prefs starting with "converter."
   2340 #---------------------------------------------------------------------------
   2341 
   2342 # Whether we include ruby annotation in the text despite whether it
   2343 # is requested. This was true because we didn't explicitly strip out
   2344 # annotations. Set false by default to provide a better behavior, but
   2345 # we want to be able to pref-off it if user doesn't like it.
   2346 - name: converter.html2txt.always_include_ruby
   2347  type: bool
   2348  value: false
   2349  mirror: always
   2350 
   2351 #---------------------------------------------------------------------------
   2352 # Prefs starting with "cookiebanners."
   2353 #---------------------------------------------------------------------------
   2354 
   2355 # Controls the cookie banner handling mode in normal browsing.
   2356 # 0: Disables all cookie banner handling.
   2357 # 1: Reject-all if possible, otherwise do nothing.
   2358 # 2: Reject-all if possible, otherwise accept-all.
   2359 - name: cookiebanners.service.mode
   2360  type: uint32_t
   2361  value: 0
   2362  mirror: always
   2363 
   2364 # When set to true, cookie banners are detected and detection events are
   2365 # dispatched, but they will not be handled. Requires the service to be enabled
   2366 # for the desired mode via pref cookiebanners.service.mode*
   2367 - name: cookiebanners.service.detectOnly
   2368  type: bool
   2369  value: false
   2370  mirror: always
   2371 
   2372 # Controls the cookie banner handling mode in private browsing. Same mode
   2373 # options as the normal browsing pref above.
   2374 - name: cookiebanners.service.mode.privateBrowsing
   2375  type: uint32_t
   2376  value: 0
   2377  mirror: always
   2378 
   2379 # Enables use of global CookieBannerRules, which apply to all sites. This is
   2380 # used for click rules that can handle common Consent Management Providers
   2381 # (CMP).
   2382 # Enabling this (when the cookie handling feature is enabled) may negatively
   2383 # impact site performance since it requires us to run rule-defined query
   2384 # selectors for every page.
   2385 - name: cookiebanners.service.enableGlobalRules
   2386  type: bool
   2387  value: true
   2388  mirror: always
   2389 
   2390 # Whether global rules are allowed to run in sub-frames. Running query selectors
   2391 # in every sub-frame may negatively impact performance, but is required for some
   2392 # CMPs.
   2393 - name: cookiebanners.service.enableGlobalRules.subFrames
   2394  type: bool
   2395  value: true
   2396  mirror: always
   2397 
   2398 # Enables the cookie banner cookie injector. The cookie banner cookie injector
   2399 # depends on the `cookiebanners.service.mode` pref above.
   2400 - name: cookiebanners.cookieInjector.enabled
   2401  type: bool
   2402  value: true
   2403  mirror: always
   2404 
   2405 # By default, how many seconds in the future cookies should expire after they
   2406 # have been injected. Defaults to 12 months. Individual cookie rules may
   2407 # override this.
   2408 - name: cookiebanners.cookieInjector.defaultExpiryRelative
   2409  type: uint32_t
   2410  value: 31536000
   2411  mirror: always
   2412 
   2413 # How many times per site and site load to check for cookie banners after which
   2414 # the mechanism is considered on cooldown for the site in the current browsing
   2415 # session. If the threshold is set to zero, banner clicking won't be considered
   2416 # as being on cooldown regardless of how many times the site is loaded. The
   2417 # maximum value for the retry is 255, any value over than that will be capped.
   2418 - name: cookiebanners.bannerClicking.maxTriesPerSiteAndSession
   2419  type: uint32_t
   2420  value: 3
   2421  mirror: always
   2422 
   2423 #---------------------------------------------------------------------------
   2424 # Prefs starting with "datareporting."
   2425 #---------------------------------------------------------------------------
   2426 
   2427 # Do note that the toggle on Fenix and Focus does NOT reflect to this pref.
   2428 - name: datareporting.healthreport.uploadEnabled
   2429  type: RelaxedAtomicBool
   2430  value: false
   2431  mirror: always
   2432  rust: true
   2433 
   2434 #---------------------------------------------------------------------------
   2435 # Prefs starting with "device."
   2436 #---------------------------------------------------------------------------
   2437 
   2438 # Is support for the device sensors API enabled?
   2439 - name: device.sensors.enabled
   2440  type: bool
   2441  value: true
   2442  mirror: always
   2443 
   2444 # KaiOS-only, see https://bugzilla.mozilla.org/show_bug.cgi?id=1699707#c10
   2445 - name: device.sensors.ambientLight.enabled
   2446  type: bool
   2447  value: false
   2448  mirror: always
   2449 
   2450 - name: device.sensors.motion.enabled
   2451  type: bool
   2452  value: true
   2453  mirror: always
   2454 
   2455 - name: device.sensors.orientation.enabled
   2456  type: bool
   2457  value: true
   2458  mirror: always
   2459 
   2460 # KaiOS-only, see https://bugzilla.mozilla.org/show_bug.cgi?id=1699707#c10
   2461 - name: device.sensors.proximity.enabled
   2462  type: bool
   2463  value: false
   2464  mirror: always
   2465 
   2466 - name: device.sensors.test.events
   2467  type: bool
   2468  value: false
   2469  mirror: always
   2470 
   2471 #---------------------------------------------------------------------------
   2472 # Prefs starting with "devtools."
   2473 #---------------------------------------------------------------------------
   2474 
   2475 - name: devtools.console.stdout.chrome
   2476  type: RelaxedAtomicBool
   2477  value: @IS_NOT_MOZILLA_OFFICIAL@
   2478  mirror: always
   2479 
   2480 - name: devtools.console.stdout.content
   2481  type: RelaxedAtomicBool
   2482  value: false
   2483  mirror: always
   2484 
   2485 #---------------------------------------------------------------------------
   2486 # Prefs starting with "docshell."
   2487 #---------------------------------------------------------------------------
   2488 
   2489 # Used to indicate whether session history listeners should be notified
   2490 # about content viewer eviction. Used only for testing.
   2491 - name: docshell.shistory.testing.bfevict
   2492  type: bool
   2493  value: false
   2494  mirror: always
   2495 
   2496 # If true, pages with an opener won't be bfcached.
   2497 - name: docshell.shistory.bfcache.require_no_opener
   2498  type: bool
   2499  value: @IS_ANDROID@
   2500  mirror: always
   2501 
   2502 # If true, page with beforeunload or unload event listeners can be bfcached.
   2503 - name: docshell.shistory.bfcache.allow_unload_listeners
   2504  type: bool
   2505  value: @IS_ANDROID@
   2506  mirror: always
   2507 
   2508 # If true, page with beforeunload event listeners can be bfcached.
   2509 # This only works when sessionHistoryInParent is enabled.
   2510 - name: docshell.shistory.bfcache.ship_allow_beforeunload_listeners
   2511  type: bool
   2512  value: true
   2513  mirror: always
   2514 
   2515 - name: docshell.shistory.sameDocumentNavigationOverridesLoadType
   2516  type: bool
   2517  value: @IS_NOT_NIGHTLY_BUILD@
   2518  mirror: always
   2519 
   2520 - name: docshell.shistory.sameDocumentNavigationOverridesLoadType.forceDisable
   2521  type: String
   2522  value: ""
   2523  mirror: never
   2524 
   2525 #---------------------------------------------------------------------------
   2526 # Prefs starting with "dom."
   2527 #---------------------------------------------------------------------------
   2528 
   2529 # Allow cut/copy
   2530 - name: dom.allow_cut_copy
   2531  type: bool
   2532  value: true
   2533  mirror: always
   2534 
   2535 # Checks if offscreen animation throttling is enabled.
   2536 - name: dom.animations.offscreen-throttling
   2537  type: bool
   2538  value: true
   2539  mirror: always
   2540 
   2541 # Should CommitStyles use the end-point inclusive timing?
   2542 - name: dom.animations.commit-styles-endpoint-inclusive
   2543  type: bool
   2544  value: true
   2545  mirror: always
   2546 
   2547 # Is support for Navigator.getBattery enabled?
   2548 - name: dom.battery.enabled
   2549  type: bool
   2550  value: true
   2551  mirror: always
   2552 
   2553 # Block multiple external protocol URLs in iframes per single event.
   2554 - name: dom.block_external_protocol_in_iframes
   2555  type: bool
   2556  value: true
   2557  mirror: always
   2558 
   2559 # Block Insecure downloads from Secure Origins
   2560 - name: dom.block_download_insecure
   2561  type: bool
   2562  value: true
   2563  mirror: always
   2564 
   2565 # The maximum number of popup that is allowed to be opened. Set to -1 for no
   2566 # limit.
   2567 - name: dom.popup_maximum
   2568  type: int32_t
   2569  value: -1
   2570  mirror: always
   2571 
   2572 # Enable CacheAPI in private browsing mode with encryption
   2573 - name: dom.cache.privateBrowsing.enabled
   2574  type: RelaxedAtomicBool
   2575  value: true
   2576  mirror: always
   2577 
   2578 # Exposes window.caches and skips SecureContext check.
   2579 # dom.serviceWorkers.testing.enabled also includes the same effect.
   2580 - name: dom.caches.testing.enabled
   2581  type: RelaxedAtomicBool
   2582  value: false
   2583  mirror: always
   2584 
   2585 # A pref that is used to slow down database initialization for testing purposes.
   2586 - name: dom.cache.databaseInitialization.pauseOnIOThreadMs
   2587  type: RelaxedAtomicUint32
   2588  value: 0
   2589  mirror: always
   2590 
   2591 # Disable capture attribute for input elements; only supported on GeckoView.
   2592 - name: dom.capture.enabled
   2593  type: bool
   2594  value: false
   2595  mirror: always
   2596 
   2597 # HTML specification says the level should be 5
   2598 # https://html.spec.whatwg.org/#timer-initialisation-steps
   2599 - name: dom.clamp.timeout.nesting.level
   2600  type: RelaxedAtomicUint32
   2601  value: 5
   2602  mirror: always
   2603 
   2604 # Skip the security checks for document.cookie.
   2605 - name: dom.cookie.testing.enabled
   2606  type: RelaxedAtomicBool
   2607  value: false
   2608  mirror: always
   2609 
   2610 # https://whatpr.org/html/10168/interaction.html#closewatcher
   2611 - name: dom.closewatcher.enabled
   2612  type: bool
   2613 #if defined(ANDROID)
   2614  value: false
   2615 #else
   2616  value: @IS_NIGHTLY_BUILD@
   2617 #endif
   2618  mirror: always
   2619 
   2620 # https://github.com/whatwg/html/pull/10737
   2621 - name: dom.dialog.light-dismiss.enabled
   2622  type: bool
   2623  value: true
   2624  mirror: always
   2625 
   2626 # Enable relaxed Custom Element names
   2627 - name: dom.custom_elements.relaxed_names.enabled
   2628  type: bool
   2629  value: true
   2630  mirror: always
   2631 
   2632 # Disable custom highlight API; implementation pending.
   2633 - name: dom.customHighlightAPI.enabled
   2634  type: RelaxedAtomicBool
   2635  value: true
   2636  mirror: always
   2637  rust: true
   2638 
   2639 # Allow control characters appear in composition string.
   2640 # When this is false, control characters except
   2641 # CHARACTER TABULATION (horizontal tab) are removed from
   2642 # both composition string and data attribute of compositionupdate
   2643 # and compositionend events.
   2644 - name: dom.compositionevent.allow_control_characters
   2645  type: bool
   2646  value: false
   2647  mirror: always
   2648 
   2649 # Compression Streams (zstd) (CompressionStream/DecompressionStream)
   2650 # Whether or not "zstd" is a supported format for these streams.
   2651 - name: dom.compression_streams.zstd.enabled
   2652  type: RelaxedAtomicBool
   2653  value: false
   2654  mirror: always
   2655 
   2656 # Enable cookie-store API
   2657 - name: dom.cookieStore.enabled
   2658  type: RelaxedAtomicBool
   2659  value: true
   2660  mirror: always
   2661 
   2662 # Is support for CSSPseudoElement enabled?
   2663 - name: dom.css_pseudo_element.enabled
   2664  type: bool
   2665  value: false
   2666  mirror: always
   2667 
   2668 # After how many seconds we allow external protocol URLs in iframe when not in
   2669 # single events
   2670 - name: dom.delay.block_external_protocol_in_iframes
   2671  type: uint32_t
   2672  value: 10   # in seconds
   2673  mirror: always
   2674 
   2675 # Whether the above pref has any effect at all.
   2676 # Make sure cases like bug 1795380 work before trying to turn this off. See
   2677 # bug 1680721 for some other context that might be relevant.
   2678 - name: dom.delay.block_external_protocol_in_iframes.enabled
   2679  type: bool
   2680  value: true
   2681  mirror: always
   2682 
   2683 - name: dom.details_group.enabled
   2684  type: bool
   2685  value: true
   2686  mirror: always
   2687 
   2688 # Only propagate the open window click permission if the setTimeout() is equal
   2689 # to or less than this value.
   2690 - name: dom.disable_open_click_delay
   2691  type: int32_t
   2692  value: 1000
   2693  mirror: always
   2694 
   2695 - name: dom.disable_open_during_load
   2696  type: bool
   2697  value: false
   2698  mirror: always
   2699 
   2700 - name: dom.disable_beforeunload
   2701  type: bool
   2702  value: false
   2703  mirror: always
   2704 
   2705 - name: dom.require_user_interaction_for_beforeunload
   2706  type: bool
   2707  value: true
   2708  mirror: always
   2709 
   2710 # Enable/disable Gecko specific edit commands
   2711 - name: dom.document.edit_command.contentReadOnly.enabled
   2712  type: bool
   2713  value: false
   2714  mirror: always
   2715 
   2716 - name: dom.document.edit_command.insertBrOnReturn.enabled
   2717  type: bool
   2718  value: false
   2719  mirror: always
   2720 
   2721 # Only intended for fuzzing purposes, this will break mozPrintCallback, etc.
   2722 - name: dom.window_print.fuzzing.block_while_printing
   2723  type: bool
   2724  value: false
   2725  mirror: always
   2726 
   2727 # HTMLDialogElement.prototype.requestClose
   2728 # See https://html.spec.whatwg.org/#dom-dialog-requestclose
   2729 - name: dom.element.dialog.request_close.enabled
   2730  type: bool
   2731  value: true
   2732  mirror: always
   2733 
   2734 - name: dom.element.transform-getters.enabled
   2735  type: bool
   2736  value: false
   2737  mirror: always
   2738 
   2739 # Whether the blocking attribute implementation is enabled,
   2740 # see https://html.spec.whatwg.org/#blocking-attributes
   2741 - name: dom.element.blocking.enabled
   2742  type: RelaxedAtomicBool
   2743  value: false
   2744  mirror: always
   2745 
   2746 # Whether the commandfor attribute implementation is enabled
   2747 - name: dom.element.commandfor.enabled
   2748  type: bool
   2749  value: true
   2750  mirror: always
   2751 
   2752 # Whether the commandfor "toggle" and "open" details commands are enabled
   2753 - name: dom.element.commandfor.on_details.enabled
   2754  type: bool
   2755  value: false
   2756  mirror: always
   2757 
   2758 - name: dom.mouse_capture.enabled
   2759  type: bool
   2760  value: true
   2761  mirror: always
   2762 
   2763 # Is support for Performance.mozMemory enabled?
   2764 - name: dom.enable_memory_stats
   2765  type: bool
   2766  value: false
   2767  mirror: always
   2768 
   2769 # Enable Performance API
   2770 # Whether nonzero values can be returned from performance.timing.*
   2771 - name: dom.enable_performance
   2772  type: RelaxedAtomicBool
   2773  value: true
   2774  mirror: always
   2775 
   2776 # Enable Performance Observer API
   2777 - name: dom.enable_performance_observer
   2778  type: RelaxedAtomicBool
   2779  value: true
   2780  mirror: always
   2781 
   2782 # Whether resource timing will be gathered and returned by performance.GetEntries*
   2783 - name: dom.enable_resource_timing
   2784  type: bool
   2785  value: true
   2786  mirror: always
   2787 
   2788 # Whether event timing will be gathered and returned by performance observer*
   2789 - name: dom.enable_event_timing
   2790  type: RelaxedAtomicBool
   2791  value: true
   2792  mirror: always
   2793 
   2794 # Whether the LargestContentfulPaint API will be gathered and returned by performance observer*
   2795 - name: dom.enable_largest_contentful_paint
   2796  type: RelaxedAtomicBool
   2797  value: true
   2798  mirror: always
   2799 
   2800 - name: dom.performance.largest_contentful_paint.coarsened_rendertime_enabled
   2801  type: RelaxedAtomicBool
   2802  value: true
   2803  mirror: always
   2804 
   2805 # Whether performance.GetEntries* will contain an entry for the active document
   2806 - name: dom.enable_performance_navigation_timing
   2807  type: bool
   2808  value: true
   2809  mirror: always
   2810 
   2811 # Whether the scheduler interface will be exposed
   2812 - name: dom.enable_web_task_scheduling
   2813  type: RelaxedAtomicBool
   2814  value: true
   2815  mirror: always
   2816 
   2817 # If this is true, it's allowed to fire "cut", "copy" and "paste" events.
   2818 # Additionally, "input" events may expose clipboard content when inputType
   2819 # is "insertFromPaste" or something.
   2820 - name: dom.event.clipboardevents.enabled
   2821  type: bool
   2822  value: true
   2823  mirror: always
   2824 
   2825 # Whether Shift+Right click force-opens the context menu
   2826 - name: dom.event.contextmenu.shift_suppresses_event
   2827  type: bool
   2828  value: true
   2829  mirror: always
   2830 
   2831 - name: dom.event.dragexit.enabled
   2832  type: bool
   2833  value: @IS_NOT_NIGHTLY_BUILD@
   2834  mirror: always
   2835 
   2836 # If this pref is set to true, typing a surrogate pair causes one `keypress`
   2837 # event whose `charCode` stores the unicode code point over 0xFFFF.  This is
   2838 # compatible with Safari and Chrome in non-Windows platforms.
   2839 # Otherwise, typing a surrogate pair causes two `keypress` events.  This is
   2840 # compatible with legacy web apps which does
   2841 # `String.fromCharCode(event.charCode)`.
   2842 - name: dom.event.keypress.dispatch_once_per_surrogate_pair
   2843  type: bool
   2844  value: false
   2845  mirror: always
   2846 
   2847 # This is meaningful only when `dispatch_once_per_surrogate_pair` is false.
   2848 # If this pref is set to true, `.key` of the first `keypress` is set to the
   2849 # high-surrogate and `.key` of the other is set to the low-surrogate.
   2850 # Therefore, setting this exposing ill-formed UTF-16 string with `.key`.
   2851 # (And also `InputEvent.data` if pressed in an editable element.)
   2852 # Otherwise, `.key` of the first `keypress` is set to the surrogate pair, and
   2853 # `.key` of the second `keypress` is set to the empty string.
   2854 - name: dom.event.keypress.key.allow_lone_surrogate
   2855  type: bool
   2856  value: @IS_NOT_EARLY_BETA_OR_EARLIER@
   2857  mirror: always
   2858 
   2859 # Make EventStateManager restore the last "mouseover" target when it's
   2860 # reconnected immediately.  The behavior is similar to Safari and old Chrome.
   2861 - name: dom.event.mouse.boundary.restore_last_over_target_from_temporary_removal
   2862  type: bool
   2863  value: false
   2864  mirror: always
   2865 
   2866 # Whether the result of screenX, screenY, clientX, clientY, offsetX, offsetY,
   2867 # x and y of trusted MouseEvent and subclasses may be fractional values.
   2868 # Enabling this may cause backward compatibility issues.
   2869 # Note that this pref is referred only when
   2870 # `dom.event.pointer.fractional_coordinates.enabled` is `true`.
   2871 - name: dom.event.mouse.fractional_coordinates.trusted.enabled
   2872  type: bool
   2873  value: false
   2874  mirror: always
   2875 
   2876 # Whether the result of screenX, screenY, clientX, clientY, offsetX, offsetY,
   2877 # x and y of untrusted MouseEvent and subclasses may be fractional values.
   2878 # I.e., this allows web apps to use fractional values with their own DOM events
   2879 # which have MouseEvent interface.  However, this might cause backward
   2880 # compatibility issues if web apps initializes untrusted events with quotients.
   2881 # Note that this pref is referred only when
   2882 # `dom.event.pointer.fractional_coordinates.enabled` is `true`.
   2883 - name: dom.event.mouse.fractional_coordinates.untrusted.enabled
   2884  type: bool
   2885  value: false
   2886  mirror: always
   2887 
   2888 # Whether pointer boundary events should be dispatched after the element is
   2889 # changed by a layout change or something without pointer move.
   2890 - name: dom.event.pointer.boundary.dispatch_when_layout_change
   2891  type: bool
   2892  value: true
   2893  mirror: always
   2894 
   2895 # Whether the result of screenX, screenY, clientX, clientY, offsetX, offsetY,
   2896 # x and y of PointerEvent may be fractional values (except `click`, `auxclick`
   2897 # and `contextmenu`)
   2898 - name: dom.event.pointer.fractional_coordinates.enabled
   2899  type: bool
   2900  value: true
   2901  mirror: always
   2902 
   2903 # Whether pointerrawupdate event is enabled or disabled.
   2904 - name: dom.event.pointer.rawupdate.enabled
   2905  type: bool
   2906  value: true
   2907  mirror: always
   2908 
   2909 # Whether pointerrawupdate's movementX and movementY are set to non-zero values.
   2910 - name: dom.event.pointer.rawupdate.movement.enabled
   2911  type: bool
   2912  value: true
   2913  mirror: always
   2914 
   2915 # Whether wheel event target's should be grouped. When enabled, all wheel
   2916 # events that occur in a given wheel transaction have the same event target.
   2917 - name: dom.event.wheel-event-groups.enabled
   2918  type: RelaxedAtomicBool
   2919  value: true
   2920  mirror: always
   2921 
   2922 # Whether WheelEvent should return pixels instead of lines for
   2923 # WheelEvent.deltaX/Y/Z, when deltaMode hasn't been checked.
   2924 #
   2925 # Other browsers don't use line deltas and websites forget to check for it, see
   2926 # bug 1392460.
   2927 - name: dom.event.wheel-deltaMode-lines.disabled
   2928  type: bool
   2929  value: true
   2930  mirror: always
   2931 
   2932 # Mostly for debugging. Whether we should do the same as
   2933 # dom.event.wheel-deltaMode-lines.disabled, but unconditionally rather than
   2934 # only when deltaMode hasn't been checked.
   2935 - name: dom.event.wheel-deltaMode-lines.always-disabled
   2936  type: bool
   2937  value: false
   2938  mirror: always
   2939 
   2940 # A blocklist (list of domains) for the
   2941 # dom.event.wheel-deltaMode-lines.disabled behavior, in case potential
   2942 # unforeseen problems with it arrive.
   2943 - name: dom.event.wheel-deltaMode-lines.always-enabled
   2944  type: String
   2945  value: ""
   2946  mirror: never
   2947 
   2948 #if defined(XP_MACOSX)
   2949 # Whether to disable treating ctrl click as right click
   2950 - name: dom.event.treat_ctrl_click_as_right_click.disabled
   2951  type: bool
   2952  value: @IS_NIGHTLY_BUILD@
   2953  mirror: always
   2954 #endif
   2955 
   2956 # Whether .offset{X,Y} for events targeted at SVG nodes returns bounds relative
   2957 # to the outer SVG.
   2958 - name: dom.events.offset-in-svg-relative-to-svg-root
   2959  type: bool
   2960  value: true
   2961  mirror: always
   2962 
   2963 # Skips checking permission and user activation when accessing the clipboard.
   2964 # Should only be enabled in tests.
   2965 # Access with Clipboard::IsTestingPrefEnabled().
   2966 - name: dom.events.testing.asyncClipboard
   2967  type: bool
   2968  value: false
   2969  mirror: always
   2970  do_not_use_directly: true
   2971 
   2972 # This pref controls whether or not the `protected` dataTransfer state is
   2973 # enabled. If the `protected` dataTransfer stae is disabled, then the
   2974 # DataTransfer will be read-only whenever it should be protected, and will not
   2975 # be disconnected after a drag event is completed.
   2976 - name: dom.events.dataTransfer.protected.enabled
   2977  type: bool
   2978  value: false
   2979  mirror: always
   2980 
   2981 # Whether to hide normal files (i.e. non-images) in dataTransfer inside
   2982 # the content process.
   2983 - name: dom.events.dataTransfer.mozFile.enabled
   2984  type: bool
   2985  value: true
   2986  mirror: always
   2987 
   2988 - name: dom.events.dataTransfer.imageAsFile.enabled
   2989  type: bool
   2990  value: false
   2991  mirror: always
   2992 
   2993 # User interaction timer interval, in ms
   2994 - name: dom.events.user_interaction_interval
   2995  type: uint32_t
   2996  value: 5000
   2997  mirror: always
   2998 
   2999 # Whether to try to compress touchmove events on IPC layer.
   3000 - name: dom.events.compress.touchmove
   3001  type: bool
   3002  value: true
   3003  mirror: always
   3004 
   3005 # In addition to the above IPC layer compresison, allow touchmove
   3006 # events to be further coalesced in the child side after they
   3007 # are sent.
   3008 - name: dom.events.coalesce.touchmove
   3009  type: bool
   3010  value: true
   3011  mirror: always
   3012 
   3013 # Allow mousemove events to be coalesced in the child side after they are sent.
   3014 - name: dom.events.coalesce.mousemove
   3015  type: bool
   3016  value: true
   3017  mirror: always
   3018 
   3019 # Expose Window.TextEvent and make the builtin editors dispatch `textInput`
   3020 # event as a default action of `beforeinput`.
   3021 - name: dom.events.textevent.enabled
   3022  type: bool
   3023  value: true
   3024  mirror: always
   3025 
   3026 # Whether to expose execCommand("paste") to web content.
   3027 - name: dom.execCommand.paste.enabled
   3028  type: bool
   3029  value: true
   3030  mirror: always
   3031 
   3032 # Whether to expose test interfaces of various sorts
   3033 - name: dom.expose_test_interfaces
   3034  type: bool
   3035  value: false
   3036  mirror: always
   3037 
   3038 - name: dom.fetchKeepalive.enabled
   3039  type: RelaxedAtomicBool
   3040  value: true
   3041  mirror: always
   3042 
   3043 # The maximum number of pending fetch keepalive requests per browser instance
   3044 - name: dom.fetchKeepalive.total_request_limit
   3045  type: RelaxedAtomicUint32
   3046  value: 2048
   3047  mirror: always
   3048 
   3049 # The maximum number of pending fetch keepalive requests per origin
   3050 - name: dom.fetchKeepalive.request_limit_per_origin
   3051  type: RelaxedAtomicUint32
   3052  value: 256
   3053  mirror: always
   3054 
   3055 - name: dom.fetchObserver.enabled
   3056  type: RelaxedAtomicBool
   3057  value: false
   3058  mirror: always
   3059 
   3060 # Whether to set the incremental flag on the top level document's
   3061 # priority header
   3062 - name: dom.document_priority.incremental
   3063  type: RelaxedAtomicBool
   3064  value: true
   3065  mirror: always
   3066 
   3067 # Whether the Document PictureInPicture API is enabled
   3068 # https://wicg.github.io/document-picture-in-picture/#api
   3069 - name: dom.documentpip.enabled
   3070  type: RelaxedAtomicBool
   3071 #ifdef ANDROID
   3072 # Always disable on android (unsupported) so that webpages aren't
   3073 # confused by the webidl bindings being exposed
   3074  value: false
   3075 #else
   3076 # Probably only enable by default after bug 543435
   3077  value: @IS_NIGHTLY_BUILD@
   3078 #endif
   3079  mirror: always
   3080  rust: true
   3081 
   3082 # Allow the content process to create a File from a path. This is allowed just
   3083 # on parent process, on 'file' Content process, or for testing.
   3084 - name: dom.file.createInChild
   3085  type: RelaxedAtomicBool
   3086  value: false
   3087  mirror: always
   3088 
   3089 # Support @autocomplete values for form autofill feature.
   3090 - name: dom.forms.autocomplete.formautofill
   3091  type: bool
   3092  value: false
   3093  mirror: always
   3094 
   3095 # Is support for HTMLElement.autocorrect enabled?
   3096 - name: dom.forms.autocorrect
   3097  type: bool
   3098  value: true
   3099  mirror: always
   3100 
   3101 # Only trusted submit event could trigger form submission.
   3102 - name: dom.forms.submit.trusted_event_only
   3103  type: bool
   3104  value: false
   3105  mirror: always
   3106 
   3107 # This pref just controls whether we format the number with grouping separator
   3108 # characters when the internal value is set or updated. It does not stop the
   3109 # user from typing in a number and using grouping separators.
   3110 - name: dom.forms.number.grouping
   3111  type: bool
   3112  value: false
   3113  mirror: always
   3114 
   3115 # This pref controls whether <input type=search> clears its value on Esc
   3116 # keydown.
   3117 - name: dom.forms.search.esc
   3118  type: bool
   3119  value: true
   3120  mirror: always
   3121 
   3122 # The interval in milliseconds between two Escape key events where the second
   3123 # key event will exit fullscreen, even if it is consumed.
   3124 - name: dom.fullscreen.force_exit_on_multiple_escape_interval
   3125  type: uint32_t
   3126  value: 500
   3127  mirror: always
   3128 
   3129 # Whether the Gamepad API is enabled
   3130 - name: dom.gamepad.enabled
   3131  type: bool
   3132  value: true
   3133  mirror: always
   3134 
   3135 # Is Gamepad Extension API enabled?
   3136 - name: dom.gamepad.extensions.enabled
   3137  type: bool
   3138  value: true
   3139  mirror: always
   3140 
   3141 # Is LightIndicator API enabled in Gamepad Extension API?
   3142 - name: dom.gamepad.extensions.lightindicator
   3143  type: bool
   3144  value: false
   3145  mirror: always
   3146 
   3147 # Is MultiTouch API enabled in Gamepad Extension API?
   3148 - name: dom.gamepad.extensions.multitouch
   3149  type: bool
   3150  value: false
   3151  mirror: always
   3152 
   3153 # Is Gamepad vibrate haptic feedback function enabled?
   3154 - name: dom.gamepad.haptic_feedback.enabled
   3155  type: bool
   3156  value: true
   3157  mirror: always
   3158 
   3159 - name: dom.gamepad.non_standard_events.enabled
   3160  type: bool
   3161  value: @IS_NOT_RELEASE_OR_BETA@
   3162  mirror: always
   3163 
   3164 - name: dom.gamepad.test.enabled
   3165  type: RelaxedAtomicBool
   3166  value: false
   3167  mirror: always
   3168 
   3169 # W3C draft ImageCapture API
   3170 - name: dom.imagecapture.enabled
   3171  type: bool
   3172  value: false
   3173  mirror: always
   3174 
   3175 # The root margin for image lazy loading, defined as four (value, percentage)
   3176 # pairs.
   3177 - name: dom.lazy-loading.margin.top
   3178  type: float
   3179  value: 600
   3180  mirror: always
   3181 
   3182 - name: dom.lazy-loading.margin.top.percentage
   3183  type: bool
   3184  value: false
   3185  mirror: always
   3186 
   3187 - name: dom.lazy-loading.margin.bottom
   3188  type: float
   3189  value: 600
   3190  mirror: always
   3191 
   3192 - name: dom.lazy-loading.margin.bottom.percentage
   3193  type: bool
   3194  value: false
   3195  mirror: always
   3196 
   3197 - name: dom.lazy-loading.margin.left
   3198  type: float
   3199  value: 600
   3200  mirror: always
   3201 
   3202 - name: dom.lazy-loading.margin.left.percentage
   3203  type: bool
   3204  value: false
   3205  mirror: always
   3206 
   3207 - name: dom.lazy-loading.margin.right
   3208  type: float
   3209  value: 600
   3210  mirror: always
   3211 
   3212 - name: dom.lazy-loading.margin.right.percentage
   3213  type: bool
   3214  value: false
   3215  mirror: always
   3216 
   3217 # Whether we use scrollMargin or rootMargin
   3218 - name: dom.lazy-loading.margin.is-scroll
   3219  type: bool
   3220  value: true
   3221  mirror: always
   3222 
   3223 # Enable indexedDB in private browsing mode with encryption
   3224 - name: dom.indexedDB.privateBrowsing.enabled
   3225  type: RelaxedAtomicBool
   3226  value: true
   3227  mirror: always
   3228 
   3229 # A pref that is used to slow down connection idle maintenance for testing
   3230 # purposes.
   3231 - name: dom.indexedDB.connectionIdleMaintenance.pauseOnConnectionThreadMs
   3232  type: RelaxedAtomicUint32
   3233  value: 0
   3234  mirror: always
   3235 
   3236 # Whether or not indexedDB test mode is enabled.
   3237 - name: dom.indexedDB.testing
   3238  type: RelaxedAtomicBool
   3239  value: false
   3240  mirror: always
   3241 
   3242 # Whether or not indexedDB experimental features are enabled.
   3243 - name: dom.indexedDB.experimental
   3244  type: RelaxedAtomicBool
   3245  value: false
   3246  mirror: always
   3247 
   3248 # Whether or not indexedDB preprocessing is enabled.
   3249 - name: dom.indexedDB.preprocessing
   3250  type: RelaxedAtomicBool
   3251  value: false
   3252  mirror: always
   3253 
   3254 # A pref that is used to slow down database initialization for testing purposes.
   3255 - name: dom.indexedDB.databaseInitialization.pauseOnIOThreadMs
   3256  type: RelaxedAtomicUint32
   3257  value: 0
   3258  mirror: always
   3259 
   3260 # How innerWidth / innerHeight return rounded or fractional sizes.
   3261 #
   3262 #   0 or others: Do not round at all.
   3263 #   1: Round.
   3264 #   2: Truncate.
   3265 #
   3266 # NOTE(emilio): Fractional sizes are not web-compatible, see the regressions
   3267 # from bug 1676843, but we want to expose the fractional sizes (probably in
   3268 # another API) one way or another, see [1], so we're keeping the code for the
   3269 # time being.
   3270 #
   3271 # [1]: https://github.com/w3c/csswg-drafts/issues/5260
   3272 - name: dom.innerSize.rounding
   3273  type: uint32_t
   3274  value: 1
   3275  mirror: always
   3276 
   3277 # Whether we conform to Input Events Level 1 or Input Events Level 2.
   3278 # true:  conforming to Level 1
   3279 # false: conforming to Level 2
   3280 - name: dom.input_events.conform_to_level_1
   3281  type: bool
   3282  value: true
   3283  mirror: always
   3284 
   3285 # Whether we allow BrowsingContextGroup to suspend input events
   3286 - name: dom.input_events.canSuspendInBCG.enabled
   3287  type: bool
   3288  value: false
   3289  mirror: always
   3290 
   3291 # Whether dispatch a redundant `input` event before `compositionend`.
   3292 # Its `.isComposing` is `true`, but it might be useful to store the latest
   3293 # composition string before `compositionend` event listeners (although,
   3294 # `.data` of `compositionend` event contains the value.
   3295 - name: dom.input_events.dispatch_before_compositionend
   3296  type: bool
   3297  value: true
   3298  mirror: always
   3299 
   3300 # The minimum number of ticks after page navigation
   3301 # that need to occur before user input events are allowed to be handled.
   3302 - name: dom.input_events.security.minNumTicks
   3303  type: uint32_t
   3304  value: 3
   3305  mirror: always
   3306 
   3307 # The minimum elapsed time (in milliseconds) after page navigation
   3308 # for user input events are allowed to be handled.
   3309 - name: dom.input_events.security.minTimeElapsedInMS
   3310  type: uint32_t
   3311  value: 100
   3312  mirror: always
   3313 
   3314 # By default user input handling delay is disabled (mostly) for testing ,
   3315 # this is used for forcefully enable it for certain tests.
   3316 - name: dom.input_events.security.isUserInputHandlingDelayTest
   3317  type: bool
   3318  value: false
   3319  mirror: always
   3320 
   3321 # The maximum time (milliseconds) we reserve for handling input events in each
   3322 # frame.
   3323 - name: dom.input_event_queue.duration.max
   3324  type: uint32_t
   3325  value: 8
   3326  mirror: always
   3327 
   3328 - name: dom.interactive_widget_default_resizes_visual
   3329  type: RelaxedAtomicBool
   3330  value: true
   3331  mirror: always
   3332 
   3333 - name: dom.intersection_observer.scroll_margin.enabled
   3334  type: bool
   3335  value: true
   3336  mirror: always
   3337 
   3338 # How often to check for CPOW timeouts (ms). CPOWs are only timed
   3339 # out by the hang monitor.
   3340 - name: dom.ipc.cpow.timeout
   3341  type: uint32_t
   3342  value: 500
   3343  mirror: always
   3344 
   3345 #ifdef MOZ_ENABLE_FORKSERVER
   3346 - name: dom.ipc.forkserver.enable
   3347  type: bool
   3348 #if defined(MOZ_CODE_COVERAGE) || defined(MOZ_ASAN) || defined(MOZ_TSAN) || defined(MOZ_MSAN) || defined(MOZ_UBSAN)
   3349  value: false
   3350 #else
   3351  value: true
   3352 #endif
   3353  mirror: once
   3354 #endif
   3355 
   3356 #if defined(XP_DARWIN)
   3357 # Whether or not to use the mach-based IPC backend on macOS/iOS.
   3358 # Only read once at startup by IOThreadParent's constructor.
   3359 - name: dom.ipc.backend.mach
   3360  type: bool
   3361  value: @IS_IOS@
   3362  mirror: never
   3363 #endif
   3364 
   3365 #ifdef MOZ_WIDGET_GTK
   3366 #
   3367 # Avoid the use of GTK in content processes if possible, by running
   3368 # them in headless mode, to conserve resources (e.g., connections to
   3369 # the X server).  See the usage in `ContentParent.cpp` for the full
   3370 # definition of "if possible".
   3371 #
   3372 # This does not affect sandbox policies; content processes may still
   3373 # dynamically connect to the display server for, e.g., WebGL.
   3374 - name: dom.ipc.avoid-gtk
   3375  type: bool
   3376  value: true
   3377  mirror: always
   3378 #endif
   3379 
   3380 # Whether or not to collect a paired minidump when force-killing a
   3381 # content process.
   3382 - name: dom.ipc.tabs.createKillHardCrashReports
   3383  type: bool
   3384  value: @IS_NOT_RELEASE_OR_BETA@
   3385  mirror: once
   3386 
   3387 # Enable e10s hang monitoring (slow script checking and plugin hang detection).
   3388 - name: dom.ipc.processHangMonitor
   3389  type: bool
   3390  value: true
   3391  mirror: once
   3392 
   3393 # Whether we report such process hangs
   3394 - name: dom.ipc.reportProcessHangs
   3395  type: RelaxedAtomicBool
   3396 # Don't report hangs in DEBUG builds. They're too slow and often a
   3397 # debugger is attached.
   3398 #ifdef DEBUG
   3399  value: false
   3400 #else
   3401  value: true
   3402 #endif
   3403  mirror: always
   3404 
   3405 # If true, disables non-required re-use of content processes. This can be used
   3406 # in tests to force a new process to be used whenever a process selection
   3407 # decision is made. Setting this pref can cause dom.ipc.processCount limits to
   3408 # be exceeded.
   3409 # WARNING: This will exceed even process limits for the extension or
   3410 # privilegedAbout remote types, which may lead to unexpected breakage!
   3411 # Should only be used for testing.
   3412 - name: dom.ipc.disableContentProcessReuse
   3413  type: bool
   3414  value: false
   3415  mirror: always
   3416 
   3417 # If non-zero, a grace delay (in milliseconds) during which unused content
   3418 # processes are kept available for re-use to avoid unnecessary process churn.
   3419 - name: dom.ipc.processReuse.unusedGraceMs
   3420  type: uint32_t
   3421  value: 0
   3422  mirror: always
   3423 
   3424 # Process launch delay (in milliseconds).
   3425 - name: dom.ipc.processPrelaunch.delayMs
   3426  type: uint32_t
   3427 # This number is fairly arbitrary ... the intention is to put off
   3428 # launching another app process until the last one has finished
   3429 # loading its content, to reduce CPU/memory/IO contention.
   3430  value: 1000
   3431  mirror: always
   3432 
   3433 # Process preallocation cache
   3434 # Only used in fission; in e10s we use 1 always
   3435 - name: dom.ipc.processPrelaunch.fission.number
   3436  type: uint32_t
   3437 #ifdef ANDROID
   3438  # Bug 1999950: Prelaunch 1 process on Android due to a performance regression.
   3439  value: 1
   3440 #else
   3441  value: 3
   3442 #endif
   3443  mirror: always
   3444 
   3445 # Limit preallocated processes below this memory size (in MB)
   3446 - name: dom.ipc.processPrelaunch.lowmem_mb
   3447  type: uint32_t
   3448  value: 4096
   3449  mirror: always
   3450 
   3451 - name: dom.ipc.processPriorityManager.enabled
   3452  type: bool
   3453  value: true
   3454  mirror: always
   3455 
   3456 - name: dom.ipc.processPriorityManager.testMode
   3457  type: bool
   3458  value: false
   3459  mirror: always
   3460 
   3461 - name: dom.ipc.processPriorityManager.backgroundPerceivableGracePeriodMS
   3462  type: uint32_t
   3463 #if defined(MOZ_WIDGET_ANDROID)
   3464  value: 3000
   3465 #else
   3466  value: 0
   3467 #endif
   3468  mirror: always
   3469 
   3470 - name: dom.ipc.processPriorityManager.backgroundGracePeriodMS
   3471  type: uint32_t
   3472 #if defined(MOZ_WIDGET_ANDROID)
   3473  value: 3000
   3474 #else
   3475  value: 0
   3476 #endif
   3477  mirror: always
   3478 
   3479 #ifdef XP_WIN
   3480 - name: dom.ipc.processPriorityManager.backgroundUsesEcoQoS
   3481  type: bool
   3482  value: false
   3483  mirror: always
   3484 #endif
   3485 
   3486 # This controls whether JS IPC messages are sent from child to parent using
   3487 # the typeable JSIPCValue encoding, or simply sent using structured cloning.
   3488 # This being true is necessary to type check messages.
   3489 - name: dom.jsipc.send_typed
   3490  type: bool
   3491  value: true
   3492  mirror: always
   3493 
   3494 # Support for input type=month, type=week. By default, disabled.
   3495 - name: dom.forms.datetime.others
   3496  type: bool
   3497  value: @IS_ANDROID@
   3498  mirror: always
   3499 
   3500 #ifndef ANDROID
   3501 - name: dom.forms.html_color_picker.enabled
   3502  type: bool
   3503  value: @IS_NIGHTLY_BUILD@
   3504  mirror: always
   3505 #endif
   3506 
   3507 - name: dom.forms.always_allow_pointer_events.enabled
   3508  type: bool
   3509  value: true
   3510  mirror: always
   3511 
   3512 # Is support for key events and focus events on disabled elements enabled?
   3513 - name: dom.forms.always_allow_key_and_focus_events.enabled
   3514  type: bool
   3515  value: true
   3516  mirror: always
   3517 
   3518 # Whether to disable only the descendants or the parent fieldset element too
   3519 # Note that this still allows it to be selected by `:disable`.
   3520 - name: dom.forms.fieldset_disable_only_descendants.enabled
   3521  type: bool
   3522  value: true
   3523  mirror: always
   3524 
   3525 # Whether to enable showPicker() support for datalist.
   3526 - name: dom.input.showPicker_datalist.enabled
   3527  type: bool
   3528  value: @IS_EARLY_BETA_OR_EARLIER@
   3529  mirror: always
   3530 
   3531 # Does mousewheel-scrolling over a focused <input type="number"> or
   3532 # <input type="range"> field cause the value to increase/decrease (rather
   3533 # than scrolling the page)?
   3534 - name: dom.input.number_and_range_modified_by_mousewheel
   3535  type: RelaxedAtomicBool
   3536  value: false
   3537  mirror: always
   3538 
   3539 # Whether to allow or disallow web apps to cancel `beforeinput` events caused
   3540 # by MozEditableElement#setUserInput() which is used by autocomplete, autofill
   3541 # and password manager.
   3542 - name: dom.input_event.allow_to_cancel_set_user_input
   3543  type: bool
   3544  value: false
   3545  mirror: always
   3546 
   3547 # How long a content process can take before closing its IPC channel
   3548 # after shutdown is initiated.  If the process exceeds the timeout,
   3549 # we fear the worst and kill it.
   3550 - name: dom.ipc.tabs.shutdownTimeoutSecs
   3551  type: RelaxedAtomicUint32
   3552 #if !defined(DEBUG) && !defined(MOZ_ASAN) && !defined(MOZ_VALGRIND) && !defined(MOZ_TSAN)
   3553  value: 20
   3554 #else
   3555  value: 0
   3556 #endif
   3557  mirror: always
   3558 
   3559 # Whether a native event loop should be used in the content process.
   3560 - name: dom.ipc.useNativeEventProcessing.content
   3561  type: RelaxedAtomicBool
   3562 #if defined(XP_WIN) || defined(XP_DARWIN)
   3563  value: false
   3564 #else
   3565  value: true
   3566 #endif
   3567  mirror: always
   3568 
   3569 # Enable/disable KeyboardEvent.initKeyEvent function
   3570 - name: dom.keyboardevent.init_key_event.enabled
   3571  type: bool
   3572  value: false
   3573  mirror: always
   3574 
   3575 # Enable/disable KeyboardEvent.initKeyEvent function in addons even if it's
   3576 # disabled.
   3577 - name: dom.keyboardevent.init_key_event.enabled_in_addons
   3578  type: bool
   3579  value: @IS_EARLY_BETA_OR_EARLIER@
   3580  mirror: always
   3581 
   3582 # If this is true, keypress events for non-printable keys are dispatched only
   3583 # for event listeners of the system event group in web content.
   3584 - name: dom.keyboardevent.keypress.dispatch_non_printable_keys_only_system_group_in_content
   3585  type: bool
   3586  value: true
   3587  mirror: always
   3588 
   3589 # If this is true, "keypress" event's keyCode value and charCode value always
   3590 # become same if the event is not created/initialized by JS.
   3591 - name: dom.keyboardevent.keypress.set_keycode_and_charcode_to_same_value
   3592  type: bool
   3593  value: true
   3594  mirror: always
   3595 
   3596 # If this is set to true, location.ancestorOrigins feature defined
   3597 # by the spec https://html.spec.whatwg.org/#concept-location-ancestor-origins-list
   3598 # is enabled
   3599 - name: dom.location.ancestorOrigins.enabled
   3600  type: bool
   3601  value: true
   3602  mirror: always
   3603 
   3604 # Whether "W3C Web Manifest" processing is enabled
   3605 - name: dom.manifest.enabled
   3606  type: bool
   3607  value: true
   3608  mirror: always
   3609 
   3610 # Enable mapped array buffer by default.
   3611 - name: dom.mapped_arraybuffer.enabled
   3612  type: bool
   3613  value: true
   3614  mirror: always
   3615 
   3616 # Autoplay Policy Detection https://w3c.github.io/autoplay/
   3617 - name: dom.media.autoplay-policy-detection.enabled
   3618  type: RelaxedAtomicBool
   3619  value: true
   3620  mirror: always
   3621 
   3622 # WebCodecs API
   3623 - name: dom.media.webcodecs.enabled
   3624  type: RelaxedAtomicBool
   3625 #if defined(MOZ_WIDGET_ANDROID)
   3626  value: @IS_NIGHTLY_BUILD@
   3627 #else
   3628  value: true
   3629 #endif
   3630  mirror: always
   3631 
   3632 # WebCodecs API - Image decoder
   3633 - name: dom.media.webcodecs.image-decoder.enabled
   3634  type: RelaxedAtomicBool
   3635  value: true
   3636  mirror: always
   3637 
   3638 # WebCodecs API - H265
   3639 - name: dom.media.webcodecs.h265.enabled
   3640  type: RelaxedAtomicBool
   3641  value: @IS_NIGHTLY_BUILD@
   3642  mirror: always
   3643 
   3644 # WebCodecs API - Batch encoding size
   3645 - name: dom.media.webcodecs.batch-encoding-size
   3646  type: RelaxedAtomicUint32
   3647 #if defined(XP_WIN)
   3648  value: 4294967295 # max value of uint32_t
   3649 #else
   3650  # Bug 1984936: Batch encoding is not optimized on non-Windows platforms yet.
   3651  value: 1
   3652 #endif
   3653  mirror: always
   3654 
   3655 # Number of seconds of very quiet or silent audio before considering the audio
   3656 # inaudible.
   3657 - name: dom.media.silence_duration_for_audibility
   3658  type: AtomicFloat
   3659  value: 2.0f
   3660  mirror: always
   3661 
   3662 # Inform mozjemalloc that the foreground content processes can keep more dirty
   3663 # pages in memory.
   3664 - name: dom.memory.foreground_content_processes_have_larger_page_cache
   3665  type: bool
   3666  value: true
   3667  mirror: always
   3668 
   3669 # 0 no-op
   3670 # 1 free dirty mozjemalloc pages
   3671 # 2 trigger memory-pressure/heap-minimize
   3672 # 3 trigger memory-pressure/low-memory
   3673 - name: dom.memory.memory_pressure_on_background
   3674  type: uint32_t
   3675  value: 0
   3676  mirror: always
   3677 
   3678 # Enable meta-viewport support in remote APZ-enabled frames.
   3679 - name: dom.meta-viewport.enabled
   3680  type: RelaxedAtomicBool
   3681  value: false
   3682  mirror: always
   3683 
   3684 # Timeout clamp in ms for timeouts we clamp.
   3685 - name: dom.min_timeout_value
   3686  type: RelaxedAtomicInt32
   3687  value: 4
   3688  mirror: always
   3689 
   3690 # Timeout clamp in ms for background windows.
   3691 - name: dom.min_background_timeout_value
   3692  type: RelaxedAtomicInt32
   3693  value: 1000
   3694  mirror: always
   3695 
   3696 # Timeout clamp in ms for background windows when throttling isn't enabled.
   3697 - name: dom.min_background_timeout_value_without_budget_throttling
   3698  type: RelaxedAtomicInt32
   3699  value: 1000
   3700  mirror: always
   3701 
   3702 # Are missing-property use counters for certain DOM attributes enabled?
   3703 - name: dom.missing_prop_counters.enabled
   3704  type: bool
   3705  value: true
   3706  mirror: always
   3707 
   3708 # Enable ParentNode.moveBefore().
   3709 - name: dom.movebefore.enabled
   3710  type: bool
   3711  value: true
   3712  mirror: always
   3713 
   3714 # Limit of location change caused by content scripts in a time span per
   3715 # BrowsingContext. This includes calls to History and Location APIs.
   3716 - name: dom.navigation.navigationRateLimit.count
   3717  type: uint32_t
   3718  value: 200
   3719  mirror: always
   3720 
   3721 # Time span in seconds for location change rate limit.
   3722 - name: dom.navigation.navigationRateLimit.timespan
   3723  type: uint32_t
   3724  value: 10
   3725  mirror: always
   3726 
   3727 # Whether to allow <object> and <embed> element loads to be retargeted to an
   3728 # external application or download.
   3729 - name: dom.navigation.object_embed.allow_retargeting
   3730  type: bool
   3731  value: false
   3732  mirror: always
   3733 
   3734 # Whether the navigation API will be exposed.
   3735 - name: dom.navigation.webidl.enabled
   3736  type: RelaxedAtomicBool
   3737  value: true
   3738  mirror: always
   3739  do_not_use_directly: true
   3740 
   3741 # Strict mode for navigation API.
   3742 # Known issues can be guarded using this pref
   3743 # to avoid crashing users while investigating the issue.
   3744 - name: dom.navigation.api.strict.enabled
   3745  type: bool
   3746  value: false
   3747  mirror: always
   3748 
   3749 # For non-Navigation API navigations, create an internal method tracker
   3750 # so that it's possible to await navigations being committed.
   3751 - name: dom.navigation.api.internal_method_tracker
   3752  type: bool
   3753  value: false
   3754  mirror: always
   3755 
   3756 # Network Information API
   3757 # This feature is not available on Firefox desktop. It exposes too much
   3758 # user information. Let's be consistent and disable it on Android.
   3759 # But let's keep it around in case it becomes necessary for webcompat
   3760 # reasons
   3761 # https://bugzilla.mozilla.org/show_bug.cgi?id=1637922
   3762 - name: dom.netinfo.enabled
   3763  type: RelaxedAtomicBool
   3764  value: false
   3765  mirror: always
   3766 
   3767 # Whether we should open noopener links in a new process.
   3768 - name: dom.noopener.newprocess.enabled
   3769  type: bool
   3770  value: true
   3771  mirror: always
   3772 
   3773 # Whether the codebase attribute in an <object> is used as the base URI.
   3774 - name: dom.object_embed.codebase.enabled
   3775  type: bool
   3776  value: false
   3777  mirror: always
   3778 
   3779 # Whether the type attribute in an <object> is used as a hint for the Content-Type
   3780 # of the loading document.
   3781 - name: dom.object_embed.type_hint.enabled
   3782  type: bool
   3783  value: false
   3784  mirror: always
   3785 
   3786 # Whether origin trials are enabled.
   3787 - name: dom.origin-trials.enabled
   3788  type: bool
   3789  value: true
   3790  mirror: always
   3791 
   3792 # Whether we use the test key to verify tokens.
   3793 - name: dom.origin-trials.test-key.enabled
   3794  type: bool
   3795  value: false
   3796  mirror: always
   3797 
   3798 # Origin trial state for "TestTrial".
   3799 # 0: normal, 1: always-enabled, 2: always-disabled
   3800 - name: dom.origin-trials.test-trial.state
   3801  type: RelaxedAtomicInt32
   3802  value: 0
   3803  mirror: always
   3804 
   3805 # Origin trial state for COEP: Credentialless.
   3806 # 0: normal, 1: always-enabled, 2: always-disabled
   3807 - name: dom.origin-trials.coep-credentialless.state
   3808  type: RelaxedAtomicInt32
   3809  value: 0
   3810  mirror: always
   3811 
   3812 # Origin trial state for Private Attribution
   3813 # 0: normal, 1: always-enabled, 2: always-disabled
   3814 - name: dom.origin-trials.private-attribution.state
   3815  type: RelaxedAtomicInt32
   3816 #ifdef ANDROID
   3817  value: 2
   3818 #else
   3819  value: 0
   3820 #endif
   3821  mirror: always
   3822 
   3823 # Origin trial state for MLS
   3824 # 0: normal, 1: always-enabled, 2: always-disabled
   3825 - name: dom.origin-trials.mls.state
   3826  type: RelaxedAtomicInt32
   3827  value: 0
   3828  mirror: always
   3829 
   3830 # User pref to control whether Private Attribution
   3831 # information should be collected / submitted.
   3832 - name: dom.private-attribution.submission.enabled
   3833  type: bool
   3834  value: false
   3835  mirror: always
   3836 
   3837 # Is support for Window.paintWorklet enabled?
   3838 - name: dom.paintWorklet.enabled
   3839  type: bool
   3840  value: false
   3841  mirror: always
   3842 
   3843 # Enable/disable the PaymentRequest API
   3844 - name: dom.payments.request.enabled
   3845  type: bool
   3846  value: false
   3847  mirror: always
   3848 
   3849 # Whether a user gesture is required to call PaymentRequest.prototype.show().
   3850 - name: dom.payments.request.user_interaction_required
   3851  type: bool
   3852  value: true
   3853  mirror: always
   3854 
   3855 # Time in milliseconds for PaymentResponse to wait for
   3856 # the Web page to call complete().
   3857 - name: dom.payments.response.timeout
   3858  type: uint32_t
   3859  value: 5000
   3860  mirror: always
   3861 
   3862 # Enable printing performance marks/measures to log
   3863 - name: dom.performance.enable_user_timing_logging
   3864  type: RelaxedAtomicBool
   3865  value: false
   3866  mirror: always
   3867 
   3868 # Enable notification of performance timing
   3869 - name: dom.performance.enable_notify_performance_timing
   3870  type: bool
   3871  value: false
   3872  mirror: always
   3873 
   3874 # Is support for PerformanceTiming.timeToContentfulPaint enabled?
   3875 - name: dom.performance.time_to_contentful_paint.enabled
   3876  type: bool
   3877  value: false
   3878  mirror: always
   3879 
   3880 # Is support for PerformanceTiming.timeToFirstInteractive enabled?
   3881 - name: dom.performance.time_to_first_interactive.enabled
   3882  type: bool
   3883  value: false
   3884  mirror: always
   3885 
   3886 # Is support for PerformanceTiming.timeToNonBlankPaint enabled?
   3887 - name: dom.performance.time_to_non_blank_paint.enabled
   3888  type: bool
   3889  value: false
   3890  mirror: always
   3891 
   3892 # Whether the interactionId will be computed and returned by performance observer*
   3893 - name: dom.performance.event_timing.enable_interactionid
   3894  type: RelaxedAtomicBool
   3895  value: true
   3896  mirror: always
   3897 
   3898 # Is support for Element.requestPointerLock enabled?
   3899 # This is added for accessibility purpose. When user has no way to exit
   3900 # pointer lock (e.g. no keyboard available), they can use this pref to
   3901 # disable the Pointer Lock API altogether.
   3902 - name: dom.pointer-lock.enabled
   3903  type: bool
   3904  value: true
   3905  mirror: always
   3906 
   3907 # re-SAB: Whether to allow postMessage of a SharedArrayBuffer if various
   3908 # preconditions related to COOP and COEP are met
   3909 - name: dom.postMessage.sharedArrayBuffer.withCOOP_COEP
   3910  type: bool
   3911  value: true
   3912  mirror: once
   3913 
   3914 # Overridden in all.js on RELEASE_OR_BETA in order to add the locked attribute.
   3915 - name: dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled
   3916  type: RelaxedAtomicBool
   3917  value: false
   3918  mirror: always
   3919 
   3920 # Should we speculatively prefetch dns for anchor elements on http documents
   3921 - name: dom.prefetch_dns_for_anchor_http_document
   3922  type: bool
   3923  value: true
   3924  mirror: always
   3925 
   3926 # Should we speculatively prefetch dns for anchor elements on https documents
   3927 - name: dom.prefetch_dns_for_anchor_https_document
   3928  type: bool
   3929  value: false
   3930  mirror: always
   3931 
   3932 # This currently only affects XHTML. For XUL the cache is always allowed.
   3933 - name: dom.prototype_document_cache.enabled
   3934  type: bool
   3935  value: true
   3936  mirror: always
   3937 
   3938 # Push
   3939 - name: dom.push.enabled
   3940  type: RelaxedAtomicBool
   3941  value: true
   3942  mirror: always
   3943 
   3944 # Indicate the deprecated aesgcm support in PushManager.supportedContentEncodings.
   3945 #
   3946 # This does not affect actual aesgcm support, any new and existing subscriptions
   3947 # can still use aesgcm regardless of this pref.
   3948 - name: dom.push.indicate_aesgcm_support.enabled
   3949  type: RelaxedAtomicBool
   3950  value: false
   3951  mirror: always
   3952 
   3953 # Preference that is primarily used for testing of problematic file paths.
   3954 # It can also be used for switching between different storage directories, but
   3955 # such feature is not officially supported.
   3956 - name: dom.quotaManager.storageName
   3957  type: String
   3958  value: "storage"
   3959  mirror: never
   3960 
   3961 # An upper limit for the "age" of an origin. Any origin which is older than the
   3962 # threshold is considered as unaccessed. That doesn't necessarily mean that
   3963 # such origins will be immediatelly archived. They will be archived only when
   3964 # dom.quotaManager.checkQuotaInfoLoadTime is true and loading of quota info
   3965 # takes a long time (dom.quotaManager.longQuotaInfoLoadTimeThresholdMs is used
   3966 # to decide what is a long quota info load time).
   3967 - name: dom.quotaManager.unaccessedForLongTimeThresholdSec
   3968  type: RelaxedAtomicUint32
   3969  value: 33696000 # 13 months
   3970  mirror: always
   3971 
   3972 # Should we try to load origin information from the cache?
   3973 # See bug 1563023 for more details.
   3974 - name: dom.quotaManager.loadQuotaFromCache
   3975  type: RelaxedAtomicBool
   3976  value: true
   3977  mirror: always
   3978 
   3979 # Should we try to load origin information from the secondary cache?
   3980 #
   3981 # When enabled, quota information may be initialized from metadata files
   3982 # instead of scanning origin directories, if the cached data is considered
   3983 # valid.
   3984 #
   3985 # For the L2 quota info cache to work effectively, the following pref must also
   3986 # be enabled:
   3987 #   dom.quotaManager.originInitialization.updateOriginMetadata
   3988 #
   3989 # That pref ensures that cached metadata is written back to disk after full
   3990 # origin initialization. Without it, usable cached info may become outdated or
   3991 # missing, and this pref alone will have limited effect.
   3992 #
   3993 # Expected behavior for various combinations of the two prefs:
   3994 #
   3995 #   update: false, load: false
   3996 #     -> No L2 cache write or read. Full scan is always used.
   3997 #
   3998 #   update: true, load: false
   3999 #     -> Metadata is updated, but not used. Sets up infrastructure without
   4000 #        activating the performance optimization.
   4001 #
   4002 #   update: false, load: true
   4003 #     -> Cache read is enabled, but metadata files are not continuously
   4004 #        updated, reducing cache effectiveness. Useful only for incremental
   4005 #        rollout and testing purposes.
   4006 #
   4007 #   update: true, load: true
   4008 #     -> Full L2 quota info cache functionality is active. Metadata is
   4009 #        maintained and used for optimized quota initialization.
   4010 #
   4011 # See bug 1953860 for background and additional details.
   4012 - name: dom.quotaManager.loadQuotaFromSecondaryCache
   4013  type: RelaxedAtomicBool
   4014  value: true
   4015  mirror: always
   4016 
   4017 # Should we check build ID as part of the cache validation?
   4018 # When enabled, the cache is invalidated on any upgrade (or downgrade),
   4019 # ensuring that changes in how quota usage is calculated can't cause
   4020 # inconsistencies at the cost of a slower initialization. Currently, this
   4021 # should only be set to false in tests using a packaged profile that inherently
   4022 # includes a build id different from the building running the tests. In the
   4023 # future this may be set to false if we are confident that we have sufficiently
   4024 # thorough schema versioning.
   4025 - name: dom.quotaManager.caching.checkBuildId
   4026  type: RelaxedAtomicBool
   4027  value: true
   4028  mirror: always
   4029 
   4030 # Should we check quota info load time and eventually archive some unaccessed
   4031 # origins if loading of quota info takes a long time ?
   4032 - name: dom.quotaManager.checkQuotaInfoLoadTime
   4033  type: RelaxedAtomicBool
   4034  value: true
   4035  mirror: always
   4036 
   4037 # An upper limit for quota info load time, anything which takes longer than the
   4038 # threshold is considered as long quota info load time.
   4039 - name: dom.quotaManager.longQuotaInfoLoadTimeThresholdMs
   4040  type: RelaxedAtomicUint32
   4041  value: 21000 # 21 seconds
   4042  mirror: always
   4043 
   4044 # Preference that users can set to override temporary storage smart limit
   4045 # calculation.
   4046 - name: dom.quotaManager.temporaryStorage.fixedLimit
   4047  type: RelaxedAtomicInt32
   4048  value: -1
   4049  mirror: always
   4050 
   4051 # Controls the time offset (in seconds) applied when initializing the access
   4052 # time for a newly created origin in temporary storage. When set to a positive
   4053 # value, the stored access time is artificially adjusted by subtracting the
   4054 # specified number of seconds from the current time. This can be used to
   4055 # simulate older origins for testing eviction and recency-based cleanup
   4056 # behavior.
   4057 #
   4058 # If the offset value is too large and would cause integer underflow, the
   4059 # current time is used as it would have been used normally.
   4060 #
   4061 # A value of 0 disables this behavior (default).
   4062 #
   4063 # This setting is for testing only and must not be enabled in production.
   4064 - name: dom.quotaManager.temporaryStorage.initialOriginAccessTimeOffsetSec
   4065  type: RelaxedAtomicUint32
   4066  value: 0
   4067  mirror: always
   4068 
   4069 # Controls whether the quota manager updates the last access time for origins
   4070 # in temporary storage. When enabled, the access time is updated only when an
   4071 # origin is accessed by a quota client for the first time during a session or
   4072 # when the last quota client stops accessing the origin. This allows eviction
   4073 # based on the LRU policy. When disabled, the access time is stored only once
   4074 # when the corresponding origin directory is created for the first time.
   4075 #
   4076 # This pref must remain set to true in production, setting it to false is
   4077 # intended for testing only.
   4078 - name: dom.quotaManager.temporaryStorage.updateOriginAccessTime
   4079  type: RelaxedAtomicBool
   4080  value: true
   4081  mirror: always
   4082 
   4083 # Should we do lazy initialization of origins ?
   4084 # When enabled, origins for temporary storage are not initialized during
   4085 # temporary storage initialization, they are initialized lazily instead.
   4086 # If there are other origins in the group, they are initialized all together.
   4087 # This feature is currently still in development and experimental, not
   4088 # recommended for normal use yet.
   4089 #
   4090 # Note: If dom.quotaManager.temporaryStorage.incrementalOriginInitialization
   4091 # is set to true, this preference will be overridden, and the individual
   4092 # setting will no longer take effect, regardless of its value.
   4093 - name: dom.quotaManager.temporaryStorage.lazyOriginInitialization
   4094  type: RelaxedAtomicBool
   4095  value: false
   4096  mirror: always
   4097  do_not_use_directly: true
   4098 
   4099 # Should we trigger initialization of all temporary origins in the background?
   4100 # When enabled, temporary origins collected during temporary storage
   4101 # initialization are initialized in the background. The background
   4102 # initialization of temporary origins is always done for entire groups of
   4103 # origins to preserve consistency of quota checks related to the group limit.
   4104 # This feature is currently still in development and experimental, not
   4105 # recommended for normal use yet.
   4106 #
   4107 # Note: If dom.quotaManager.temporaryStorage.incrementalOriginInitialization
   4108 # is set to true, this preference will be overridden, and the individual
   4109 # setting will no longer take effect, regardless of its value.
   4110 - name: dom.quotaManager.temporaryStorage.triggerOriginInitializationInBackground
   4111  type: RelaxedAtomicBool
   4112  value: false
   4113  mirror: always
   4114  do_not_use_directly: true
   4115 
   4116 # Should we enable incremental initialization of origins? (also known as
   4117 # asynchronous temporary storage initialization)
   4118 # When enabled, this preference acts as an override for the following
   4119 # preferences:
   4120 # - dom.quotaManager.temporaryStorage.lazyOriginInitialization
   4121 # - dom.quotaManager.temporaryStorage.triggerOriginInitializationInBackground
   4122 #
   4123 # Enabling this preference ensures that:
   4124 # 1. Origins for temporary storage are not initialized during temporary storage
   4125 #    initialization but are instead initialized incrementally, either lazily or
   4126 #    in the background, depending on which occurs first.
   4127 # 2. Background initialization of temporary origins is triggered after the
   4128 #    temporary storage initialization. The process is carried out in steps,
   4129 #    with each step being responsible for initializing a group of origins.
   4130 #
   4131 # See also the documentation for those two preferences for more details on
   4132 # their individual behaviors.
   4133 #
   4134 # This feature is currently in development and experimental, not recommended
   4135 # for normal use yet.
   4136 - name: dom.quotaManager.temporaryStorage.incrementalOriginInitialization
   4137  type: RelaxedAtomicBool
   4138  value: false
   4139  mirror: always
   4140  do_not_use_directly: true
   4141 
   4142 # Should we clear non-persisted origins with zero usage during final steps of
   4143 # temporary storage initialization?
   4144 # When enabled, the QuotaManager will automatically clear non-persisted
   4145 # origins that have zero quota-charged usage during final steps of temporary
   4146 # storage initialization. Recently used origins (within the last week) are
   4147 # excluded, and clearing is performed in batches to avoid large I/O spikes
   4148 # when many origins need to be removed. This removes directories and files
   4149 # belonging to origins that do not store any real data but still consume
   4150 # resources through bookkeeping structures on disk. The feature helps reduce
   4151 # storage bloat and improve initialization performance, especially on
   4152 # long-lived profiles with a large number of unused origins.
   4153 - name: dom.quotaManager.temporaryStorage.clearNonPersistedZeroUsageOrigins
   4154  type: RelaxedAtomicBool
   4155  value: false
   4156  mirror: always
   4157 
   4158 # Controls the maximum number of origins cleared in a single batch during
   4159 # final steps of temporary storage initialization. The value defaults to 50 on
   4160 # Android and 150 on other platforms. Smaller values can be useful for testing
   4161 # and experimentation to exercise multi-batch clearing behavior without
   4162 # requiring hundreds of origins. Larger values may reduce the number of
   4163 # batches but can increase I/O spikes.
   4164 #
   4165 # Currently this pref is only applied when clearing non-persisted zero-usage
   4166 # origins, but it is intended to serve as a general batch limit for other
   4167 # clearing strategies that may be introduced in the future (for example, to
   4168 # remove very old origins).
   4169 - name: dom.quotaManager.temporaryStorage.maxOriginsToClearDuringCleanup
   4170  type: RelaxedAtomicUint32
   4171 #if defined(MOZ_WIDGET_ANDROID)
   4172  value: 50
   4173 #else
   4174  value: 150
   4175 #endif
   4176  mirror: always
   4177 
   4178 # A pref that is used to slow down origin operations for testing purposes.
   4179 - name: dom.quotaManager.originOperations.pauseOnIOThreadMs
   4180  type: RelaxedAtomicUint32
   4181  value: 0
   4182  mirror: always
   4183 
   4184 # A pref that is used to slow down storage initialization for testing purposes.
   4185 - name: dom.quotaManager.storageInitialization.pauseOnIOThreadMs
   4186  type: RelaxedAtomicUint32
   4187  value: 0
   4188  mirror: always
   4189 
   4190 # A pref that is used to slow down group initialization for testing purposes.
   4191 - name: dom.quotaManager.groupInitialization.pauseOnIOThreadMs
   4192  type: RelaxedAtomicUint32
   4193  value: 0
   4194  mirror: always
   4195 
   4196 # Should we update the origin metadata file after full origin initialization?
   4197 # When enabled, the origin metadata file will be updated after origin
   4198 # initialization to ensure it reflects the most recent state.
   4199 # This feature is essential for the functionality of the L2 quota info cache.
   4200 # The preference may be later removed after a successful full rollout of the
   4201 # L2 cache to all users on all platforms in the release channel.
   4202 - name: dom.quotaManager.originInitialization.updateOriginMetadata
   4203  type: RelaxedAtomicBool
   4204  value: true
   4205  mirror: always
   4206 
   4207 # A pref that is used to slow down origin initialization for testing purposes.
   4208 - name: dom.quotaManager.originInitialization.pauseOnIOThreadMs
   4209  type: RelaxedAtomicUint32
   4210  value: 0
   4211  mirror: always
   4212 
   4213 # A pref that is used to enable testing features.
   4214 - name: dom.quotaManager.testing
   4215  type: SequentiallyConsistentAtomicBool
   4216  value: false
   4217  mirror: always
   4218 
   4219 #if defined(XP_WIN)
   4220  # Preference that is used to set nsILocalFileWin::useDOSDevicePathSyntax
   4221  # attribute for all local file instances created by QuotaManager and its
   4222  # clients. The value of this preference is cached so changing the preference
   4223  # during runtime has no effect.
   4224  # See bug 1626846 for setting this to false by default.
   4225 -   name: dom.quotaManager.useDOSDevicePathSyntax
   4226    type: RelaxedAtomicBool
   4227    value: true
   4228    mirror: always
   4229    do_not_use_directly: true
   4230 
   4231  # Preference that is used to enable the hack for overrriding xFullPathname in
   4232  # QuotaVFS.
   4233 -   name: dom.quotaManager.overrideXFullPathname
   4234    type: RelaxedAtomicBool
   4235    value: true
   4236    mirror: always
   4237 #elif defined(XP_UNIX)
   4238  # Preference that is used to enable the overriding of Unix xFullPathname
   4239  # implementation in QuotaVFS.
   4240 -   name: dom.quotaManager.overrideXFullPathnameUnix
   4241    type: RelaxedAtomicBool
   4242    value: true
   4243    mirror: always
   4244 #endif
   4245 
   4246 # How many times we should retry directory removal or renaming if access was
   4247 # denied?
   4248 - name: dom.quotaManager.directoryRemovalOrRenaming.maxRetries
   4249  type: RelaxedAtomicUint32
   4250 #ifdef XP_WIN
   4251  value: 10
   4252 #else
   4253  value: 0
   4254 #endif
   4255  mirror: always
   4256 
   4257 # How long we should wait between retries (in milliseconds)?
   4258 - name: dom.quotaManager.directoryRemovalOrRenaming.delayMs
   4259  type: RelaxedAtomicUint32
   4260  value: 200
   4261  mirror: always
   4262 
   4263 #ifdef MOZ_BACKGROUNDTASKS
   4264 # Use a Background Task to delete files at shutdown.
   4265 - name: dom.quotaManager.backgroundTask.enabled
   4266  type: bool
   4267 #ifdef XP_MACOSX
   4268 # Needs to figure out how to prevent bug 1827486.
   4269  value: false
   4270 #else
   4271  value: true
   4272 #endif
   4273  mirror: never
   4274 #endif
   4275 
   4276 # A pref that specifies one or more failure categories to trigger artificial
   4277 # failures for testing purposes. Multiple categories can be combined using
   4278 # bitwise OR to represent various failure points within the code.
   4279 - name: dom.quotaManager.artificialFailure.categories
   4280  type: RelaxedAtomicUint32
   4281  value: 0
   4282  mirror: always
   4283 
   4284 # A probability (0-100) used to determine the likelihood of triggering an
   4285 # artificial failure for testing purposes. This value is applied when the
   4286 # specified failure categories match to decide if the failure should occur.
   4287 - name: dom.quotaManager.artificialFailure.probability
   4288  type: RelaxedAtomicUint32
   4289  value: 0
   4290  mirror: always
   4291 
   4292 # An error code used to trigger an artificial failure for testing purposes.
   4293 # This code is returned when the specified failure categories match and the
   4294 # failure is triggered based on the configured probability.
   4295 - name: dom.quotaManager.artificialFailure.errorCode
   4296  type: RelaxedAtomicUint32
   4297  value: 0
   4298  mirror: always
   4299 
   4300 # Use to control to dump CheckedUnsafePtr creation stack and assignment stacks.
   4301 - name: dom.checkedUnsafePtr.dumpStacks.enabled
   4302  type: RelaxedAtomicBool
   4303  value: false
   4304  mirror: always
   4305 
   4306 # A pref that is used to slow down database initialization for testing purposes.
   4307 - name: dom.simpledb.databaseInitialization.pauseOnIOThreadMs
   4308  type: RelaxedAtomicUint32
   4309  value: 0
   4310  mirror: always
   4311 
   4312 # Determines within what distance of a tick mark, in pixels, dragging an input
   4313 # range range will snap the range's value to that tick mark. By default, this is
   4314 # half the default width of the range thumb.
   4315 - name: dom.range_element.magnet_effect_threshold
   4316  type: float
   4317  value: 10.0f
   4318  mirror: always
   4319 
   4320 # Reporting API.
   4321 - name: dom.reporting.enabled
   4322  type: RelaxedAtomicBool
   4323  value: false
   4324  mirror: always
   4325 
   4326 - name: dom.reporting.testing.enabled
   4327  type: RelaxedAtomicBool
   4328  value: false
   4329  mirror: always
   4330 
   4331 - name: dom.reporting.featurePolicy.enabled
   4332  type: RelaxedAtomicBool
   4333  value: false
   4334  mirror: always
   4335 
   4336 - name: dom.reporting.crash.enabled
   4337  type: RelaxedAtomicBool
   4338  value: false
   4339  mirror: always
   4340 
   4341 - name: dom.reporting.header.enabled
   4342  type: RelaxedAtomicBool
   4343  value: false
   4344  mirror: always
   4345 
   4346 # In seconds. The timeout to remove not-active report-to endpoints.
   4347 - name: dom.reporting.cleanup.timeout
   4348  type: uint32_t
   4349  value: 3600
   4350  mirror: always
   4351 
   4352 # Any X seconds the reports are dispatched to endpoints.
   4353 - name: dom.reporting.delivering.timeout
   4354  type: uint32_t
   4355  value: 5
   4356  mirror: always
   4357 
   4358 # How many times the delivering of a report should be tried.
   4359 - name: dom.reporting.delivering.maxFailures
   4360  type: uint32_t
   4361  value: 3
   4362  mirror: always
   4363 
   4364 # How many reports should be stored in the report queue before being delivered.
   4365 - name: dom.reporting.delivering.maxReports
   4366  type: RelaxedAtomicUint32
   4367  value: 100
   4368  mirror: always
   4369 
   4370 # Enable Screen Orientation lock
   4371 - name: dom.screenorientation.allow-lock
   4372  type: bool
   4373  value: true
   4374  mirror: always
   4375 
   4376 # Enable Screen Wake Lock API
   4377 - name: dom.screenwakelock.enabled
   4378  type: bool
   4379  value: true
   4380  mirror: always
   4381 
   4382 # Whether to enable the JavaScript start-up cache. This causes one of the first
   4383 # execution to record the bytecode of the JavaScript function used, and save it
   4384 # in the existing cache entry. On the following loads of the same script, the
   4385 # bytecode would be loaded from the cache instead of being generated once more.
   4386 - name: dom.script_loader.bytecode_cache.enabled
   4387  type: bool
   4388  value: true
   4389  mirror: always
   4390 
   4391 # Ignore the heuristics of the bytecode cache, and always record on the first
   4392 # visit. (used for testing purposes).
   4393 
   4394 # Choose one strategy to use to decide when the bytecode should be encoded and
   4395 # saved. The following strategies are available right now:
   4396 #   * -2 : (reader mode) The bytecode cache would be read, but it would never
   4397 #          be saved.
   4398 #   * -1 : (eager mode) The bytecode would be saved as soon as the script is
   4399 #          seen for the first time, independently of the size or last access
   4400 #          time.
   4401 #   *  0 : (default) The bytecode would be saved in order to minimize the
   4402 #          page-load time.  Cached after 4 reloads.
   4403 #   *  1 : (performance) The bytecode would be saved in order to minimize the
   4404 #          page-load time.  Cached after 2 reloads.
   4405 #
   4406 # Other values might lead to experimental strategies. For more details, have a
   4407 # look at: ScriptLoader::ShouldCacheBytecode function.
   4408 - name: dom.script_loader.bytecode_cache.strategy
   4409  type: int32_t
   4410  value: 0
   4411  mirror: always
   4412 
   4413 # Select which parse/delazification strategy should be used while parsing
   4414 # scripts off-main-thread. (see CompileOptions.h, DelazificationOption enum)
   4415 #
   4416 #   0: On-demand only. Delazification will be triggered only on the main thread
   4417 #      before the execution of the function.
   4418 #
   4419 #   1: Compare on-demand delazification (= 0) with concurrent depth-first
   4420 #      delazification (= 2).
   4421 #
   4422 #   2: Depth-first. Delazify all functions off-thread in the order of appearance
   4423 #      in the source.
   4424 #
   4425 #   3: Large-first. Delazify all functions off-thread starting with the largest
   4426 #      functions first, and the smallest as the last one to be delazified, where
   4427 #      the size of function is measured in bytes between the start to the end of
   4428 #      the function.
   4429 #
   4430 # 255: Parse everything eagerly, from the first parse. All functions are parsed
   4431 #      at the same time as the top-level of a file.
   4432 - name: dom.script_loader.delazification.strategy
   4433  type: uint32_t
   4434  value: 255
   4435  mirror: always
   4436 
   4437 # Maximum total size after which the delazification strategy, specified by
   4438 # `dom.script_loader.delazification.strategy`, is no longer applied, and the
   4439 # on-demand strategy is used by default.
   4440 #
   4441 # -1 disable the threshold, and delazification strategy is applied to all
   4442 # scripts.
   4443 #
   4444 # Default value is 10MB for utf8 scripts.
   4445 - name: dom.script_loader.delazification.max_size
   4446  type: int32_t
   4447  value: 10485760
   4448  mirror: always
   4449 
   4450 # Minimum memory, in GB, required to enable delazification strategy, specified
   4451 # by `dom.script_loader.delazification.strategy`. Otherwise, the on-demand
   4452 # delazification strategy is used.
   4453 - name: dom.script_loader.delazification.min_mem
   4454  type: int32_t
   4455  value: 2
   4456  mirror: always
   4457 
   4458 # Enable  speculative off main thread parsing of external scripts as
   4459 # soon as they are fetched.
   4460 - name: dom.script_loader.external_scripts.speculative_omt_parse.enabled
   4461  type: bool
   4462  value: true
   4463  mirror: always
   4464 
   4465 # Speculatively compile non parser inserted scripts
   4466 - name: dom.script_loader.external_scripts.speculate_non_parser_inserted.enabled
   4467  type: bool
   4468  value: false
   4469  mirror: always
   4470 
   4471 # Speculatively compile async scripts
   4472 - name: dom.script_loader.external_scripts.speculate_async.enabled
   4473  type: bool
   4474  value: false
   4475  mirror: always
   4476 
   4477 # Speculatively compile link preload scripts
   4478 - name: dom.script_loader.external_scripts.speculate_link_preload.enabled
   4479  type: bool
   4480  value: false
   4481  mirror: always
   4482 
   4483 # For testing purposes only: Cache stencil across navigation
   4484 - name: dom.script_loader.experimental.navigation_cache
   4485  type: bool
   4486  value: false
   4487  mirror: always
   4488 
   4489 - name: dom.securecontext.allowlist_onions
   4490  type: bool
   4491  value: false
   4492  mirror: always
   4493 
   4494 # This pref enables the featurePolicy header support.
   4495 - name: dom.security.featurePolicy.header.enabled
   4496  type: bool
   4497  value: false
   4498  mirror: always
   4499 
   4500 - name: dom.security.featurePolicy.experimental.enabled
   4501  type: bool
   4502  value: false
   4503  mirror: always
   4504 
   4505 # Expose the 'featurePolicy' attribute in document and HTMLIFrameElement
   4506 - name: dom.security.featurePolicy.webidl.enabled
   4507  type: bool
   4508  value: false
   4509  mirror: always
   4510 
   4511 # For testing purposes only: Flipping this pref to true allows
   4512 # to skip the allowlist for about: pages and do not ship with a
   4513 # CSP and NS_ASSERT right away.
   4514 - name: dom.security.skip_about_page_csp_allowlist_and_assert
   4515  type: RelaxedAtomicBool
   4516  value: false
   4517  mirror: always
   4518 
   4519 # For testing purposes only: Flipping this pref to true allows
   4520 # to skip the assertion that every about page ships with a CSP.
   4521 - name: dom.security.skip_about_page_has_csp_assert
   4522  type: RelaxedAtomicBool
   4523  value: false
   4524  mirror: always
   4525 
   4526 # For testing purposes only: Flipping this pref to true allows
   4527 # to skip the assertion that HTML fragments (e.g. innerHTML) can
   4528 # not be used within chrome code or about: pages.
   4529 - name: dom.security.skip_html_fragment_assertion
   4530  type: RelaxedAtomicBool
   4531  value: false
   4532  mirror: always
   4533 
   4534 
   4535 # Serialize < as &lt; and > as &gt; in attribute values for getHTML, innerHTML etc.
   4536 - name: dom.security.html_serialization_escape_lt_gt
   4537  type: RelaxedAtomicBool
   4538  value: true
   4539  mirror: always
   4540 
   4541 # For testing purposes only; Flipping this pref to true allows
   4542 # to skip the assertion that remote scripts can not be loaded
   4543 # in system privileged contexts.
   4544 - name: dom.security.skip_remote_script_assertion_in_system_priv_context
   4545  type: RelaxedAtomicBool
   4546  value: false
   4547  mirror: always
   4548 
   4549 # If and only if true, support for Trusted Types
   4550 # (https://w3c.github.io/trusted-types/dist/spec/) is enabled.
   4551 - name: dom.security.trusted_types.enabled
   4552  type: RelaxedAtomicBool
   4553  value: true
   4554  mirror: always
   4555 
   4556 # If true, all content requests will get upgraded to HTTPS://
   4557 # (some Firefox functionality requests, like OCSP will not be affected)
   4558 - name: dom.security.https_only_mode
   4559  type: RelaxedAtomicBool
   4560  value: false
   4561  mirror: always
   4562 
   4563 # If true, all content requests in Private Browsing Mode will get
   4564 # upgraded to HTTPS://. (If dom.security.https_only_mode is set
   4565 # to true then this pref has no effect)
   4566 - name: dom.security.https_only_mode_pbm
   4567  type: RelaxedAtomicBool
   4568  value: false
   4569  mirror: always
   4570 
   4571 # If true, sends http background request for top-level sites to
   4572 # counter long timeouts.
   4573 - name: dom.security.https_only_mode_send_http_background_request
   4574  type: RelaxedAtomicBool
   4575  value: true
   4576  mirror: always
   4577 
   4578 # Time limit, in milliseconds, before sending the http background
   4579 # request for HTTPS-Only and HTTPS-First
   4580 - name: dom.security.https_only_fire_http_request_background_timer_ms
   4581  type: RelaxedAtomicUint32
   4582  value: 2200
   4583  mirror: always
   4584 
   4585 # If true, tries to break upgrade downgrade cycles where https-only tries
   4586 # to upgrad ethe connection, but the website tries to downgrade again.
   4587 - name: dom.security.https_only_mode_break_upgrade_downgrade_endless_loop
   4588  type: RelaxedAtomicBool
   4589  value: true
   4590  mirror: always
   4591 
   4592 # If true and HTTPS-only mode is enabled, requests
   4593 # to local IP addresses are also upgraded
   4594 - name: dom.security.https_only_mode.upgrade_local
   4595  type: RelaxedAtomicBool
   4596  value: false
   4597  mirror: always
   4598 
   4599 # If true and HTTPS-only mode is enabled, requests
   4600 # to .onion hosts are also upgraded
   4601 - name: dom.security.https_only_mode.upgrade_onion
   4602  type: RelaxedAtomicBool
   4603  value: false
   4604  mirror: always
   4605 
   4606 # WARNING: Don't ever update that pref manually! It is only used
   4607 # for telemetry purposes and allows to reason about retention of
   4608 # the pref dom.security.https_only_mode from above.
   4609 - name: dom.security.https_only_mode_ever_enabled
   4610  type: RelaxedAtomicBool
   4611  value: false
   4612  mirror: always
   4613 
   4614 # WARNING: Don't ever update that pref manually! It is only used
   4615 # for telemetry purposes and allows to reason about retention of
   4616 # the pref dom.security.https_only_mode_pbm from above.
   4617 - name: dom.security.https_only_mode_ever_enabled_pbm
   4618  type: RelaxedAtomicBool
   4619  value: false
   4620  mirror: always
   4621 
   4622 # If true checks for secure www connections when https fails
   4623 # and gives the user suggestions on the error page
   4624 - name: dom.security.https_only_mode_error_page_user_suggestions
   4625  type: RelaxedAtomicBool
   4626  value: false
   4627  mirror: always
   4628 
   4629 # If true, top-level request will get upgraded to HTTPS and
   4630 # downgraded again if the request failed.
   4631 - name: dom.security.https_first
   4632  type: RelaxedAtomicBool
   4633  value: true
   4634  mirror: always
   4635 
   4636 # If true, HTTPS-First will upgrade non-default ports
   4637 - name: dom.security.https_first_for_custom_ports
   4638  type: RelaxedAtomicBool
   4639  value: false
   4640  mirror: always
   4641 
   4642 # If true, HTTPS-First will upgrade local addresses
   4643 - name: dom.security.https_first_for_local_addresses
   4644  type: RelaxedAtomicBool
   4645  value: false
   4646  mirror: always
   4647 
   4648 # If true, HTTPS-First will upgrade unknown suffixes
   4649 - name: dom.security.https_first_for_unknown_suffixes
   4650  type: RelaxedAtomicBool
   4651  value: false
   4652  mirror: always
   4653 
   4654 # If true, top-level requests in Private Browsing Mode will get
   4655 # upgraded to HTTPS. (If dom.security.https_first
   4656 # is set to true then this pref has no effect)
   4657 - name: dom.security.https_first_pbm
   4658  type: RelaxedAtomicBool
   4659  value: true
   4660  mirror: always
   4661 
   4662 # If true, top-level requests that are initiated from the address
   4663 # bar and with an empty scheme get upgraded to HTTPS
   4664 # with a fallback
   4665 - name: dom.security.https_first_schemeless
   4666  type: RelaxedAtomicBool
   4667  value: true
   4668  mirror: always
   4669 
   4670 # If true, will add a special temporary HTTPS-First exception for a site when a
   4671 # HTTPS-First upgrade fails.
   4672 - name: dom.security.https_first_add_exception_on_failure
   4673  type: RelaxedAtomicBool
   4674  value: true
   4675  mirror: always
   4676 
   4677 - name: dom.security.https_first_exception_lifetime
   4678  type: uint32_t
   4679  value: 7*24*60*60*1000 # 7 days in milliseconds
   4680  mirror: always
   4681 
   4682 - name: dom.security.unexpected_system_load_telemetry_enabled
   4683  type: bool
   4684  value: @IS_EARLY_BETA_OR_EARLIER@
   4685  mirror: always
   4686 
   4687 # pref controls `Sanitizer` API being exposed
   4688 # https://wicg.github.io/sanitizer-api/
   4689 - name: dom.security.sanitizer.enabled
   4690  type: bool
   4691  value: true
   4692  mirror: always
   4693 
   4694 # pref controls credential chooser UI for testing. When true, UI is not shown and
   4695 # either a credential with ID `wpt-pick-me` is selected, or none.
   4696 - name: dom.security.credentialmanagement.chooser.testing.enabled
   4697  type: bool
   4698  value: false
   4699  mirror: always
   4700 
   4701 # pref controls `identity` credentials being exposed
   4702 - name: dom.security.credentialmanagement.identity.enabled
   4703  type: bool
   4704  value: false
   4705  mirror: always
   4706 
   4707 # pref controls `identity` credential UI for testing. When true, UI is not shown and
   4708 # the first option in the account and provider lists are chosen
   4709 - name: dom.security.credentialmanagement.identity.select_first_in_ui_lists
   4710  type: bool
   4711  value: false
   4712  mirror: always
   4713 
   4714 # pref controls `identity` credential platform behavior for testing. When true,
   4715 # the .well-known file check is not performed.
   4716 - name: dom.security.credentialmanagement.identity.test_ignore_well_known
   4717  type: bool
   4718  value: false
   4719  mirror: always
   4720 
   4721 # pref controls whether we should delay identity credential rejections at all
   4722 - name: dom.security.credentialmanagement.identity.reject_delay.enabled
   4723  type: bool
   4724  value: true
   4725  mirror: always
   4726 
   4727 # pref controls how long we should delay identity credential rejections if enabled
   4728 - name: dom.security.credentialmanagement.identity.reject_delay.duration_ms
   4729  type: uint32_t
   4730  value: 120000
   4731  mirror: always
   4732 
   4733 # Restrict top-level navigations from cross-origin frames.
   4734 - name: dom.security.framebusting_intervention.enabled
   4735  type: bool
   4736  value: true
   4737  mirror: always
   4738 
   4739 # Whether or not selection events on text controls are enabled.
   4740 - name: dom.select_events.textcontrols.selectionchange.enabled
   4741  type: bool
   4742  value: true
   4743  mirror: always
   4744 
   4745 - name: dom.select_events.textcontrols.selectstart.enabled
   4746  type: bool
   4747  value: false
   4748  mirror: always
   4749 
   4750 - name: dom.select.showPicker.enabled
   4751  type: bool
   4752  value: true
   4753  mirror: always
   4754 
   4755 - name: dom.send_after_paint_to_content
   4756  type: bool
   4757  value: false
   4758  mirror: always
   4759 
   4760 - name: dom.separate_event_queue_for_post_message.enabled
   4761  type: bool
   4762  value: true
   4763  mirror: always
   4764 
   4765 - name: dom.arena_allocator.enabled
   4766  type: bool
   4767  value: true
   4768  mirror: once
   4769 
   4770 - name: dom.serviceworkers.loadingCachedScriptOnWorkerThread.enabled
   4771  type: RelaxedAtomicBool
   4772  value: false
   4773  mirror: always
   4774 
   4775 - name: dom.serviceWorkers.enabled
   4776  type: RelaxedAtomicBool
   4777  value: true
   4778  mirror: always
   4779 
   4780 - name: dom.serviceWorkers.navigationPreload.enabled
   4781  type: RelaxedAtomicBool
   4782  value: true
   4783  mirror: always
   4784 
   4785 # Mitigates ServiceWorker navigation faults by bypassing the ServiceWorker on
   4786 # navigation faults.  This is more extensive than just resetting interception
   4787 # because we also mark the page as uncontrolled so that subresources will not
   4788 # go to the ServiceWorker either.
   4789 - name: dom.serviceWorkers.mitigations.bypass_on_fault
   4790  type: bool
   4791  value: true
   4792  mirror: always
   4793 
   4794 # Additional ServiceWorker navigation mitigation control to unregister the
   4795 # ServiceWorker after multiple faults are encountered. The mitigation is
   4796 # disabled when this is set to zero, otherwise this is the number of faults that
   4797 # need to occur for a specific ServiceWorker before it will be unregistered.
   4798 - name: dom.serviceWorkers.mitigations.navigation_fault_threshold
   4799  type: uint32_t
   4800  value: 3
   4801  mirror: always
   4802 
   4803 # This is the group usage head room for service workers.
   4804 # The quota usage mitigation algorithm uses this preference to determine if the
   4805 # origin or also group data should be cleared or not.
   4806 # The default value is 400 MiB.
   4807 - name: dom.serviceWorkers.mitigations.group_usage_headroom_kb
   4808  type: uint32_t
   4809  value: 400 * 1024
   4810  mirror: always
   4811 
   4812 # Enable ServiceWorkers in Private Browsing Mode (PBM).  This requires
   4813 # dom.cache.privateBrowsing.enabled to be enabled as well.  Registrations are
   4814 # not persisted to disk; installed scripts are stored in Cache API storage which
   4815 # is encrypted in PBM.
   4816 - name: dom.serviceWorkers.privateBrowsing.enabled
   4817  type: RelaxedAtomicBool
   4818  value: true
   4819  mirror: always
   4820 
   4821 - name: dom.serviceWorkers.testing.enabled
   4822  type: RelaxedAtomicBool
   4823  value: false
   4824  mirror: always
   4825 
   4826 # Whether ServiceWorkerManager should persist the service worker
   4827 # registered by temporary installed extension (only meant to be used
   4828 # for testing purpose, to make it easier to test some particular scenario
   4829 # with a temporary installed addon, which doesn't need to be signed to be
   4830 # installed on release channel builds).
   4831 - name: dom.serviceWorkers.testing.persistTemporarilyInstalledAddons
   4832  type: RelaxedAtomicBool
   4833  value: false
   4834  mirror: always
   4835 
   4836 - name: dom.storage.enabled
   4837  type: RelaxedAtomicBool
   4838  value: true
   4839  mirror: always
   4840 
   4841 - name: dom.urlpattern.enabled
   4842  type: RelaxedAtomicBool
   4843  value: true
   4844  mirror: always
   4845 
   4846 - name: dom.workers.pFetch.enabled
   4847  type: RelaxedAtomicBool
   4848  value: true
   4849  mirror: always
   4850 
   4851 - name: dom.workers.throttling.enabled
   4852  type: bool
   4853  value: @IS_EARLY_BETA_OR_EARLIER@
   4854  mirror: once
   4855 
   4856 - name: dom.workers.serialized-sab-access
   4857  type: RelaxedAtomicBool
   4858  value: false
   4859  mirror: always
   4860 
   4861 # Enable stronger diagnostics on worker shutdown.
   4862 # If this is true, we will potentially run an extra GCCC when a  worker should
   4863 # exit its DoRunLoop but holds any WorkerRef and we will MOZ_DIAGNOSTIC_ASSERT
   4864 # when during that extra GCCC such a WorkerRef is freed.
   4865 - name: dom.workers.GCCC_on_potentially_last_event
   4866  type: RelaxedAtomicBool
   4867 #if defined(FUZZING) || defined(DEBUG)
   4868  value: true
   4869 #else
   4870  value: false
   4871 #endif
   4872  mirror: always
   4873 
   4874 - name: dom.sitepermsaddon-provider.enabled
   4875  type: bool
   4876  value: @IS_NOT_ANDROID@
   4877  mirror: always
   4878 
   4879 # Server-Sent Events
   4880 # Equal to the DEFAULT_RECONNECTION_TIME_VALUE value in nsEventSource.cpp
   4881 - name: dom.serverEvents.defaultReconnectionTime
   4882  type: RelaxedAtomicUint32
   4883  value: 5000 # in milliseconds
   4884  mirror: always
   4885 
   4886 # Whether automatic storage access granting heuristics should be turned on.
   4887 - name: dom.storage_access.auto_grants
   4888  type: bool
   4889  value: true
   4890  mirror: always
   4891 
   4892 - name: dom.storage_access.auto_grants.delayed
   4893  type: bool
   4894  value: true
   4895  mirror: always
   4896 
   4897 # Whether to exclude third-party trackers from Storage Access API auto grants.
   4898 - name: dom.storage_access.auto_grants.exclude_third_party_trackers
   4899  type: bool
   4900  value: true
   4901  mirror: always
   4902 
   4903 # Storage-access API.
   4904 - name: dom.storage_access.enabled
   4905  type: bool
   4906  value: true
   4907  mirror: always
   4908 
   4909 # Enable Storage-Access-Headers
   4910 - name: dom.storage_access.headers.enabled
   4911  type: bool
   4912  value: true
   4913  mirror: always
   4914 
   4915 # Forward-Declared Storage-access API.
   4916 - name: dom.storage_access.forward_declared.enabled
   4917  type: bool
   4918  value: false
   4919  mirror: always
   4920 
   4921 # How long the Forward-Declared Storage-access API allows between pair requests
   4922 # in seconds
   4923 - name: dom.storage_access.forward_declared.lifetime
   4924  type: uint32_t
   4925  value: 15 * 60
   4926  mirror: always
   4927 
   4928 # The maximum number of origins that a given third-party tracker is allowed
   4929 # to have concurrent access to before the user is presented with a storage
   4930 # access prompt.  Only effective when the auto_grants pref is turned on.
   4931 - name: dom.storage_access.max_concurrent_auto_grants
   4932  type: int32_t
   4933  value: 5
   4934  mirror: always
   4935 
   4936 - name: dom.storage_access.frame_only
   4937  type: bool
   4938  value: true
   4939  mirror: always
   4940 
   4941 # Only grant storage access to secure contexts.
   4942 - name: dom.storage_access.dont_grant_insecure_contexts
   4943  type: RelaxedAtomicBool
   4944  value: true
   4945  mirror: always
   4946 
   4947 # Whether the File System API is enabled
   4948 - name: dom.fs.enabled
   4949  type: RelaxedAtomicBool
   4950  value: true
   4951  mirror: always
   4952 
   4953 # Whether the WritableFileStream is enabled or disabled.
   4954 - name: dom.fs.writable_file_stream.enabled
   4955  type: RelaxedAtomicBool
   4956  value: true
   4957  mirror: always
   4958 
   4959 # A pref that is used to enable testing features.
   4960 - name: dom.fs.testing
   4961  type: SequentiallyConsistentAtomicBool
   4962  value: false
   4963  mirror: always
   4964 
   4965 # A pref that is used to slow down database initialization for testing purposes.
   4966 - name: dom.fs.databaseInitialization.pauseOnIOThreadMs
   4967  type: RelaxedAtomicUint32
   4968  value: 0
   4969  mirror: always
   4970 
   4971 # LocalStorage data limit as determined by summing up the lengths of all string
   4972 # keys and values. This is consistent with the legacy implementation and other
   4973 # browser engines. This value should really only ever change in unit testing
   4974 # where being able to lower it makes it easier for us to test certain edge
   4975 # cases. Measured in KiBs.
   4976 - name: dom.storage.default_quota
   4977  type: RelaxedAtomicUint32
   4978  # Only allow relatively small amounts of data since performance of the
   4979  # synchronous IO is very bad. We are enforcing simple per-origin quota only.
   4980  value: 5 * 1024
   4981  mirror: always
   4982 
   4983 # Per-site quota for legacy LocalStorage implementation.
   4984 - name: dom.storage.default_site_quota
   4985  type: RelaxedAtomicUint32
   4986  value: 25 * 1024
   4987  mirror: always
   4988 
   4989 # Whether or not the unsupported legacy implemenation should be enabled. Please
   4990 # don't advertise this pref as a way for disabling LSNG. This pref is intended
   4991 # for internal testing only and will be removed in near future. Accidental
   4992 # disabling of LSNG can lead to a data loss in a combination with disabled
   4993 # shadow writes. Disabling of shadow writes is the initial step towards
   4994 # removing legacy implementation and will be done soon.
   4995 - name: dom.storage.enable_unsupported_legacy_implementation
   4996  type: RelaxedAtomicBool
   4997  value: false
   4998  mirror: always
   4999  do_not_use_directly: true
   5000 
   5001 # Whether the migration from unsupported legacy implementation is enabled.
   5002 - name: dom.storage.enable_migration_from_unsupported_legacy_implementation
   5003  type: RelaxedAtomicBool
   5004  value: false
   5005  mirror: always
   5006 
   5007 # The amount of snapshot peak usage which is attempted to be pre-incremented
   5008 # during snapshot creation.
   5009 - name: dom.storage.snapshot_peak_usage.initial_preincrement
   5010  type: RelaxedAtomicUint32
   5011  value: 16384
   5012  mirror: always
   5013 
   5014 # The amount of snapshot peak usage which is attempted to be pre-incremented
   5015 # during snapshot creation if the LocalStorage usage was already close to the
   5016 # limit (a fallback for dom.storage.snapshot_peak_usage.initial_preincrement).
   5017 - name: dom.storage.snapshot_peak_usage.reduced_initial_preincrement
   5018  type: RelaxedAtomicUint32
   5019  value: 4096
   5020  mirror: always
   5021 
   5022 # The amount of snapshot peak usage which is attempted to be pre-incremented
   5023 # beyond the specific values which are subsequently requested after snapshot
   5024 # creation.
   5025 - name: dom.storage.snapshot_peak_usage.gradual_preincrement
   5026  type: RelaxedAtomicUint32
   5027  value: 4096
   5028  mirror: always
   5029 
   5030 # The amount of snapshot peak usage which is attempted to be pre-incremented
   5031 # beyond the specific values which are subsequently requested after snapshot
   5032 # creation if the LocalStorage total usage was already close to the limit
   5033 # (a fallback for dom.storage.snapshot_peak_usage.gradual_preincrement).
   5034 - name: dom.storage.snapshot_peak_usage.reduced_gradual_preincrement
   5035  type: RelaxedAtomicUint32
   5036  value: 1024
   5037  mirror: always
   5038 
   5039 # How long between a snapshot becomes idle and when we actually finish the
   5040 # snapshot. This preference is only used when "dom.storage.snapshot_reusing"
   5041 # is true.
   5042 - name: dom.storage.snapshot_idle_timeout_ms
   5043  type: uint32_t
   5044  value: 5000
   5045  mirror: always
   5046 
   5047 # Is support for Storage test APIs enabled?
   5048 - name: dom.storage.testing
   5049  type: SequentiallyConsistentAtomicBool
   5050  value: false
   5051  mirror: always
   5052 
   5053 # A pref that is used to slow down database initialization for testing purposes.
   5054 - name: dom.storage.databaseInitialization.pauseOnIOThreadMs
   5055  type: RelaxedAtomicUint32
   5056  value: 0
   5057  mirror: always
   5058 
   5059 # A pref that is used to slow down request finalization for testing purposes.
   5060 - name: dom.storage.requestFinalization.pauseOnDOMFileThreadMs
   5061  type: RelaxedAtomicUint32
   5062  value: 0
   5063  mirror: always
   5064 
   5065 # For area and anchor elements with target=_blank and no rel set to
   5066 # opener/noopener.
   5067 - name: dom.targetBlankNoOpener.enabled
   5068  type: bool
   5069  value: true
   5070  mirror: always
   5071 
   5072 # Is support for Selection.GetRangesForInterval enabled?
   5073 - name: dom.testing.selection.GetRangesForInterval
   5074  type: bool
   5075  value: false
   5076  mirror: always
   5077 
   5078 - name: dom.testing.structuredclonetester.enabled
   5079  type: RelaxedAtomicBool
   5080  value: false
   5081  mirror: always
   5082 
   5083 # To enable TestUtils interface on WPT
   5084 - name: dom.testing.testutils.enabled
   5085  type: RelaxedAtomicBool
   5086  value: false
   5087  mirror: always
   5088 
   5089 - name: dom.hidden_until_found.enabled
   5090  type: bool
   5091  value: true
   5092  mirror: always
   5093 
   5094 - name: dom.text_fragments.enabled
   5095  type: RelaxedAtomicBool
   5096  value: true
   5097  mirror: always
   5098  rust: true
   5099 
   5100 - name: dom.text_fragments.create_text_fragment.timeout_seconds
   5101  type: uint32_t
   5102  value: 5
   5103  mirror: always
   5104 
   5105 - name: dom.text_fragments.create_text_fragment.exact_match_max_length
   5106  type: uint32_t
   5107  value: 200
   5108  mirror: always
   5109 
   5110 - name: dom.textMetrics.actualBoundingBox.enabled
   5111  type: RelaxedAtomicBool
   5112  value: true
   5113  mirror: always
   5114 
   5115 - name: dom.textMetrics.baselines.enabled
   5116  type: RelaxedAtomicBool
   5117  value: true
   5118  mirror: always
   5119 
   5120 - name: dom.textMetrics.emHeight.enabled
   5121  type: RelaxedAtomicBool
   5122  value: true
   5123  mirror: always
   5124 
   5125 - name: dom.textMetrics.fontBoundingBox.enabled
   5126  type: RelaxedAtomicBool
   5127  value: true
   5128  mirror: always
   5129 
   5130 # Time (in ms) that it takes to regenerate 1ms.
   5131 - name: dom.timeout.background_budget_regeneration_rate
   5132  type: RelaxedAtomicInt32
   5133  value: 100
   5134  mirror: always
   5135 
   5136 # Time (in ms) that it takes to regenerate 1ms.
   5137 - name: dom.timeout.foreground_budget_regeneration_rate
   5138  type: RelaxedAtomicInt32
   5139  value: 1
   5140  mirror: always
   5141 
   5142 # Maximum value (in ms) for the background budget. Only valid for
   5143 # values greater than 0.
   5144 - name: dom.timeout.background_throttling_max_budget
   5145  type: RelaxedAtomicInt32
   5146  value: 50
   5147  mirror: always
   5148 
   5149 # Maximum value (in ms) for the foreground budget. Only valid for
   5150 # values greater than 0.
   5151 - name: dom.timeout.foreground_throttling_max_budget
   5152  type: RelaxedAtomicInt32
   5153  value: -1
   5154  mirror: always
   5155 
   5156 # The maximum amount a timeout can be delayed by budget throttling.
   5157 - name: dom.timeout.budget_throttling_max_delay
   5158  type: RelaxedAtomicInt32
   5159  value: 15000
   5160  mirror: always
   5161 
   5162 # Turn on budget throttling by default.
   5163 - name: dom.timeout.enable_budget_timer_throttling
   5164  type: RelaxedAtomicBool
   5165  value: true
   5166  mirror: always
   5167 
   5168 # Should we defer timeouts and intervals while loading a page.  Released
   5169 # on Idle or when the page is loaded.
   5170 # A URI list in dom.timeout.defer_during_load.force-disable can override this
   5171 # and disable this optimization for a site.
   5172 - name: dom.timeout.defer_during_load
   5173  type: bool
   5174  value: true
   5175  mirror: always
   5176 
   5177 # Sites we shouldn't defer timeouts and intervals while loading a page.
   5178 # comma-separated list, see IsURIInPrefList() for format details
   5179 - name: dom.timeout.defer_during_load.force-disable
   5180  type: String
   5181  value: >-
   5182    *.usps.com,
   5183    *.nvidia.com,
   5184    *.fedex.com,
   5185    *.msci.com,
   5186    *.the-saleroom.com
   5187  mirror: never
   5188 
   5189 # Maximum amount of time in milliseconds consecutive setTimeout()/setInterval()
   5190 # callback are allowed to run before yielding the event loop.
   5191 - name: dom.timeout.max_consecutive_callbacks_ms
   5192  type: RelaxedAtomicUint32
   5193  value: 4
   5194  mirror: always
   5195 
   5196 # Maximum deferral time for setTimeout/Interval in milliseconds
   5197 - name: dom.timeout.max_idle_defer_ms
   5198  type: uint32_t
   5199  value: 10*1000
   5200  mirror: always
   5201 
   5202 # Delay in ms from document load until we start throttling background timeouts.
   5203 - name: dom.timeout.throttling_delay
   5204  type: RelaxedAtomicInt32
   5205  value: 30000
   5206  mirror: always
   5207 
   5208 # UDPSocket API
   5209 - name: dom.udpsocket.enabled
   5210  type: bool
   5211  value: false
   5212  mirror: always
   5213 
   5214 # Whether to dump worker use counters
   5215 - name: dom.use_counters.dump.worker
   5216  type: RelaxedAtomicBool
   5217  value: false
   5218  mirror: always
   5219 
   5220 # Whether to dump document use counters
   5221 - name: dom.use_counters.dump.document
   5222  type: bool
   5223  value: false
   5224  mirror: always
   5225 
   5226 # Whether to dump page use counters
   5227 - name: dom.use_counters.dump.page
   5228  type: bool
   5229  value: false
   5230  mirror: always
   5231 
   5232 # Time limit, in milliseconds, for user gesture transient activation.
   5233 - name: dom.user_activation.transient.timeout
   5234  type: uint32_t
   5235  value: 5000
   5236  mirror: always
   5237 
   5238 # Whether to treat the clicks on scrollbars as user interaction with web content.
   5239 - name: dom.user_activation.ignore_scrollbars
   5240  type: bool
   5241  value: true
   5242  mirror: always
   5243 
   5244 # Whether to shim a Components object on untrusted windows.
   5245 - name: dom.use_components_shim
   5246  type: bool
   5247  value: @IS_NOT_NIGHTLY_BUILD@
   5248  mirror: always
   5249 
   5250 - name: dom.vibrator.enabled
   5251  type: bool
   5252  value: false
   5253  mirror: always
   5254 
   5255 - name: dom.vibrator.max_vibrate_ms
   5256  type: RelaxedAtomicUint32
   5257  value: 10000
   5258  mirror: always
   5259 
   5260 - name: dom.vibrator.max_vibrate_list_len
   5261  type: RelaxedAtomicUint32
   5262  value: 128
   5263  mirror: always
   5264 
   5265 # Is support for View Transitions Level 1 enabled?
   5266 - name: dom.viewTransitions.enabled
   5267  type: RelaxedAtomicBool
   5268  value: true
   5269  mirror: always
   5270  rust: true
   5271 
   5272 - name: dom.viewTransitions.cross-document.enabled
   5273  type: RelaxedAtomicBool
   5274  value: false
   5275  mirror: always
   5276  rust: true
   5277 
   5278 # Timeout for view transitions.
   5279 # TODO(emilio): Figure out the right time-out, Blink uses between 4 and 15
   5280 # seconds.
   5281 - name: dom.viewTransitions.timeout-ms
   5282  type: uint32_t
   5283  value: 10000
   5284  mirror: always
   5285 
   5286 # Whether view transitions remain active indefinitely. Useful for debugging.
   5287 - name: dom.viewTransitions.remain-active
   5288  type: bool
   5289  value: false
   5290  mirror: always
   5291 
   5292 # Is support for WebVR APIs enabled?
   5293 # Disabled everywhere, but not removed.
   5294 - name: dom.vr.enabled
   5295  type: RelaxedAtomicBool
   5296  value: false
   5297  mirror: always
   5298 
   5299 # Should VR sessions always be reported as supported, without first
   5300 # checking for VR runtimes?  This will prevent permission prompts
   5301 # from being suppressed on machines without VR runtimes and cause
   5302 # navigator.xr.isSessionSupported to always report that immersive-vr
   5303 # is supported.
   5304 - name: dom.vr.always_support_vr
   5305  type: RelaxedAtomicBool
   5306  value: false
   5307  mirror: always
   5308 
   5309 # Should AR sessions always be reported as supported, without first
   5310 # checking for AR runtimes?  This will prevent permission prompts
   5311 # from being suppressed on machines without AR runtimes and cause
   5312 # navigator.xr.isSessionSupported to always report that immersive-ar
   5313 # is supported.
   5314 - name: dom.vr.always_support_ar
   5315  type: RelaxedAtomicBool
   5316  value: false
   5317  mirror: always
   5318 
   5319 # It is often desirable to automatically start vr presentation when
   5320 # a user puts on the VR headset.  This is done by emitting the
   5321 # Window.vrdisplayactivate event when the headset's sensors detect it
   5322 # being worn.  This can result in WebVR content taking over the headset
   5323 # when the user is using it outside the browser or inadvertent start of
   5324 # presentation due to the high sensitivity of the proximity sensor in some
   5325 # headsets, so it is off by default.
   5326 - name: dom.vr.autoactivate.enabled
   5327  type: RelaxedAtomicBool
   5328  value: false
   5329  mirror: always
   5330 
   5331 # Minimum number of milliseconds that the browser will wait before
   5332 # attempting to poll again for connected VR controllers.  The browser
   5333 # will not attempt to poll for VR controllers until it needs to use them.
   5334 - name: dom.vr.controller.enumerate.interval
   5335  type: RelaxedAtomicInt32
   5336  value: 1000
   5337  mirror: always
   5338 
   5339 # The threshold value of trigger inputs for VR controllers.
   5340 - name: dom.vr.controller_trigger_threshold
   5341  type: AtomicFloat
   5342  value: 0.1f
   5343  mirror: always
   5344 
   5345 # Minimum number of milliseconds that the browser will wait before
   5346 # attempting to poll again for connected VR displays.  The browser
   5347 # will not attempt to poll for VR displays until it needs to use
   5348 # them, such as when detecting a WebVR site.
   5349 - name: dom.vr.display.enumerate.interval
   5350  type: RelaxedAtomicInt32
   5351  value: 5000
   5352  mirror: always
   5353 
   5354 # The number of milliseconds since last frame start before triggering a new
   5355 # frame. When content is failing to submit frames on time or the lower level
   5356 # VR platform APIs are rejecting frames, it determines the rate at which RAF
   5357 # callbacks will be called.
   5358 - name: dom.vr.display.rafMaxDuration
   5359  type: RelaxedAtomicUint32
   5360  value: 50
   5361  mirror: always
   5362 
   5363 # Minimum number of milliseconds the browser will wait before attempting
   5364 # to re-start the VR service after an enumeration returned no devices.
   5365 - name: dom.vr.external.notdetected.timeout
   5366  type: RelaxedAtomicInt32
   5367  value: 60000
   5368  mirror: always
   5369 
   5370 # Minimum number of milliseconds the browser will wait before attempting
   5371 # to re-start the VR service after a VR API (eg, OpenVR or Oculus)
   5372 # requests that we shutdown and unload its libraries.
   5373 # To ensure that we don't interfere with VR runtime software auto-updates,
   5374 # we will not attempt to re-load the service until this timeout has elapsed.
   5375 - name: dom.vr.external.quit.timeout
   5376  type: RelaxedAtomicInt32
   5377  value: 10000
   5378  mirror: always
   5379 
   5380 # Minimum number of milliseconds that the VR session will be kept
   5381 # alive after the browser and content no longer are using the
   5382 # hardware.  If a VR multitasking environment, this should be set
   5383 # very low or set to 0.
   5384 - name: dom.vr.inactive.timeout
   5385  type: RelaxedAtomicInt32
   5386  value: 5000
   5387  mirror: always
   5388 
   5389 # Maximum number of milliseconds the browser will wait for content to call
   5390 # VRDisplay.requestPresent after emitting vrdisplayactivate during VR
   5391 # link traversal.  This prevents a long running event handler for
   5392 # vrdisplayactivate from later calling VRDisplay.requestPresent, which would
   5393 # result in a non-responsive browser in the VR headset.
   5394 - name: dom.vr.navigation.timeout
   5395  type: RelaxedAtomicInt32
   5396  value: 5000
   5397  mirror: always
   5398 
   5399 # Oculus device
   5400 - name: dom.vr.oculus.enabled
   5401  type: RelaxedAtomicBool
   5402 #if defined(HAVE_64BIT_BUILD) && !defined(ANDROID)
   5403  # We are only enabling WebVR by default on 64-bit builds (Bug 1384459).
   5404  value: true
   5405 #else
   5406  # On Android, this pref is irrelevant.
   5407  value: false
   5408 #endif
   5409  mirror: always
   5410 
   5411 # When enabled, Oculus sessions may be created with the ovrInit_Invisible
   5412 # flag if a page is using tracking but not presenting.  When a page
   5413 # begins presenting VR frames, the session will be re-initialized without
   5414 # the flag.  This eliminates the "Firefox not responding" warnings in
   5415 # the headset, but might not be compatible with all versions of the Oculus
   5416 # runtime.
   5417 - name: dom.vr.oculus.invisible.enabled
   5418  type: RelaxedAtomicBool
   5419  value: true
   5420  mirror: always
   5421 
   5422 # Minimum number of milliseconds after content has stopped VR presentation
   5423 # before the Oculus session is re-initialized to an invisible / tracking
   5424 # only mode.  If this value is too high, users will need to wait longer
   5425 # after stopping WebVR presentation before automatically returning to the
   5426 # Oculus home interface.  (They can immediately return to the Oculus Home
   5427 # interface through the Oculus HUD without waiting this duration)
   5428 # If this value is too low, the Oculus Home interface may be visible
   5429 # momentarily during VR link navigation.
   5430 - name: dom.vr.oculus.present.timeout
   5431  type: RelaxedAtomicInt32
   5432  value: 500
   5433  mirror: always
   5434 
   5435 # OpenVR device
   5436 - name: dom.vr.openvr.enabled
   5437  type: RelaxedAtomicBool
   5438 #if !defined(HAVE_64BIT_BUILD) && !defined(ANDROID)
   5439  # We are only enabling WebVR by default on 64-bit builds (Bug 1384459).
   5440  value: false
   5441 #elif defined(XP_WIN) || defined(XP_MACOSX)
   5442  # We enable OpenVR by default for Windows and macOS.
   5443  value: true
   5444 #else
   5445  # See Bug 1310663 (Linux).  On Android, this pref is irrelevant.
   5446  value: false
   5447 #endif
   5448  mirror: always
   5449 
   5450 # OSVR device
   5451 - name: dom.vr.osvr.enabled
   5452  type: RelaxedAtomicBool
   5453  value: false
   5454  mirror: always
   5455 
   5456 # Pose prediction reduces latency effects by returning future predicted HMD
   5457 # poses to callers of the WebVR API.  This currently only has an effect for
   5458 # Oculus Rift on SDK 0.8 or greater.
   5459 - name: dom.vr.poseprediction.enabled
   5460  type: RelaxedAtomicBool
   5461  value: true
   5462  mirror: always
   5463 
   5464 # Enable a separate process for VR module.
   5465 - name: dom.vr.process.enabled
   5466  type: bool
   5467 #if defined(XP_WIN)
   5468  value: true
   5469 #else
   5470  value: false
   5471 #endif
   5472  mirror: once
   5473 
   5474 - name: dom.vr.process.startup_timeout_ms
   5475  type: int32_t
   5476  value: 5000
   5477  mirror: once
   5478 
   5479 # Puppet device, used for simulating VR hardware within tests and dev tools.
   5480 - name: dom.vr.puppet.enabled
   5481  type: RelaxedAtomicBool
   5482  value: false
   5483  mirror: always
   5484 
   5485 # Starting VR presentation is only allowed within a user gesture or event such
   5486 # as VRDisplayActivate triggered by the system. dom.vr.require-gesture allows
   5487 # this requirement to be disabled for special cases such as during automated
   5488 # tests or in a headless kiosk system.
   5489 - name: dom.vr.require-gesture
   5490  type: RelaxedAtomicBool
   5491  value: true
   5492  mirror: always
   5493 
   5494 # Is support for WebXR APIs enabled?
   5495 - name: dom.vr.webxr.enabled
   5496  type: RelaxedAtomicBool
   5497  value: false
   5498  mirror: always
   5499 
   5500 # Points in the native bounds geometry are required to be quantized
   5501 # sufficiently to prevent fingerprinting. The WebXR spec suggests
   5502 # quantizing to the nearest 5 centimeters.
   5503 - name: dom.vr.webxr.quantization
   5504  type: AtomicFloat
   5505  value: 0.05f
   5506  mirror: always
   5507 
   5508 #ifdef XP_WIN
   5509  # Control firing WidgetMouseEvent by handling Windows pointer messages or
   5510  # mouse messages.
   5511 -   name: dom.w3c_pointer_events.dispatch_by_pointer_messages
   5512    type: bool
   5513    value: true
   5514    mirror: always
   5515 
   5516  # Control consuming WM_POINTER for touch pointers instead of WM_TOUCH
   5517 -   name: dom.w3c_pointer_events.dispatch_by_pointer_messages.touch
   5518    type: bool
   5519    value: false
   5520    mirror: always
   5521 
   5522  # Control whether to fire WidgetTouchEvent from pen pointers for APZ to handle scrolling.
   5523 -   name: dom.w3c_pointer_events.scroll_by_pen.enabled
   5524    type: bool
   5525    value: true
   5526    mirror: always
   5527 #endif
   5528 
   5529 # If the value is >= 0, it will be used for max touch points in child processes.
   5530 - name: dom.maxtouchpoints.testing.value
   5531  type: int32_t
   5532  value: -1
   5533  mirror: always
   5534 
   5535 # Maximum value of navigator.hardwareConcurrency.
   5536 - name: dom.maxHardwareConcurrency
   5537  type: RelaxedAtomicUint32
   5538  value: 128
   5539  mirror: always
   5540 
   5541 # W3C pointer events draft.
   5542 - name: dom.w3c_pointer_events.implicit_capture
   5543  type: bool
   5544  value: true
   5545  mirror: always
   5546 
   5547 - name: dom.w3c_pointer_events.getcoalescedevents_only_in_securecontext
   5548  type: bool
   5549  value: true
   5550  mirror: always
   5551 
   5552 # `click` event target is defined as overridden by pointer capture target in
   5553 # Pointer Events.  Set this to true if we should conform to it.  Otherwise,
   5554 # consider the target from the pointer position, set this to false.
   5555 - name: dom.w3c_pointer_events.dispatch_click_on_pointer_capturing_element
   5556  type: bool
   5557  value: true
   5558  mirror: always
   5559 
   5560 # If `click` event is caused by a tap, the target should not be the target of
   5561 # the preceding `pointerup`.  This is compatible with Chrome 136.
   5562 - name: dom.w3c_pointer_events.dispatch_click_on_pointer_capturing_element.except_touch
   5563  type: bool
   5564  value: true
   5565  mirror: always
   5566 
   5567 # In case Touch API is enabled, this pref controls whether to support
   5568 # ontouch* event handlers, document.createTouch, document.createTouchList and
   5569 # document.createEvent("TouchEvent").
   5570 - name: dom.w3c_touch_events.legacy_apis.enabled
   5571  type: bool
   5572  value: @IS_ANDROID@
   5573  mirror: always
   5574 
   5575 # W3C touch events
   5576 # 0 - disabled, 1 - enabled, 2 - autodetect
   5577 # Autodetection is currently only supported on Windows and GTK3 (and assumed on
   5578 # Android).
   5579 - name: dom.w3c_touch_events.enabled
   5580  type: int32_t
   5581 #if defined(XP_MACOSX)
   5582  value: 0
   5583 #else
   5584  value: 2
   5585 #endif
   5586  mirror: always
   5587 
   5588 # Is support for the Web Audio API enabled?
   5589 - name: dom.webaudio.enabled
   5590  type: bool
   5591  value: true
   5592  mirror: always
   5593 
   5594 - name: dom.webkitBlink.dirPicker.enabled
   5595  type: RelaxedAtomicBool
   5596  value: true
   5597  mirror: always
   5598 
   5599 # Whether allowing selection across the boundary
   5600 # between shadow DOM and light DOM.
   5601 # This is based on https://github.com/mfreed7/shadow-dom-selection
   5602 - name: dom.shadowdom.selection_across_boundary.enabled
   5603  type: bool
   5604  value: true
   5605  mirror: always
   5606 
   5607 # If true, when user selects a range, `Selection` will split the range to
   5608 # exclude unselectable content from the range.
   5609 - name: dom.selection.exclude_non_selectable_nodes
   5610  type: bool
   5611  value: false
   5612  mirror: always
   5613 
   5614 # Mimic Chrome's window.getSelection().toString() behaviour
   5615 - name: dom.selection.mimic_chrome_tostring.enabled
   5616  type: bool
   5617  value: true
   5618  mirror: always
   5619 
   5620 # When this pref is enabled:
   5621 #  - Shadow DOM is not pierced by default anymore
   5622 #  - The method accepts optional CaretPositionFromPointOptions to allow piercing
   5623 #    certain ShadowRoots
   5624 #
   5625 # https://drafts.csswg.org/cssom-view/#dom-document-caretpositionfrompoint
   5626 - name: dom.shadowdom.new_caretPositionFromPoint_behavior.enabled
   5627  type: bool
   5628  value: @IS_NIGHTLY_BUILD@
   5629  mirror: always
   5630 
   5631 - name: dom.shadowdom.referenceTarget.enabled
   5632  type: bool
   5633  value: false
   5634  mirror: always
   5635 
   5636 # NOTE: This preference is used in unit tests. If it is removed or its default
   5637 # value changes, please update test_sharedMap_static_prefs.js accordingly.
   5638 - name: dom.webcomponents.shadowdom.report_usage
   5639  type: bool
   5640  value: false
   5641  mirror: always
   5642 
   5643 # Is the constructed flag error check disabled during adoptedStyleSheets setter?
   5644 # https://github.com/w3c/csswg-drafts/issues/10013
   5645 - name: dom.webcomponents.lift-adoptedstylesheets-restriction.enabled
   5646  type: RelaxedAtomicBool
   5647  value: false
   5648  mirror: always
   5649 
   5650 # Is support for the WebGPU API enabled?
   5651 #
   5652 # When this condition changes, be sure to update the `run-if` / `skip-if`
   5653 # conditions in `dom/webgpu/tests/mochitest/*.toml` accordingly.
   5654 #
   5655 # preprocessor.py doesn't understand parentheses, but && is higher precedence
   5656 # than ||, meaning this pref defaults to true on any Windows architecture, or
   5657 # on aarch64 (Apple Silicon) MacOS.
   5658 - name: dom.webgpu.enabled
   5659  type: RelaxedAtomicBool
   5660 #if defined(XP_WIN) || defined(XP_MACOSX) && defined(MOZ_AARCH64)
   5661  value: true
   5662 #else
   5663  value: @IS_EARLY_BETA_OR_EARLIER@
   5664 #endif
   5665  mirror: always
   5666 
   5667 # Is WebGPU allowed to run in the parent process? This should be false if
   5668 # on a platform that supports the GPU process, else true.
   5669 - name: dom.webgpu.allow-in-parent
   5670  type: bool
   5671 #if defined(XP_WIN) || defined(ANDROID)
   5672  value: false
   5673 #else
   5674  value: true
   5675 #endif
   5676  mirror: once
   5677 
   5678 # Is support for the Web GPU API enabled on service workers?
   5679 - name: dom.webgpu.service-workers.enabled
   5680  type: RelaxedAtomicBool
   5681 #if defined(XP_WIN) || defined(XP_MACOSX) && defined(MOZ_AARCH64)
   5682  value: true
   5683 #else
   5684  value: @IS_EARLY_BETA_OR_EARLIER@
   5685 #endif
   5686  mirror: always
   5687 
   5688 # Comma-separated list of wgpu backend names to permit in WebGPU adapters.
   5689 #
   5690 # If non-empty, this is parsed by `wgpu_core::instance::parse_backends_from_comma_list` to
   5691 # produce a `wgpu_types::Backends` bitset used to create a `wgpu_core::hub::Global`. As of
   5692 # 2023-3-22, recognized names are:
   5693 #
   5694 #     "vulkan" | "vk" => Backends::VULKAN,
   5695 #     "dx12" | "d3d12" => Backends::DX12,
   5696 #     "dx11" | "d3d11" => Backends::DX11,
   5697 #     "metal" | "mtl" => Backends::METAL,
   5698 #     "opengl" | "gles" | "gl" => Backends::GL,
   5699 #     "webgpu" => Backends::BROWSER_WEBGPU,
   5700 - name: dom.webgpu.wgpu-backend
   5701  type: DataMutexString
   5702  value: ""
   5703  mirror: always
   5704  rust: true
   5705 
   5706 - name: dom.webgpu.allow-present-without-readback
   5707  type: RelaxedAtomicBool
   5708 #if defined(XP_WIN) || defined(XP_MACOSX) || defined(XP_LINUX) && !defined(ANDROID)
   5709  value: true
   5710 #else
   5711  value: false
   5712 #endif
   5713  mirror: always
   5714 
   5715 # Whether WebGPU's GPUExternalTexture API is enabled.
   5716 - name: dom.webgpu.external-texture.enabled
   5717  type: bool
   5718 #if defined(XP_WIN) || defined(XP_MACOSX)
   5719  value: true
   5720 #else
   5721  value: false
   5722 #endif
   5723  mirror: once
   5724 
   5725 # For testing purposes, crash if we don't get a hardware adapter.
   5726 - name: dom.webgpu.testing.assert-hardware-adapter
   5727  type: RelaxedAtomicBool
   5728  value: false
   5729  mirror: always
   5730  rust: true
   5731 
   5732 # Whether to pass labels to the hardware abstraction layer. This is only useful when
   5733 # inspecting a WebGPU workload in a GPU debugging tool like renderdoc. Enabling it
   5734 # exposes poorly tested driver API surfaces so it should not be enabled by default.
   5735 - name: dom.webgpu.hal-labels
   5736  type: bool
   5737  value: false
   5738  mirror: once
   5739  rust: true
   5740 
   5741 # Domains for which WebGPU is disabled.
   5742 #
   5743 # If `nsIGlobalObject::GetBaseURI` returns a base URI in this list,
   5744 # then `GPU::requestAdapter` always rejects.
   5745 #
   5746 # This is a comma-separated list of domains to block. An entry of the
   5747 # form `*.DOMAIN` blocks all subdomains of `DOMAIN`. It is interpreted
   5748 # by `nsContentUtils::IsURIInList`.
   5749 #
   5750 # Bugs for the current default contents:
   5751 #
   5752 # easyeda.com: 1980392
   5753 - name: dom.webgpu.blocked-domains
   5754  type: DataMutexString
   5755  value: "easyeda.com,*.easyeda.com"
   5756  mirror: always
   5757 
   5758 # Is support for HTMLInputElement.webkitEntries enabled?
   5759 - name: dom.webkitBlink.filesystem.enabled
   5760  type: bool
   5761  value: true
   5762  mirror: always
   5763 
   5764 # Whether the WebMIDI API is enabled
   5765 - name: dom.webmidi.enabled
   5766  type: bool
   5767  value: @IS_NOT_MOBILE@
   5768  mirror: always
   5769 
   5770 # midi permission is addon-gated
   5771 - name: dom.webmidi.gated
   5772  type: bool
   5773  value: true
   5774  mirror: always
   5775 
   5776 - name: dom.webnotifications.allowcrossoriginiframe
   5777  type: RelaxedAtomicBool
   5778  value: false
   5779  mirror: always
   5780 
   5781 - name: dom.webnotifications.forbid_nested_first_party.enabled
   5782  type: RelaxedAtomicBool
   5783  value: true
   5784  mirror: always
   5785 
   5786 - name: dom.webnotifications.enabled
   5787  type: RelaxedAtomicBool
   5788  value: true
   5789  mirror: always
   5790 
   5791 - name: dom.webnotifications.privateBrowsing.enabled
   5792  type: RelaxedAtomicBool
   5793  value: true
   5794  mirror: always
   5795 
   5796 - name: dom.webnotifications.requireuserinteraction
   5797  type: RelaxedAtomicBool
   5798  value: true
   5799  mirror: always
   5800 
   5801 - name: dom.webnotifications.requireinteraction.enabled
   5802  type: RelaxedAtomicBool
   5803 #if defined(XP_WIN) || defined(XP_LINUX)
   5804  value: true
   5805 #else
   5806  value: @IS_NIGHTLY_BUILD@
   5807 #endif
   5808  mirror: always
   5809 
   5810 - name: dom.webnotifications.silent.enabled
   5811  type: RelaxedAtomicBool
   5812  value: true
   5813  mirror: always
   5814 
   5815 - name: dom.webnotifications.vibrate.enabled
   5816  type: RelaxedAtomicBool
   5817  value: false
   5818  mirror: always
   5819 
   5820 - name: dom.webnotifications.actions.enabled
   5821  type: RelaxedAtomicBool
   5822  value: @IS_NIGHTLY_BUILD@
   5823  mirror: always
   5824 
   5825 # Setting log level for notification modules.
   5826 # The value follows the enum ConsoleLogLevel in ConsoleInstance.webidl.
   5827 - name: dom.webnotifications.loglevel
   5828  type: String
   5829  value: Error
   5830  mirror: never
   5831 
   5832 # Allow notificationclick to open window only during the limited timeframe.
   5833 - name: dom.webnotifications.disable_open_click_delay
   5834  type: RelaxedAtomicUint32
   5835 #if defined(ANDROID)
   5836  # Allow service workers to open windows for a longer period after a notification
   5837  # click on mobile. This is to account for some devices being quite slow (bug 1409761)
   5838  value: 5000
   5839 #else
   5840  value: 1000
   5841 #endif
   5842  mirror: always
   5843 
   5844 # Forcing all notification requests do storage cleanup.
   5845 - name: dom.webnotifications.testing.force_storage_cleanup.enabled
   5846  type: bool
   5847  value: false
   5848  mirror: always
   5849 
   5850 - name: dom.worker.canceling.timeoutMilliseconds
   5851  type: RelaxedAtomicUint32
   5852  value: 30000    # 30 seconds
   5853  mirror: always
   5854 
   5855 # Enables the dispatching of console log events from worker threads to the
   5856 # main-thread.
   5857 - name: dom.worker.console.dispatch_events_to_main_thread
   5858  type: RelaxedAtomicBool
   5859  value: true
   5860  mirror: always
   5861 
   5862 - name: dom.workers.testing.enabled
   5863  type: RelaxedAtomicBool
   5864  value: false
   5865  mirror: always
   5866 
   5867 # WebIDL test prefs.
   5868 - name: dom.webidl.test1
   5869  type: bool
   5870  value: true
   5871  mirror: always
   5872 - name: dom.webidl.test2
   5873  type: bool
   5874  value: true
   5875  mirror: always
   5876 
   5877 # WebShare API - exposes navigator.share()
   5878 - name: dom.webshare.enabled
   5879  type: bool
   5880 #ifdef XP_WIN
   5881  value: @IS_EARLY_BETA_OR_EARLIER@
   5882 #else
   5883  value: false
   5884 #endif
   5885  mirror: always
   5886 
   5887 # WebShare API - allows WebShare without user interaction (for tests only).
   5888 - name: dom.webshare.requireinteraction
   5889  type: bool
   5890  value: true
   5891  mirror: always
   5892 
   5893 # Hide the confirm dialog when a POST request is reloaded.
   5894 - name: dom.confirm_repost.testing.always_accept
   5895  type: bool
   5896  value: false
   5897  mirror: always
   5898 
   5899 # Whether we should suspend inactive tabs or not
   5900 - name: dom.suspend_inactive.enabled
   5901  type: bool
   5902  value: @IS_ANDROID@
   5903  mirror: always
   5904 
   5905 # The following three prefs control the maximum script run time before slow
   5906 # script warning.
   5907 
   5908 # Controls the time that a content script can run before showing a
   5909 # notification.
   5910 - name: dom.max_script_run_time
   5911  type: int32_t
   5912  value: 10
   5913  mirror: always
   5914 
   5915 # Controls whether we want to wait for user input before surfacing notifying
   5916 # the parent process about a long-running script.
   5917 - name: dom.max_script_run_time.require_critical_input
   5918  type: bool
   5919 # On desktop, we don't want to annoy the user with a notification if they're
   5920 # not interacting with the browser. On Android however, we automatically
   5921 # terminate long-running scripts, so we want to make sure we don't get in the
   5922 # way of that by waiting for input.
   5923 #if defined(MOZ_WIDGET_ANDROID)
   5924  value: false
   5925 #else
   5926  value: true
   5927 #endif
   5928  mirror: always
   5929 
   5930 # Controls if a content script will be aborted on child process shutdown.
   5931 - name: dom.abort_script_on_child_shutdown
   5932  type: bool
   5933  value: true
   5934  mirror: always
   5935 
   5936 - name: dom.max_chrome_script_run_time
   5937  type: int32_t
   5938  value: 0
   5939  mirror: always
   5940 
   5941 - name: dom.max_ext_content_script_run_time
   5942  type: int32_t
   5943  value: 5
   5944  mirror: always
   5945 
   5946 # Let Resize Observer report the size of all fragments, and not just the
   5947 # first one, as per CSSWG resolution:
   5948 # https://github.com/w3c/csswg-drafts/issues/3673#issuecomment-467221565
   5949 - name: dom.resize_observer.support_fragments
   5950  type: bool
   5951  value: false
   5952  mirror: always
   5953 
   5954 # Whether or not the `Origin-Agent-Cluster` HTTP header is enabled.
   5955 - name: dom.origin_agent_cluster.enabled
   5956  type: bool
   5957  value: true
   5958  mirror: always
   5959 
   5960 # Whether or not agent clusters are origin-keyed by default, blocking the use of
   5961 # `document.domain`.
   5962 - name: dom.origin_agent_cluster.default
   5963  type: bool
   5964  value: false
   5965  mirror: always
   5966 
   5967 # Whether to make the document name getter follow the spec.
   5968 - name: dom.document.name_getter_follow_spec.enabled
   5969  type: bool
   5970  value: true
   5971  mirror: always
   5972 
   5973 # Whether to block the shadowing of known document properties.
   5974 - name: dom.document.name_getter_prevent_shadowing.enabled
   5975  type: bool
   5976  value: @IS_NIGHTLY_BUILD@
   5977  mirror: always
   5978 
   5979 # Whether to enable about:blank async-load workaround for ckeditor.
   5980 - name: dom.about-blank-ckeditor-hack.enabled
   5981  type: bool
   5982  value: true
   5983  mirror: always
   5984 
   5985 # Per-domain blocklist for the previous hack.
   5986 - name: dom.about-blank-ckeditor-hack.disabled-domains
   5987  type: String
   5988  value: ""
   5989  mirror: never
   5990 
   5991 # Whether to include common ancestor when serializing HTML data for clipboard copy.
   5992 - name: dom.serializer.includeCommonAncestor.enabled
   5993  type: bool
   5994  value: false
   5995  mirror: always
   5996 
   5997 #---------------------------------------------------------------------------
   5998 # Prefs starting with "editor"
   5999 #---------------------------------------------------------------------------
   6000 
   6001 # Default background color of HTML editor.  This is referred only when
   6002 # "editor.use_custom_colors" is set to `true`.
   6003 - name: editor.background_color
   6004  type: String
   6005  value: "#FFFFFF"
   6006  mirror: never
   6007 
   6008 # Delay to mask last input character in password fields.
   6009 # If negative value, to use platform's default behavior.
   6010 # If 0, no delay to mask password.
   6011 # Otherwise, password fields unmask last input character(s) during specified
   6012 # time (in milliseconds).
   6013 - name: editor.password.mask_delay
   6014  type: int32_t
   6015  value: -1
   6016  mirror: always
   6017 
   6018 # Set to true when you test mask_delay of password editor.  If this is set
   6019 # to true, "MozLastInputMasked" is fired when last input characters are
   6020 # masked by timeout.
   6021 - name: editor.password.testing.mask_delay
   6022  type: bool
   6023  value: false
   6024  mirror: always
   6025 
   6026 # How line breakers are treated in single line editor:
   6027 # * 0: Only remove the leading and trailing newlines.
   6028 # * 1: Remove the first newline and all characters following it.
   6029 # * 2: Replace newlines with spaces (default of Firefox).
   6030 # * 3: Remove newlines from the string.
   6031 # * 4: Replace newlines with commas (default of Thunderbird).
   6032 # * 5: Collapse newlines and surrounding white space characters and
   6033 #      remove them from the string.
   6034 # Other values are treated as 1.
   6035 - name: editor.singleLine.pasteNewlines
   6036  type: int32_t
   6037  value: 2
   6038  mirror: always
   6039 
   6040 # Whether user pastes should be truncated.
   6041 - name: editor.truncate_user_pastes
   6042  type: bool
   6043  value: true
   6044  mirror: always
   6045 
   6046 # When this is set to `true`, "editor.background_color" must be set, then,
   6047 # the value is treated as default background color of the HTML editor.
   6048 # If `false` and "browser.display.use_system_colors" is set to `true`,
   6049 # "browser.display.background_color" is used instead.
   6050 # Otherwise, no color is used as default background color.
   6051 # This pref is for Thunderbird and SeaMonkey.
   6052 - name: editor.use_custom_colors
   6053  type: bool
   6054  value: false
   6055  mirror: always
   6056 
   6057 # If this is set to `true`, CSS mode of style editor is enabled by default
   6058 # unless it's a mail editor.
   6059 # This pref is for Thunderbird and SeaMonkey.
   6060 - name: editor.use_css
   6061  type: bool
   6062  value: false
   6063  mirror: always
   6064 
   6065 # General prefs for editor, indicating whether Gecko-specific editing UI is
   6066 # enabled by default. Those UIs are not implemented by any other browsers.  So,
   6067 # only Firefox users can change some styles with them. This means that Firefox
   6068 # users may get unexpected result of some web apps if they assume that users
   6069 # cannot change such styles.
   6070 - name: editor.resizing.enabled_by_default
   6071  type: bool
   6072  value: false
   6073  mirror: always
   6074 - name: editor.inline_table_editing.enabled_by_default
   6075  type: bool
   6076  value: false
   6077  mirror: always
   6078 - name: editor.positioning.enabled_by_default
   6079  type: bool
   6080  value: false
   6081  mirror: always
   6082 
   6083 # Controls if a double click word selection also deletes one adjacent whitespace
   6084 # (if feasible). This mimics native behaviour on MacOS.
   6085 - name: editor.word_select.delete_space_after_doubleclick_selection
   6086  type: bool
   6087 #ifdef XP_MACOSX
   6088  value: true
   6089 #else
   6090  value: false
   6091 #endif
   6092  mirror: always
   6093 
   6094 #---------------------------------------------------------------------------
   6095 # Prefs starting with "extensions."
   6096 #---------------------------------------------------------------------------
   6097 
   6098 # Pref that enforces the use of web_accessible_resources for content loads.
   6099 # This behavior is default for MV3.  The pref controls this for MV2.
   6100 - name: extensions.content_web_accessible.enabled
   6101  type: bool
   6102  value: false
   6103  mirror: always
   6104 
   6105 # Whether the InstallTrigger global should be enabled (kept for compatibility,
   6106 # as it is still used in the wild as an improper UA detection method)
   6107 - name: extensions.InstallTrigger.enabled
   6108  type: bool
   6109  value: true
   6110  mirror: always
   6111 
   6112 # Whether the background.service_worker in the extension manifest.json file
   6113 # is enabled.
   6114 # all.js locks the pref to false when MOZ_WEBEXT_WEBIDL_ENABLED is false.
   6115 - name: extensions.backgroundServiceWorker.enabled
   6116  type: bool
   6117  value: false
   6118  mirror: once
   6119 
   6120 # Maximum number of misspelled words in a text.
   6121 - name: extensions.spellcheck.inline.max-misspellings
   6122  type: int32_t
   6123  value: 500
   6124  mirror: always
   6125 
   6126 # Whether the extensions can register a service worker on its own.
   6127 # NOTE: WebExtensions Framework ability to register a background service worker
   6128 # is not controlled by this pref, only the extension code ability to use
   6129 # navigator.serviceWorker.register is locked behind this pref.
   6130 - name: extensions.serviceWorkerRegister.allowed
   6131  type: RelaxedAtomicBool
   6132  value: false
   6133  mirror: always
   6134 
   6135 # When true, content scripts of MV2 extensions can run in blob:-documents without
   6136 # requiring match_origin_as_fallback to be set, to revert bug 1897113.
   6137 # TODO bug 1899134: Remove this pref.
   6138 - name: extensions.script_blob_without_match_origin_as_fallback
   6139  type: bool
   6140  value: false
   6141  mirror: always
   6142 
   6143 # Legacy behavior on filterResponse calls on intercepted sw script requests.
   6144 - name: extensions.filterResponseServiceWorkerScript.disabled
   6145  type: bool
   6146  value: false
   6147  mirror: always
   6148 
   6149 # This pref governs whether we run webextensions in a separate process (true)
   6150 # or the parent/main process (false)
   6151 - name: extensions.webextensions.remote
   6152  type: RelaxedAtomicBool
   6153  value: false
   6154  mirror: always
   6155 
   6156 # Whether to expose the MockExtensionAPI test interface in tests.
   6157 # The interface MockExtensionAPI doesn't represent a real extension API,
   6158 # it is only available in test and does include a series of cases useful
   6159 # to test the API request handling without tying the unit test to a
   6160 # specific WebExtensions API.
   6161 - name: extensions.webidl-api.expose_mock_interface
   6162  type: RelaxedAtomicBool
   6163  value: false
   6164  mirror: always
   6165 
   6166 # Whether to allow acccess to AddonManager to developer sites for testing
   6167 # NOTE: We'd like this to be a "hidden" pref once StaticPrefs supports it.
   6168 - name: extensions.webapi.testing
   6169  type: RelaxedAtomicBool
   6170  value: false
   6171  mirror: always
   6172 
   6173 # Automation-only pref to allow AddonManager over insecure protocols.
   6174 # NOTE: We'd like this to be a "hidden" pref once StaticPrefs supports it.
   6175 - name: extensions.webapi.testing.http
   6176  type: RelaxedAtomicBool
   6177  value: false
   6178  mirror: always
   6179 
   6180 # Whether to expose the AddonManager web API.
   6181 - name: extensions.webapi.enabled
   6182  type: RelaxedAtomicBool
   6183  value: @IS_NOT_ANDROID@
   6184  mirror: always
   6185 
   6186 #---------------------------------------------------------------------------
   6187 # Prefs starting with "fission."
   6188 #---------------------------------------------------------------------------
   6189 
   6190 # Whether to enable Fission in new windows by default.
   6191 # IMPORTANT: This preference should *never* be checked directly, since any
   6192 # session can contain a mix of Fission and non-Fission windows. Instead,
   6193 # callers should check whether the relevant nsILoadContext has the
   6194 # `useRemoteSubframes` flag set.
   6195 # Callers which cannot use `useRemoteSubframes` must use
   6196 # `Services.appinfo.fissionAutostart` or `mozilla::FissionAutostart()` to check
   6197 # whether fission is enabled by default.
   6198 - name: fission.autostart
   6199  type: bool
   6200  value: true
   6201  mirror: never
   6202 
   6203 # Disable storing the session history in the parent process, and accessing it
   6204 # over IPC from the child processes.
   6205 # WARNING: Until the test harness can understand ship-pref default values, this pref’s
   6206 # default must be synchronized with the values set in testing/mochitest/runtests.py and in
   6207 # testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/firefox_android.py.
   6208 # Changing the default here without updating the test harnesses will cause mismatches
   6209 # in automation.
   6210 - name: fission.disableSessionHistoryInParent
   6211  type: bool
   6212  value: false
   6213  mirror: once
   6214  do_not_use_directly: true
   6215 
   6216 # If session history is stored in the parent process, enable bfcache for it.
   6217 - name: fission.bfcacheInParent
   6218  type: bool
   6219  value: true
   6220  mirror: always
   6221  do_not_use_directly: true
   6222 
   6223 # Allow renaming of processes from Private Windows to the eTLD+1 on nightly
   6224 # Setting this pref creates a privacy leak, but helps greatly with
   6225 # debugging.
   6226 - name: fission.processPrivateWindowSiteNames
   6227  type: bool
   6228  value: false
   6229  mirror: always
   6230 
   6231 # Allow renaming of process names to the eTLD+1 on all versions, NOT
   6232 # including processes from Private Windows
   6233 # Setting this pref creates a privacy leak, but helps greatly with
   6234 # debugging
   6235 - name: fission.processSiteNames
   6236  type: bool
   6237  value: false
   6238  mirror: always
   6239 
   6240 # Allow showing of current profile along with process names, NOT
   6241 # including processes from Private Windows
   6242 # Setting this pref creates a privacy leak, but helps greatly with
   6243 # debugging
   6244 - name: fission.processProfileName
   6245  type: bool
   6246  value: false
   6247  mirror: always
   6248 
   6249 # The strategy used to control how sites are isolated into separate processes
   6250 # when Fisison is enabled. This pref has no effect if Fission is disabled.
   6251 # See the `WebContentIsolationStrategy` enum in `ProcessIsolation.cpp`.
   6252 # On Android, this is currently overridden: for Fenix - via nimbus.fml.yml,
   6253 # and for other Andoid Components consumers value 2 is hardcoded
   6254 # in the default settings in mozilla.components.concept.engine.Settings
   6255 - name: fission.webContentIsolationStrategy
   6256  type: uint32_t
   6257  value: 1
   6258  mirror: always
   6259 
   6260 # Time in seconds before a site loaded with the Cross-Origin-Opener-Policy
   6261 # header is no longer considered high-value and isolated in the "highValueCOOP"
   6262 # configuration.
   6263 - name: fission.highValue.coop.expiration
   6264  type: uint32_t
   6265  value: 2592000   # 30 days (in seconds)
   6266  mirror: always
   6267 
   6268 # Time in seconds before a site are considered high-value by the login detection
   6269 # service is no longer considered high-value and isolated in the "highValueHasSavedLogin"
   6270 # or "highValueIsLoggedIn" configuration.
   6271 - name: fission.highValue.login.expiration
   6272  type: uint32_t
   6273  value: 2592000   # 30 days (in seconds)
   6274  mirror: always
   6275 
   6276 # If true, capture login attemp, and add "highValueIsLoggedIn" permission to
   6277 # the permission manager no matter whether fission is enabled and
   6278 # WebContentIsolationStrateg is set to IsolateHighvalue.
   6279 - name: fission.highValue.login.monitor
   6280  type: bool
   6281  value: @IS_ANDROID@
   6282  mirror: always
   6283 
   6284 # If true, do not send blocklisted preference values to the subprocess
   6285 - name: fission.omitBlocklistedPrefsInSubprocesses
   6286  type: RelaxedAtomicBool
   6287  value: true
   6288  mirror: always
   6289 
   6290 # If true, crash when a blocklisted preference is accessed in a subprocess
   6291 - name: fission.enforceBlocklistedPrefsInSubprocesses
   6292  type: RelaxedAtomicBool
   6293 #ifdef DEBUG
   6294  value: true
   6295 #else
   6296  value: false
   6297 #endif
   6298  mirror: always
   6299 
   6300 #---------------------------------------------------------------------------
   6301 # Prefs starting with "font."
   6302 #---------------------------------------------------------------------------
   6303 
   6304 # A value greater than zero enables font size inflation for
   6305 # pan-and-zoom UIs, so that the fonts in a block are at least the size
   6306 # that, if a block's width is scaled to match the device's width, the
   6307 # fonts in the block are big enough that at most the pref value ems of
   6308 # text fit in *the width of the device*.
   6309 #
   6310 # When both this pref and the next are set, the larger inflation is used.
   6311 - name: font.size.inflation.emPerLine
   6312  type: uint32_t
   6313  value: 0
   6314  mirror: always
   6315 
   6316 # A value greater than zero enables font size inflation for
   6317 # pan-and-zoom UIs, so that if a block's width is scaled to match the
   6318 # device's width, the fonts in a block are at least the given font size.
   6319 # The value given is in twips, i.e., 1/20 of a point, or 1/1440 of an inch.
   6320 #
   6321 # When both this pref and the previous are set, the larger inflation is used.
   6322 - name: font.size.inflation.minTwips
   6323  type: uint32_t
   6324  value: 0
   6325  mirror: always
   6326 
   6327 # In products with multi-mode pan-and-zoom and non-pan-and-zoom UIs,
   6328 # this pref forces font inflation to always be enabled in all modes.
   6329 # That is, any heuristics used to detect pan-and-zoom
   6330 # vs. non-pan-and-zoom modes are disabled and all content is treated
   6331 # as pan-and-zoom mode wrt font inflation.
   6332 #
   6333 # This pref has no effect if font inflation is not enabled through
   6334 # either of the prefs above.  It has no meaning in single-mode UIs.
   6335 - name: font.size.inflation.forceEnabled
   6336  type: bool
   6337  value: false
   6338  mirror: always
   6339 
   6340 # Defines the font size inflation mapping intercept parameter.
   6341 #
   6342 # Font size inflation computes a minimum font size, m, based on
   6343 # other preferences (see font.size.inflation.minTwips and
   6344 # font.size.inflation.emPerLine, above) and the width of the
   6345 # frame in which the text resides. Using this minimum, a specified
   6346 # font size, s, is mapped to an inflated font size, i, using an
   6347 # equation that varies depending on the value of the font size
   6348 # inflation mapping intercept parameter, P.
   6349 #
   6350 # If the intercept parameter is negative, then the following mapping
   6351 # function is used:
   6352 #
   6353 # i = m + s
   6354 #
   6355 # If the intercept parameter is non-negative, then the mapping function
   6356 # is a function such that its graph meets the graph of i = s at the
   6357 # point where both i and s are (1 + P/2) * m for values of s that are
   6358 # large enough. This means that when s=0, i is always equal to m.
   6359 - name: font.size.inflation.mappingIntercept
   6360  type: int32_t
   6361  value: 1
   6362  mirror: always
   6363 
   6364 # Since the goal of font size inflation is to avoid having to
   6365 # repeatedly scroll side to side to read a block of text, and there are
   6366 # a number of page layouts where a relatively small chunk of text is
   6367 # better off not being inflated according to the same algorithm we use
   6368 # for larger chunks of text, we want a threshold for an amount of text
   6369 # that triggers font size inflation.  This preference controls that
   6370 # threshold.
   6371 #
   6372 # It controls the threshold used within an *approximation* of the
   6373 # number of lines of text we use.  In particular, if we assume that
   6374 # each character (collapsing collapsible whitespace) has a width the
   6375 # same as the em-size of the font (when, normally, it's actually quite
   6376 # a bit smaller on average), this preference gives the percentage of a
   6377 # number of lines of text we'd need to trigger inflation.  This means
   6378 # that a percentage of 100 means that we'd need a number of characters
   6379 # (we know the font size and the width) equivalent to one line of
   6380 # square text (which is actually a lot less than a real line of text).
   6381 #
   6382 # A value of 0 means there's no character length threshold.
   6383 - name: font.size.inflation.lineThreshold
   6384  type: uint32_t
   6385  value: 400
   6386  mirror: always
   6387 
   6388 # This controls the percentage that fonts will be inflated, if font
   6389 # size inflation is enabled. Essentially, if we have a specified font
   6390 # size, s, and an inflated font size, i, this specifies that the ratio
   6391 # i/s * 100 should never exceed the value of this preference. In order
   6392 # for this preference to have any effect, its value must be greater
   6393 # than 100, since font inflation can never decrease the ratio i/s.
   6394 - name: font.size.inflation.maxRatio
   6395  type: uint32_t
   6396  value: 0
   6397  mirror: always
   6398 
   6399 #---------------------------------------------------------------------------
   6400 # Prefs starting with "full-screen-api."
   6401 #---------------------------------------------------------------------------
   6402 
   6403 - name: full-screen-api.enabled
   6404  type: bool
   6405  value: true
   6406  mirror: always
   6407 
   6408 - name: full-screen-api.allow-trusted-requests-only
   6409  type: bool
   6410  value: true
   6411  mirror: always
   6412 
   6413 - name: full-screen-api.mouse-event-allow-left-button-only
   6414  type: bool
   6415  value: true
   6416  mirror: always
   6417 
   6418 - name: full-screen-api.exit-on.windowOpen
   6419  type: bool
   6420  value: true
   6421  mirror: always
   6422 
   6423 - name: full-screen-api.exit-on.windowRaise
   6424  type: bool
   6425  value: true
   6426  mirror: always
   6427 
   6428 - name: full-screen-api.pointer-lock.enabled
   6429  type: bool
   6430  value: true
   6431  mirror: always
   6432 
   6433 # whether to prevent the top level widget from going fullscreen
   6434 - name: full-screen-api.ignore-widgets
   6435  type: bool
   6436  value: false
   6437  mirror: always
   6438 
   6439 #---------------------------------------------------------------------------
   6440 # Prefs starting with "fuzzing.". It's important that these can only be
   6441 # checked in fuzzing builds (when FUZZING is defined), otherwise you could
   6442 # enable the fuzzing stuff on your regular build which would be bad :)
   6443 #---------------------------------------------------------------------------
   6444 
   6445 #ifdef FUZZING
   6446 -   name: fuzzing.enabled
   6447    type: bool
   6448 #ifdef FUZZING_SNAPSHOT
   6449    value: true
   6450 #else
   6451    value: false
   6452 #endif
   6453    mirror: always
   6454 
   6455 -   name: fuzzing.necko.enabled
   6456    type: RelaxedAtomicBool
   6457    value: false
   6458    mirror: always
   6459 
   6460 -   name: fuzzing.necko.http3
   6461    type: RelaxedAtomicBool
   6462    value: false
   6463    mirror: always
   6464    rust: true
   6465 
   6466 #ifdef FUZZING_SNAPSHOT
   6467 -   name: fuzzing.snapshot.enabled
   6468    type: RelaxedAtomicBool
   6469    value: true
   6470    mirror: always
   6471 #endif
   6472 
   6473 # This configures a virtual authenticator for WebAuthn. The value encodes the
   6474 # arguments to the WebDriver "Add Virtual Authenticator" extension command.
   6475 # Bits 0, 1, 2, and 3 encode "is_user_verified", "is_user_consenting",
   6476 # "has_user_verification", and "has_resident_key" in that order. Bit 5 encodes
   6477 # the transport, either "usb" (0) or "internal" (1). Bits 6 and 7 encode the
   6478 # protocol, either "ctap1/u2f" (1), "ctap2" (2), or "ctap2_1" (3). Note that
   6479 # the valid protocol values are non-zero---an authenticator will not be
   6480 # configured if this pref is set to zero. Changing this pref requires
   6481 # a restart.
   6482 - name: fuzzing.webauthn.authenticator_config
   6483  type: RelaxedAtomicUint32
   6484  value: 0
   6485  mirror: always
   6486  rust: true
   6487 #endif
   6488 
   6489 #---------------------------------------------------------------------------
   6490 # Prefs starting with "general."
   6491 #---------------------------------------------------------------------------
   6492 
   6493 - name: general.aboutConfig.enable
   6494  type: bool
   6495  value: true
   6496  mirror: always
   6497 
   6498 # Limits the depth of recursive conversion of data when opening
   6499 # a content to view.  This is mostly intended to prevent infinite
   6500 # loops with faulty converters involved.
   6501 - name: general.document_open_conversion_depth_limit
   6502  type: uint32_t
   6503  value: 20
   6504  mirror: always
   6505 
   6506 - name: general.smoothScroll
   6507  type: RelaxedAtomicBool
   6508  value: true
   6509  mirror: always
   6510 
   6511 # This pref and general.smoothScroll.stopDecelerationWeighting determine
   6512 # the timing function.
   6513 - name: general.smoothScroll.currentVelocityWeighting
   6514  type: AtomicFloat
   6515  value: 0.25
   6516  mirror: always
   6517 
   6518 # To connect consecutive scroll events into a continuous flow, the animation's
   6519 # duration should be longer than scroll events intervals (or else the scroll
   6520 # will stop before the next event arrives - we're guessing the next interval
   6521 # by averaging recent intervals).
   6522 # This defines how much longer the duration is compared to the events
   6523 # interval (percentage).
   6524 - name: general.smoothScroll.durationToIntervalRatio
   6525  type: RelaxedAtomicInt32
   6526  value: 200
   6527  mirror: always
   6528 
   6529 - name: general.smoothScroll.lines
   6530  type: RelaxedAtomicBool
   6531  value: true
   6532  mirror: always
   6533 
   6534 - name: general.smoothScroll.lines.durationMaxMS
   6535  type: RelaxedAtomicInt32
   6536  value: 150
   6537  mirror: always
   6538 
   6539 - name: general.smoothScroll.lines.durationMinMS
   6540  type: RelaxedAtomicInt32
   6541  value: 150
   6542  mirror: always
   6543 
   6544 - name: general.smoothScroll.mouseWheel
   6545  type: RelaxedAtomicBool
   6546  value: true
   6547  mirror: always
   6548 
   6549 - name: general.smoothScroll.mouseWheel.durationMaxMS
   6550  type: RelaxedAtomicInt32
   6551  value: 200
   6552  mirror: always
   6553 
   6554 - name: general.smoothScroll.mouseWheel.durationMinMS
   6555  type: RelaxedAtomicInt32
   6556  value: 50
   6557  mirror: always
   6558 
   6559 - name: general.smoothScroll.other
   6560  type: RelaxedAtomicBool
   6561  value: true
   6562  mirror: always
   6563 
   6564 - name: general.smoothScroll.other.durationMaxMS
   6565  type: RelaxedAtomicInt32
   6566  value: 150
   6567  mirror: always
   6568 
   6569 - name: general.smoothScroll.other.durationMinMS
   6570  type: RelaxedAtomicInt32
   6571  value: 150
   6572  mirror: always
   6573 
   6574 - name: general.smoothScroll.pages
   6575  type: RelaxedAtomicBool
   6576  value: true
   6577  mirror: always
   6578 
   6579 - name: general.smoothScroll.pages.durationMaxMS
   6580  type: RelaxedAtomicInt32
   6581  value: 150
   6582  mirror: always
   6583 
   6584 - name: general.smoothScroll.pages.durationMinMS
   6585  type: RelaxedAtomicInt32
   6586  value: 150
   6587  mirror: always
   6588 
   6589 - name: general.smoothScroll.scrollbars
   6590  type: RelaxedAtomicBool
   6591  value: true
   6592  mirror: always
   6593 
   6594 - name: general.smoothScroll.scrollbars.durationMaxMS
   6595  type: RelaxedAtomicInt32
   6596  value: 150
   6597  mirror: always
   6598 
   6599 - name: general.smoothScroll.scrollbars.durationMinMS
   6600  type: RelaxedAtomicInt32
   6601  value: 150
   6602  mirror: always
   6603 
   6604 - name: general.smoothScroll.pixels
   6605  type: RelaxedAtomicBool
   6606  value: true
   6607  mirror: always
   6608 
   6609 - name: general.smoothScroll.pixels.durationMaxMS
   6610  type: RelaxedAtomicInt32
   6611  value: 150
   6612  mirror: always
   6613 
   6614 - name: general.smoothScroll.pixels.durationMinMS
   6615  type: RelaxedAtomicInt32
   6616  value: 150
   6617  mirror: always
   6618 
   6619 # This pref and general.smoothScroll.currentVelocityWeighting determine
   6620 # the timing function.
   6621 - name: general.smoothScroll.stopDecelerationWeighting
   6622  type: AtomicFloat
   6623  value: 0.4f
   6624  mirror: always
   6625 
   6626 # Alternative smooth scroll physics. ("MSD" = Mass-Spring-Damper)
   6627 - name: general.smoothScroll.msdPhysics.enabled
   6628  type: RelaxedAtomicBool
   6629  value: @IS_NIGHTLY_BUILD@
   6630  mirror: always
   6631 
   6632 - name: general.smoothScroll.msdPhysics.continuousMotionMaxDeltaMS
   6633  type: RelaxedAtomicInt32
   6634  value: 120
   6635  mirror: always
   6636 
   6637 - name: general.smoothScroll.msdPhysics.motionBeginSpringConstant
   6638  type: RelaxedAtomicInt32
   6639  value: 1250
   6640  mirror: always
   6641 
   6642 - name: general.smoothScroll.msdPhysics.slowdownMinDeltaMS
   6643  type: RelaxedAtomicInt32
   6644  value: 12
   6645  mirror: always
   6646 
   6647 - name: general.smoothScroll.msdPhysics.slowdownMinDeltaRatio
   6648  type: AtomicFloat
   6649  value: 1.3f
   6650  mirror: always
   6651 
   6652 - name: general.smoothScroll.msdPhysics.slowdownSpringConstant
   6653  type: RelaxedAtomicInt32
   6654  value: 2000
   6655  mirror: always
   6656 
   6657 - name: general.smoothScroll.msdPhysics.regularSpringConstant
   6658  type: RelaxedAtomicInt32
   6659  value: 1000
   6660  mirror: always
   6661 
   6662 #---------------------------------------------------------------------------
   6663 # Prefs starting with "geo."
   6664 #---------------------------------------------------------------------------
   6665 
   6666 # Is support for Navigator.geolocation enabled?
   6667 - name: geo.enabled
   6668  type: bool
   6669  value: true
   6670  mirror: always
   6671 
   6672 # Time, in milliseconds, to wait for the location provider to spin up.
   6673 - name: geo.timeout
   6674  type: int32_t
   6675  value: 6000
   6676  mirror: always
   6677 
   6678 #ifdef MOZ_ENABLE_DBUS
   6679 # Whether to use Geoclue location provider (if available on the system).
   6680 - name: geo.provider.use_geoclue
   6681  type: bool
   6682  value: true
   6683  mirror: always
   6684 
   6685 # Whether to always provide high location accuracy, even if site
   6686 # doesn't actually request this level of accuracy.
   6687 # Almost no site correctly requests high accuracy so force it by default
   6688 # for compatibility with other geolocation providers.
   6689 - name: geo.provider.geoclue.always_high_accuracy
   6690  type: bool
   6691  value: true
   6692  mirror: always
   6693 
   6694 # Time in milliseconds after which geoclue will try to fallback to MLS if no
   6695 # location is received after successful start.
   6696 - name: geo.provider.geoclue.mls_fallback_timeout_ms
   6697  type: uint32_t
   6698  value: 5000
   6699  mirror: always
   6700 #endif
   6701 
   6702 # If true, open system preferences for the user when geolocation is requested
   6703 # by the user but OS geolocation permission is not available.
   6704 - name: geo.prompt.open_system_prefs
   6705  type: bool
   6706  value: true
   6707  mirror: always
   6708 
   6709 #---------------------------------------------------------------------------
   6710 # Prefs starting with "gfx."
   6711 #---------------------------------------------------------------------------
   6712 
   6713 - name: gfx.apitrace.enabled
   6714  type: bool
   6715  value: false
   6716  mirror: once
   6717 
   6718 - name: gfx.blithelper.precision
   6719  type: RelaxedAtomicUint32
   6720  value: 2 # { 0: lowp, 1: mediump, 2: highp }
   6721  mirror: always
   6722 
   6723 - name: gfx.blithelper.lut-size.rgb.b
   6724  type: RelaxedAtomicUint32
   6725  value: 15
   6726  mirror: always
   6727 - name: gfx.blithelper.lut-size.rgb.g
   6728  type: RelaxedAtomicUint32
   6729  value: 31
   6730  mirror: always
   6731 - name: gfx.blithelper.lut-size.rgb.r
   6732  type: RelaxedAtomicUint32
   6733  value: 31
   6734  mirror: always
   6735 
   6736 - name: gfx.blithelper.lut-size.ycbcr.cb
   6737  type: RelaxedAtomicUint32
   6738  value: 15
   6739  mirror: always
   6740 - name: gfx.blithelper.lut-size.ycbcr.cr
   6741  type: RelaxedAtomicUint32
   6742  value: 31
   6743  mirror: always
   6744 - name: gfx.blithelper.lut-size.ycbcr.y
   6745  type: RelaxedAtomicUint32
   6746  value: 31
   6747  mirror: always
   6748 
   6749 # Nb: we ignore this pref on release and beta.
   6750 - name: gfx.blocklist.all
   6751  type: int32_t
   6752  value: 0
   6753  mirror: once
   6754 
   6755 #if defined(XP_DARWIN)
   6756 - name: gfx.cairo_quartz_cg_layer.enabled
   6757  type: bool
   6758  value: true
   6759  mirror: always
   6760 #endif
   6761 
   6762 - name: gfx.canvas.accelerated
   6763  type: bool
   6764 #if defined(XP_MACOSX) || defined(XP_LINUX) && !defined(ANDROID)
   6765  value: true
   6766 #elif defined(MOZ_WIDGET_ANDROID)
   6767  value: true
   6768 #elif defined(XP_WIN)
   6769  value: true
   6770 #else
   6771  value: false
   6772 #endif
   6773  mirror: always
   6774 
   6775 - name: gfx.canvas.accelerated.allow-in-parent
   6776  type: bool
   6777 #if defined(XP_WIN) || defined(ANDROID)
   6778  value: false
   6779 #else
   6780  value: true
   6781 #endif
   6782  mirror: once
   6783 
   6784 # Whether to attempt to enable Accelerated Canvas2D regardless of blocklisting.
   6785 - name: gfx.canvas.accelerated.force-enabled
   6786  type: bool
   6787  value: false
   6788  mirror: always
   6789 
   6790 - name: gfx.canvas.accelerated.async-present
   6791  type: RelaxedAtomicBool
   6792  value: true
   6793  mirror: always
   6794 
   6795 - name: gfx.canvas.accelerated.cache-items
   6796  type: RelaxedAtomicUint32
   6797  value: 8192
   6798  mirror: always
   6799 
   6800 - name: gfx.canvas.accelerated.cache-size
   6801  type: RelaxedAtomicUint32
   6802  value: 256
   6803  mirror: always
   6804 
   6805 - name: gfx.canvas.accelerated.reserve-empty-cache
   6806  type: RelaxedAtomicUint32
   6807  value: 36
   6808  mirror: always
   6809 
   6810 - name: gfx.canvas.accelerated.max-draw-target-count
   6811  type: RelaxedAtomicUint32
   6812  value: 200
   6813  mirror: always
   6814 
   6815 - name: gfx.canvas.accelerated.max-size
   6816  type: RelaxedAtomicInt32
   6817  value: 8192
   6818  mirror: always
   6819 
   6820 - name: gfx.canvas.accelerated.min-size
   6821  type: RelaxedAtomicInt32
   6822  value: 128
   6823  mirror: always
   6824 
   6825 - name: gfx.canvas.accelerated.max-data-shmems
   6826  type: RelaxedAtomicUint32
   6827  value: 400
   6828  mirror: always
   6829 
   6830 - name: gfx.canvas.accelerated.max-export-surfaces
   6831  type: RelaxedAtomicUint32
   6832  value: 100
   6833  mirror: always
   6834 
   6835 - name: gfx.canvas.accelerated.max-export-surface-memory
   6836  type: RelaxedAtomicUint32
   6837  value: 512 * 1024 * 1024
   6838  mirror: always
   6839 
   6840 - name: gfx.canvas.accelerated.max-snapshot-pbo-memory
   6841  type: RelaxedAtomicUint32
   6842  value: 64 * 1024 * 1024
   6843  mirror: always
   6844 
   6845 - name: gfx.canvas.accelerated.max-surface-size
   6846  type: RelaxedAtomicUint32
   6847  value: 5280
   6848  mirror: always
   6849 
   6850 - name: gfx.canvas.accelerated.shared-page-size
   6851  type: RelaxedAtomicUint32
   6852  value: 1024
   6853  mirror: always
   6854 
   6855 # The minimum number of frames before acting on performance profile info
   6856 - name: gfx.canvas.accelerated.profile-frames
   6857  type: RelaxedAtomicUint32
   6858  value: 10
   6859  mirror: always
   6860 
   6861 # The ratio of failed frames to total frames when to fall back from acceleration
   6862 - name: gfx.canvas.accelerated.profile-fallback-ratio
   6863  type: AtomicFloat
   6864  value: 0.3
   6865  mirror: always
   6866 
   6867 # The ratio of cache misses at which to fail a profile frame
   6868 - name: gfx.canvas.accelerated.profile-cache-miss-ratio
   6869  type: AtomicFloat
   6870  value: 0.66
   6871  mirror: always
   6872 
   6873 # The maximum size of the GPU path cache in MB.
   6874 - name: gfx.canvas.accelerated.gpu-path-size
   6875  type: RelaxedAtomicUint32
   6876  value: 4
   6877  mirror: always
   6878 
   6879 # The maximum allowed complexity of a GPU path.
   6880 - name: gfx.canvas.accelerated.gpu-path-complexity
   6881  type: RelaxedAtomicUint32
   6882  value: 4000
   6883  mirror: always
   6884 
   6885 # Whether to accelerate stroked paths by converting them to fill paths.
   6886 - name: gfx.canvas.accelerated.stroke-to-fill-path
   6887  type: RelaxedAtomicBool
   6888  value: false
   6889  mirror: always
   6890 
   6891 # Whether to use aa-stroke to accelerate stroked paths.
   6892 - name: gfx.canvas.accelerated.aa-stroke.enabled
   6893  type: RelaxedAtomicBool
   6894  value: true
   6895  mirror: always
   6896 
   6897 # Draws an indicator if acceleration is used.
   6898 - name: gfx.canvas.accelerated.debug
   6899  type: RelaxedAtomicBool
   6900  value: false
   6901  mirror: always
   6902 
   6903 # 0x7fff is the maximum supported xlib surface size and is more than enough for canvases.
   6904 - name: gfx.canvas.max-size
   6905  type: RelaxedAtomicInt32
   6906  value: 0x7fff
   6907  mirror: always
   6908 
   6909 # Whether OffscreenCanvas can use remote canvas
   6910 - name: gfx.canvas.remote.allow-offscreen
   6911  type: RelaxedAtomicBool
   6912  value: true
   6913  mirror: always
   6914 
   6915 # Default size of the shmem buffers used for recording
   6916 - name: gfx.canvas.remote.default-buffer-size
   6917  type: RelaxedAtomicUint32
   6918  value: 32 * 1024
   6919  mirror: always
   6920 
   6921 # Maximum number of Default size shmem buffers to use
   6922 - name: gfx.canvas.remote.max_default_buffers
   6923  type: RelaxedAtomicUint32
   6924  value: 256
   6925  mirror: always
   6926 
   6927 # How many times to spin before waiting in remote canvas
   6928 - name: gfx.canvas.remote.max-spin-count
   6929  type: RelaxedAtomicUint32
   6930  value: 500
   6931  mirror: always
   6932 
   6933 # How long to wait in milliseconds for the next event while in a transaction
   6934 - name: gfx.canvas.remote.event-timeout-ms
   6935  type: RelaxedAtomicUint32
   6936  value: 2
   6937  mirror: always
   6938 
   6939 # How many times we have a spare buffer before we drop one
   6940 - name: gfx.canvas.remote.drop-buffer-limit
   6941  type: RelaxedAtomicUint32
   6942  value: 100
   6943  mirror: always
   6944 
   6945 # Delay in milliseconds to drop buffers when there have been no non-empty transactions
   6946 - name: gfx.canvas.remote.drop-buffer-milliseconds
   6947  type: RelaxedAtomicUint32
   6948  value: 10000
   6949  mirror: always
   6950 
   6951 - name: gfx.canvas.remote.use-draw-image-fast-path
   6952  type: RelaxedAtomicBool
   6953  value: true
   6954  mirror: always
   6955 
   6956 #ifdef XP_WIN
   6957 - name: gfx.canvas.remote.use-draw-image-fast-path-d3d
   6958  type: RelaxedAtomicBool
   6959  value: true
   6960  mirror: always
   6961 #endif
   6962 
   6963 - name: gfx.canvas.remote.recycle-used-data-surface
   6964  type: RelaxedAtomicBool
   6965  value: true
   6966  mirror: always
   6967 
   6968 - name: gfx.canvas.remote.use-canvas-translator-event
   6969  type: bool
   6970  value: true
   6971  mirror: once
   6972 
   6973 - name: gfx.color_management.display_profile
   6974  type: DataMutexString
   6975  value: ""
   6976  mirror: always # But be warned: We cache the result.
   6977 
   6978 - name: gfx.color_management.force_srgb
   6979  type: RelaxedAtomicBool
   6980  value: false
   6981  mirror: always
   6982 
   6983 - name: gfx.color_management.native_srgb
   6984  type: RelaxedAtomicBool
   6985 #if defined(XP_MACOSX)
   6986  value: true
   6987 #else
   6988  value: false
   6989 #endif
   6990  mirror: always
   6991 
   6992 - name: gfx.color_management.enablev4
   6993  type: RelaxedAtomicBool
   6994  value: true
   6995  mirror: always
   6996 
   6997 # 0 = Off, 1 = Full, 2 = Tagged Images Only.
   6998 # See CMSMode in gfx/thebes/gfxPlatform.h.
   6999 - name: gfx.color_management.mode
   7000  type: RelaxedAtomicInt32
   7001  value: 2
   7002  mirror: always
   7003 
   7004 # The zero default here should match QCMS_INTENT_DEFAULT from qcms.h
   7005 - name: gfx.color_management.rendering_intent
   7006  type: RelaxedAtomicInt32
   7007  value: 0
   7008  mirror: always
   7009 
   7010 - name: gfx.color_management.rec709_gamma_as_srgb
   7011  type: RelaxedAtomicBool
   7012  value: true # Tragic backwards compat.
   7013  mirror: always
   7014 
   7015 - name: gfx.color_management.rec2020_gamma_as_rec709
   7016  type: RelaxedAtomicBool
   7017  value: true # Match naive behavior, but hopefully we can stop soon!
   7018  mirror: always
   7019 
   7020 # Enable HDR video support.
   7021 - name: gfx.color_management.hdr_video
   7022  type: RelaxedAtomicBool
   7023 #if defined(XP_MACOSX) || defined(MOZ_WAYLAND)
   7024  value: true
   7025 #elif defined(XP_WIN)
   7026  value: @IS_EARLY_BETA_OR_EARLIER@
   7027 #else
   7028  value: false
   7029 #endif
   7030  mirror: always
   7031 
   7032 # Pending a better refactor we assume BT2020 colorspace is used with PQ transfer
   7033 # function (HDR) rather than assuming it is BT709/BT1886 transfer function,
   7034 # we've been making this assumption for a while on macOS HDR videos and it seems
   7035 # to be the norm. We should refactor to get mTransferFunction to compositor code
   7036 # instead...
   7037 - name: gfx.color_management.hdr_video_assume_rec2020_uses_pq
   7038  type: RelaxedAtomicBool
   7039  value: true
   7040  mirror: always
   7041 
   7042 #ifdef XP_MACOSX
   7043 # Whether GL contexts can be migrated to a different GPU (to match the one the
   7044 # OS is using for composition).
   7045 - name: gfx.compositor.gpu-migration
   7046  type: RelaxedAtomicBool
   7047  value: true
   7048  mirror: always
   7049 #endif
   7050 
   7051 #ifdef XP_DARWIN
   7052 - name: gfx.core-animation.tint-opaque
   7053  type: RelaxedAtomicBool
   7054  value: false
   7055  mirror: always
   7056 
   7057  # Create specialized video-only layers for video content in
   7058  # fullscreen windows. Consistently works well on Apple Silicon,
   7059  # some issues remain on Intel hardware.
   7060 -   name: gfx.core-animation.specialize-video
   7061    type: RelaxedAtomicBool
   7062 #if defined(MOZ_AARCH64) && defined(XP_MACOSX)
   7063    value: true
   7064 #else
   7065    value: false
   7066 #endif
   7067    mirror: always
   7068 #endif
   7069 
   7070 #if defined(XP_DARWIN) && defined(NIGHTLY_BUILD)
   7071  # Spoof the timing of the video sample instead of marking the untimed
   7072  # sample to be displayed immediately.
   7073 -   name: gfx.core-animation.specialize-video.spoof-timing
   7074    type: RelaxedAtomicBool
   7075    value: false
   7076    mirror: always
   7077 
   7078  # Check that the sample has a color space and if it doesn't, log that
   7079  # and supply the default color space from the main display.
   7080 -   name: gfx.core-animation.specialize-video.check-color-space
   7081    type: RelaxedAtomicBool
   7082    value: false
   7083    mirror: always
   7084 
   7085  # Log properties of the video surface, buffer, and format.
   7086 -   name: gfx.core-animation.specialize-video.log
   7087    type: RelaxedAtomicBool
   7088    value: false
   7089    mirror: always
   7090 #endif
   7091 
   7092 #ifdef XP_DARWIN
   7093 -   name: gfx.core-animation.low-power-telemetry-frames
   7094    type: int32_t
   7095    value: 600
   7096    mirror: once
   7097 #endif
   7098 
   7099 #if defined(MOZ_WIDGET_ANDROID)
   7100  # Overrides the glClear color used when the surface origin is not (0, 0)
   7101  # Used for drawing a border around the content.
   7102 -   name: gfx.compositor.override.clear-color.r
   7103    type: AtomicFloat
   7104    value: 0.0f
   7105    mirror: always
   7106 
   7107 -   name: gfx.compositor.override.clear-color.g
   7108    type: AtomicFloat
   7109    value: 0.0f
   7110    mirror: always
   7111 
   7112 -   name: gfx.compositor.override.clear-color.b
   7113    type: AtomicFloat
   7114    value: 0.0f
   7115    mirror: always
   7116 
   7117 -   name: gfx.compositor.override.clear-color.a
   7118    type: AtomicFloat
   7119    value: 0.0f
   7120    mirror: always
   7121 #endif  # defined(MOZ_WIDGET_ANDROID)
   7122 
   7123 - name: gfx.content.always-paint
   7124  type: RelaxedAtomicBool
   7125  value: false
   7126  mirror: always
   7127 
   7128 # Size in megabytes
   7129 - name: gfx.content.skia-font-cache-size
   7130  type: int32_t
   7131  value: 5
   7132  mirror: once
   7133 
   7134 - name: gfx.device-reset.limit
   7135  type: int32_t
   7136  value: 10
   7137  mirror: once
   7138 
   7139 - name: gfx.device-reset.threshold-ms
   7140  type: int32_t
   7141  value: -1
   7142  mirror: once
   7143 
   7144 #ifdef XP_WIN
   7145 - name: gfx.direct3d11.reuse-decoder-device
   7146  type: bool
   7147  value: true
   7148  mirror: once
   7149 # Enable reuse decoder device even when it is blocked.
   7150 - name: gfx.direct3d11.reuse-decoder-device-force-enabled
   7151  type: bool
   7152  value: false
   7153  mirror: once
   7154 
   7155 - name: gfx.direct3d11.allow-keyed-mutex
   7156  type: RelaxedAtomicBool
   7157  value: true
   7158  mirror: always
   7159 
   7160 - name: gfx.direct3d11.use-double-buffering
   7161  type: RelaxedAtomicBool
   7162  value: false
   7163  mirror: always
   7164 
   7165 - name: gfx.direct3d11.enable-debug-layer
   7166  type: bool
   7167  value: false
   7168  mirror: once
   7169 
   7170 - name: gfx.direct3d11.break-on-error
   7171  type: bool
   7172  value: false
   7173  mirror: once
   7174 
   7175 - name: gfx.direct3d11.sleep-on-create-device
   7176  type: int32_t
   7177  value: 0
   7178  mirror: once
   7179 #endif
   7180 
   7181 # Rate by which the frame rate is divided. I.e. at a number higher than 1 we
   7182 # will only refresh every <x> frames.
   7183 - name: gfx.display.frame-rate-divisor
   7184  type: RelaxedAtomicInt32
   7185  value: 1
   7186  mirror: always
   7187 
   7188 - name: gfx.display.max-frame-rate
   7189  type: RelaxedAtomicInt32
   7190  value: 0
   7191  mirror: always
   7192 
   7193 # Whether to disable downloadable font cache so that behavior is consistently
   7194 # the uncached load behavior across pages (useful for testing reflow problems)
   7195 - name: gfx.downloadable_fonts.disable_cache
   7196  type: RelaxedAtomicBool
   7197  value: false
   7198  mirror: always
   7199 
   7200 # Whether to preserve color bitmap tables in fonts (bypassing OTS).
   7201 # Currently these are supported only on platforms where we use Freetype
   7202 # to render fonts (Linux/Gtk and Android).
   7203 - name: gfx.downloadable_fonts.keep_color_bitmaps
   7204  type: RelaxedAtomicBool
   7205  value: false
   7206  mirror: always
   7207 
   7208 # Whether to validate OpenType variation tables in fonts.
   7209 - name: gfx.downloadable_fonts.validate_variation_tables
   7210  type: RelaxedAtomicBool
   7211  value: true
   7212  mirror: always
   7213 
   7214 # Whether OTS validation should be applied to OpenType Layout (OTL) tables.
   7215 #   0 - no validation
   7216 #   1 - validate (logging errors to console) but drop table without rejecting
   7217 #       font resource if errors are found
   7218 #   2 (or other) - validate, and reject font if errors are found
   7219 - name: gfx.downloadable_fonts.otl_validation
   7220  type: RelaxedAtomicUint32
   7221 #if defined(RELEASE_OR_BETA)
   7222  value: 0
   7223 #else
   7224  value: 1
   7225 #endif
   7226  mirror: always
   7227 
   7228 - name: gfx.e10s.font-list.shared
   7229  type: bool
   7230  value: true
   7231  mirror: once
   7232 
   7233 # Do we fire a notification about missing fonts, so the front-end can decide
   7234 # whether to try and do something about it (e.g. download additional fonts)?
   7235 - name: gfx.missing_fonts.notify
   7236  type: RelaxedAtomicBool
   7237  value: false
   7238  mirror: always
   7239 
   7240 #if !defined(MOZ_WIDGET_ANDROID)
   7241 - name: gfx.egl.prefer-gles.enabled
   7242  type: bool
   7243 #if defined(MOZ_WIDGET_GTK) && defined(MOZ_AARCH64)
   7244  value: true
   7245 #else
   7246  value: false
   7247 #endif
   7248  mirror: once
   7249 #endif
   7250 
   7251 # [Windows] Whether registry FontSubstitutes entries are used unconditionally,
   7252 # or only if the original font is not available.
   7253 #if defined(XP_WIN)
   7254 - name: gfx.windows-font-substitutes.always
   7255  type: bool
   7256  value: false
   7257  mirror: once
   7258 #endif
   7259 
   7260 - name: gfx.font-list-omt.enabled
   7261  type: bool
   7262 #if defined(XP_MACOSX)
   7263  value: true
   7264 #else
   7265  value: false
   7266 #endif
   7267  mirror: once
   7268 
   7269 # [Android] OPPO, realme and OnePlus device seem to crash when using Font
   7270 # Match API. We turn off this feature on these devices. Set true if you want to
   7271 # turn on it at force.
   7272 #if defined(MOZ_WIDGET_ANDROID)
   7273 - name: gfx.font-list.use_font_match_api.force-enabled
   7274  type: bool
   7275  value: false
   7276  mirror: once
   7277 #endif
   7278 
   7279 # Whether to load fonts (e.g. Twemoji Mozilla) bundled with the application:
   7280 #  -1 - Auto behavior based on OS version (currently, disables loading on
   7281 #       "low-memory" Android devices)
   7282 #   0 - Skip loading any bundled fonts
   7283 #   1 - Always load bundled fonts
   7284 - name: gfx.bundled-fonts.activate
   7285  type: int32_t
   7286  value: -1
   7287  mirror: once
   7288 
   7289 - name: gfx.font_loader.delay
   7290  type: RelaxedAtomicUint32
   7291 #if defined(XP_WIN)
   7292  value: 60000
   7293 #else
   7294  value: 8000
   7295 #endif
   7296  mirror: always
   7297 
   7298 # Disable antialiasing of Ahem, for use in tests.
   7299 - name: gfx.font_rendering.ahem_antialias_none
   7300  type: RelaxedAtomicBool
   7301  value: false
   7302  mirror: always
   7303 
   7304 #if defined(XP_DARWIN)
   7305  # Set to true to revert from HarfBuzz AAT shaping to the old Core Text
   7306  # backend.
   7307 -   name: gfx.font_rendering.coretext.enabled
   7308    type: RelaxedAtomicBool
   7309    value: false
   7310    mirror: always
   7311 #endif
   7312 
   7313 - name: gfx.font_rendering.colr_v1.enabled
   7314  type: RelaxedAtomicBool
   7315  value: true
   7316  mirror: always
   7317 
   7318 - name: gfx.font_rendering.opentype_svg.enabled
   7319  type: RelaxedAtomicBool
   7320  value: true
   7321  mirror: always
   7322  rust: true
   7323 
   7324 - name: gfx.font_rendering.fallback.async
   7325  type: RelaxedAtomicBool
   7326  value: true
   7327  mirror: always
   7328 
   7329 # whether to always search all font cmaps during system font fallback
   7330 - name: gfx.font_rendering.fallback.always_use_cmaps
   7331  type: RelaxedAtomicBool
   7332  value: false
   7333  mirror: always
   7334 
   7335 # whether to do font fallback for codepoints with General Category = Unassigned
   7336 - name: gfx.font_rendering.fallback.unassigned_chars
   7337  type: RelaxedAtomicBool
   7338  value: false
   7339  mirror: always
   7340 
   7341 #ifdef MOZ_WIDGET_GTK
   7342 -   name: gfx.font_rendering.fontconfig.max_generic_substitutions
   7343    type: RelaxedAtomicUint32
   7344    value: 3
   7345    mirror: always
   7346 #endif
   7347 
   7348 #if defined(XP_WIN)
   7349 # Whether the DirectWrite bold simulation should be used when a bold font-weight
   7350 # is requested but no bold face available in the family. This renders poorly with
   7351 # some third-party fonts, so by default we disable it for webfonts and allow it
   7352 # only with locally-installed fonts.
   7353 # Values:
   7354 #   0 - never use DWrite bold simulation; always multi-strike instead
   7355 #   1 - use DWrite bold for installed fonts, multi-strike for webfont resources
   7356 #   2 - use DWrite bold for all fonts
   7357 - name: gfx.font_rendering.directwrite.bold_simulation
   7358  type: RelaxedAtomicUint32
   7359  value: 1
   7360  mirror: always
   7361 #endif
   7362 
   7363 - name: gfx.font_rendering.graphite.enabled
   7364  type: RelaxedAtomicBool
   7365  value: true
   7366  mirror: always
   7367 
   7368 # Cache shaped word results
   7369 - name: gfx.font_rendering.wordcache.charlimit
   7370  type: RelaxedAtomicUint32
   7371  value: 32
   7372  mirror: always
   7373 
   7374 # Cache shaped word results
   7375 - name: gfx.font_rendering.wordcache.maxentries
   7376  type: RelaxedAtomicUint32
   7377  value: 10000
   7378  mirror: always
   7379 
   7380 # The level of logging:
   7381 # - 0: no logging;
   7382 # - 1: adds errors;
   7383 # - 2: adds warnings;
   7384 # - 3 or 4: adds debug logging.
   7385 # If you set the value to 4, you will also need to set the environment
   7386 # variable MOZ_LOG to gfx:4. See mozilla/Logging.h for details.
   7387 - name: gfx.logging.level
   7388  type: RelaxedAtomicInt32
   7389  value: mozilla::gfx::LOG_DEFAULT
   7390  mirror: always
   7391  include: mozilla/gfx/LoggingConstants.h
   7392 
   7393 - name: gfx.logging.crash.length
   7394  type: uint32_t
   7395  value: 16
   7396  mirror: once
   7397 
   7398 # The maximums here are quite conservative, we can tighten them if problems show up.
   7399 - name: gfx.logging.texture-usage.enabled
   7400  type: bool
   7401  value: false
   7402  mirror: once
   7403 
   7404 - name: gfx.logging.peak-texture-usage.enabled
   7405  type: bool
   7406  value: false
   7407  mirror: once
   7408 
   7409 - name: gfx.logging.slow-frames.enabled
   7410  type: bool
   7411  value: false
   7412  mirror: once
   7413 
   7414 # Use gfxPlatform::MaxAllocSize instead of the pref directly.
   7415 - name: gfx.max-alloc-size
   7416  type: int32_t
   7417  value: (int32_t)0x7FFFFFFF
   7418  mirror: once
   7419  do_not_use_directly: true
   7420 
   7421 # Use gfxPlatform::MaxTextureSize instead of the pref directly.
   7422 - name: gfx.max-texture-size
   7423  type: int32_t
   7424  value: (int32_t)32767
   7425  mirror: once
   7426  do_not_use_directly: true
   7427 
   7428 - name: gfx.offscreencanvas.shared-provider
   7429  type: RelaxedAtomicBool
   7430  value: true
   7431  mirror: always
   7432 
   7433 - name: gfx.offscreencanvas.snapshot-timeout-ms
   7434  type: int32_t
   7435  value: 10000
   7436  mirror: always
   7437 
   7438 - name: gfx.omta.background-color
   7439  type: bool
   7440  value: true
   7441  mirror: always
   7442 
   7443 - name: gfx.partialpresent.force
   7444  type: RelaxedAtomicInt32
   7445  value: 0
   7446  mirror: always
   7447 
   7448 # SwapInterval
   7449 - name: gfx.swap-interval.glx
   7450  type: RelaxedAtomicBool
   7451  value: true
   7452  mirror: always
   7453 
   7454 - name: gfx.swap-interval.egl
   7455  type: RelaxedAtomicBool
   7456  mirror: always
   7457 #ifdef MOZ_WIDGET_ANDROID
   7458  value: true
   7459 #else
   7460  value: false
   7461 #endif
   7462 
   7463 # Enable dithering in DrawTargetSkia
   7464 - name: gfx.skia.dithering
   7465  type: bool
   7466  value: false
   7467  mirror: once
   7468 
   7469 # Log severe performance warnings to the error console and profiles.
   7470 # This should be use to quickly find which slow paths are used by test cases.
   7471 - name: gfx.perf-warnings.enabled
   7472  type: RelaxedAtomicBool
   7473  value: false
   7474  mirror: always
   7475 
   7476 #ifdef MOZ_X11
   7477 # Whether to force using GLX over EGL.
   7478 - name: gfx.x11-egl.force-disabled
   7479  type: bool
   7480  value: false
   7481  mirror: once
   7482 
   7483 # Whether to force using EGL over GLX.
   7484 - name: gfx.x11-egl.force-enabled
   7485  type: bool
   7486  value: false
   7487  mirror: once
   7488 
   7489 - name: gfx.x11.glx_sgi_video_sync
   7490  type: bool
   7491  value: false
   7492  mirror: once
   7493 #endif
   7494 
   7495 - name: gfx.testing.device-fail
   7496  type: RelaxedAtomicBool
   7497  value: false
   7498  mirror: always
   7499 
   7500 - name: gfx.testing.device-reset
   7501  type: RelaxedAtomicInt32
   7502  value: 0
   7503  mirror: always
   7504 
   7505 # Meant to be used for tests only. If greater than 0 then we assert that the
   7506 # number of active render textures increases by this amount or less.
   7507 #ifdef DEBUG
   7508 - name: gfx.testing.assert-render-textures-increase
   7509  type: RelaxedAtomicInt32
   7510  value: 0
   7511  mirror: always
   7512 #endif
   7513 
   7514 - name: gfx.text.disable-aa
   7515  type: bool
   7516  value: false
   7517  mirror: once
   7518 
   7519 - name: gfx.text.subpixel-position.force-enabled
   7520  type: bool
   7521  value: false
   7522  mirror: once
   7523 
   7524 - name: gfx.text.subpixel-position.force-disabled
   7525  type: bool
   7526  value: false
   7527  mirror: once
   7528 
   7529 #ifdef XP_MACOSX
   7530 - name: gfx.use-iosurface-textures
   7531  type: bool
   7532  value: false
   7533  mirror: once
   7534 #endif
   7535 
   7536 #ifdef XP_WIN
   7537 - name: gfx.use-mutex-on-present
   7538  type: bool
   7539  value: false
   7540  mirror: once
   7541 #endif
   7542 
   7543 #ifdef MOZ_WIDGET_ANDROID
   7544 # Use SurfaceTextures as preferred backend for TextureClient/Host.
   7545 - name: gfx.use-surfacetexture-textures
   7546  type: bool
   7547  value: false
   7548  mirror: once
   7549 #endif
   7550 
   7551 - name: gfx.vsync.compositor.unobserve-count
   7552  type: int32_t
   7553  value: 10
   7554  mirror: once
   7555 
   7556 - name: gfx.vsync.force-disable-waitforvblank
   7557  type: RelaxedAtomicBool
   7558  value: false
   7559  mirror: always
   7560 
   7561 - name: gfx.will-change.ignore-opacity
   7562  type: RelaxedAtomicBool
   7563  value: true
   7564  mirror: always
   7565 
   7566 # Should we override the blocklist to enable WebGPU?
   7567 - name: gfx.webgpu.ignore-blocklist
   7568  type: bool
   7569  value: false
   7570  mirror: once
   7571 
   7572 # Whether to use the WebRender hardware backend
   7573 - name: gfx.webrender.all
   7574  type: bool
   7575  value: false
   7576  mirror: once
   7577 
   7578 #ifdef XP_WIN
   7579 - name: gfx.webrender.force-angle
   7580  type: bool
   7581  value: true
   7582  mirror: once
   7583 #endif
   7584 
   7585 # WebRender is not enabled when there is no GPU process on window when
   7586 # WebRender uses ANGLE. It is for avoiding that WebGL and WebRender use ANGLE
   7587 # at once. But there is a case that we want to enable WebRender for testing.
   7588 #ifdef XP_WIN
   7589 - name: gfx.webrender.enabled-no-gpu-process-with-angle-win
   7590  type: bool
   7591  value: true
   7592  mirror: once
   7593 #endif
   7594 
   7595 - name: gfx.webrender.svg-filter-effects
   7596  type: RelaxedAtomicBool
   7597  value: true
   7598  mirror: always
   7599 
   7600 - name: gfx.webrender.svg-filter-effects.also-convert-css-filters
   7601  type: RelaxedAtomicBool
   7602  value: false
   7603  mirror: always
   7604 
   7605 - name: gfx.webrender.svg-filter-effects.also-use-for-docshell-fecolormatrix
   7606  type: RelaxedAtomicBool
   7607  value: false
   7608  mirror: always
   7609 
   7610 - name: gfx.webrender.svg-filter-effects.opacity
   7611  type: RelaxedAtomicBool
   7612  value: true
   7613  mirror: always
   7614 
   7615 - name: gfx.webrender.svg-filter-effects.toalpha
   7616  type: RelaxedAtomicBool
   7617  value: true
   7618  mirror: always
   7619 
   7620 - name: gfx.webrender.svg-filter-effects.feblend
   7621  type: RelaxedAtomicBool
   7622  value: true
   7623  mirror: always
   7624 
   7625 - name: gfx.webrender.svg-filter-effects.fecolormatrix
   7626  type: RelaxedAtomicBool
   7627  value: true
   7628  mirror: always
   7629 
   7630 - name: gfx.webrender.svg-filter-effects.fecomponenttransfer
   7631  type: RelaxedAtomicBool
   7632  value: true
   7633  mirror: always
   7634 
   7635 - name: gfx.webrender.svg-filter-effects.fecomposite
   7636  type: RelaxedAtomicBool
   7637  value: true
   7638  mirror: always
   7639 
   7640 - name: gfx.webrender.svg-filter-effects.feconvolvematrix
   7641  type: RelaxedAtomicBool
   7642  value: false
   7643  mirror: always
   7644 
   7645 - name: gfx.webrender.svg-filter-effects.fediffuselighting
   7646  type: RelaxedAtomicBool
   7647  value: false
   7648  mirror: always
   7649 
   7650 - name: gfx.webrender.svg-filter-effects.fedisplacementmap
   7651  type: RelaxedAtomicBool
   7652  value: false
   7653  mirror: always
   7654 
   7655 - name: gfx.webrender.svg-filter-effects.fedropshadow
   7656  type: RelaxedAtomicBool
   7657  value: true
   7658  mirror: always
   7659 
   7660 - name: gfx.webrender.svg-filter-effects.feflood
   7661  type: RelaxedAtomicBool
   7662  value: true
   7663  mirror: always
   7664 
   7665 - name: gfx.webrender.svg-filter-effects.fegaussianblur
   7666  type: RelaxedAtomicBool
   7667  value: true
   7668  mirror: always
   7669 
   7670 - name: gfx.webrender.svg-filter-effects.feimage
   7671  type: RelaxedAtomicBool
   7672  value: false
   7673  mirror: always
   7674 
   7675 - name: gfx.webrender.svg-filter-effects.femerge
   7676  type: RelaxedAtomicBool
   7677  value: true
   7678  mirror: always
   7679 
   7680 - name: gfx.webrender.svg-filter-effects.femorphology
   7681  type: RelaxedAtomicBool
   7682  value: false
   7683  mirror: always
   7684 
   7685 - name: gfx.webrender.svg-filter-effects.feoffset
   7686  type: RelaxedAtomicBool
   7687  value: true
   7688  mirror: always
   7689 
   7690 - name: gfx.webrender.svg-filter-effects.fespecularlighting
   7691  type: RelaxedAtomicBool
   7692  value: false
   7693  mirror: always
   7694 
   7695 - name: gfx.webrender.svg-filter-effects.fetile
   7696  type: RelaxedAtomicBool
   7697  value: false
   7698  mirror: always
   7699 
   7700 - name: gfx.webrender.svg-filter-effects.feturbulence
   7701  type: RelaxedAtomicBool
   7702  value: false
   7703  mirror: always
   7704 
   7705 - name: gfx.webrender.svg-images
   7706  type: RelaxedAtomicBool
   7707  value: true
   7708  mirror: always
   7709 
   7710 - name: gfx.webrender.svg-shapes
   7711  type: RelaxedAtomicBool
   7712  value: true
   7713  mirror: always
   7714 
   7715 - name: gfx.webrender.debug.blob.paint-flashing
   7716  type: RelaxedAtomicBool
   7717  value: false
   7718  mirror: always
   7719 
   7720 - name: gfx.webrender.debug.enable-capture
   7721  type: bool
   7722 #ifdef MOZ_WEBRENDER_DEBUGGER
   7723  value: true
   7724 #else
   7725  value: false
   7726 #endif
   7727  mirror: once
   7728 
   7729 - name: gfx.webrender.debug.dl.dump-parent
   7730  type: RelaxedAtomicBool
   7731  value: false
   7732  mirror: always
   7733 
   7734 - name: gfx.webrender.debug.dl.dump-content
   7735  type: RelaxedAtomicBool
   7736  value: false
   7737  mirror: always
   7738 
   7739 - name: gfx.webrender.debug.dl.dump-content-serialized
   7740  type: RelaxedAtomicBool
   7741  value: false
   7742  mirror: always
   7743 
   7744 - name: gfx.webrender.debug.highlight-backdrop-filters
   7745  type: RelaxedAtomicBool
   7746  value: false
   7747  mirror: always
   7748 
   7749 # When true, we output warning messages when rejecting surface promotion
   7750 # when it has been requested. This is important for color correctness of
   7751 # wide color videos, as well as for GPU performance for all videos.
   7752 - name: gfx.webrender.debug.surface-promotion-logging
   7753  type: RelaxedAtomicBool
   7754  value: false
   7755  mirror: always
   7756 
   7757 # When true, missing stacking context snapshots will crash the GPU or Parent
   7758 # process.
   7759 - name: gfx.webrender.debug.missing-snapshot-panic
   7760  type: RelaxedAtomicBool
   7761  value: false
   7762  mirror: always
   7763 
   7764 # When true, missing stacking context snapshots will render as an opaque
   7765 # pink image.
   7766 - name: gfx.webrender.debug.missing-snapshot-pink
   7767  type: RelaxedAtomicBool
   7768  value: false
   7769  mirror: always
   7770 
   7771 #ifdef MOZ_WIDGET_GTK
   7772 - name: gfx.webrender.reject-software-driver
   7773  type: bool
   7774  value: true
   7775  mirror: once
   7776 #endif
   7777 
   7778 - name: gfx.webrender.debug.highlight-painted-layers
   7779  type: RelaxedAtomicBool
   7780  value: false
   7781  mirror: always
   7782 
   7783 - name: gfx.webrender.debug.slow-cpu-frame-threshold
   7784  type: AtomicFloat
   7785  value: 10.0
   7786  mirror: always
   7787 
   7788 - name: gfx.webrender.late-scenebuild-threshold
   7789  type: RelaxedAtomicInt32
   7790  value: 4
   7791  mirror: always
   7792 
   7793 - name: gfx.webrender.max-filter-ops-per-chain
   7794  type: RelaxedAtomicUint32
   7795  value: 64
   7796  mirror: always
   7797 
   7798 - name: gfx.webrender.batching.lookback
   7799  type: uint32_t
   7800  value: 10
   7801  mirror: always
   7802 
   7803 - name: gfx.webrender.blob-tile-size
   7804  type: uint32_t
   7805  value: 256
   7806  mirror: always
   7807 
   7808 - name: gfx.webrender.batched-upload-threshold
   7809  type: int32_t
   7810 #if defined(MOZ_WIDGET_ANDROID)
   7811  value: 262144
   7812 #else
   7813  value: 65536
   7814 #endif
   7815  mirror: always
   7816 
   7817 - name: gfx.webrender.compositor
   7818  type: bool
   7819 #if defined(XP_WIN) || defined(XP_DARWIN)
   7820  value: true
   7821 #else
   7822  value: false
   7823 #endif
   7824  mirror: once
   7825 
   7826 - name: gfx.webrender.layer-compositor
   7827  type: bool
   7828 #if defined(XP_WIN)
   7829  value: @IS_NIGHTLY_BUILD@
   7830 #else
   7831  value: false
   7832 #endif
   7833  mirror: once
   7834 
   7835 #ifdef XP_WIN
   7836 - name: gfx.webrender.layer-compositor-force-composition-surface
   7837  type: bool
   7838  value: false
   7839  mirror: once
   7840 
   7841 - name: gfx.webrender.layer-compositor-use-dcomp-texture
   7842  type: bool
   7843  value: false
   7844  mirror: once
   7845 #endif
   7846 
   7847 - name: gfx.webrender.dcomp-texture-overlay-win
   7848  type: bool
   7849  value: false
   7850  mirror: once
   7851 
   7852 - name: gfx.webrender.scissored-cache-clears.enabled
   7853  type: bool
   7854  value: true
   7855  mirror: once
   7856 
   7857 - name: gfx.webrender.scissored-cache-clears.force-enabled
   7858  type: bool
   7859  value: false
   7860  mirror: once
   7861 
   7862 - name: gfx.webrender.compositor.force-enabled
   7863  type: bool
   7864  value: false
   7865  mirror: once
   7866 
   7867 - name: gfx.webrender.compositor.max_update_rects
   7868  type: uint32_t
   7869  value: 1
   7870  mirror: once
   7871 
   7872 - name: gfx.webrender.compositor.surface-pool-size
   7873  type: uint32_t
   7874  value: 25
   7875  mirror: once
   7876 
   7877 # Number of damage rects we can give to the compositor for a new frame with
   7878 # partial present. This controls whether partial present is used or not.
   7879 - name: gfx.webrender.max-partial-present-rects
   7880  type: uint32_t
   7881 #if defined(XP_WIN) || defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GTK)
   7882  value: 1
   7883 #else
   7884  value: 0
   7885 #endif
   7886  mirror: once
   7887 
   7888 # Whether or not we can reuse the buffer contents using the GL buffer age
   7889 # extension, if supported by the platform. This requires partial present
   7890 # to be used.
   7891 - name: gfx.webrender.allow-partial-present-buffer-age
   7892  type: bool
   7893  value: true
   7894  mirror: once
   7895 
   7896 # Whether or not we should force partial present on.
   7897 - name: gfx.webrender.force-partial-present
   7898  type: bool
   7899  value: false
   7900  mirror: once
   7901 
   7902 - name: gfx.webrender.enable-gpu-markers
   7903  type: bool
   7904 #ifdef DEBUG
   7905  value: true
   7906 #else
   7907  value: false
   7908 #endif
   7909  mirror: once
   7910 
   7911 - name: gfx.webrender.enable-item-cache
   7912  type: bool
   7913  value: true
   7914  mirror: once
   7915 
   7916 # Whether or not to fallback from WebRender to Software WebRender.
   7917 - name: gfx.webrender.fallback.software
   7918  type: bool
   7919  value: true
   7920  mirror: once
   7921 
   7922 #ifdef XP_WIN
   7923  # Use IDCompositionFilterEffect to color manage dcomp surfaces.
   7924 -   name: gfx.webrender.dcomp.color-manage-with-filters
   7925    type: RelaxedAtomicBool
   7926    value: false
   7927    mirror: always
   7928  # Whether to use an overlay of hardware decoded video with DirectComposition
   7929 -   name: gfx.webrender.dcomp-video-hw-overlay-win
   7930    type: bool
   7931    value: true
   7932    mirror: once
   7933  # Enable hardware decoded video overlay even when it is blocked.
   7934 -   name: gfx.webrender.dcomp-video-hw-overlay-win-force-enabled
   7935    type: bool
   7936    value: false
   7937    mirror: once
   7938  # Whether to use a yuv video overlay layers with DirectComposition
   7939 -   name: gfx.webrender.dcomp-video-yuv-overlay-win
   7940    type: bool
   7941    value: false
   7942    mirror: once
   7943 -   name: gfx.webrender.dcomp-video-vp-scaling-win
   7944    type: bool
   7945    value: true
   7946    mirror: once
   7947  # Whether to use virtual surfaces, as opposed to each tile owning a surface.
   7948 -   name: gfx.webrender.dcomp-use-virtual-surfaces
   7949    type: bool
   7950    value: true
   7951    mirror: once
   7952  # Whether to use an overlay of software decoded video with DirectComposition
   7953 -   name: gfx.webrender.dcomp-video-sw-overlay-win
   7954    type: bool
   7955    value: true
   7956    mirror: once
   7957  # Enable software decoded video overlay even when it is blocked.
   7958 -   name: gfx.webrender.dcomp-video-sw-overlay-win-force-enabled
   7959    type: bool
   7960    value: false
   7961    mirror: once
   7962 -   name: gfx.webrender.dcomp-video-check-slow-present
   7963    type: RelaxedAtomicBool
   7964    value: true
   7965    mirror: always
   7966  # Force triple buffering in overlay's video swap chain
   7967 -   name: gfx.webrender.dcomp-video-force-triple-buffering
   7968    type: RelaxedAtomicBool
   7969    value: false
   7970    mirror: always
   7971 -   name: gfx.webrender.dcomp-video-swap-chain-present-interval-0
   7972    type: RelaxedAtomicBool
   7973    value: false
   7974    mirror: always
   7975 -   name: gfx.video.convert-yuv-to-nv12.image-host-win
   7976    type: RelaxedAtomicBool
   7977    value: true
   7978    mirror: always
   7979 -   name: gfx.webrender.swap-chain-allow-tearing
   7980    type: bool
   7981    value: false
   7982    mirror: once
   7983 #endif
   7984 
   7985 # Whether or not fallback to Software WebRender requires the GPU process.
   7986 - name: gfx.webrender.fallback.software.requires-gpu-process
   7987  type: bool
   7988  value: false
   7989  mirror: once
   7990 
   7991 - name: gfx.webrender.program-binary-disk
   7992  type: bool
   7993 #if defined(XP_WIN) || defined(ANDROID)
   7994  value: true
   7995 #else
   7996  value: false
   7997 #endif
   7998  mirror: once
   7999 
   8000 - name: gfx.webrender.use-optimized-shaders
   8001  type: bool
   8002  value: true
   8003  mirror: once
   8004 
   8005 - name: gfx.webrender.precache-shaders
   8006  type: bool
   8007  value: false
   8008  mirror: once
   8009 
   8010 # When gl debug message is a high severity message, forwward it to gfx critical
   8011 # note.
   8012 - name: gfx.webrender.gl-debug-message-critical-note
   8013  type: bool
   8014 #if defined(XP_WIN) && defined(NIGHTLY_BUILD)
   8015  value: true
   8016 #else
   8017  value: false
   8018 #endif
   8019  mirror: once
   8020 
   8021 # Enable printing gl debug messages
   8022 - name: gfx.webrender.gl-debug-message-print
   8023  type: bool
   8024  value: false
   8025  mirror: once
   8026 
   8027 #ifdef NIGHTLY_BUILD
   8028  # Keep this pref hidden on non-nightly builds to avoid people accidentally
   8029  # turning it on.
   8030 - name: gfx.webrender.panic-on-gl-error
   8031  type: bool
   8032  value: false
   8033  mirror: once
   8034 #endif
   8035 
   8036 #ifdef XP_WIN
   8037  # Enables display of performance debugging counters when DirectComposition
   8038  # is used.
   8039  # Performance counters are displayed on the top-right corner of the screen.
   8040 -   name: gfx.webrender.debug.dcomp-counter
   8041    type: RelaxedAtomicBool
   8042    value: false
   8043    mirror: always
   8044  # Enables highlighting redraw regions of DCompositionVisual
   8045 -   name: gfx.webrender.debug.dcomp-redraw-regions
   8046    type: RelaxedAtomicBool
   8047    value: false
   8048    mirror: always
   8049 #endif
   8050 
   8051 #ifdef XP_DARWIN
   8052  # Files show up in $HOME/Desktop/nativelayerdumps-PID/frame-123.html
   8053 -   name: gfx.webrender.debug.dump-native-layer-tree-to-file
   8054    type: RelaxedAtomicBool
   8055    value: false
   8056    mirror: always
   8057 #endif
   8058 
   8059 - name: gfx.webrender.enable-low-priority-pool
   8060  type: RelaxedAtomicBool
   8061 #if defined(ANDROID)
   8062  value: false
   8063 #else
   8064  value: true
   8065 #endif
   8066  mirror: always
   8067 
   8068  # Force subpixel anti-aliasing as much as possible, despite performance cost.
   8069 - name: gfx.webrender.quality.force-subpixel-aa-where-possible
   8070  type: bool
   8071  value: false
   8072  mirror: always
   8073 
   8074 - name: gfx.webrender.enable-subpixel-aa
   8075  type: bool
   8076  mirror: once
   8077 #ifdef MOZ_WIDGET_ANDROID
   8078  value: false
   8079 #else
   8080  value: true
   8081 #endif
   8082 
   8083 #ifdef XP_MACOSX
   8084 - name: gfx.webrender.enable-client-storage
   8085  type: bool
   8086  value: true
   8087  mirror: once
   8088 #endif
   8089 
   8090 # Width of WebRender tile size
   8091 - name: gfx.webrender.picture-tile-width
   8092  type: RelaxedAtomicInt32
   8093 #if defined(XP_WIN)
   8094  value: 512
   8095 #else
   8096  value: 1024
   8097 #endif
   8098  mirror: always
   8099 
   8100 # Width of WebRender tile size
   8101 - name: gfx.webrender.picture-tile-height
   8102  type: RelaxedAtomicInt32
   8103  value: 512
   8104  mirror: always
   8105 
   8106 # WebRender upper bound for shared surface size
   8107 # According to apitrace, textures larger than 2048 break fast clear
   8108 # optimizations on some intel drivers. We sometimes need to go larger, but
   8109 # we try to avoid it.
   8110 - name: gfx.webrender.max-shared-surface-size
   8111  type: int32_t
   8112  value: 2048
   8113  mirror: once
   8114 
   8115 # Whether to use EGL robustness or not.
   8116 - name: gfx.webrender.prefer-robustness
   8117  type: bool
   8118 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
   8119  value: true
   8120 #else
   8121  value: false
   8122 #endif
   8123  mirror: once
   8124 
   8125 # Whether to use the WebRender software backend
   8126 - name: gfx.webrender.software
   8127  type: bool
   8128  value: false
   8129  mirror: once
   8130 
   8131 #ifdef XP_WIN
   8132 # Whether to use the D3D11 RenderCompositor when using WebRender software backend
   8133 - name: gfx.webrender.software.d3d11
   8134  type: bool
   8135  value: true
   8136  mirror: once
   8137 
   8138 - name: gfx.webrender.software.d3d11.upload-mode
   8139  type: RelaxedAtomicInt32
   8140  value: 4
   8141  mirror: always
   8142 #endif
   8143 
   8144 #if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GTK)
   8145 - name: gfx.webrender.software.opengl
   8146  type: bool
   8147 #if defined(MOZ_WIDGET_ANDROID)
   8148  value: true
   8149 #else
   8150  value: false
   8151 #endif
   8152  mirror: once
   8153 #endif
   8154 
   8155 # Whether to force widgets to don't support acceleration to use WebRender
   8156 # despite that
   8157 - name: gfx.webrender.unaccelerated-widget.force
   8158  type: RelaxedAtomicBool
   8159  value: false
   8160  mirror: always
   8161 
   8162 # Enable a lower quality, but higher performance pinch-zoom mode. Primarily
   8163 # for devices with weak GPUs, or when running SWGL.
   8164 - name: gfx.webrender.low-quality-pinch-zoom
   8165  type: bool
   8166 #if defined(MOZ_WIDGET_ANDROID) && defined(NIGHTLY_BUILD)
   8167  value: true
   8168 #else
   8169  value: false
   8170 #endif
   8171  mirror: once
   8172 
   8173 # Disable wait of GPU execution completion
   8174 - name: gfx.webrender.wait-gpu-finished.disabled
   8175  type: bool
   8176  value: false
   8177  mirror: once
   8178 
   8179 # Enable VideoProcessor Super Resolution for video overlay
   8180 - name: gfx.webrender.overlay-vp-super-resolution
   8181  type: bool
   8182 #if defined(XP_WIN)
   8183  value: true
   8184 #else
   8185  value: false
   8186 #endif
   8187  mirror: once
   8188 
   8189 # Enable VideoProcessor-HDR on SDR content for video overlay
   8190 - name: gfx.webrender.overlay-vp-auto-hdr
   8191  type: bool
   8192 #if defined(XP_WIN)
   8193  value: true
   8194 #else
   8195  value: false
   8196 #endif
   8197  mirror: once
   8198 
   8199 # Enable overlays for HDR content
   8200 - name: gfx.webrender.overlay-hdr
   8201  type: bool
   8202  value: true
   8203  mirror: once
   8204 
   8205 # Enable a dedicated arena on frame builder threads.
   8206 - name: gfx.webrender.frame-builder-thread-local-arena
   8207  type: bool
   8208  rust: true
   8209  value: false
   8210  mirror: once
   8211 
   8212 # Enable a dedicated arena on scene builder threads.
   8213 - name: gfx.webrender.scene-builder-thread-local-arena
   8214  type: bool
   8215  rust: true
   8216  value: false
   8217  mirror: once
   8218 
   8219 # Enable a dedicated arena on WebRender worker threads.
   8220 - name: gfx.webrender.worker-thread-local-arena
   8221  type: bool
   8222  rust: true
   8223  value: true
   8224  mirror: once
   8225 
   8226 # Enable dithering in hardware WebRender
   8227 - name: gfx.webrender.dithering
   8228  type: bool
   8229  rust: true
   8230  value: true
   8231  mirror: once
   8232 
   8233 # Use a more precise method for sampling gradients when *not* using SWGL .
   8234 - name: gfx.webrender.precise-linear-gradients
   8235  type: bool
   8236  rust: true
   8237  value: false
   8238  mirror: once
   8239 
   8240 # Use a more precise method for sampling gradients when using SWGL.
   8241 - name: gfx.webrender.precise-linear-gradients-swgl
   8242  type: bool
   8243  rust: true
   8244  value: true
   8245  mirror: once
   8246 
   8247 # Use a more precise method for sampling gradients when *not* using SWGL .
   8248 - name: gfx.webrender.precise-radial-gradients
   8249  type: bool
   8250  rust: true
   8251  value: true
   8252  mirror: once
   8253 
   8254 # Use a more precise method for sampling gradients when using SWGL.
   8255 - name: gfx.webrender.precise-radial-gradients-swgl
   8256  type: bool
   8257  rust: true
   8258  value: true
   8259  mirror: once
   8260 
   8261 # Use a more precise method for sampling gradients when *not* using SWGL .
   8262 - name: gfx.webrender.precise-conic-gradients
   8263  type: bool
   8264  rust: true
   8265  value: true
   8266  mirror: once
   8267 
   8268 # Use a more precise method for sampling gradients when using SWGL.
   8269 - name: gfx.webrender.precise-conic-gradients-swgl
   8270  type: bool
   8271  rust: true
   8272  value: true
   8273  mirror: once
   8274 
   8275 # Use vsync events generated by hardware
   8276 - name: gfx.work-around-driver-bugs
   8277  type: bool
   8278  value: true
   8279  mirror: once
   8280 
   8281 - name: gfx.ycbcr.accurate-conversion
   8282  type: RelaxedAtomicBool
   8283  value: false
   8284  mirror: always
   8285 
   8286 - name: gfx.remote-texture.recycle.disabled
   8287  type: RelaxedAtomicBool
   8288  value: false
   8289  mirror: always
   8290 
   8291 - name: gfx.remote-texture.wait-owner-at-image-host
   8292  type: RelaxedAtomicBool
   8293  value: false
   8294  mirror: always
   8295 
   8296 #if defined(MOZ_WAYLAND)
   8297 - name: gfx.wayland.hdr
   8298  type: bool
   8299  value: false
   8300  mirror: once
   8301 
   8302 - name: gfx.wayland.hdr.force-enabled
   8303  type: bool
   8304  value: false
   8305  mirror: once
   8306 #endif
   8307 
   8308 #---------------------------------------------------------------------------
   8309 # Prefs starting with "gl." (OpenGL)
   8310 #---------------------------------------------------------------------------
   8311 
   8312 #ifdef XP_MACOSX
   8313 - name: gl.allow-high-power
   8314  type: RelaxedAtomicBool
   8315  value: true
   8316  mirror: always
   8317 #endif
   8318 
   8319 #ifdef XP_WIN
   8320 - name: gl.ignore-dx-interop2-blacklist
   8321  type: RelaxedAtomicBool
   8322  value: false
   8323  mirror: always
   8324 #endif
   8325 
   8326 - name: gl.use-tls-is-current
   8327  type: RelaxedAtomicInt32
   8328  value: 0
   8329  mirror: always
   8330 
   8331 #---------------------------------------------------------------------------
   8332 # Prefs starting with "html5."
   8333 #---------------------------------------------------------------------------
   8334 
   8335 # Time in milliseconds between the time a network buffer is seen and the timer
   8336 # firing when the timer hasn't fired previously in this parse in the
   8337 # off-the-main-thread HTML5 parser.
   8338 - name: html5.flushtimer.initialdelay
   8339  type: RelaxedAtomicInt32
   8340  value: 16
   8341  mirror: always
   8342 
   8343 # Time in milliseconds between the time a network buffer is seen and the timer
   8344 # firing when the timer has already fired previously in this parse.
   8345 - name: html5.flushtimer.subsequentdelay
   8346  type: RelaxedAtomicInt32
   8347  value: 16
   8348  mirror: always
   8349 
   8350 #---------------------------------------------------------------------------
   8351 # Prefs starting with "idle_period."
   8352 #---------------------------------------------------------------------------
   8353 
   8354 - name: idle_period.min
   8355  type: uint32_t
   8356  value: 3
   8357  mirror: always
   8358 
   8359 - name: idle_period.during_page_load.min
   8360  type: uint32_t
   8361  value: 12
   8362  mirror: always
   8363 
   8364 - name: idle_period.cross_process_scheduling
   8365  type: RelaxedAtomicBool
   8366  value: true
   8367  mirror: always
   8368 
   8369 #---------------------------------------------------------------------------
   8370 # Prefs starting with "image."
   8371 #---------------------------------------------------------------------------
   8372 
   8373 # The maximum size (in kB) that the aggregate frames of an animation can use
   8374 # before it starts to discard already displayed frames and redecode them as
   8375 # necessary.
   8376 - name: image.animated.decode-on-demand.threshold-kb
   8377  type: RelaxedAtomicUint32
   8378  value: 20*1024
   8379  mirror: always
   8380 
   8381 # The minimum number of frames we want to have buffered ahead of an
   8382 # animation's currently displayed frame.
   8383 - name: image.animated.decode-on-demand.batch-size
   8384  type: RelaxedAtomicUint32
   8385  value: 6
   8386  mirror: always
   8387 
   8388 # Whether we should recycle already displayed frames instead of discarding
   8389 # them. This saves on the allocation itself, and may be able to reuse the
   8390 # contents as well. Only applies if generating full frames.
   8391 - name: image.animated.decode-on-demand.recycle
   8392  type: bool
   8393  value: true
   8394  mirror: once
   8395 
   8396 # Resume an animated image from the last displayed frame rather than
   8397 # advancing when out of view.
   8398 - name: image.animated.resume-from-last-displayed
   8399  type: RelaxedAtomicBool
   8400  value: true
   8401  mirror: always
   8402 
   8403 # Maximum number of surfaces for an image before entering "factor of 2" mode.
   8404 # This in addition to the number of "native" sizes of an image. A native size
   8405 # is a size for which we can decode a frame without up or downscaling. Most
   8406 # images only have 1, but some (i.e. ICOs) may have multiple frames for the
   8407 # same data at different sizes.
   8408 - name: image.cache.factor2.threshold-surfaces
   8409  type: RelaxedAtomicInt32
   8410  value: 4
   8411  mirror: always
   8412 
   8413 # Maximum size of a surface in KB we are willing to produce when rasterizing
   8414 # an SVG.
   8415 - name: image.cache.max-rasterized-svg-threshold-kb
   8416  type: RelaxedAtomicInt32
   8417  value: 200*1024
   8418  mirror: always
   8419 
   8420 # The maximum size, in bytes, of the decoded images we cache.
   8421 - name: image.cache.size
   8422  type: int32_t
   8423  value: 5*1024*1024
   8424  mirror: once
   8425 
   8426 # A weight, from 0-1000, to place on time when comparing to size.
   8427 # Size is given a weight of 1000 - timeweight.
   8428 - name: image.cache.timeweight
   8429  type: int32_t
   8430  value: 500
   8431  mirror: once
   8432 
   8433 # Decode all images automatically on load, ignoring our normal heuristics.
   8434 - name: image.decode-immediately.enabled
   8435  type: RelaxedAtomicBool
   8436  value: false
   8437  mirror: always
   8438 
   8439 # Decode all images synchronously, intended to be used for reftests.
   8440 - name: image.testing.decode-sync.enabled
   8441  type: bool
   8442  value: false
   8443  mirror: always
   8444 
   8445 # Whether we attempt to downscale images during decoding.
   8446 - name: image.downscale-during-decode.enabled
   8447  type: RelaxedAtomicBool
   8448  value: true
   8449  mirror: always
   8450 
   8451 # Whether EXIF density metadata is sanity checked against PixelXDimension and PixelYDimension
   8452 - name: image.exif-density-correction.sanity-check.enabled
   8453  type: RelaxedAtomicBool
   8454  value: true
   8455  mirror: always
   8456 
   8457 # The threshold for inferring that changes to an <img> element's |src|
   8458 # attribute by JavaScript represent an animation, in milliseconds. If the |src|
   8459 # attribute is changing more frequently than this value, then we enter a
   8460 # special "animation mode" which is designed to eliminate flicker. Set to 0 to
   8461 # disable.
   8462 - name: image.infer-src-animation.threshold-ms
   8463  type: RelaxedAtomicUint32
   8464  value: 2000
   8465  mirror: always
   8466 
   8467 # Whether the network request priority should be adjusted according
   8468 # the layout and view frame position of each particular image.
   8469 - name: image.layout_network_priority
   8470  type: RelaxedAtomicBool
   8471  value: true
   8472  mirror: always
   8473 
   8474 # Chunk size for calls to the image decoders.
   8475 - name: image.mem.decode_bytes_at_a_time
   8476  type: uint32_t
   8477  value: 16384
   8478  mirror: once
   8479 
   8480 # Discards inactive image frames and re-decodes them on demand from
   8481 # compressed data.
   8482 - name: image.mem.discardable
   8483  type: RelaxedAtomicBool
   8484  value: true
   8485  mirror: always
   8486 
   8487 # Discards inactive image frames of _animated_ images and re-decodes them on
   8488 # demand from compressed data. Has no effect if image.mem.discardable is false.
   8489 - name: image.mem.animated.discardable
   8490  type: bool
   8491  value: true
   8492  mirror: once
   8493 
   8494 # Enable extra information for debugging in the image memory reports.
   8495 - name: image.mem.debug-reporting
   8496  type: RelaxedAtomicBool
   8497  value: false
   8498  mirror: always
   8499 
   8500 # Force unmapping of unused shared surfaces after a timeout period or when we
   8501 # encounter virtual memory pressure. By default this is only enabled on 32-bit
   8502 # Firefox.
   8503 - name: image.mem.shared.unmap.force-enabled
   8504  type: bool
   8505  value: false
   8506  mirror: once
   8507 
   8508 # Minimum timeout to unmap shared surfaces since they have been last used,
   8509 # in milliseconds.
   8510 - name: image.mem.shared.unmap.min_expiration_ms
   8511  type: uint32_t
   8512  value: 60*1000
   8513  mirror: once
   8514 
   8515 # Mininum size for shared surfaces to consider unmapping, in kilobytes.
   8516 - name: image.mem.shared.unmap.min_threshold_kb
   8517  type: uint32_t
   8518  value: 100
   8519  mirror: once
   8520 
   8521 # How much of the data in the surface cache is discarded when we get a memory
   8522 # pressure notification, as a fraction. The discard factor is interpreted as a
   8523 # reciprocal, so a discard factor of 1 means to discard everything in the
   8524 # surface cache on memory pressure, a discard factor of 2 means to discard half
   8525 # of the data, and so forth. The default should be a good balance for desktop
   8526 # and laptop systems, where we never discard visible images.
   8527 - name: image.mem.surfacecache.discard_factor
   8528  type: uint32_t
   8529  value: 1
   8530  mirror: once
   8531 
   8532 # Maximum size for the surface cache, in kilobytes.
   8533 - name: image.mem.surfacecache.max_size_kb
   8534  type: uint32_t
   8535  value: 2024 * 1024
   8536  mirror: once
   8537 
   8538 # Minimum timeout for expiring unused images from the surface cache, in
   8539 # milliseconds. This controls how long we store cached temporary surfaces.
   8540 - name: image.mem.surfacecache.min_expiration_ms
   8541  type: uint32_t
   8542  value: 60*1000
   8543  mirror: once
   8544 
   8545 # The surface cache's size, within the constraints of the maximum size set
   8546 # above, is determined as a fraction of main memory size. The size factor is
   8547 # interpreted as a reciprocal, so a size factor of 4 means to use no more than
   8548 # 1/4 of main memory.  The default should be a good balance for most systems.
   8549 - name: image.mem.surfacecache.size_factor
   8550  type: uint32_t
   8551  value: 4
   8552  mirror: once
   8553 
   8554 # Maximum size in kilobytes that we allow to allocate an imgFrame, meant for
   8555 # testing/fuzzing purposes. -1 disables this limit (there are other limits in
   8556 # place).
   8557 - name: image.mem.max_legal_imgframe_size_kb
   8558  type: RelaxedAtomicInt32
   8559  value: -1
   8560  mirror: always
   8561 
   8562 # If true, then the HTMLImageElement naturalWidth and naturalHeight APIs will
   8563 # fall back to the default concrete object size (300x150) for images that lack
   8564 # a natural width and/or height.
   8565 - name: image.natural-size-fallback.enabled
   8566  type: RelaxedAtomicBool
   8567  value: true
   8568  mirror: always
   8569 
   8570 # Whether we record SVG images as blobs or not.
   8571 - name: image.svg.blob-image
   8572  type: RelaxedAtomicBool
   8573  value: false
   8574  mirror: always
   8575 
   8576 # Whether to set the incremental attribute in the Priority header for images
   8577 - name: image.priority.incremental
   8578  type: RelaxedAtomicBool
   8579  value: true
   8580  mirror: always
   8581 
   8582 # How strict we are in accepting/rejecting AVIF inputs according to whether they
   8583 # conform to the specification
   8584 # 0 = Permissive: accept whatever we can simply, unambiguously interpret
   8585 # 1 = Normal: reject violations of "shall" specification directives
   8586 # 2 = Strict: reject violations of "should" specification directives
   8587 - name: image.avif.compliance_strictness
   8588  type: RelaxedAtomicInt32
   8589  value: 1
   8590  mirror: always
   8591 
   8592 # Whether we apply container-level transforms like mirroring and rotation
   8593 - name: image.avif.apply_transforms
   8594  type: RelaxedAtomicBool
   8595  value: true
   8596  mirror: always
   8597 
   8598 # Whether we use dav1d (true) or libaom (false) to decode AVIF image
   8599 - name: image.avif.use-dav1d
   8600  type: RelaxedAtomicBool
   8601  value: true
   8602  mirror: always
   8603 
   8604 # Whether to allow decoding of animated AVIF sequences.
   8605 - name: image.avif.sequence.enabled
   8606  type: RelaxedAtomicBool
   8607  value: true
   8608  mirror: always
   8609 
   8610 # Whether AVIF files containing sequences should be animated even when the
   8611 # major brand is set to 'avif'.
   8612 - name: image.avif.sequence.animate_avif_major_branded_images
   8613  type: RelaxedAtomicBool
   8614  value: false
   8615  mirror: always
   8616 
   8617 # Whether we attempt to decode JXL images or not.
   8618 - name: image.jxl.enabled
   8619  type: RelaxedAtomicBool
   8620  value: false
   8621  mirror: always
   8622 
   8623 #---------------------------------------------------------------------------
   8624 # Prefs starting with "intl."
   8625 #---------------------------------------------------------------------------
   8626 
   8627 #ifdef XP_WIN
   8628  # Whether Gecko creates or does not create native caret for legacy ATOK
   8629  # (2011 - 2015).
   8630 -   name: intl.tsf.hack.atok.create_native_caret
   8631    type: bool
   8632    value: true
   8633    mirror: always
   8634 
   8635  # Whether Gecko returns available composition string rect or TS_E_NOLAYOUT
   8636  # from ITextStoreACP::GetTextExt() when the specified range is same as the
   8637  # range of composition string but some character rects in it are still
   8638  # dirty if and only if ATOK is active TIP.
   8639  # Note that this is ignored if active ATOK is or older than 2016 and
   8640  # create_native_caret is true.
   8641 -   name: intl.tsf.hack.atok.do_not_return_no_layout_error_of_composition_string
   8642    type: bool
   8643    value: true
   8644    mirror: always
   8645 
   8646  # Whether Gecko sets input scope of ATOK to "search" or never does it.
   8647  # When "search" is set to the input scope, ATOK may stop their suggestions.
   8648  # To avoid it, turn this pref on, or changing the settings in ATOK.
   8649  # Note that if you enable this pref and you use the touch keyboard for touch
   8650  # screens, you cannot access some specific features for a "search" input
   8651  # field.
   8652 -   name: intl.tsf.hack.atok.search_input_scope_disabled
   8653    type: bool
   8654    value: false
   8655    mirror: always
   8656 
   8657  # Whether Gecko returns caret rect before composition string or TS_E_NOLAYOUT
   8658  # from ITextStoreACP::GetTextExt() when the specified range is larger than
   8659  # composition start offset if and only if Free ChangJie is active TIP.
   8660 -   name: intl.tsf.hack.free_chang_jie.do_not_return_no_layout_error
   8661    type: bool
   8662    value: true
   8663    mirror: always
   8664 
   8665  # Whether Gecko returns available composition string rect or TS_E_NOLAYOUT
   8666  # from ITextStoreACP::GetTextExt() when the specified range is same as the
   8667  # range of composition string but some character rects in it are still
   8668  # dirty if and only if Japanist 10 is active TIP.
   8669 -   name: intl.tsf.hack.japanist10.do_not_return_no_layout_error_of_composition_string
   8670    type: bool
   8671    value: true
   8672    mirror: always
   8673 
   8674  # Whether Gecko returns previous character rect or TS_E_NOLAYOUT from
   8675  # ITfContextView::GetTextExt() when the specified range is the first
   8676  # character of selected clause of composition string if and only if Japanese TIP
   8677  # of Microsoft is active.
   8678 -   name: intl.tsf.hack.ms_japanese_ime.do_not_return_no_layout_error_at_first_char
   8679    type: bool
   8680    value: true
   8681    mirror: always
   8682 
   8683  # Whether Gecko returns previous character rect or TS_E_NOLAYOUT from
   8684  # ITfContextView::GetTextExt() when the specified range is the caret of
   8685  # composition string if and only if Japanese TIP of Microsoft is active.
   8686 -   name: intl.tsf.hack.ms_japanese_ime.do_not_return_no_layout_error_at_caret
   8687    type: bool
   8688    value: true
   8689    mirror: always
   8690 
   8691  # Whether Gecko returns caret rect before composition string or TS_E_NOLAYOUT
   8692  # from ITfContextView::GetTextExt() when the specified range is larger than
   8693  # composition start offset if and only Simplified Chinese TIP of Microsoft
   8694  # is active.
   8695 -   name: intl.tsf.hack.ms_simplified_chinese.do_not_return_no_layout_error
   8696    type: bool
   8697    value: true
   8698    mirror: always
   8699 
   8700  # Whether Geckos hacks ITextStoreACP::QueryInsert() or not.  The method should
   8701  # return new selection after specified length text is inserted at specified
   8702  # range.  However, Microsoft Pinyin and Microsoft Wubi expect that the result
   8703  # is same as specified range.  If following prefs are true,
   8704  # ITextStoreACP::QueryInsert() returns specified range only when one of the
   8705  # TIPs is active.
   8706 -   name: intl.tsf.hack.ms_simplified_chinese.query_insert_result
   8707    type: bool
   8708    value: true
   8709    mirror: always
   8710 
   8711  # Whether Gecko returns caret rect before composition string or TS_E_NOLAYOUT
   8712  # from ITfContextView::GetTextExt() when the specified range is larger than
   8713  # composition start offset if and only Traditional Chinese TIP of Microsoft
   8714  # is active.
   8715 -   name: intl.tsf.hack.ms_traditional_chinese.do_not_return_no_layout_error
   8716    type: bool
   8717    value: true
   8718    mirror: always
   8719 
   8720  # Whether Geckos hacks ITextStoreACP::QueryInsert() or not.  The method should
   8721  # return new selection after specified length text is inserted at specified
   8722  # range.  However, Microsoft ChangJie and Microsoft Quick expect that the
   8723  # result is same as specified range.  If following prefs are true,
   8724  # ITextStoreACP::QueryInsert() returns specified range only when one of the
   8725  # TIPs is active.
   8726 -   name: intl.tsf.hack.ms_traditional_chinese.query_insert_result
   8727    type: bool
   8728    value: true
   8729    mirror: always
   8730 
   8731  # Whether Gecko sets input scope of the URL bar to IS_DEFAULT when black
   8732  # listed IMEs are active or does not.  If you use tablet mode mainly and you
   8733  # want to use touch keyboard for URL when you set focus to the URL bar, you
   8734  # can set this to false.  Then, you'll see, e.g., ".com" key on the keyboard.
   8735  # However, if you set this to false, such IMEs set its open state to "closed"
   8736  # when you set focus to the URL bar.  I.e., input mode is automatically
   8737  # changed to English input mode.
   8738  # Known buggy IME list:
   8739  #   - Microsoft IME for Japanese
   8740  #   - Google Japanese Input
   8741  #   - Microsoft Bopomofo
   8742  #   - Microsoft ChangJie
   8743  #   - Microsoft Phonetic
   8744  #   - Microsoft Quick
   8745  #   - Microsoft New ChangJie
   8746  #   - Microsoft New Phonetic
   8747  #   - Microsoft New Quick
   8748  #   - Microsoft Pinyin
   8749  #   - Microsoft Pinyin New Experience Input Style
   8750  #   - Microsoft Wubi
   8751  #   - Microsoft IME for Korean (except on Win7)
   8752  #   - Microsoft Old Hangul
   8753 -   name: intl.ime.hack.set_input_scope_of_url_bar_to_default
   8754    type: bool
   8755    value: true
   8756    mirror: always
   8757 
   8758  # On Windows 10 Build 17643 (an Insider Preview build of RS5), Microsoft
   8759  # have fixed the caller of ITextACPStore::GetTextExt() to return
   8760  # TS_E_NOLAYOUT to TIP as-is, rather than converting to E_FAIL.
   8761  # Therefore, if TIP supports asynchronous layout computation perfectly, we
   8762  # can return TS_E_NOLAYOUT and TIP waits next OnLayoutChange()
   8763  # notification.  However, some TIPs still have some bugs of asynchronous
   8764  # layout support.  We keep hacking the result of GetTextExt() like running
   8765  # on Windows 10, however, there could be unknown TIP bugs if we stop
   8766  # hacking the result.  So, user can stop checking build ID to make Gecko
   8767  # hack the result forcibly.
   8768 -   name: intl.tsf.hack.allow_to_stop_hacking_on_build_17643_or_later
   8769    type: bool
   8770    value: @IS_EARLY_BETA_OR_EARLIER@
   8771    mirror: always
   8772 
   8773  # If true, automatically extend selection to cluster boundaries when
   8774  # TSF/TIP requests to select from/by middle of a cluster.
   8775 -   name: intl.tsf.hack.extend_setting_selection_range_to_cluster_boundaries
   8776    type: bool
   8777    value: false
   8778    mirror: always
   8779 
   8780  # Whether Gecko supports IMM even if TSF is enabled.  This pref exists
   8781  # only for check TSF behavior of new versions.  Therefore, users should
   8782  # not set this to false for daily use.
   8783 -   name: intl.tsf.support_imm
   8784    type: bool
   8785    value: true
   8786    mirror: once
   8787 
   8788  # If true, TSF and TIP (IME) can retrieve URL of the document containing
   8789  # the focused element.  When this is set to true, Gecko exposes the spec
   8790  # of the URL.
   8791  # And Gecko exposes only "http" and "https" URLs.  E.g., "data", "blob",
   8792  # "file" URLs are never exposed.
   8793 -  name: intl.tsf.expose_url.allowed
   8794   type: bool
   8795   value: true
   8796   mirror: always
   8797 
   8798  # If true, TSF and TIP (IME) can retrieve URL of the document containing
   8799  # the focused element in the private browsing mode too.
   8800 -  name: intl.tsf.expose_url_in_private_browsing.allowed
   8801   type: bool
   8802   value: false
   8803   mirror: always
   8804 
   8805 #if defined(ENABLE_TESTS)
   8806  # If true, NS_GetComplexLineBreaks compares the line breaks produced in the
   8807  # content process using the Uniscribe line breaker, with those from a
   8808  # brokered call to the parent.
   8809 -   name: intl.compare_against_brokered_complex_line_breaks
   8810    type: bool
   8811    value: false
   8812    mirror: always
   8813 #endif
   8814 #endif
   8815 
   8816 # If you use legacy Chinese IME which puts an ideographic space to composition
   8817 # string as placeholder, this pref might be useful.  If this is true and when
   8818 # web contents forcibly commits composition (e.g., moving focus), the
   8819 # ideographic space will be ignored (i.e., commits with empty string).
   8820 - name: intl.ime.remove_placeholder_character_at_commit
   8821  type: bool
   8822  value: false
   8823  mirror: always
   8824 
   8825 
   8826 #if defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK) || defined(ANDROID)
   8827 # Whether text input without keyboard press nor IME composition should cause a
   8828 # set of composition events or not.  E.g., when you use Emoji picker on macOS,
   8829 # it inserts an Emoji character directly.  If set to true, `compositionstart`,
   8830 # `compositionupdate` and `compositionend` events will be fired, and the
   8831 # correspnding `beforeinput` events are not cancelable.  Otherwise, if set to
   8832 # false, any user input events are not exposed to web apps but only
   8833 # `beforeinput` event is fired as "insert text" as a cancelable event.
   8834 - name: intl.ime.use_composition_events_for_insert_text
   8835  type: bool
   8836  value: false
   8837  mirror: always
   8838 #endif
   8839 
   8840 # If true, we use UAX14/29 compatible segmenter rules using ICU4X
   8841 - name: intl.icu4x.segmenter.enabled
   8842  type: RelaxedAtomicBool
   8843  value: true
   8844  mirror: always
   8845 
   8846 #---------------------------------------------------------------------------
   8847 # Prefs starting with "javascript."
   8848 #
   8849 # NOTE: SpiderMonkey starts up before `mirror: once` preferences are sealed and
   8850 #       we cannot use them (Bug 1698311). Instead, we use `mirror: always`
   8851 #       prefs but mark as `do_not_use_directly` and `LoadStartupJSPrefs` will
   8852 #       mirror them into SpiderMonkey.
   8853 #---------------------------------------------------------------------------
   8854 
   8855 # The JavaScript JIT compilers. These are read once on startup so a browser may
   8856 # need to be restarted if toggling them. In general each subsequent JIT depends
   8857 # on the ones before it being enabled.
   8858 - name: javascript.options.blinterp
   8859  type: bool
   8860  value: true
   8861  mirror: always  # LoadStartupJSPrefs
   8862  do_not_use_directly: true
   8863 
   8864 - name: javascript.options.baselinejit
   8865  type: bool
   8866  value: true
   8867  mirror: always  # LoadStartupJSPrefs
   8868  do_not_use_directly: true
   8869 
   8870 - name: javascript.options.ion
   8871  type: bool
   8872  value: true
   8873  mirror: always  # LoadStartupJSPrefs
   8874  do_not_use_directly: true
   8875 
   8876 # The irregexp JIT for regex evaluation.
   8877 - name: javascript.options.native_regexp
   8878  type: bool
   8879  value: true
   8880  mirror: always  # LoadStartupJSPrefs
   8881  do_not_use_directly: true
   8882 
   8883 # Jit Hints Cache - An in-process cache for the
   8884 # content process to accelerate repeated baseline
   8885 # compilations
   8886 - name: javascript.options.jithints
   8887  type: bool
   8888  value: true
   8889  mirror: always  # LoadStartupJSPrefs
   8890  do_not_use_directly: true
   8891 
   8892 # "Warm-up" thresholds at which we attempt to compile a script/function with
   8893 # the next JIT tier.
   8894 #
   8895 # NOTE: These must match JitOptions defaults.
   8896 - name: javascript.options.blinterp.threshold
   8897  type: int32_t
   8898  value: 10
   8899  mirror: always  # LoadStartupJSPrefs
   8900  do_not_use_directly: true
   8901 
   8902 - name: javascript.options.baselinejit.threshold
   8903  type: int32_t
   8904  value: 100
   8905  mirror: always  # LoadStartupJSPrefs
   8906  do_not_use_directly: true
   8907 
   8908 - name: javascript.options.ion.threshold
   8909  type: int32_t
   8910  value: 1500
   8911  mirror: always  # LoadStartupJSPrefs
   8912  do_not_use_directly: true
   8913 
   8914 # Select which OMT baseline compilation strategy to use:
   8915 #    0:  None.  Disables OMT baseline compilation entirely.
   8916 #
   8917 #    1:  On-demand only.  Only perform OMT baseline compilation
   8918 #        when needed during execution.
   8919 #
   8920 #    2:  Eager compilation only.  This will perform OMT baseline
   8921 #        compilation eagerly when JitHints and bytecode is available.
   8922 #
   8923 #    3:  Eager and on-demand.  Perform eager compilation when
   8924 #        JitHints and bytecode is available whenever possible,
   8925 #        and also perform on-demand OMT baseline compilation.
   8926 #
   8927 #    4:  Aggressive eager compilation.  This is aggressively
   8928 #        compiling all functions eagerly when bytecode is available,
   8929 #        regardless of JitHints.  Not recommended for normal use.
   8930 #
   8931 - name: javascript.options.baselinejit.offthread_compilation_strategy
   8932  type: uint32_t
   8933  value: 2
   8934  mirror: always  # LoadStartupJSPrefs
   8935 
   8936 # Enable off-main-thread Warp compilation.
   8937 - name: javascript.options.ion.offthread_compilation
   8938  type: bool
   8939  value: true
   8940  mirror: always  # LoadStartupJSPrefs
   8941  do_not_use_directly: true
   8942 
   8943 #ifdef DEBUG
   8944  # Enable extra correctness checks in the JITs that are slow and only available
   8945  # in debug builds.
   8946 -   name: javascript.options.jit.full_debug_checks
   8947    type: bool
   8948    value: false
   8949    mirror: always  # LoadStartupJSPrefs
   8950    do_not_use_directly: true
   8951 #endif
   8952 
   8953 # Heuristic threshold for Warp/Ion to decide that too many bailouts are
   8954 # happening and an IonScript should be discarded.
   8955 #
   8956 # NOTE: This must match JitOptions defaults.
   8957 - name: javascript.options.ion.frequent_bailout_threshold
   8958  type: int32_t
   8959  value: 10
   8960  mirror: always  # LoadStartupJSPrefs
   8961  do_not_use_directly: true
   8962 
   8963 # A threshold for Warp to decide whether a function can be inlined.
   8964 # If the size of a function is smaller than this threshold, then it
   8965 # may be inlined.
   8966 #
   8967 # NOTE: These must match JitOptions defaults.
   8968 - name: javascript.options.inlining_bytecode_max_length
   8969  type: uint32_t
   8970  value: 140
   8971  mirror: always
   8972  do_not_use_directly: true
   8973 
   8974 # Whether object fuses are used to optimize constant properties on the global
   8975 # object and its lexical environment object.
   8976 - name: javascript.options.objectfuse_for_global
   8977  type: bool
   8978  value: true
   8979  mirror: always
   8980  set_spidermonkey_pref: startup
   8981 
   8982 # Whether object fuses are used to optimize constant properties on builtin JS
   8983 # constructors and prototypes.
   8984 - name: javascript.options.objectfuse_for_js_builtin_ctors_protos
   8985  type: bool
   8986  value: true
   8987  mirror: always
   8988  set_spidermonkey_pref: startup
   8989 
   8990 - name: javascript.options.compact_on_user_inactive
   8991  type: bool
   8992  value: true
   8993  mirror: always
   8994 
   8995 # Determines which register allocator will be used by the Ion backend for JS and
   8996 # Wasm code. Possible values:
   8997 #
   8998 #  0: default register allocator (currently always the Backtracking allocator)
   8999 #  1: always use the Backtracking allocator
   9000 #  2: always use the Simple allocator
   9001 #  other values: same as 0
   9002 - name: javascript.options.ion.regalloc
   9003  type: uint32_t
   9004  value: 0
   9005  mirror: always
   9006  set_spidermonkey_pref: startup
   9007 
   9008 # No-op pref for testing the SpiderMonkey pref system.
   9009 - name: javascript.options.tests.uint32-pref
   9010  type: uint32_t
   9011  value: 1
   9012  mirror: always
   9013  set_spidermonkey_pref: always
   9014 
   9015 # The default amount of time to wait from the user being idle to starting a
   9016 # shrinking GC. Measured in milliseconds.
   9017 - name: javascript.options.compact_on_user_inactive_delay
   9018  type: uint32_t
   9019 #ifdef NIGHTLY_BUILD
   9020  value: 15000
   9021 #else
   9022  value: 300000
   9023 #endif
   9024  mirror: always
   9025 
   9026 # Use the realm local dom alloc site.
   9027 - name: javascript.options.dom_alloc_site
   9028  type: bool
   9029  value: true
   9030  mirror: always
   9031  set_spidermonkey_pref: always
   9032 
   9033 # Use better error message when accessing property of null or undefined.
   9034 - name: javascript.options.property_error_message_fix
   9035  type: bool
   9036  value: true
   9037  mirror: always
   9038  set_spidermonkey_pref: startup
   9039 
   9040 # Whether to expose the FinalizationRegistry.prototype.cleanupSome method.
   9041 - name: javascript.options.experimental.weakrefs.expose_cleanupSome
   9042  type: bool
   9043  value: false
   9044  mirror: always
   9045  set_spidermonkey_pref: startup
   9046 
   9047 # ShadowRealms: https://github.com/tc39/proposal-shadowrealm
   9048 - name: javascript.options.experimental.shadow_realms
   9049  # Atomic, as we assert the preference, and that assertion may happen
   9050  # in a worker.
   9051  type: RelaxedAtomicBool
   9052  value: false
   9053  mirror: always
   9054  # Non-startup pref because the WPT test harness sets prefs after startup.
   9055  set_spidermonkey_pref: always
   9056 
   9057 # Experimental support for Uint8Array base64/hex in JavaScript.
   9058 - name: javascript.options.experimental.uint8array_base64
   9059  type: bool
   9060  value: true
   9061  mirror: always
   9062  set_spidermonkey_pref: startup
   9063 
   9064 # Experimental support for Math.sumPrecise in JavaScript.
   9065 - name: javascript.options.experimental.math_sumprecise
   9066  type: bool
   9067  value: true
   9068  mirror: always
   9069  set_spidermonkey_pref: startup
   9070 
   9071  # Experimental support for Atomics.pause in JavaScript.
   9072 - name: javascript.options.experimental.atomics_pause
   9073  type: bool
   9074  value: true
   9075  mirror: always
   9076  set_spidermonkey_pref: startup
   9077 
   9078  # Experimental support for Error.isError in JavaScript.
   9079 - name: javascript.options.experimental.error_iserror
   9080  type: bool
   9081  value: true
   9082  mirror: always
   9083  set_spidermonkey_pref: always
   9084 
   9085 # Support for Atomics.waitAsync in JavaScript.
   9086 - name: javascript.options.atomics_wait_async
   9087  type: bool
   9088  value: true
   9089  mirror: always
   9090  set_spidermonkey_pref: startup
   9091 
   9092  # Experimental support for upsert in JavaScript.
   9093 - name: javascript.options.experimental.upsert
   9094  type: bool
   9095  value: true
   9096  mirror: always
   9097  set_spidermonkey_pref: startup
   9098 
   9099 # Experimental support for Symbols as WeakMap keys in JavaScript.
   9100 - name: javascript.options.experimental.symbols_as_weakmap_keys
   9101  type: bool
   9102  value: true
   9103  mirror: always
   9104  set_spidermonkey_pref: startup
   9105 
   9106  # Experimental support for Iterator Sequencing in JavaScript.
   9107 - name: javascript.options.experimental.iterator_sequencing
   9108  type: bool
   9109  value: true
   9110  mirror: always
   9111  set_spidermonkey_pref: startup
   9112 
   9113  # Experimental support for Joint Iteration in JavaScript.
   9114 - name: javascript.options.experimental.joint_iteration
   9115  type: bool
   9116  value: true
   9117  mirror: always
   9118  set_spidermonkey_pref: startup
   9119 
   9120 # Experimental support for Legacy RegExp in JavaScript.
   9121 - name: javascript.options.experimental.legacy_regexp
   9122  type: bool
   9123  value: @IS_NIGHTLY_BUILD@
   9124  mirror: always
   9125  set_spidermonkey_pref: always
   9126 
   9127 #ifdef NIGHTLY_BUILD
   9128  # Experimental support for Async Iterator Helpers in JavaScript.
   9129 -   name: javascript.options.experimental.async_iterator_helpers
   9130    type: bool
   9131    value: false
   9132    mirror: always
   9133    set_spidermonkey_pref: startup
   9134 
   9135  # Experimental support for Iterator.range in JavaScript.
   9136 -   name: javascript.options.experimental.iterator_range
   9137    type: bool
   9138    value: false
   9139    mirror: always
   9140    set_spidermonkey_pref: startup
   9141 
   9142  # Experimental support for immutable ArrayBuffers in JavaScript.
   9143 -   name: javascript.options.experimental.arraybuffer_immutable
   9144    type: bool
   9145    value: false
   9146    mirror: always
   9147    set_spidermonkey_pref: startup
   9148 
   9149  # Experimental support for import bytes in JavaScript.
   9150 - name: javascript.options.experimental.import_bytes
   9151  type: bool
   9152  value: false
   9153  mirror: always
   9154  set_spidermonkey_pref: startup
   9155 
   9156  # Experimental support for Promise.allKeyed in JavaScript.
   9157 - name: javascript.options.experimental.promise_allkeyed
   9158  type: bool
   9159  value: false
   9160  mirror: always
   9161  set_spidermonkey_pref: startup
   9162 
   9163  # Experimental support for Iterator Chunking in JavaScript.
   9164 - name: javascript.options.experimental.iterator_chunking
   9165  type: bool
   9166  value: false
   9167  mirror: always
   9168  set_spidermonkey_pref: startup
   9169 
   9170 # Experimental support for Iterator.join in JavaScript.
   9171 - name: javascript.options.experimental.iterator_join
   9172  type: bool
   9173  value: false
   9174  mirror: always
   9175  set_spidermonkey_pref: startup
   9176 
   9177  # Experimental support for WASM/EcmaScript module integration in JavaScript.
   9178 - name: javascript.options.experimental.wasm_esm_integration
   9179  type: RelaxedAtomicBool
   9180  value: false
   9181  mirror: always
   9182  set_spidermonkey_pref: startup
   9183 #endif  // NIGHTLY_BUILD
   9184 
   9185  # Capture stack traces for OOM
   9186 - name: javascript.options.experimental.capture_oom_stack_trace
   9187  type: bool
   9188  value: @IS_NIGHTLY_BUILD@
   9189  mirror: always
   9190  set_spidermonkey_pref: startup
   9191 
   9192 # Whether to Baseline-compile self-hosted functions the first time they are
   9193 # used and cache the result.
   9194 - name: javascript.options.experimental.self_hosted_cache
   9195  type: bool
   9196  value: false
   9197  mirror: always
   9198  set_spidermonkey_pref: startup
   9199 
   9200  # Experimental support for Temporal in JavaScript.
   9201 - name: javascript.options.experimental.temporal
   9202  type: bool
   9203  value: true
   9204  mirror: always
   9205  set_spidermonkey_pref: startup
   9206 
   9207 #ifdef ENABLE_EXPLICIT_RESOURCE_MANAGEMENT
   9208  # Experimental support for Explicit Resource Management in JavaScript.
   9209 -   name: javascript.options.experimental.explicit_resource_management
   9210    type: bool
   9211    value: true
   9212    mirror: always
   9213    set_spidermonkey_pref: always
   9214 #endif  // ENABLE_EXPLICIT_RESOURCE_MANAGEMENT
   9215 
   9216 - name: javascript.options.experimental.error_capture_stack_trace
   9217  type: bool
   9218  value: true
   9219  mirror: always
   9220  set_spidermonkey_pref: always
   9221 
   9222 # Dictionary Teleporting
   9223 - name: javascript.options.experimental.dictionary_teleporting
   9224  type: bool
   9225  value: true
   9226  mirror: always
   9227  set_spidermonkey_pref: always
   9228 
   9229 - name: javascript.options.wasm_caching
   9230  type: bool
   9231  value: true
   9232  mirror: always
   9233 
   9234 # The amount of time we wait between a request to GC (due to leaving a page) and doing the actual GC, in ms.
   9235 - name: javascript.options.gc_delay
   9236  type: uint32_t
   9237  value: 4000
   9238  mirror: always
   9239 
   9240 # The amount of time we wait from the first request to GC to actually doing the first GC, in ms.
   9241 - name: javascript.options.gc_delay.first
   9242  type: uint32_t
   9243  value: 10000
   9244  mirror: always
   9245 
   9246 # After doing a zonal GC, wait this much time (in ms) and then do a full GC,
   9247 # unless one is already pending.
   9248 - name: javascript.options.gc_delay.full
   9249  type: uint32_t
   9250  value: 60000
   9251  mirror: always
   9252 
   9253 # Maximum amount of time that should elapse between incremental GC slices, in ms.
   9254 - name: javascript.options.gc_delay.interslice
   9255  type: uint32_t
   9256  value: 250
   9257  mirror: always
   9258 
   9259 # nsJSEnvironmentObserver observes the memory-pressure notifications and
   9260 # forces a garbage collection and cycle collection when it happens, if the
   9261 # appropriate pref is set.
   9262 - name: javascript.options.gc_on_memory_pressure
   9263  type: bool
   9264  # Disable the JS engine's GC on memory pressure on Android for now to continue investigating its
   9265  # performance impacts and then decide to enable it or not.
   9266  # See bug 1450787.
   9267  value: @IS_NOT_ANDROID@
   9268  mirror: always
   9269 
   9270 # We allow at most MIN(max, MAX(NUM_CPUS / cpu_divisor, 1)) concurrent GCs
   9271 # between processes
   9272 - name: javascript.options.concurrent_multiprocess_gcs.cpu_divisor
   9273  type: RelaxedAtomicUint32
   9274  value: 4
   9275  mirror: always
   9276 
   9277 # See 'cpu_divisor' above, 0 means UINT_32_MAX.
   9278 - name: javascript.options.concurrent_multiprocess_gcs.max
   9279  type: RelaxedAtomicUint32
   9280  value: 0
   9281  mirror: always
   9282 
   9283 - name: javascript.options.mem.log
   9284  type: bool
   9285  value: false
   9286  mirror: always
   9287 
   9288 - name: javascript.options.mem.notify
   9289  type: bool
   9290  value: false
   9291  mirror: always
   9292 
   9293 # Whether the Parent process allocates and shares memory with all content
   9294 # processes. This is mirrored once, as the parent process will do this
   9295 # allocation early on.
   9296 - name: javascript.options.self_hosted.use_shared_memory
   9297  type: bool
   9298  value: true
   9299  mirror: always  # LoadStartupJSPrefs
   9300  do_not_use_directly: true
   9301 
   9302 - name: javascript.options.main_thread_stack_quota_cap
   9303  type: uint32_t
   9304 #if defined(MOZ_ASAN)
   9305  value: 6 * 1024 * 1024
   9306 #else
   9307  value: 2 * 1024 * 1024
   9308 #endif
   9309  mirror: always
   9310 
   9311 - name: javascript.options.wasm_trace_api
   9312  type: bool
   9313  value: false
   9314  mirror: always
   9315  set_spidermonkey_pref: always
   9316 
   9317 - name: javascript.options.wasm_exception_force_stack_trace
   9318  type: bool
   9319  value: false
   9320  mirror: always
   9321  set_spidermonkey_pref: always
   9322 
   9323 - name: javascript.options.wasm_disable_huge_memory
   9324  type: bool
   9325  value: false
   9326  mirror: always
   9327  set_spidermonkey_pref: startup
   9328 
   9329 - name: javascript.options.wasm_optimizingjit
   9330  type: bool
   9331  value: true
   9332  mirror: always
   9333 
   9334 -   name: javascript.options.wasm_relaxed_simd
   9335    type: bool
   9336 #if defined(ENABLE_WASM_RELAXED_SIMD)
   9337    value: true
   9338 #else
   9339    value: false
   9340 #endif
   9341    mirror: always
   9342    set_spidermonkey_pref: always
   9343 
   9344 -   name: javascript.options.wasm_moz_intgemm
   9345    type: bool
   9346 #if defined(ENABLE_WASM_MOZ_INTGEMM)
   9347    value: @IS_NIGHTLY_BUILD@
   9348 #else
   9349    value: false
   9350 #endif
   9351    mirror: always
   9352    set_spidermonkey_pref: startup
   9353 
   9354 -   name: javascript.options.wasm_memory_control
   9355    type: bool
   9356    value: false
   9357    mirror: always
   9358    set_spidermonkey_pref: always
   9359 
   9360 -   name: javascript.options.wasm_branch_hinting
   9361    type: bool
   9362 #if defined(ENABLE_WASM_BRANCH_HINTING)
   9363    value: true
   9364 #else
   9365    value: false
   9366 #endif
   9367    mirror: always
   9368    set_spidermonkey_pref: always
   9369 
   9370 -   name: javascript.options.wasm_custom_page_sizes
   9371    type: bool
   9372    value: false
   9373    mirror: always
   9374    set_spidermonkey_pref: startup
   9375 
   9376 #if defined(ENABLE_WASM_SIMD)
   9377 #if defined(JS_CODEGEN_X64) || defined(JS_CODEGEN_X86)
   9378  # Enables AVX instructions support on X86/X64 platforms.
   9379  # Changing these prefs requires a restart.
   9380 -   name: javascript.options.wasm_simd_avx
   9381    type: bool
   9382    value: true
   9383    mirror: always
   9384    set_spidermonkey_pref: startup
   9385 #endif
   9386 #endif
   9387 
   9388 -   name: javascript.options.wasm_js_promise_integration
   9389    type: bool
   9390    value: false
   9391    mirror: always
   9392    set_spidermonkey_pref: always
   9393 
   9394 -   name: javascript.options.wasm_test_serialization
   9395    type: bool
   9396    value: false
   9397    mirror: always
   9398    set_spidermonkey_pref: always
   9399 
   9400 # Enables lazy tiering for wasm modules that have a GC type defined in them.
   9401 # Use wasm_lazy_tiering to enable it for any module.
   9402 -   name: javascript.options.wasm_lazy_tiering_for_gc
   9403    type: bool
   9404    value: true
   9405    mirror: always
   9406    set_spidermonkey_pref: always
   9407 
   9408 # Enables lazy tiering for all modules. Use wasm_lazy_tiering_for_gc to only
   9409 # enable this for GC modules.
   9410 -   name: javascript.options.wasm_lazy_tiering
   9411    type: bool
   9412    value: true
   9413    mirror: always
   9414    set_spidermonkey_pref: always
   9415 
   9416 # Aggressiveness of lazy tiering, allowable: 1 .. 9
   9417 # 1 = min (almost never, set tiering threshold to max possible, == 2^31-1)
   9418 # 9 = max (request tier up at first call, set tiering threshold to zero)
   9419 - name: javascript.options.wasm_lazy_tiering_level
   9420  type: uint32_t
   9421  value: 5
   9422  mirror: always
   9423  set_spidermonkey_pref: always
   9424 
   9425 # Forces lazy tiering to synchronously compile instead of using a background
   9426 # thread.
   9427 - name: javascript.options.wasm_lazy_tiering_synchronous
   9428  type: bool
   9429  value: false
   9430  mirror: always
   9431  set_spidermonkey_pref: always
   9432 
   9433 # Aggressiveness of inlining (regardless of call kind), allowable: 1 .. 9
   9434 - name: javascript.options.wasm_inlining_level
   9435  type: uint32_t
   9436  value: 5
   9437  mirror: always
   9438  set_spidermonkey_pref: always
   9439 
   9440 # Are wasm direct calls (within same Instance) candidates for inlining?
   9441 - name: javascript.options.wasm_direct_inlining
   9442  type: bool
   9443  value: true
   9444  mirror: always
   9445  set_spidermonkey_pref: always
   9446 
   9447 # Are wasm call_ref calls (within same Instance) candidates for inlining?
   9448 - name: javascript.options.wasm_call_ref_inlining
   9449  type: bool
   9450  value: true
   9451  mirror: always
   9452  set_spidermonkey_pref: always
   9453 
   9454 # When selecting call_ref targets for speculative inlining, this is the minimum
   9455 # percentage of the total number of calls from the call site that a candidate
   9456 # set of targets must collectively have in order to be elegible for inlining.
   9457 # Allowable: 10 .. 100 (%).  Setting it (eg) 75 means the targets must collectively
   9458 # be 75% of all observed calls to be considered for inlining.  Probably unwise to
   9459 # let this be much below 40.
   9460 - name: javascript.options.wasm_call_ref_inlining_percent
   9461  type: uint32_t
   9462  value: 40
   9463  mirror: always
   9464  set_spidermonkey_pref: always
   9465 
   9466 # Support for wasm loop unrolling and peeling in wasm-via-Ion.  This enables
   9467 # both unrolling and peeling.
   9468 - name: javascript.options.wasm_unroll_loops
   9469  type: bool
   9470  value: true
   9471  mirror: always
   9472  set_spidermonkey_pref: always
   9473 
   9474 # The number of times a loop is unrolled, not counting the peeled iteration.
   9475 # Minimum is 2 -- otherwise we're not unrolling at all.  From testing with
   9476 # JetStream3 (wasm tests), it's hard to get consistently better performance
   9477 # than simply by unrolling by 3, regardless of loop size.
   9478 - name: javascript.options.wasm_unroll_factor
   9479  type: uint32_t
   9480  value: 3
   9481  mirror: always
   9482  set_spidermonkey_pref: always
   9483 
   9484 # Support for pretenuring allocations based on their allocation site.
   9485 - name: javascript.options.site_based_pretenuring
   9486  type: bool
   9487  value: true
   9488  mirror: always
   9489  do_not_use_directly: true
   9490  set_spidermonkey_pref: startup
   9491 
   9492 #if defined(DEBUG) || defined(NIGHTLY_BUILD) || defined(JS_GC_ZEAL)
   9493 # Enable extra poisoning of GC memory.
   9494 - name: javascript.options.extra_gc_poisoning
   9495  type: bool
   9496 #ifdef DEBUG
   9497  value: true
   9498 #else
   9499  value: false
   9500 #endif
   9501  mirror: always
   9502  set_spidermonkey_pref: startup
   9503 #endif
   9504 
   9505 #if !defined(JS_CODEGEN_MIPS64) && !defined(JS_CODEGEN_LOONG64)
   9506  # Spectre security vulnerability mitigations for the JS JITs.
   9507  #
   9508  # NOTE: The MIPS and LoongArch backends do not support these mitigations (and generally
   9509  #       do not need them). In that case, leave the pref unlisted with its
   9510  #       default value of false.
   9511 -   name: javascript.options.spectre.index_masking
   9512    type: bool
   9513    value: true
   9514    mirror: always  # LoadStartupJSPrefs
   9515    do_not_use_directly: true
   9516 
   9517 -   name: javascript.options.spectre.object_mitigations
   9518    type: bool
   9519    value: true
   9520    mirror: always  # LoadStartupJSPrefs
   9521    do_not_use_directly: true
   9522 
   9523 -   name: javascript.options.spectre.string_mitigations
   9524    type: bool
   9525    value: true
   9526    mirror: always  # LoadStartupJSPrefs
   9527    do_not_use_directly: true
   9528 
   9529 -   name: javascript.options.spectre.value_masking
   9530    type: bool
   9531    value: true
   9532    mirror: always  # LoadStartupJSPrefs
   9533    do_not_use_directly: true
   9534 
   9535 -   name: javascript.options.spectre.jit_to_cxx_calls
   9536    type: bool
   9537    value: false
   9538    mirror: always  # LoadStartupJSPrefs
   9539    do_not_use_directly: true
   9540 #endif  // !defined(JS_CODEGEN_MIPSXX) && !defined(JS_CODEGEN_LOONG64)
   9541 
   9542 # Separate pref to override the values of the Spectre-related prefs above for
   9543 # isolated web content processes, where we don't need these mitigations.
   9544 - name: javascript.options.spectre.disable_for_isolated_content
   9545  type: bool
   9546  value: true
   9547  mirror: always
   9548 
   9549 # Whether the W^X policy is enforced to mark JIT code pages as either writable
   9550 # or executable but never both at the same time. OpenBSD defaults to W^X.
   9551 - name: javascript.options.content_process_write_protect_code
   9552  type: bool
   9553 #if defined(XP_OPENBSD)
   9554  value: true
   9555 #else
   9556  value: false
   9557 #endif
   9558  mirror: always
   9559 
   9560 # Whether to use the XPCOM thread pool for JS helper tasks.
   9561 - name: javascript.options.external_thread_pool
   9562  type: bool
   9563  value: true
   9564  mirror: always
   9565  do_not_use_directly: true
   9566 
   9567 # Use the JS microtask queue for Promise jobs and other microtasks.
   9568 - name: javascript.options.use_js_microtask_queue
   9569  type: RelaxedAtomicBool
   9570  value: true
   9571  # Changing this mid process will break invariants and crash, however
   9572  # making this mirror: once, and set_spidermonkey_pref: startup is
   9573  # broken: See Bug 1989094
   9574  mirror: always
   9575  set_spidermonkey_pref: always
   9576 
   9577 # Whether to use the off-thread script compilation and decoding.
   9578 - name: javascript.options.parallel_parsing
   9579  type: bool
   9580  value: true
   9581  mirror: always
   9582 
   9583 # Whether to use fdlibm for Math.sin, Math.cos, and Math.tan. When
   9584 # privacy.resistFingerprinting is true, this pref is ignored and fdlibm is used
   9585 # anyway.
   9586 - name: javascript.options.use_fdlibm_for_sin_cos_tan
   9587  type: bool
   9588 #if defined(XP_WIN)
   9589  value: false
   9590 #else
   9591  value: true
   9592 #endif
   9593  mirror: always
   9594  set_spidermonkey_pref: always
   9595 
   9596 
   9597 # Whether to treat "ducktyped" error objects like `{message: "<message>", fileName: "foo", lineNumber: 1}`
   9598 # as real Error objects during exception handling.
   9599 - name: javascript.options.ducktyped_errors
   9600  type: bool
   9601  value: false
   9602  mirror: always
   9603  set_spidermonkey_pref: always
   9604 
   9605 # Whether to support parsing '//(#@) source(Mapping)?URL=' pragmas.
   9606 - name: javascript.options.source_pragmas
   9607  type: bool
   9608  value: true
   9609  mirror: always
   9610 
   9611 # asm.js
   9612 - name: javascript.options.asmjs
   9613  type: bool
   9614  value: false
   9615  mirror: always
   9616 
   9617 # Whether to throw a TypeError if asm.js code hits validation failure.
   9618 - name: javascript.options.throw_on_asmjs_validation_failure
   9619  type: bool
   9620  value: false
   9621  mirror: always
   9622 
   9623 # Whether to show a warning if asm.js is used.
   9624 - name: javascript.options.warn_asmjs_deprecation
   9625  type: bool
   9626  value: true
   9627  mirror: always
   9628  set_spidermonkey_pref: always
   9629 
   9630 # Whether to disable the jit within the main process
   9631 - name: javascript.options.main_process_disable_jit
   9632  type: bool
   9633 #ifdef XP_IOS
   9634  value: true
   9635 #else
   9636  value: false
   9637 #endif
   9638  mirror: always
   9639 
   9640 #---------------------------------------------------------------------------
   9641 # Prefs starting with "layers."
   9642 #---------------------------------------------------------------------------
   9643 
   9644 # Whether to disable acceleration for all widgets.
   9645 - name: layers.acceleration.disabled
   9646  type: bool
   9647  value: false
   9648  mirror: once
   9649  do_not_use_directly: true
   9650 # Instead, use gfxConfig::IsEnabled(Feature::HW_COMPOSITING).
   9651 
   9652 # Whether to force acceleration on, ignoring blacklists.
   9653 - name: layers.acceleration.force-enabled
   9654  type: bool
   9655  value: false
   9656  mirror: once
   9657  do_not_use_directly: true
   9658 
   9659 # Whether we allow AMD switchable graphics.
   9660 - name: layers.amd-switchable-gfx.enabled
   9661  type: bool
   9662  value: true
   9663  mirror: once
   9664 
   9665 # Whether to use async panning and zooming.
   9666 - name: layers.async-pan-zoom.enabled
   9667  type: bool
   9668  value: true
   9669  mirror: once
   9670  do_not_use_directly: true
   9671 
   9672 #ifdef XP_WIN
   9673 - name: layers.d3d11.force-warp
   9674  type: bool
   9675  value: false
   9676  mirror: once
   9677 
   9678 - name: layers.d3d11.enable-blacklist
   9679  type: bool
   9680  value: true
   9681  mirror: once
   9682 #endif
   9683 
   9684 # Enable DEAA antialiasing for transformed layers in the compositor.
   9685 - name: layers.deaa.enabled
   9686  type: RelaxedAtomicBool
   9687 #if defined(MOZ_WIDGET_ANDROID)
   9688  value: false
   9689 #else
   9690  value: true
   9691 #endif
   9692  mirror: always
   9693 
   9694 # Force all possible layers to be always active layers.
   9695 - name: layers.force-active
   9696  type: bool
   9697  value: false
   9698  mirror: always
   9699 
   9700 - name: layers.draw-mask-debug
   9701  type: RelaxedAtomicBool
   9702  value: false
   9703  mirror: always
   9704 
   9705 - name: layers.force-synchronous-resize
   9706  type: RelaxedAtomicBool
   9707 #ifdef MOZ_WAYLAND
   9708  # We want to control it by nsWindow::SynchronouslyRepaintOnResize() on Linux/Wayland.
   9709  value: false
   9710 #else
   9711  value: true
   9712 #endif
   9713  mirror: always
   9714 
   9715 # If true, allow the parent process as a fallback for compositing due to an
   9716 # unstable GPU process, otherwise simply crash the parent process.
   9717 - name: layers.gpu-process.allow-fallback-to-parent
   9718  type: bool
   9719  value: @IS_NOT_NIGHTLY_BUILD@
   9720  mirror: once
   9721 
   9722 - name: layers.gpu-process.enabled
   9723  type: bool
   9724 #if defined(XP_WIN) || defined(MOZ_WIDGET_ANDROID) || defined(XP_MACOSX)
   9725  value: true
   9726 #elif defined(MOZ_X11)
   9727  value: false  # we'd like this to be @IS_NIGHTLY_BUILD@, see Bug 1927058
   9728 #else
   9729  value: false
   9730 #endif
   9731  mirror: once
   9732 
   9733 # If true, when the process is in the background, we refuse to launch the GPU
   9734 # process and instead fail with a temporary error that we can recover from when
   9735 # we enter the foreground and the GPU process launches.
   9736 - name: layers.gpu-process.launch-in-background
   9737  type: bool
   9738  value: @IS_NOT_ANDROID@
   9739  mirror: always
   9740 
   9741 # On Mac, enables using the `<Brand> GPU Helper` executable as the
   9742 # GPU child process instead of the plugin-container executable. This does
   9743 # not control if a GPU process is used. It controls which executable the GPU
   9744 # process runs in on macOS when it is enabled.
   9745 #if defined(XP_MACOSX)
   9746 -   name: layers.gpu-process-executable.enabled
   9747    type: RelaxedAtomicBool
   9748    value: true
   9749    mirror: always
   9750 #endif
   9751 
   9752 - name: layers.gpu-process.force-enabled
   9753  type: bool
   9754  value: false
   9755  mirror: once
   9756 
   9757 - name: layers.gpu-process.ipc_reply_timeout_ms
   9758  type: int32_t
   9759  value: 10000
   9760  mirror: once
   9761 
   9762 - name: layers.gpu-process.extend_ipc_reply_timeout_ms
   9763  type: int32_t
   9764  value: 20000
   9765  mirror: once
   9766 
   9767 # How many additional attempts to launch the GPU process we try if we fail
   9768 # during process launch, before any configuration is attempted.
   9769 - name: layers.gpu-process.max_launch_attempts
   9770  type: RelaxedAtomicInt32
   9771  value: 2
   9772  mirror: always
   9773 
   9774 # How many unstable GPU process restarts we allow for a given configuration.
   9775 - name: layers.gpu-process.max_restarts
   9776  type: RelaxedAtomicInt32
   9777  value: 6
   9778  mirror: always
   9779 
   9780 # How many frames we must render before declaring the GPU process stable, and
   9781 # allow restarts without it counting against our maximum restarts.
   9782 - name: layers.gpu-process.stable.frame-threshold
   9783  type: RelaxedAtomicUint32
   9784  value: 10
   9785  mirror: always
   9786 
   9787 # How many milliseconds the GPU process must have lived before we accept that
   9788 # it is stable, and allow restarts without it counting against our maximum
   9789 # restarts.
   9790 - name: layers.gpu-process.stable.min-uptime-ms
   9791  type: RelaxedAtomicInt32
   9792  value: 30000
   9793  mirror: always
   9794 
   9795 # Note: This pref will only be used if it is less than layers.gpu-process.max_restarts.
   9796 - name: layers.gpu-process.max_restarts_with_decoder
   9797  type: RelaxedAtomicInt32
   9798  value: 0
   9799  mirror: always
   9800 
   9801 - name: layers.gpu-process.startup_timeout_ms
   9802  type: int32_t
   9803  value: 10000
   9804  mirror: once
   9805 
   9806 - name: layers.gpu-process.crash-also-crashes-browser
   9807  type: bool
   9808  value: false
   9809  mirror: always
   9810 
   9811 # Whether to animate simple opacity and transforms on the compositor.
   9812 - name: layers.offmainthreadcomposition.async-animations
   9813  type: bool
   9814  value: true
   9815  mirror: always
   9816 
   9817 # Whether to log information about off main thread animations to stderr.
   9818 - name: layers.offmainthreadcomposition.log-animations
   9819  type: bool
   9820  value: false
   9821  mirror: always
   9822 
   9823 - name: layers.offmainthreadcomposition.force-disabled
   9824  type: bool
   9825  value: false
   9826  mirror: once
   9827 
   9828 # Compositor target frame rate. NOTE: If vsync is enabled the compositor
   9829 # frame rate will still be capped.
   9830 # -1 -> default (match layout.frame_rate or 60 FPS)
   9831 # 0  -> full-tilt mode: Recomposite even if not transaction occured.
   9832 - name: layers.offmainthreadcomposition.frame-rate
   9833  type: RelaxedAtomicInt32
   9834  value: -1
   9835  mirror: always
   9836 
   9837 #ifdef XP_WIN
   9838 -   name: layers.prefer-opengl
   9839    type: bool
   9840    value: false
   9841    mirror: once
   9842 #endif
   9843 
   9844 # Copy-on-write canvas.
   9845 - name: layers.shared-buffer-provider.enabled
   9846  type: RelaxedAtomicBool
   9847  value: true
   9848  mirror: always
   9849 
   9850 - name: layers.recycle-allocator-rdd
   9851  type: bool
   9852  value: true
   9853  mirror: once
   9854 
   9855 #ifdef XP_DARWIN
   9856 - name: layers.iosurfaceimage.recycle-limit
   9857  type: RelaxedAtomicUint32
   9858  value: 15
   9859  mirror: always
   9860 #endif
   9861 
   9862 #---------------------------------------------------------------------------
   9863 # Prefs starting with "layout."
   9864 #---------------------------------------------------------------------------
   9865 
   9866 # Debug-only pref to force enable the AccessibleCaret. If you want to
   9867 # control AccessibleCaret by mouse, you'll need to set
   9868 # "layout.accessiblecaret.hide_carets_for_mouse_input" to false.
   9869 - name: layout.accessiblecaret.enabled
   9870  type: bool
   9871  value: false
   9872  mirror: always
   9873 
   9874 # Enable the accessible caret on platforms/devices
   9875 # that we detect have touch support. Note that this pref is an
   9876 # additional way to enable the accessible carets, rather than
   9877 # overriding the layout.accessiblecaret.enabled pref.
   9878 - name: layout.accessiblecaret.enabled_on_touch
   9879  type: bool
   9880  value: true
   9881  mirror: always
   9882 
   9883 # By default, carets become tilt only when they are overlapping.
   9884 - name: layout.accessiblecaret.always_tilt
   9885  type: bool
   9886  value: false
   9887  mirror: always
   9888 
   9889 # Show caret in cursor mode when long tapping on an empty content. This
   9890 # also changes the default update behavior in cursor mode, which is based
   9891 # on the emptiness of the content, into something more heuristic. See
   9892 # AccessibleCaretManager::UpdateCaretsForCursorMode() for the details.
   9893 - name: layout.accessiblecaret.caret_shown_when_long_tapping_on_empty_content
   9894  type: bool
   9895  value: false
   9896  mirror: always
   9897 
   9898 # 0 = by default, always hide carets for selection changes due to JS calls.
   9899 # 1 = update any visible carets for selection changes due to JS calls,
   9900 #     but don't show carets if carets are hidden.
   9901 # 2 = always show carets for selection changes due to JS calls.
   9902 - name: layout.accessiblecaret.script_change_update_mode
   9903  type: int32_t
   9904  value: 0
   9905  mirror: always
   9906 
   9907 # Allow one caret to be dragged across the other caret without any limitation.
   9908 # This matches the built-in convention for all desktop platforms.
   9909 - name: layout.accessiblecaret.allow_dragging_across_other_caret
   9910  type: bool
   9911  value: true
   9912  mirror: always
   9913 
   9914 # Optionally provide haptic feedback on long-press selection events.
   9915 - name: layout.accessiblecaret.hapticfeedback
   9916  type: bool
   9917  value: false
   9918  mirror: always
   9919 
   9920 # Smart phone-number selection on long-press is not enabled by default.
   9921 - name: layout.accessiblecaret.extend_selection_for_phone_number
   9922  type: bool
   9923  value: false
   9924  mirror: always
   9925 
   9926 # Keep the accessible carets hidden when the user is using mouse input (as
   9927 # opposed to touch/pen/etc.).
   9928 - name: layout.accessiblecaret.hide_carets_for_mouse_input
   9929  type: bool
   9930  value: true
   9931  mirror: always
   9932 
   9933 # CSS attributes (width, height, margin-left) of the AccessibleCaret in CSS
   9934 # pixels.
   9935 - name: layout.accessiblecaret.width
   9936  type: float
   9937  value: 34.0f
   9938  mirror: always
   9939 
   9940 - name: layout.accessiblecaret.height
   9941  type: float
   9942  value: 36.0f
   9943  mirror: always
   9944 
   9945 - name: layout.accessiblecaret.margin-left
   9946  type: float
   9947  value: -18.5f
   9948  mirror: always
   9949 
   9950 - name: layout.accessiblecaret.transition-duration
   9951  type: float
   9952  value: 250.0f
   9953  mirror: always
   9954 
   9955 # Simulate long tap events to select words. Mainly used in manual testing
   9956 # with mouse.
   9957 - name: layout.accessiblecaret.use_long_tap_injector
   9958  type: bool
   9959  value: false
   9960  mirror: always
   9961 
   9962 # To support magnify glass, whether we dispatch additional chrome event such as
   9963 # dragcaret.
   9964 - name: layout.accessiblecaret.magnifier.enabled
   9965  type: bool
   9966  value: @IS_ANDROID@
   9967  mirror: always
   9968 
   9969 # One of several prefs affecting the maximum area to pre-render when animating
   9970 # a large element on the compositor.
   9971 # This pref enables transform (and transform like properties) animations on a
   9972 # large element run on the compositor with rendering partial area of the
   9973 # element on the main thread instead of rendering the whole area.  Once the
   9974 # animation tried to composite out of the partial rendered area, the animation
   9975 # is rendered again with the latest visible partial area.
   9976 - name: layout.animation.prerender.partial
   9977  type: RelaxedAtomicBool
   9978  value: false
   9979  mirror: always
   9980 
   9981 # One of several prefs affecting the maximum area to pre-render when animating
   9982 # a large element on the compositor.
   9983 # This value is applied to both x and y axes and a perfect square contructed
   9984 # by the greater axis value which will be capped by the absolute limits is used
   9985 # for the partial pre-render area.
   9986 - name: layout.animation.prerender.viewport-ratio-limit
   9987  type: AtomicFloat
   9988  value: 1.125f
   9989  mirror: always
   9990 
   9991 # One of several prefs affecting the maximum area to pre-render when animating
   9992 # a large element on the compositor.
   9993 - name: layout.animation.prerender.absolute-limit-x
   9994  type: RelaxedAtomicUint32
   9995  value: 4096
   9996  mirror: always
   9997 
   9998 # One of several prefs affecting the maximum area to pre-render when animating
   9999 # a large element on the compositor.
  10000 - name: layout.animation.prerender.absolute-limit-y
  10001  type: RelaxedAtomicUint32
  10002  value: 4096
  10003  mirror: always
  10004 
  10005 # Test-only pref, if this is true, partial pre-rendered transform animations
  10006 # get stuck when it reaches to the pre-rendered boundaries and the pre-render
  10007 # region is never updated.
  10008 - name: layout.animation.prerender.partial.jank
  10009  type: RelaxedAtomicBool
  10010  value: false
  10011  mirror: always
  10012 
  10013 # Whether to enable CSS Anchor Positioning support.
  10014 # https://drafts.csswg.org/css-anchor-position-1/
  10015 - name: layout.css.anchor-positioning.enabled
  10016  type: RelaxedAtomicBool
  10017  value: true
  10018  mirror: always
  10019  rust: true
  10020 
  10021 # Whether to enable position-try-order
  10022 - name: layout.css.anchor-positioning.position-try-order.enabled
  10023  type: RelaxedAtomicBool
  10024  value: true
  10025  mirror: always
  10026  rust: true
  10027 
  10028 # Whether to enable generalized CSS Attr Support. If this pref is set to false
  10029 # we treat attr as a regular function with support only for the `content` css
  10030 # property. If it is set to true, attr is parsed as a subtitution function.
  10031 # https://drafts.csswg.org/css-values-5/#attr-notation
  10032 - name: layout.css.attr.enabled
  10033  type: RelaxedAtomicBool
  10034  value: false
  10035  mirror: always
  10036  rust: true
  10037 
  10038 # Whether to enable CSS @custom-media
  10039 # https://drafts.csswg.org/mediaqueries-5/
  10040 # TODO(emilio): Needs more tests before enabling.
  10041 - name: layout.css.custom-media.enabled
  10042  type: RelaxedAtomicBool
  10043  value: false
  10044  mirror: always
  10045  rust: true
  10046 
  10047 # Whether to enable CSS Module Scripts support.
  10048 # https://html.spec.whatwg.org/#creating-a-css-module-script
  10049 - name: layout.css.module-scripts.enabled
  10050  type: RelaxedAtomicBool
  10051  value: true
  10052  mirror: always
  10053 
  10054 # Override DPI. A value of -1 means use the maximum of 96 and the system DPI.
  10055 # A value of 0 means use the system DPI. A positive value is used as the DPI.
  10056 # This sets the physical size of a device pixel and thus controls the
  10057 # interpretation of physical units such as "pt".
  10058 - name: layout.css.dpi
  10059  type: int32_t
  10060  value: -1
  10061  mirror: always
  10062 
  10063 # Whether to always underline links.
  10064 - name: layout.css.always_underline_links
  10065  type: RelaxedAtomicBool
  10066  value: false
  10067  mirror: always
  10068  rust: true
  10069 
  10070 # Whether @starting-style is enabled?
  10071 - name: layout.css.starting-style-at-rules.enabled
  10072  type: RelaxedAtomicBool
  10073  value: true
  10074  mirror: always
  10075  rust: true
  10076 
  10077 # Whether style() container queries are enabled
  10078 - name: layout.css.style-queries.enabled
  10079  type: RelaxedAtomicBool
  10080  value: false
  10081  mirror: always
  10082  rust: true
  10083 
  10084 # Should we look for counter ancestor scopes first?
  10085 - name: layout.css.counter-ancestor-scope.enabled
  10086  type: bool
  10087  value: true
  10088  mirror: always
  10089 
  10090 # Whether the `-moz-control-character-visibility` property is exposed to
  10091 # content.
  10092 #
  10093 # Only for testing purposes.
  10094 - name: layout.css.moz-control-character-visibility.enabled
  10095  type: RelaxedAtomicBool
  10096  value: false
  10097  mirror: always
  10098  rust: true
  10099 
  10100 # Whether the `-moz-appearance` property is exposed to content.
  10101 - name: layout.css.moz-appearance.enabled
  10102  type: RelaxedAtomicBool
  10103  value: true
  10104  mirror: always
  10105  rust: true
  10106 
  10107 # Whether the `-moz-appearance` property is exposed to CSSStyleProperties.
  10108 - name: layout.css.moz-appearance.webidl.enabled
  10109  type: RelaxedAtomicBool
  10110  value: false
  10111  mirror: always
  10112 
  10113 # Controls the transparency of the initial about:blank document. Generally you
  10114 # don't ever want a white flash in dark mode, but due to backwards compat we
  10115 # have some extra control over this, for now at least.
  10116 #
  10117 # See https://github.com/w3c/csswg-drafts/issues/9624 for iframes.
  10118 #
  10119 # Values:
  10120 #  1: content-inaccessible top-level only.
  10121 #  2: frames and content-inaccessible top-level only.
  10122 #  3: always
  10123 #  Others: don't treat this document specially.
  10124 - name: layout.css.initial-document-transparency
  10125  type: RelaxedAtomicInt32
  10126  value: 3
  10127  mirror: always
  10128 
  10129 # The minimum contrast ratio between the accent color background and white.
  10130 #
  10131 # We don't use this for text, so we need a contrast of at least AA (for user
  10132 # interface components and graphical objects), which per WCAG is 3:1.
  10133 #
  10134 # However that causes some colors that are realistically fine to get darkened,
  10135 # so we lower it a little bit. Eventually we should maybe use something like
  10136 # APCA or so perhaps, see:
  10137 #
  10138 #  * https://ruitina.com/apca-accessible-colour-contrast/
  10139 #  * https://github.com/w3c/csswg-drafts/issues/7937
  10140 #
  10141 # See also:
  10142 #
  10143 #  * https://accent-color.glitch.me/
  10144 #
  10145 # For testing this.
  10146 - name: layout.css.accent-color.min-contrast-ratio
  10147  type: AtomicFloat
  10148  value: 2.4
  10149  mirror: always
  10150 
  10151 # The target contrast ratio between the accent color foreground and background
  10152 # colors when darkening.
  10153 #
  10154 # We aim a bit further than the minimum contrast ratio, which seems to provide
  10155 # nice results in practice.
  10156 - name: layout.css.accent-color.darkening-target-contrast-ratio
  10157  type: AtomicFloat
  10158  value: 6.0
  10159  mirror: always
  10160 
  10161 # Is the codepath for using cached scrollbar styles enabled?
  10162 - name: layout.css.cached-scrollbar-styles.enabled
  10163  type: bool
  10164  value: true
  10165  mirror: always
  10166 
  10167 # Are implicit tracks in computed grid templates serialized?
  10168 - name: layout.css.serialize-grid-implicit-tracks
  10169  type: RelaxedAtomicBool
  10170  value: true
  10171  mirror: always
  10172 
  10173 # Whether the system-ui generic family is enabled.
  10174 - name: layout.css.system-ui.enabled
  10175  type: RelaxedAtomicBool
  10176  value: true
  10177  mirror: always
  10178  rust: true
  10179 
  10180 # Set the number of device pixels per CSS pixel. A value <= 0 means choose
  10181 # automatically based on user settings for the platform (e.g., "UI scale factor"
  10182 # on Mac). If browser.display.os-zoom-behavior == 1, then a positive value
  10183 # will be multiplied by the text scale factor; otherwise a positive value is
  10184 # used as-is. This controls the size of a CSS "px" at 100% full-zoom.
  10185 # The size of system fonts is also changed in proportion with the change in
  10186 # "px" sizes. Use "ui.textScaleFactor" instead to only change the size of "px".
  10187 # This is only used for windows on the screen, not for printing.
  10188 - name: layout.css.devPixelsPerPx
  10189  type: AtomicFloat
  10190  value: -1.0f
  10191  mirror: always
  10192 
  10193 # Is support for CSS backdrop-filter enabled?
  10194 - name: layout.css.backdrop-filter.enabled
  10195  type: bool
  10196  value: true
  10197  mirror: always
  10198 
  10199 # Do we override the blocklist for CSS backdrop-filter?
  10200 - name: layout.css.backdrop-filter.force-enabled
  10201  type: bool
  10202  value: false
  10203  mirror: always
  10204 
  10205 # Is support for shape() enabled?
  10206 - name: layout.css.basic-shape-shape.enabled
  10207  type: RelaxedAtomicBool
  10208  value: true
  10209  mirror: always
  10210  rust: true
  10211 
  10212 # Is support for the contrast-color() function enabled?
  10213 - name: layout.css.contrast-color.enabled
  10214  type: RelaxedAtomicBool
  10215  value: true
  10216  mirror: always
  10217  rust: true
  10218 
  10219 # Whether alt text in content is enabled.
  10220 - name: layout.css.content.alt-text.enabled
  10221  type: RelaxedAtomicBool
  10222  value: true
  10223  mirror: always
  10224  rust: true
  10225 
  10226 # Should stray control characters be rendered visibly?
  10227 - name: layout.css.control-characters.visible
  10228  type: RelaxedAtomicBool
  10229  value: @IS_NOT_RELEASE_OR_BETA@
  10230  mirror: always
  10231  rust: true
  10232 
  10233 # Is support for GeometryUtils.convert*FromNode enabled?
  10234 - name: layout.css.convertFromNode.enabled
  10235  type: bool
  10236  value: @IS_NOT_RELEASE_OR_BETA@
  10237  mirror: always
  10238 
  10239 - name: layout.css.cross-fade.enabled
  10240  type: RelaxedAtomicBool
  10241  value: false
  10242  mirror: always
  10243  rust: true
  10244 
  10245 # Is support for light-dark() on images in content enabled?
  10246 - name: layout.css.light-dark.images.enabled
  10247  type: RelaxedAtomicBool
  10248  value: false
  10249  mirror: always
  10250  rust: true
  10251 
  10252 # Is support for fit-content() enabled?
  10253 - name: layout.css.fit-content-function.enabled
  10254  type: RelaxedAtomicBool
  10255  value: false
  10256  mirror: always
  10257  rust: true
  10258 
  10259 # Whether to use tight bounds for floating ::first-letter (legacy Gecko behavior)
  10260 # or loose bounds based on overall font metrics (WebKit/Blink-like behavior)?
  10261 # Values mean:
  10262 #     1   legacy Gecko behavior (tight bounds)
  10263 #     0   loose typographic bounds (similar to webkit/blink)
  10264 #    -1   auto behavior: use loose bounds if reduced line-height (<1em) or negative
  10265 #         block-start margin is present; otherwise use tight bounds.
  10266 - name: layout.css.floating-first-letter.tight-glyph-bounds
  10267  type: int32_t
  10268 #ifdef NIGHTLY_BUILD
  10269  value: -1
  10270 #else
  10271  value: 1
  10272 #endif
  10273  mirror: always
  10274 
  10275 # Is support for the @font-palette-values rule and font-palette property enabled?
  10276 - name: layout.css.font-palette.enabled
  10277  type: RelaxedAtomicBool
  10278  value: true
  10279  mirror: always
  10280  rust: true
  10281 
  10282 # Is support for variation fonts enabled?
  10283 - name: layout.css.font-variations.enabled
  10284  type: RelaxedAtomicBool
  10285  value: true
  10286  mirror: always
  10287  rust: true
  10288 
  10289 # Is support for the tech() function in the @font-face src descriptor enabled?
  10290 - name: layout.css.font-tech.enabled
  10291  type: RelaxedAtomicBool
  10292  value: true
  10293  mirror: always
  10294  rust: true
  10295 
  10296 # Is support for font-variant-emoji enabled?
  10297 - name: layout.css.font-variant-emoji.enabled
  10298  type: RelaxedAtomicBool
  10299  value: true
  10300  mirror: always
  10301  rust: true
  10302 
  10303 # Visibility level of font families available to CSS font-matching:
  10304 #   1 - only base system fonts
  10305 #   2 - also fonts from optional language packs
  10306 #   3 - also user-installed fonts
  10307 - name: layout.css.font-visibility
  10308  type: RelaxedAtomicInt32
  10309  value: 3
  10310  mirror: always
  10311 
  10312 # Is support for GeometryUtils.getBoxQuads enabled?
  10313 - name: layout.css.getBoxQuads.enabled
  10314  type: bool
  10315  value: @IS_NOT_RELEASE_OR_BETA@
  10316  mirror: always
  10317 
  10318 # Is support for (linear|radial|conic)-gradient color interpolation methods enabled?
  10319 - name: layout.css.gradient-color-interpolation-method.enabled
  10320  type: RelaxedAtomicBool
  10321  value: true
  10322  mirror: always
  10323  rust: true
  10324 
  10325 # Should we propagate baseline alignment information from a parent grid into
  10326 # its subgrids?
  10327 - name: layout.css.grid-subgrid-baselines.enabled
  10328  type: RelaxedAtomicBool
  10329  value: @IS_NIGHTLY_BUILD@
  10330  mirror: always
  10331 
  10332 # Is support for CSS masonry layout enabled?
  10333 - name: layout.css.grid-template-masonry-value.enabled
  10334  type: RelaxedAtomicBool
  10335 #if defined(NIGHTLY_BUILD) || defined(MOZ_THUNDERBIRD)
  10336  value: true
  10337 #else
  10338  value: false
  10339 #endif
  10340  mirror: always
  10341  rust: true
  10342 
  10343 # Is support for :heading and :heading() pseudo classes enabled?
  10344 - name: layout.css.heading-selector.enabled
  10345  type: RelaxedAtomicBool
  10346  value: false
  10347  mirror: always
  10348  rust: true
  10349 
  10350 # Is support for CSS initial-letter property enabled?
  10351 - name: layout.css.initial-letter.enabled
  10352  type: bool
  10353  value: false
  10354  mirror: always
  10355 
  10356 # Is eager first-letter processing during intrinsic size computation enabled?
  10357 - name: layout.css.intrinsic-size-first-letter.enabled
  10358  type: bool
  10359  value: true
  10360  mirror: always
  10361 
  10362 # Which model to use for CSS letter-spacing:
  10363 #   0 - Gecko legacy model, spacing added to trailing side of letter
  10364 #   1 - WebKit/Blink-compatible, spacing always added to right-hand side
  10365 #   2 - Symmetrical spacing, half added to each side
  10366 - name: layout.css.letter-spacing.model
  10367  type: int32_t
  10368 #if defined(MOZ_DEV_EDITION) || defined(EARLY_BETA_OR_EARLIER)
  10369  value: 2
  10370 #else
  10371  value: 0
  10372 #endif
  10373  mirror: always
  10374 
  10375 # Is support for motion-path url enabled?
  10376 - name: layout.css.motion-path-url.enabled
  10377  type: RelaxedAtomicBool
  10378  value: true
  10379  mirror: always
  10380  rust: true
  10381 
  10382 # Pref to control whether the ::marker property restrictions defined in [1]
  10383 # apply.
  10384 #
  10385 # [1]: https://drafts.csswg.org/css-pseudo-4/#selectordef-marker
  10386 - name: layout.css.marker.restricted
  10387  type: RelaxedAtomicBool
  10388  value: true
  10389  mirror: always
  10390  rust: true
  10391 
  10392 # Is -moz-osx-font-smoothing enabled? (Only supported in OSX builds)
  10393 - name: layout.css.osx-font-smoothing.enabled
  10394  type: bool
  10395 #if defined(XP_MACOSX)
  10396  value: true
  10397 #else
  10398  value: false
  10399 #endif
  10400  mirror: always
  10401 
  10402 # Is support for CSS overflow: -moz-hidden-unscrollable enabled
  10403 - name: layout.css.overflow-moz-hidden-unscrollable.enabled
  10404  type: RelaxedAtomicBool
  10405  value: false
  10406  mirror: always
  10407  rust: true
  10408 
  10409 # Enables support for @margin rules.
  10410 - name: layout.css.margin-rules.enabled
  10411  type: RelaxedAtomicBool
  10412  value: false
  10413  mirror: always
  10414  rust: true
  10415 
  10416 # Whether Properties and Values is enabled
  10417 - name: layout.css.properties-and-values.enabled
  10418  type: RelaxedAtomicBool
  10419  value: true
  10420  mirror: always
  10421  rust: true
  10422 
  10423 # Whether @scope rule is enabled
  10424 - name: layout.css.at-scope.enabled
  10425  type: RelaxedAtomicBool
  10426  value: true
  10427  mirror: always
  10428  rust: true
  10429 
  10430 # An override for prefers-color-scheme for content documents.
  10431 #   0: Dark
  10432 #   1: Light
  10433 #   2: Auto (system color scheme unless overridden by browser theme)
  10434 - name: layout.css.prefers-color-scheme.content-override
  10435  type: RelaxedAtomicInt32
  10436  value: 2
  10437  mirror: always
  10438 
  10439 # Dictates whether or not the prefers-reduced-transparency media query is enabled.
  10440 - name: layout.css.prefers-reduced-transparency.enabled
  10441  type: RelaxedAtomicBool
  10442  value: false
  10443  mirror: always
  10444  rust: true
  10445 
  10446 # Dictates whether or not the inverted-colors media query is enabled.
  10447 - name: layout.css.inverted-colors.enabled
  10448  type: RelaxedAtomicBool
  10449  value: false
  10450  mirror: always
  10451  rust: true
  10452 
  10453 # Is support for -moz-prefixed animation properties enabled?
  10454 - name: layout.css.prefixes.animations
  10455  type: bool
  10456  value: true
  10457  mirror: always
  10458 
  10459 # Is support for -moz-border-image enabled?
  10460 - name: layout.css.prefixes.border-image
  10461  type: bool
  10462  value: true
  10463  mirror: always
  10464 
  10465 # Is support for -moz-box-sizing enabled?
  10466 - name: layout.css.prefixes.box-sizing
  10467  type: bool
  10468  value: true
  10469  mirror: always
  10470 
  10471 # Is support for -moz-prefixed font feature properties enabled?
  10472 - name: layout.css.prefixes.font-features
  10473  type: bool
  10474  value: true
  10475  mirror: always
  10476 
  10477 # Is support for -moz-prefixed transform properties enabled?
  10478 - name: layout.css.prefixes.transforms
  10479  type: bool
  10480  value: true
  10481  mirror: always
  10482 
  10483 # Is support for -moz-prefixed transition properties enabled?
  10484 - name: layout.css.prefixes.transitions
  10485  type: bool
  10486  value: true
  10487  mirror: always
  10488 
  10489 # Enable relative color syntax: https://drafts.csswg.org/css-color-5/#relative-colors
  10490 - name: layout.css.relative-color-syntax.enabled
  10491  type: RelaxedAtomicBool
  10492  value: true
  10493  mirror: always
  10494  rust: true
  10495 
  10496 # Is CSS error reporting enabled?
  10497 - name: layout.css.report_errors
  10498  type: bool
  10499  value: true
  10500  mirror: always
  10501 
  10502 # Are inter-character ruby annotations enabled?
  10503 - name: layout.css.ruby.intercharacter.enabled
  10504  type: bool
  10505  value: false
  10506  mirror: always
  10507 
  10508 # Em-height scaling percentage used for ruby positioning:
  10509 # 0 means use legacy behavior (based on line-box height);
  10510 # 100 to use ascent/descent normalized to a total of 1em;
  10511 # larger values will scale the em height accordingly.
  10512 # The used value (if non-zero) is clamped to [100, 200] to
  10513 # avoid sending annotations hugely far away from the base.
  10514 - name: layout.css.ruby.normalize-metrics-factor
  10515  type: uint32_t
  10516 #ifdef NIGHTLY_BUILD
  10517  value: 100
  10518 #else
  10519  value: 0
  10520 #endif
  10521  mirror: always
  10522 
  10523 - name: layout.css.scroll-snap.damping-ratio
  10524  type: AtomicFloat
  10525  value: 1.0f
  10526  mirror: always
  10527 
  10528 # Tuning of the smooth scroll motion used by CSSOM-View scroll-behavior.
  10529 # Spring-constant controls the strength of the simulated MSD
  10530 # (Mass-Spring-Damper).
  10531 - name: layout.css.scroll-snap.spring-constant
  10532  type: AtomicFloat
  10533  value: 250.0f
  10534  mirror: always
  10535 
  10536 # If enabled, CSSOM-View scroll-behavior uses the same physics as
  10537 # scroll animations for user input (mousewheel or keyboard), rather
  10538 # than the snappier-feeling scroll snap physics.
  10539 - name: layout.css.scroll-behavior.same-physics-as-user-input
  10540  type: bool
  10541  value: false
  10542  mirror: always
  10543 
  10544 # Whether the scroll-driven animations generated by CSS is enabled. This
  10545 # also include animation-timeline property.
  10546 - name: layout.css.scroll-driven-animations.enabled
  10547  type: RelaxedAtomicBool
  10548  value: @IS_NIGHTLY_BUILD@
  10549  mirror: always
  10550  rust: true
  10551 
  10552 # When selecting the snap point for CSS scroll snapping, the velocity of the
  10553 # scroll frame is clamped to this speed, in CSS pixels / s.
  10554 - name: layout.css.scroll-snap.prediction-max-velocity
  10555  type: RelaxedAtomicInt32
  10556  value: 2000
  10557  mirror: always
  10558 
  10559 #  When selecting the snap point for CSS scroll snapping, the velocity of the
  10560 # scroll frame is integrated over this duration, in seconds.  The snap point
  10561 # best suited for this position is selected, enabling the user to perform fling
  10562 # gestures.
  10563 - name: layout.css.scroll-snap.prediction-sensitivity
  10564  type: AtomicFloat
  10565  value: 0.750f
  10566  mirror: always
  10567 
  10568 # Whether container scroll-state queries are enabled.
  10569 - name: layout.css.scroll-state.enabled
  10570  type: RelaxedAtomicBool
  10571  value: false
  10572  mirror: always
  10573  rust: true
  10574 
  10575 # Stylo thread-pool size.
  10576 # Negative means auto, 0 disables the thread-pool (main-thread styling), other
  10577 # numbers override as specified.
  10578 # Note that 1 still creates a thread-pool of one thread!
  10579 - name: layout.css.stylo-threads
  10580  type: RelaxedAtomicInt32
  10581  value: -1
  10582  mirror: always
  10583  rust: true
  10584 
  10585 # Stylo work unit size. This is the amount of nodes we'll process in a single
  10586 # unit of work of the thread-pool.
  10587 #
  10588 # Larger values will increase style sharing cache hits and general DOM locality
  10589 # at the expense of decreased opportunities for parallelism.  There are some
  10590 # measurements in bug 1385982 comments 11, 12, 13 that investigate some
  10591 # slightly different values for the work unit size.
  10592 #
  10593 # If the size is significantly increased, make sure to also review
  10594 # stylo-local-work-queue prefs, since we might end up doing too much work
  10595 # sequentially.
  10596 #
  10597 # A value of 0 disables parallelism altogether.
  10598 - name: layout.css.stylo-work-unit-size
  10599  type: RelaxedAtomicUint32
  10600  value: 16
  10601  mirror: always
  10602  rust: true
  10603 
  10604 # The minimum amount of work that a thread doing styling will try to keep
  10605 # locally before sending work to other threads, in a worker.
  10606 - name: layout.css.stylo-local-work-queue.in-worker
  10607  type: RelaxedAtomicUint32
  10608  value: 0
  10609  mirror: always
  10610  rust: true
  10611 
  10612 # As above but for the main thread. The main thread can't really steal from
  10613 # other threads so it might want a bigger min queue size before giving work to
  10614 # other threads.
  10615 - name: layout.css.stylo-local-work-queue.in-main-thread
  10616  type: RelaxedAtomicUint32
  10617  value: 32
  10618  mirror: always
  10619  rust: true
  10620 
  10621 # Are counters for implemented CSS properties enabled?
  10622 - name: layout.css.use-counters.enabled
  10623  type: bool
  10624  value: true
  10625  mirror: always
  10626 
  10627 # Are counters for unimplemented CSS properties enabled?
  10628 - name: layout.css.use-counters-unimplemented.enabled
  10629  type: RelaxedAtomicBool
  10630  value: true
  10631  mirror: always
  10632  rust: true
  10633 
  10634 # Should the :visited selector ever match (otherwise :link matches instead)?
  10635 - name: layout.css.visited_links_enabled
  10636  type: bool
  10637  value: true
  10638  mirror: always
  10639 
  10640 # The margin used for detecting relevancy for `content-visibility: auto`.
  10641 - name: layout.css.content-visibility-relevant-content-margin
  10642  type: float
  10643  value: 50 # 50%
  10644  mirror: always
  10645 
  10646 # Whether the "modern" uppercase mapping of ß to ẞ (rather than SS) is used.
  10647 - name: layout.css.text-transform.uppercase-eszett.enabled
  10648  type: bool
  10649  value: false
  10650  mirror: always
  10651 
  10652 # Is support for CSS text-autospace property enabled?
  10653 # https://drafts.csswg.org/css-text-4/#text-autospace-property
  10654 - name: layout.css.text-autospace.enabled
  10655  type: bool
  10656  value: true
  10657  mirror: always
  10658 
  10659 # Maximum number of lines to try balancing.
  10660 - name: layout.css.text-wrap-balance.limit
  10661  type: int32_t
  10662  value: 10
  10663  mirror: always
  10664 
  10665 - name: layout.css.text-wrap-balance-after-clamp.enabled
  10666  type: bool
  10667  value: true
  10668  mirror: always
  10669 
  10670 - name: layout.css.text-align.justify-only-after-last-tab
  10671  type: bool
  10672  value: true
  10673  mirror: always
  10674 
  10675 - name: layout.css.text-decoration-inset.enabled
  10676  type: RelaxedAtomicBool
  10677  value: true
  10678  mirror: always
  10679  rust: true
  10680 
  10681 # Support for the css Zoom property.
  10682 - name: layout.css.zoom.enabled
  10683  type: RelaxedAtomicBool
  10684  value: true
  10685  mirror: always
  10686  rust: true
  10687 
  10688 # CSS for android picture-in-picture. See bug 1940052.
  10689 - name: layout.css.android-pip.enabled
  10690  type: RelaxedAtomicBool
  10691  value: true
  10692  mirror: always
  10693 
  10694 # The maximum width or height of the cursor we should allow when intersecting
  10695 # the UI, in CSS pixels.
  10696 - name: layout.cursor.block.max-size
  10697  type: uint32_t
  10698  value: 32
  10699  mirror: always
  10700 
  10701 - name: layout.cursor.disable-for-popups
  10702  type: bool
  10703  value: true
  10704  mirror: always
  10705 
  10706 - name: layout.display-list.build-twice
  10707  type: RelaxedAtomicBool
  10708  value: false
  10709  mirror: always
  10710 
  10711 # Toggle retaining display lists between paints.
  10712 - name: layout.display-list.retain
  10713  type: RelaxedAtomicBool
  10714  value: true
  10715  mirror: always
  10716 
  10717 # Toggle retaining display lists between paints.
  10718 - name: layout.display-list.retain.chrome
  10719  type: RelaxedAtomicBool
  10720  value: true
  10721  mirror: always
  10722 
  10723 - name: layout.display-list.retain.sc
  10724  type: RelaxedAtomicBool
  10725  value: false
  10726  mirror: always
  10727 
  10728 # Set the maximum number of modified frames allowed before doing a full
  10729 # display list rebuild.
  10730 - name: layout.display-list.rebuild-frame-limit
  10731  type: RelaxedAtomicUint32
  10732  value: 500
  10733  mirror: always
  10734 
  10735 # Pref to dump the display list to the log. Useful for debugging drawing.
  10736 - name: layout.display-list.dump
  10737  type: RelaxedAtomicBool
  10738  value: false
  10739  mirror: always
  10740 
  10741 # Pref to dump the display list to the log. Useful for debugging drawing.
  10742 - name: layout.display-list.dump-content
  10743  type: RelaxedAtomicBool
  10744  value: false
  10745  mirror: always
  10746 
  10747 # Pref to dump the display list to the log. Useful for debugging drawing.
  10748 - name: layout.display-list.dump-parent
  10749  type: RelaxedAtomicBool
  10750  value: false
  10751  mirror: always
  10752 
  10753 - name: layout.display-list.show-rebuild-area
  10754  type: RelaxedAtomicBool
  10755  value: false
  10756  mirror: always
  10757 
  10758 - name: layout.display-list.improve-fragmentation
  10759  type: RelaxedAtomicBool
  10760  value: true
  10761  mirror: always
  10762 
  10763 # Are dynamic reflow roots enabled?
  10764 - name: layout.dynamic-reflow-roots.enabled
  10765  type: bool
  10766  value: @IS_EARLY_BETA_OR_EARLIER@
  10767  mirror: always
  10768 
  10769 # Enables the mechanism to optimize away flex item's final reflow.
  10770 # Warning: Disabling the pref will impact the performance. This is useful only for
  10771 # debugging flexbox issues.
  10772 - name: layout.flexbox.item-final-reflow-optimization.enabled
  10773  type: bool
  10774  value: true
  10775  mirror: always
  10776 
  10777 # Enables the <input type=search> custom layout frame with a clear icon.
  10778 # Still needs tests and a web-exposed way to remove that icon, see bug 1654288.
  10779 - name: layout.forms.input-type-search.enabled
  10780  type: bool
  10781  value: false
  10782  mirror: always
  10783 
  10784 # Enables the Reveal Password button inside a <input type=password>.
  10785 - name: layout.forms.reveal-password-button.enabled
  10786  type: bool
  10787  value: false
  10788  mirror: always
  10789 
  10790 # If enabled, textareas won't include 'overflow:auto' scrollbars in their
  10791 # block-axis size (usually height).
  10792 - name: layout.forms.textarea-sizing-excludes-auto-scrollbar.enabled
  10793  type: bool
  10794  value: true
  10795  mirror: always
  10796 
  10797 # Pref to control browser frame rate, in Hz. A value <= 0 means choose
  10798 # automatically based on knowledge of the platform (or 60Hz if no platform-
  10799 # specific information is available).
  10800 - name: layout.frame_rate
  10801  type: RelaxedAtomicInt32
  10802  value: -1
  10803  mirror: always
  10804 
  10805 # If it has been this many frame periods since a refresh, assume that painting
  10806 # is quiescent (will not happen again soon).
  10807 - name: layout.idle_period.required_quiescent_frames
  10808  type: uint32_t
  10809  value: 2
  10810  mirror: always
  10811 
  10812 # The amount of time (milliseconds) needed between an idle period's
  10813 # end and the start of the next tick to avoid jank.
  10814 - name: layout.idle_period.time_limit
  10815  type: uint32_t
  10816  value: 1
  10817  mirror: always
  10818 
  10819 # The minimum amount of time (milliseconds) required to be remaining
  10820 # in the current vsync interval for us to attempt an extra tick, or
  10821 # <0 to disable extra ticks entirely.
  10822 - name: layout.extra-tick.minimum-ms
  10823  type: int32_t
  10824  value: 4
  10825  mirror: always
  10826 
  10827 # Whether to load the broken image icon eagerly. This is mostly needed for
  10828 # reftests, since the broken image icon doesn't block the load event and thus
  10829 # there's no easy way to guarantee it's loaded.
  10830 - name: layout.image.eager_broken_image_icon
  10831  type: bool
  10832  value: false
  10833  mirror: always
  10834 
  10835 # Enable/disable interruptible reflow, which allows reflows to stop
  10836 # before completion (and display the partial results) when user events
  10837 # are pending.
  10838 - name: layout.interruptible-reflow.enabled
  10839  type: bool
  10840  value: true
  10841  mirror: always
  10842 
  10843 # Whether synthesize eMouseMove for dispatching mouse boundary events after
  10844 # a layout change or a scroll.
  10845 - name: layout.reflow.synthMouseMove
  10846  type: bool
  10847  value: true
  10848  mirror: always
  10849 
  10850 # This pref determines which side vertical scrollbars should be on.
  10851 # 0 = end-side in UI direction
  10852 # 1 = end-side in document/content direction
  10853 # 2 = right
  10854 # 3 = left
  10855 - name: layout.scrollbar.side
  10856  type: int32_t
  10857  value: 0
  10858  mirror: always
  10859 
  10860 # This pref is to be set by test code only.
  10861 - name: layout.scrollbars.always-layerize-track
  10862  type: RelaxedAtomicBool
  10863  value: false
  10864  mirror: always
  10865 
  10866 - name: layout.scrollbars.click_and_hold_track.continue_to_end
  10867  type: bool
  10868 # On Linux, click-and-hold on the scrollbar track should continue scrolling
  10869 # until the mouse is released. On the other platforms we want to stop
  10870 # scrolling as soon as the scrollbar thumb has reached the current mouse
  10871 # position.
  10872 #ifdef MOZ_WIDGET_GTK
  10873  value: true
  10874 #else
  10875  value: false
  10876 #endif
  10877  mirror: always
  10878 
  10879 # Whether anchor is kept selected.
  10880 - name: layout.selectanchor
  10881  type: bool
  10882  value: false
  10883  mirror: always
  10884 
  10885 # Controls caret style and word-delete during text selection.
  10886 # 0: Use platform default
  10887 # 1: Caret moves and blinks as when there is no selection; word
  10888 #    delete deselects the selection and then deletes word.
  10889 # 2: Caret moves to selection edge and is not visible during selection;
  10890 #    word delete deletes the selection (Mac and Linux default).
  10891 # 3: Caret moves and blinks as when there is no selection; word delete
  10892 #    deletes the selection.
  10893 # Windows default is 1 for word delete behavior, the rest as for 2.
  10894 - name: layout.selection.caret_style
  10895  type: int32_t
  10896  value: 0
  10897  mirror: always
  10898 
  10899 # If layout.show_previous_page is true then during loading of a new page we
  10900 # will draw the previous page if the new page has painting suppressed.
  10901 - name: layout.show_previous_page
  10902  type: bool
  10903  value: true
  10904  mirror: always
  10905 
  10906 # This will automatically enable inline spellchecking (if it is available) for
  10907 # editable elements in HTML.
  10908 # 0 = spellcheck nothing
  10909 # 1 = check multi-line controls [default]
  10910 # 2 = check multi/single line controls
  10911 - name: layout.spellcheckDefault
  10912  type: int32_t
  10913  value: 1
  10914  mirror: always
  10915 
  10916 # Treat top level pages as always-active for the purpose of refresh driver
  10917 # throttling and such.
  10918 #
  10919 # Intended for testing automation and so forth.
  10920 - name: layout.testing.top-level-always-active
  10921  type: bool
  10922  value: false
  10923  mirror: always
  10924 
  10925 # Pref to stop overlay scrollbars from fading out, for testing purposes.
  10926 - name: layout.testing.overlay-scrollbars.always-visible
  10927  type: bool
  10928  value: false
  10929  mirror: always
  10930 
  10931 # Whether we always hide the scrollbars, to avoid them affecting the visual
  10932 # metrics of some performance tests.
  10933 - name: layout.testing.scrollbars.always-hidden
  10934  type: RelaxedAtomicBool
  10935  value: false
  10936  mirror: always
  10937 
  10938 # Throttled frame rate, in frames per second.
  10939 - name: layout.throttled_frame_rate
  10940  type: uint32_t
  10941  value: 1
  10942  mirror: always
  10943 
  10944 # Whether we should throttle in-process iframes in the active tab.
  10945 - name: layout.throttle_in_process_iframes
  10946  type: bool
  10947  value: true
  10948  mirror: always
  10949 
  10950 - name: layout.lower_priority_refresh_driver_during_load
  10951  type: bool
  10952  value: true
  10953  mirror: always
  10954 
  10955 # If > 0, nsRefreshDriver will keep ticking this amount of milliseconds after
  10956 # top level page load.
  10957 - name: layout.keep_ticking_after_load_ms
  10958  type: uint32_t
  10959  value: 1000
  10960  mirror: always
  10961 
  10962 # Pref to control enabling scroll anchoring.
  10963 - name: layout.css.scroll-anchoring.enabled
  10964  type: bool
  10965  value: true
  10966  mirror: always
  10967 
  10968 # Pref to control how many consecutive scroll-anchoring adjustments (since the
  10969 # most recent user scroll or timeout) we'll average, before we consider whether
  10970 # to automatically turn off scroll anchoring. When we hit this threshold, the
  10971 # actual decision to disable also depends on the
  10972 # min-average-adjustment-threshold pref, see below for more details.
  10973 #
  10974 # Zero disables the heuristic.
  10975 - name: layout.css.scroll-anchoring.max-consecutive-adjustments
  10976  type: uint32_t
  10977  value: 10
  10978  mirror: always
  10979 
  10980 # Whether to reset counting the consecutive scroll-anchoring adjustments during
  10981 # running async scrolling by APZ.
  10982 - name: layout.css.scroll-anchoring.reset-heuristic-during-animation
  10983  type: bool
  10984  value: false
  10985  mirror: always
  10986 
  10987 # The time after which we reset the max-consecutive-adjustments period, in
  10988 # milliseconds.
  10989 #
  10990 # This prevents sporadic back-and-forth scroll anchoring to trigger the
  10991 # max-consecutive-adjustments heuristic.
  10992 - name: layout.css.scroll-anchoring.max-consecutive-adjustments-timeout-ms
  10993  type: uint32_t
  10994  value: 500
  10995  mirror: always
  10996 
  10997 # Pref to control whether we should disable scroll anchoring on a scroller
  10998 # where at least max-consecutive-adjustments have happened, and which the
  10999 # average adjustment ends up being less than this number, in CSS pixels.
  11000 #
  11001 # So, for example, given max-consecutive-adjustments=10 and
  11002 # min-average-adjustment-treshold=3, we'll block scroll anchoring if there have
  11003 # been 10 consecutive adjustments without a user scroll or more, and the
  11004 # average offset difference between them amount to less than 3 CSS pixels.
  11005 - name: layout.css.scroll-anchoring.min-average-adjustment-threshold
  11006  type: uint32_t
  11007  value: 2
  11008  mirror: always
  11009 
  11010 # Pref to control disabling scroll anchoring suppression triggers, see
  11011 #
  11012 # https://drafts.csswg.org/css-scroll-anchoring/#suppression-triggers
  11013 #
  11014 # Those triggers should be unnecessary after bug 1561450.
  11015 - name: layout.css.scroll-anchoring.suppressions.enabled
  11016  type: bool
  11017  value: true
  11018  mirror: always
  11019 
  11020 - name: layout.css.scroll-anchoring.highlight
  11021  type: bool
  11022  value: false
  11023  mirror: always
  11024 
  11025 # Pref to control whether we reselect scroll anchors if sub-optimal
  11026 #
  11027 # See https://github.com/w3c/csswg-drafts/issues/6787
  11028 - name: layout.css.scroll-anchoring.reselect-if-suboptimal
  11029  type: bool
  11030  value: true
  11031  mirror: always
  11032 
  11033 # Are shared memory User Agent style sheets enabled?
  11034 - name: layout.css.shared-memory-ua-sheets.enabled
  11035  type: bool
  11036  value: true
  11037  mirror: always
  11038 
  11039 # Is the CSS 'stretch' keyword enabled, for size-valued properties like 'width'
  11040 # and 'height'? (Note: this is unrelated to the 'stretch' value for the
  11041 # various alignment properties like 'align-self'; this pref has has
  11042 # no influence on the 'stretch' keyword for those alignment properties.)
  11043 - name: layout.css.stretch-size-keyword.enabled
  11044  type: RelaxedAtomicBool
  11045  value: false
  11046  mirror: always
  11047  rust: true
  11048 
  11049 # Is the '-webkit-fill-available' keyword enabled, as an alias for 'stretch'?
  11050 # NOTE: This pref being 'true' is sufficient to enable this keyword in the
  11051 # 'width' and 'height' properties (and their logical aliases).  To enable
  11052 # the keyword for other properties, see the "all-size-properties" variant
  11053 # below.
  11054 - name: layout.css.webkit-fill-available.enabled
  11055  type: RelaxedAtomicBool
  11056  value: true
  11057  mirror: always
  11058  rust: true
  11059 
  11060 # This pref is an additional gate on whether the '-webkit-fill-available'
  11061 # keyword is enabled for other size-valued CSS properties (beyond 'width' and
  11062 # 'height'). In such properties, -webkit-fill-available will not be accepted
  11063 # unless this pref *and* layout.css.webkit-fill-available.enabled are both
  11064 # set to 'true'.
  11065 - name: layout.css.webkit-fill-available.all-size-properties.enabled
  11066  type: RelaxedAtomicBool
  11067  value: false
  11068  mirror: always
  11069  rust: true
  11070 
  11071 # Is support for -webkit-line-clamp on regular blocks enabled?
  11072 - name: layout.css.webkit-line-clamp.block.enabled
  11073  type: bool
  11074  value: false
  11075  mirror: always
  11076 
  11077 # Does webkit-line-clamp skip painting clamped lines?
  11078 # See bug 1934547.
  11079 - name: layout.css.webkit-line-clamp.skip-paint
  11080  type: bool
  11081  value: false
  11082  mirror: always
  11083 
  11084 # Is support for the ::details-content pseudo-element enabled?
  11085 - name: layout.css.details-content.enabled
  11086  type: RelaxedAtomicBool
  11087  value: true
  11088  mirror: always
  11089  rust: true
  11090 
  11091 # Whether we want scrollbar-width: thin to behave as scrollbar-width: auto.
  11092 - name: layout.css.scrollbar-width-thin.disabled
  11093  type: RelaxedAtomicBool
  11094  value: false
  11095  mirror: always
  11096 
  11097 # field-sizing CSS property
  11098 - name: layout.css.field-sizing.enabled
  11099  type: RelaxedAtomicBool
  11100  value: false
  11101  mirror: always
  11102 
  11103 # Whether :-moz-broken is supported in content.
  11104 - name: layout.css.moz-broken.content.enabled
  11105  type: RelaxedAtomicBool
  11106  value: false
  11107  mirror: always
  11108  rust: true
  11109 
  11110 # Whether the modern ::slider-* pseudos are enabled.
  11111 - name: layout.css.modern-range-pseudos.enabled
  11112  type: RelaxedAtomicBool
  11113  value: false
  11114  mirror: always
  11115  rust: true
  11116 
  11117 # Is matching video-dynamic-range: high allowed?
  11118 - name: layout.css.video-dynamic-range.allows-high
  11119  type: RelaxedAtomicBool
  11120 #if defined(XP_MACOSX) || defined(MOZ_WAYLAND)
  11121  value: true
  11122 #elif defined(XP_WIN)
  11123  value: @IS_EARLY_BETA_OR_EARLIER@
  11124 #else
  11125  value: false
  11126 #endif
  11127  mirror: always
  11128 
  11129 # Is support for CSS Typed Object Model API enabled?
  11130 #
  11131 # Note that this feature is experimental and under active development.
  11132 # Enabling this pref will only expose some interfaces that are already
  11133 # implemented and is intended solely to enable WPT coverage during
  11134 # incremental development.
  11135 - name: layout.css.typed-om.enabled
  11136  type: RelaxedAtomicBool
  11137  value: false
  11138  mirror: always
  11139  rust: true
  11140 
  11141 # Whether frame visibility tracking is enabled globally.
  11142 - name: layout.framevisibility.enabled
  11143  type: bool
  11144  value: true
  11145  mirror: always
  11146 
  11147 # The fraction of the scrollport we allow to horizontally scroll by before we
  11148 # schedule an update of frame visibility.
  11149 - name: layout.framevisibility.amountscrollbeforeupdatehorizontal
  11150  type: int32_t
  11151  value: 2
  11152  mirror: always
  11153 
  11154 # The fraction of the scrollport we allow to vertically scroll by before we
  11155 # schedule an update of frame visibility.
  11156 - name: layout.framevisibility.amountscrollbeforeupdatevertical
  11157  type: int32_t
  11158  value: 2
  11159  mirror: always
  11160 
  11161 # The number of scrollports wide to expand when tracking frame visibility.
  11162 - name: layout.framevisibility.numscrollportwidths
  11163  type: uint32_t
  11164 #ifdef ANDROID
  11165  value: 1
  11166 #else
  11167  value: 0
  11168 #endif
  11169  mirror: always
  11170 
  11171 # The number of scrollports high to expand when tracking frame visibility.
  11172 - name: layout.framevisibility.numscrollportheights
  11173  type: uint32_t
  11174  value: 1
  11175  mirror: always
  11176 
  11177 # Test only.
  11178 - name: layout.dynamic-toolbar-max-height
  11179  type: RelaxedAtomicInt32
  11180  value: 0
  11181  mirror: always
  11182 
  11183 # Whether outlines should include all overflowing descendants, or just the
  11184 # border-box of a given element.
  11185 #
  11186 # Historically we have included descendants but other browsers have not.
  11187 - name: layout.outline.include-overflow
  11188  type: bool
  11189  value: false
  11190  mirror: always
  11191 
  11192 # Determines how we snap css outline-offset:
  11193 #   0: No snapping (historical behavior)
  11194 #   1: Always snap as border-width (proposed behavior in
  11195 #      https://github.com/w3c/csswg-drafts/issues/12906)
  11196 #   2: The above, but only on chrome code, for now.
  11197 - name: layout.css.outline-offset.snapping
  11198  type: RelaxedAtomicInt32
  11199 #ifdef NIGHTLY_BUILD
  11200  value: 1
  11201 #else
  11202  value: 2
  11203 #endif
  11204  mirror: always
  11205  rust: true
  11206 
  11207 - name: layout.visibility.min-recompute-interval-ms
  11208  type: uint32_t
  11209  value: 1000
  11210  mirror: always
  11211 
  11212 # Controls double click and Alt+Arrow word selection behavior.
  11213 - name: layout.word_select.eat_space_to_next_word
  11214  type: bool
  11215 #ifdef XP_WIN
  11216  value: true
  11217 #else
  11218  value: false
  11219 #endif
  11220  mirror: always
  11221 
  11222 - name: layout.word_select.stop_at_punctuation
  11223  type: RelaxedAtomicBool
  11224  value: true
  11225  mirror: always
  11226 
  11227 # Whether underscore should be treated as a word-breaking character for
  11228 # word selection/arrow-key movement purposes.
  11229 - name: layout.word_select.stop_at_underscore
  11230  type: bool
  11231  value: false
  11232  mirror: always
  11233 
  11234 # Controls whether nsRefreshDriver::IsInHighRateMode() may ever return true.
  11235 - name: layout.expose_high_rate_mode_from_refreshdriver
  11236  type: bool
  11237  value: true
  11238  mirror: always
  11239 
  11240 # Whether <details> is forced to be a block, see bug 1856374
  11241 # The legacy behavior is 'true', i.e. forcing it to be a block.
  11242 # The modern behavior is 'false', i.e. not forcing it to be a block.
  11243 - name: layout.details.force-block-layout
  11244  type: bool
  11245  value: false
  11246  mirror: always
  11247 
  11248 # Whether table cells can generate scroll boxes.
  11249 - name: layout.tables.scrollable-cells
  11250  type: bool
  11251  value: false
  11252  mirror: always
  11253 
  11254 # Whether to disable layer pixel alignment in layout stuff.
  11255 - name: layout.disable-pixel-alignment
  11256  type: RelaxedAtomicBool
  11257  value: false
  11258  mirror: always
  11259 
  11260 # Whether scrollIntoView scrolls to `position: fixed` frames visually.
  11261 - name: layout.scroll_fixed_content_into_view_visually
  11262  type: bool
  11263 #if defined(ANDROID)
  11264  value: true
  11265 #else
  11266  value: false
  11267 #endif
  11268  mirror: always
  11269 
  11270 # Enable the support to position absoluetly positioned frames properly across
  11271 # fragmentainers (Bug 1994316).
  11272 #
  11273 # Note: Layout code should use
  11274 # nsPresContext::FragmentainerAwarePositioningEnabled() rather than checking
  11275 # this pref directly. This ensures a given frame tree handles abspos
  11276 # fragmentation consistently even if the actual pref value changes.
  11277 - name: layout.abspos.fragmentainer-aware-positioning.enabled
  11278  type: bool
  11279  value: false
  11280  mirror: always
  11281 
  11282 #---------------------------------------------------------------------------
  11283 # Prefs starting with "logging."
  11284 #---------------------------------------------------------------------------
  11285 
  11286 # If this pref is true, prefs in the logging.config branch will be cleared on
  11287 # startup. This prevents unadvertedly creating huge log files that fill the disk
  11288 # when forgetting to remove the logging preferences.
  11289 - name: logging.config.clear_on_startup
  11290  type: bool
  11291  value: true
  11292  mirror: never
  11293 
  11294 #---------------------------------------------------------------------------
  11295 # Prefs starting with "mathml."
  11296 #---------------------------------------------------------------------------
  11297 
  11298 # Whether to disable legacy names "thickmathspace", "mediummathspace",
  11299 # "thickmathspace" etc for length attributes.
  11300 - name: mathml.mathspace_names.disabled
  11301  type: bool
  11302  value: @IS_EARLY_BETA_OR_EARLIER@
  11303  mirror: always
  11304 
  11305 # Whether to enable character and glyph level mirroring for operators when
  11306 # the writing mode is right to left.
  11307 - name: mathml.rtl_operator_mirroring.enabled
  11308  type: bool
  11309  value: true
  11310  mirror: always
  11311 
  11312 # Whether to disable fallback for mathvariant=italic/bold/bold-italic via
  11313 # styling when lacking proper fonts for Mathematical Alphanumeric Symbols.
  11314 # We expect all OSes to have relevant fonts, except Android, see bug 1789083.
  11315 - name: mathml.mathvariant_styling_fallback.disabled
  11316  type: bool
  11317 #if defined(ANDROID)
  11318  value: false
  11319 #else
  11320  value: true
  11321 #endif
  11322  mirror: always
  11323 
  11324 # Whether to enable support for the math-shift CSS property.
  11325 - name: mathml.math_shift.enabled
  11326  type: RelaxedAtomicBool
  11327  value: true
  11328  mirror: always
  11329 
  11330 # Whether to remove the accent property from the operator dictionary.
  11331 - name: mathml.operator_dictionary_accent.disabled
  11332  type: bool
  11333  value: false
  11334  mirror: always
  11335 
  11336 # Whether to disable the MathML3 support for the mathvariant attribute. For
  11337 # MathML Core, support is restricted to the <mi> element and to value "normal".
  11338 # Corresponding automatic italicization on single-char <mi> element is also
  11339 # implemented via text-transform: auto when that flag is enabled.
  11340 - name: mathml.legacy_mathvariant_attribute.disabled
  11341  type: bool
  11342  value: @IS_EARLY_BETA_OR_EARLIER@
  11343  mirror: always
  11344  rust: true
  11345 
  11346 # Whether to enable font-family: math in mathml instead of using the
  11347 # internal language x-math.
  11348 - name: mathml.font_family_math.enabled
  11349  type: RelaxedAtomicBool
  11350  value: @IS_NIGHTLY_BUILD@
  11351  mirror: always
  11352  rust: true
  11353 
  11354 #---------------------------------------------------------------------------
  11355 # Prefs starting with "media."
  11356 #---------------------------------------------------------------------------
  11357 
  11358 
  11359 # This pref defines what the blocking policy would be used in blocking autoplay.
  11360 # 0 : use sticky activation (default)
  11361 # https://html.spec.whatwg.org/multipage/interaction.html#sticky-activation
  11362 # 1 : use transient activation (the transient activation duration can be
  11363 #     adjusted by the pref `dom.user_activation.transient.timeout`)
  11364 # https://html.spec.whatwg.org/multipage/interaction.html#transient-activation
  11365 # 2 : user input depth (allow autoplay when the play is trigged by user input
  11366 #     which is determined by the user input depth)
  11367 - name: media.autoplay.blocking_policy
  11368  type: uint32_t
  11369  value: 0
  11370  mirror: always
  11371 
  11372 # Whether to allow autoplay on extension background pages.
  11373 - name: media.autoplay.allow-extension-background-pages
  11374  type: bool
  11375  value: true
  11376  mirror: always
  11377 
  11378 # Block autoplay, asking for permission by default.
  11379 # 0=Allowed, 1=Blocked, 5=All Blocked
  11380 - name: media.autoplay.default
  11381  type: int32_t
  11382  value: 1
  11383  mirror: always
  11384 
  11385 # File-backed MediaCache size.
  11386 - name: media.cache_size
  11387  type: RelaxedAtomicUint32
  11388  value: 512000   # Measured in KiB
  11389  mirror: always
  11390 
  11391 # Size of file backed MediaCache while on a connection which is cellular (3G,
  11392 # etc), and thus assumed to be "expensive".
  11393 - name: media.cache_size.cellular
  11394  type: RelaxedAtomicUint32
  11395  value: 32768   # Measured in KiB
  11396  mirror: always
  11397 
  11398 # Multiplier to change the sample rate at which input-only streams run, so as
  11399 # to similate clock drift.
  11400 - name: media.cubeb.input_drift_factor
  11401  type: AtomicFloat
  11402  mirror: always
  11403  value: 1.f
  11404 
  11405 # Multiplier to change the sample rate at which output-only streams run, so as
  11406 # to similate clock drift.
  11407 - name: media.cubeb.output_drift_factor
  11408  type: AtomicFloat
  11409  mirror: always
  11410  value: 1.f
  11411 
  11412 # Whether cubeb is sandboxed (AudioIPC)
  11413 - name: media.cubeb.sandbox
  11414  type: bool
  11415  mirror: always
  11416 #if defined(XP_LINUX) || defined(XP_WIN) || defined(XP_MACOSX)
  11417  value: true
  11418 #else
  11419  value: false
  11420 #endif
  11421 
  11422 # Whether or not to pass AUDCLNT_STREAMOPTIONS_RAW when initializing audio
  11423 # streams when using WASAPI.
  11424 # 0 - don't use RAW streams
  11425 # 1 - use RAW streams for input streams only
  11426 # 2 - use RAW streams for output streams only
  11427 # 3 - use RAW streams for input and output streams
  11428 #if defined (XP_WIN)
  11429 - name: media.cubeb.wasapi-raw
  11430  type: RelaxedAtomicUint32
  11431  mirror: always
  11432  value: 0
  11433 #endif // XP_WIN
  11434 
  11435 # Whether to make the start of cubeb stream slower, and by how many
  11436 # milliseconds.
  11437 - name: media.cubeb.slow_stream_init_ms
  11438  type: RelaxedAtomicUint32
  11439  mirror: always
  11440  value: 0
  11441 
  11442 # If a resource is known to be smaller than this size (in kilobytes), a
  11443 # memory-backed MediaCache may be used; otherwise the (single shared global)
  11444 # file-backed MediaCache is used.
  11445 - name: media.memory_cache_max_size
  11446  type: uint32_t
  11447  value: 8192        # Measured in KiB
  11448  mirror: always
  11449 
  11450 # Don't create more memory-backed MediaCaches if their combined size would go
  11451 # above this absolute size limit.
  11452 - name: media.memory_caches_combined_limit_kb
  11453  type: uint32_t
  11454  value: 524288
  11455  mirror: always
  11456 
  11457 # Don't create more memory-backed MediaCaches if their combined size would go
  11458 # above this relative size limit (a percentage of physical memory).
  11459 - name: media.memory_caches_combined_limit_pc_sysmem
  11460  type: uint32_t
  11461  value: 5           # A percentage
  11462  mirror: always
  11463 
  11464 # When a network connection is suspended, don't resume it until the amount of
  11465 # buffered data falls below this threshold (in seconds).
  11466 - name: media.cache_resume_threshold
  11467  type: RelaxedAtomicUint32
  11468  value: 30
  11469  mirror: always
  11470 - name: media.cache_resume_threshold.cellular
  11471  type: RelaxedAtomicUint32
  11472  value: 10
  11473  mirror: always
  11474 
  11475 # Stop reading ahead when our buffered data is this many seconds ahead of the
  11476 # current playback position. This limit can stop us from using arbitrary
  11477 # amounts of network bandwidth prefetching huge videos.
  11478 - name: media.cache_readahead_limit
  11479  type: RelaxedAtomicUint32
  11480  value: 60
  11481  mirror: always
  11482 - name: media.cache_readahead_limit.cellular
  11483  type: RelaxedAtomicUint32
  11484  value: 30
  11485  mirror: always
  11486 
  11487 # MediaCapabilities
  11488 - name: media.mediacapabilities.drop-threshold
  11489  type: RelaxedAtomicInt32
  11490  value: 95
  11491  mirror: always
  11492 
  11493 - name: media.mediacapabilities.from-database
  11494  type: RelaxedAtomicBool
  11495  value: @IS_NIGHTLY_BUILD@
  11496  mirror: always
  11497 
  11498 # AudioSink
  11499 - name: media.resampling.enabled
  11500  type: RelaxedAtomicBool
  11501  value: false
  11502  mirror: always
  11503 
  11504 # libcubeb backend implements .get_preferred_channel_layout
  11505 - name: media.forcestereo.enabled
  11506  type: RelaxedAtomicBool
  11507 #if defined(XP_WIN) || defined(XP_DARWIN) || defined(MOZ_PULSEAUDIO)
  11508  value: false
  11509 #else
  11510  value: true
  11511 #endif
  11512  mirror: always
  11513 
  11514 # MediaSource
  11515 
  11516 # Whether to enable MediaSource support.
  11517 - name: media.mediasource.enabled
  11518  type: RelaxedAtomicBool
  11519  value: true
  11520  mirror: always
  11521 
  11522 - name: media.mediasource.mp4.enabled
  11523  type: RelaxedAtomicBool
  11524  value: true
  11525  mirror: always
  11526 
  11527 - name: media.mediasource.webm.enabled
  11528  type: RelaxedAtomicBool
  11529  value: true
  11530  mirror: always
  11531 
  11532 # Check if vp9 is enabled by default in mediasource. False on Android.
  11533 # If disabled, vp9 will only be enabled under some conditions:
  11534 # - h264 HW decoding is not supported
  11535 # - mp4 is not enabled
  11536 # - Device was deemed fast enough to decode VP9 via the VP9Benchmark utility
  11537 # - A VP9 HW decoder is present.
  11538 - name: media.mediasource.vp9.enabled
  11539  type: RelaxedAtomicBool
  11540  value: @IS_NOT_MOBILE@
  11541  mirror: always
  11542 
  11543 # Whether to enable MediaSource v2 support.
  11544 - name: media.mediasource.experimental.enabled
  11545  type: RelaxedAtomicBool
  11546  value: false
  11547  mirror: always
  11548 
  11549 # Whether to enable experimental requestVideoFrameCallback support
  11550 - name: media.rvfc.enabled
  11551  type: bool
  11552  value: true
  11553  mirror: always
  11554 
  11555 # true for talos tests so that VideoSink passes on the most recently decoded
  11556 # frame to exercise the compositor even when the frame is out of date because
  11557 # the decoder is stressed.
  11558 # If this were true for normal playback, then presentation of such late decoded
  11559 # video frames would be out of sync with audio, and VideoPlaybackQuality
  11560 # metrics would provide no indication of the poor playback. [1]
  11561 # For normal playback, this is false, which does not restore A/V sync in this
  11562 # situation, but some out-of-date frames are dropped.  The dropped frame count
  11563 # is reported to content in VideoPlaybackQuality metrics.
  11564 # [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1258870#c6
  11565 - name: media.ruin-av-sync.enabled
  11566  type: RelaxedAtomicBool
  11567  value: false
  11568  mirror: always
  11569 
  11570 # Encrypted Media Extensions
  11571 - name: media.eme.enabled
  11572  type: bool
  11573 #if defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID)
  11574  # On Linux EME is visible but disabled by default. This is so that the "Play
  11575  # DRM content" checkbox in the Firefox UI is unchecked by default. DRM
  11576  # requires downloading and installing proprietary binaries, which users on an
  11577  # open source operating systems didn't opt into. The first time a site using
  11578  # EME is encountered, the user will be prompted to enable DRM, whereupon the
  11579  # EME plugin binaries will be downloaded if permission is granted.
  11580  value: false
  11581 #else
  11582  value: true
  11583 #endif
  11584  mirror: always
  11585 
  11586 # Whether we expose the functionality proposed in
  11587 # https://w3c.github.io/encrypted-media/#ref-for-dom-mediakeysystemmediacapability-encryptionscheme-2
  11588 # I.e. if true, apps calling navigator.requestMediaKeySystemAccess() can pass
  11589 # an optional encryption scheme as part of MediaKeySystemMediaCapability
  11590 # objects. If a scheme is present when we check for support, we must ensure we
  11591 # support that scheme in order to provide key system access.
  11592 - name: media.eme.encrypted-media-encryption-scheme.enabled
  11593  type: bool
  11594  value: true
  11595  mirror: always
  11596 
  11597 # Do we need explicit approval from the application to allow access to EME?
  11598 # If true, Gecko will ask for permission before allowing MediaKeySystemAccess.
  11599 # At time of writing this is aimed at GeckoView, and setting this to true
  11600 # outside of GeckoView or test environments will likely break EME.
  11601 - name: media.eme.require-app-approval
  11602  type: bool
  11603  value: false
  11604  mirror: always
  11605 
  11606 - name: media.eme.audio.blank
  11607  type: RelaxedAtomicBool
  11608  value: false
  11609  mirror: always
  11610 
  11611 - name: media.eme.video.blank
  11612  type: RelaxedAtomicBool
  11613  value: false
  11614  mirror: always
  11615 
  11616 - name: media.eme.chromium-api.video-shmems
  11617  type: RelaxedAtomicUint32
  11618  value: 6
  11619  mirror: always
  11620 
  11621 # Is support for MediaKeys.getStatusForPolicy enabled?
  11622 - name: media.eme.hdcp-policy-check.enabled
  11623  type: bool
  11624  value: true
  11625  mirror: always
  11626 
  11627 - name: media.eme.max-throughput-ms
  11628  type: RelaxedAtomicUint32
  11629  value: 500
  11630  mirror: always
  11631 
  11632 - name: media.clearkey.persistent-license.enabled
  11633  type: bool
  11634  value: false
  11635  mirror: always
  11636 
  11637 # Are test specific clearkey key systems enabled and exposed?
  11638 - name: media.clearkey.test-key-systems.enabled
  11639  type: RelaxedAtomicBool
  11640  value: false
  11641  mirror: always
  11642 
  11643 - name: media.cloneElementVisually.testing
  11644  type: bool
  11645  value: false
  11646  mirror: always
  11647 
  11648 # Does the GMPlugin process initialize minimal XPCOM
  11649 - name: media.gmp.use-minimal-xpcom
  11650  type: RelaxedAtomicBool
  11651  value: true
  11652  mirror: always
  11653 
  11654 # Does the GMPlugin process use native event processing
  11655 - name: media.gmp.use-native-event-processing
  11656  type: RelaxedAtomicBool
  11657  value: @IS_NOT_XP_MACOSX@
  11658  mirror: always
  11659 
  11660 # How long in milliseconds before timing out to destroy en/decoders gracefully
  11661 - name: media.gmp.coder-shutdown-timeout-ms
  11662  type: RelaxedAtomicUint32
  11663  value: 1000
  11664  mirror: always
  11665 
  11666 #if defined(XP_LINUX) && defined(MOZ_SANDBOX)
  11667  # Whether to allow, on a Linux system that doesn't support the necessary
  11668  # sandboxing features, loading Gecko Media Plugins unsandboxed.  However, EME
  11669  # CDMs will not be loaded without sandboxing even if this pref is changed.
  11670 -   name: media.gmp.insecure.allow
  11671    type: RelaxedAtomicBool
  11672    value: false
  11673    mirror: always
  11674 #endif
  11675 
  11676 # (When reading the next line, know that preprocessor.py doesn't
  11677 # understand parentheses, but && is higher precedence than ||.)
  11678 #if defined(XP_WIN) && defined(_ARM64_) || defined(XP_MACOSX)
  11679  # These prefs control whether or not we will allow x86/x64 plugins
  11680  # to run on Windows ARM or Apple Silicon machines. This requires
  11681  # launching the GMP child process executable in x86/x64 mode. We
  11682  # expect to allow this for Widevine until an arm64 version of
  11683  # Widevine and Clearkey is made available. We don't expect to need
  11684  # to allow this for OpenH264.
  11685  #
  11686  # For Apple Silicon and OSX, it will be for universal builds and
  11687  # whether or not it can use the x64 Widevine plugin.
  11688  #
  11689  # For Windows ARM, it will be for ARM builds and whether or not it
  11690  # can use x86 Widevine or Clearkey plugins.
  11691 
  11692  # May a Widevine GMP x64 process be executed on ARM builds.
  11693 - name: media.gmp-widevinecdm.allow-x64-plugin-on-arm64
  11694  type: RelaxedAtomicBool
  11695  value: true
  11696  mirror: always
  11697 
  11698  # May an OpenH264 GMP x64 process be executed on ARM builds.
  11699 - name: media.gmp-gmpopenh264.allow-x64-plugin-on-arm64
  11700  type: RelaxedAtomicBool
  11701  value: false
  11702  mirror: always
  11703 
  11704  # May a Clearkey GMP x64 process be executed on ARM builds.
  11705 - name: media.gmp-gmpclearkey.allow-x64-plugin-on-arm64
  11706  type: RelaxedAtomicBool
  11707  value: false
  11708  mirror: always
  11709 #endif
  11710 
  11711 # Specifies whether the PDMFactory can create a test decoder that just outputs
  11712 # blank frames/audio instead of actually decoding. The blank decoder works on
  11713 # all platforms.
  11714 - name: media.use-blank-decoder
  11715  type: RelaxedAtomicBool
  11716  value: false
  11717  mirror: always
  11718 
  11719 # Specifies whether the PEMFactory can create PEMs for remote audio encoding
  11720 # in the RDD or utility processes.
  11721 - name: media.use-remote-encoder.audio
  11722  type: RelaxedAtomicBool
  11723  value: false
  11724  mirror: always
  11725 
  11726 # Specifies whether the PEMFactory can create PEMs for remote video encoding
  11727 # in the RDD or GPU process.
  11728 - name: media.use-remote-encoder.video
  11729  type: RelaxedAtomicBool
  11730  value: false
  11731  mirror: always
  11732 
  11733 - name: media.gpu-process-decoder
  11734  type: RelaxedAtomicBool
  11735 #if defined(XP_WIN)
  11736  value: true
  11737 #else
  11738  value: false
  11739 #endif
  11740  mirror: always
  11741 
  11742 - name: media.gpu-process-encoder
  11743  type: RelaxedAtomicBool
  11744  value: false
  11745  mirror: always
  11746 
  11747 - name: media.ffvpx-hw.enabled
  11748  type: RelaxedAtomicBool
  11749 #if defined(MOZ_WIDGET_GTK)
  11750  value: true
  11751 #elif defined(XP_WIN)
  11752  value: @IS_NIGHTLY_BUILD@
  11753 #else
  11754  value: false
  11755 #endif
  11756  mirror: always
  11757 
  11758 # The codecs in the vendored ffmpeg copy are usually prefered to the other
  11759 # codecs. This allows changing this policy for testing purposes.
  11760 - name: media.prefer-non-ffvpx
  11761  type: RelaxedAtomicBool
  11762  value: false
  11763  mirror: always
  11764 
  11765 - name: media.rdd-process.enabled
  11766  type: RelaxedAtomicBool
  11767 #if defined(XP_WIN)
  11768  value: true
  11769 #elif defined(XP_MACOSX)
  11770  value: true
  11771 #elif defined(XP_LINUX) && !defined(ANDROID)
  11772  value: true
  11773 #elif defined(XP_FREEBSD)
  11774  value: true
  11775 #elif defined(XP_OPENBSD)
  11776  value: true
  11777 #elif defined(XP_SOLARIS)
  11778  value: true
  11779 #else
  11780  value: false
  11781 #endif
  11782  mirror: always
  11783 
  11784 - name: media.rdd-retryonfailure.enabled
  11785  type: RelaxedAtomicBool
  11786  value: true
  11787  mirror: always
  11788 
  11789 - name: media.rdd-process.startup_timeout_ms
  11790  type: RelaxedAtomicInt32
  11791  value: 5000
  11792  mirror: always
  11793 
  11794 # Specifies how many times we restart RDD process after crash till we give up.
  11795 # After first RDD restart we disable HW acceleration on Linux.
  11796 - name: media.rdd-process.max-crashes
  11797  type: RelaxedAtomicInt32
  11798  value: 2
  11799  mirror: always
  11800 
  11801 #ifdef MOZ_FFMPEG
  11802 - name: media.rdd-ffmpeg.enabled
  11803  type: RelaxedAtomicBool
  11804  value: true
  11805  mirror: always
  11806 #endif
  11807 
  11808 
  11809 - name: media.rdd-ffvpx.enabled
  11810  type: RelaxedAtomicBool
  11811 #if defined(XP_WIN)
  11812  value: true
  11813 #elif defined(XP_MACOSX)
  11814  value: true
  11815 #elif defined(XP_LINUX) && !defined(ANDROID)
  11816  value: true
  11817 #elif defined(XP_FREEBSD)
  11818  value: true
  11819 #elif defined(XP_OPENBSD)
  11820  value: true
  11821 #elif defined(XP_SOLARIS)
  11822  value: true
  11823 #else
  11824  value: false
  11825 #endif
  11826  mirror: always
  11827 
  11828 #ifdef MOZ_WMF
  11829 - name: media.rdd-wmf.enabled
  11830  type: RelaxedAtomicBool
  11831  value: true
  11832  mirror: always
  11833 #endif
  11834 
  11835 #ifdef MOZ_APPLEMEDIA
  11836 - name: media.rdd-applemedia.enabled
  11837  type: RelaxedAtomicBool
  11838  value: true
  11839  mirror: always
  11840 #endif
  11841 
  11842 - name: media.rdd-vorbis.enabled
  11843  type: RelaxedAtomicBool
  11844 #if defined(XP_WIN)
  11845  value: true
  11846 #elif defined(XP_MACOSX)
  11847  value: true
  11848 #elif defined(XP_LINUX) && !defined(ANDROID)
  11849  value: true
  11850 #elif defined(XP_FREEBSD)
  11851  value: true
  11852 #elif defined(XP_OPENBSD)
  11853  value: true
  11854 #elif defined(XP_SOLARIS)
  11855  value: true
  11856 #else
  11857  value: false
  11858 #endif
  11859  mirror: always
  11860 
  11861 - name: media.rdd-vpx.enabled
  11862  type: RelaxedAtomicBool
  11863 #if defined(XP_WIN)
  11864  value: true
  11865 #elif defined(XP_MACOSX)
  11866  value: true
  11867 #elif defined(XP_LINUX) && !defined(ANDROID)
  11868  value: true
  11869 #elif defined(XP_FREEBSD)
  11870  value: true
  11871 #elif defined(XP_OPENBSD)
  11872  value: true
  11873 #elif defined(XP_SOLARIS)
  11874  value: true
  11875 #else
  11876  value: false
  11877 #endif
  11878  mirror: always
  11879 
  11880 - name: media.rdd-wav.enabled
  11881  type: RelaxedAtomicBool
  11882 #if defined(XP_WIN)
  11883  value: true
  11884 #elif defined(XP_MACOSX)
  11885  value: true
  11886 #elif defined(XP_LINUX) && !defined(ANDROID)
  11887  value: true
  11888 #elif defined(XP_FREEBSD)
  11889  value: true
  11890 #elif defined(XP_OPENBSD)
  11891  value: true
  11892 #elif defined(XP_SOLARIS)
  11893  value: true
  11894 #else
  11895  value: false
  11896 #endif
  11897  mirror: always
  11898 
  11899 - name: media.rdd-opus.enabled
  11900  type: RelaxedAtomicBool
  11901 #if defined(XP_WIN)
  11902  value: true
  11903 #elif defined(XP_MACOSX)
  11904  value: true
  11905 #elif defined(XP_LINUX) && !defined(ANDROID)
  11906  value: true
  11907 #elif defined(XP_FREEBSD)
  11908  value: true
  11909 #elif defined(XP_OPENBSD)
  11910  value: true
  11911 #elif defined(XP_SOLARIS)
  11912  value: true
  11913 #else
  11914  value: false
  11915 #endif
  11916  mirror: always
  11917 
  11918 - name: media.rdd-webaudio.batch.size
  11919  type: RelaxedAtomicInt32
  11920  value: 100
  11921  mirror: always
  11922 
  11923 # This pref is here to control whether we want to perform audio decoding by
  11924 # using the IPC actor within the Utility process rather than the RDD process.
  11925 # When it is set to true, then the utility process will take precedence over RDD
  11926 # to perform audio decoding.
  11927 - name: media.utility-process.enabled
  11928  type: RelaxedAtomicBool
  11929 #if defined(XP_WIN)
  11930  value: true
  11931 #elif defined(XP_MACOSX)
  11932  value: true
  11933 #elif defined(XP_LINUX) || defined(ANDROID)
  11934  value: true
  11935 #elif defined(XP_FREEBSD)
  11936  value: true
  11937 #elif defined(XP_OPENBSD)
  11938  value: true
  11939 #elif defined(XP_SOLARIS)
  11940  value: true
  11941 #else
  11942  value: false
  11943 #endif
  11944  mirror: always
  11945 
  11946 # Specifies how many times we restart Utility process after crash till we give
  11947 # up.
  11948 - name: media.utility-process.max-crashes
  11949  type: RelaxedAtomicInt32
  11950  value: 2
  11951  mirror: always
  11952 
  11953 #ifdef ANDROID
  11954  # Enable the MediaCodec PlatformDecoderModule by default.
  11955 -   name: media.android-media-codec.enabled
  11956    type: RelaxedAtomicBool
  11957    value: true
  11958    mirror: always
  11959 
  11960  # Bug 1771196
  11961  # Dont yet enable AndroidDecoderModule on Utility
  11962 -   name: media.utility-android-media-codec.enabled
  11963    type: RelaxedAtomicBool
  11964    value: false
  11965    mirror: always
  11966 
  11967 -   name: media.android-media-codec.preferred
  11968    type: RelaxedAtomicBool
  11969    value: true
  11970    mirror: always
  11971 #endif  # ANDROID
  11972 
  11973 # Now we will completely disable the ability to perform audio decoding outside
  11974 # of Utility.
  11975 -   name: media.allow-audio-non-utility
  11976    type: RelaxedAtomicBool
  11977    value: @IS_IOS@
  11978    mirror: always
  11979 
  11980 #ifdef MOZ_OMX
  11981 -   name: media.omx.enabled
  11982    type: bool
  11983    value: false
  11984    mirror: always
  11985 #endif
  11986 
  11987 # Allow ffmpeg decoder to decode directly onto shmem buffer
  11988 - name: media.ffmpeg.customized-buffer-allocation
  11989  type: RelaxedAtomicBool
  11990  value: true
  11991  mirror: always
  11992 
  11993 # Disable falling back to software decoders in case of frame drop
  11994 - name: media.ffmpeg.disable-software-fallback
  11995  type: RelaxedAtomicBool
  11996  value: false
  11997  mirror: always
  11998 
  11999 #ifdef MOZ_FFMPEG
  12000 -   name: media.ffmpeg.enabled
  12001    type: RelaxedAtomicBool
  12002  #if defined(XP_MACOSX)
  12003    value: false
  12004  #else
  12005    value: true
  12006  #endif
  12007    mirror: always
  12008 
  12009 -   name: media.libavcodec.allow-obsolete
  12010    type: bool
  12011    value: false
  12012    mirror: always
  12013 #endif  # MOZ_FFMPEG
  12014 
  12015 # Allow using ffmpeg encoder
  12016 -   name: media.ffmpeg.encoder.enabled
  12017    type: RelaxedAtomicBool
  12018 #if !defined(MOZ_WIDGET_ANDROID)
  12019    value: true
  12020 #else
  12021    value: false
  12022 #endif
  12023    mirror: always
  12024 
  12025 # A high quantizer value allows the encoder to use higher compression, but
  12026 # resulting in lower quality for parts of the video. Using a lower value
  12027 # restricts excessive compression, improving video quality but potentially
  12028 # increasing file size. The quantizer's value range is controlled by the min
  12029 # and max values below. The lower the value is, the finer the quantizer will be
  12030 # Set AVCodecContext's qmin value to ffmpeg encoder
  12031 -   name: media.ffmpeg.encoder.quantizer-min
  12032    type: RelaxedAtomicInt32
  12033    value: 10 # An empirical value for better performance
  12034    mirror: always
  12035 
  12036 # Set AVCodecContext's qmax value to ffmpeg encoder
  12037 -   name: media.ffmpeg.encoder.quantizer-max
  12038    type: RelaxedAtomicInt32
  12039    value: 35 # An empirical value for better quality of the video output
  12040    mirror: always
  12041 
  12042 # Set the FFmpeg encoder's cpu-used option, only for the AV1 encoder in quality
  12043 # mode currently. While values from 6 to 9 are generally used for real-time
  12044 # encoding in libaom, we opt to prioritize speed over quality in this case.
  12045 -   name: media.ffmpeg.encoder.cpu-used
  12046    type: RelaxedAtomicInt32
  12047    value: 7
  12048    mirror: always
  12049 
  12050 # Allow using openh264 decoding with ffmpeg
  12051 -   name: media.ffmpeg.allow-openh264
  12052    type: RelaxedAtomicBool
  12053    value: @IS_NOT_NIGHTLY_BUILD@
  12054    mirror: always
  12055 
  12056 #ifdef MOZ_WIDGET_GTK
  12057 # Force to copy dmabuf video frames
  12058 # Used for debugging/troubleshooting only
  12059 # 0 - force disable
  12060 # 1 - force enable
  12061 # 2 - default
  12062 - name: media.ffmpeg.vaapi.force-surface-zero-copy
  12063  type: uint32_t
  12064  value: 2
  12065  mirror: once
  12066 #endif # MOZ_WIDGET_GTK
  12067 
  12068 # Set to true in marionette tests to disable the sanity test
  12069 # which would lead to unnecessary start of the RDD process.
  12070 -   name: media.sanity-test.disabled
  12071    type: RelaxedAtomicBool
  12072    value: false
  12073    mirror: always
  12074 
  12075 #ifdef MOZ_WMF
  12076 
  12077 -   name: media.wmf.enabled
  12078    type: RelaxedAtomicBool
  12079    value: true
  12080    mirror: always
  12081 
  12082  # Whether DD should consider WMF-disabled a WMF failure, useful for testing.
  12083 -   name: media.decoder-doctor.wmf-disabled-is-failure
  12084    type: RelaxedAtomicBool
  12085    value: false
  12086    mirror: always
  12087 
  12088 -   name: media.wmf.dxva.d3d11.enabled
  12089    type: RelaxedAtomicBool
  12090    value: true
  12091    mirror: always
  12092 
  12093 -   name: media.wmf.dxva.max-videos
  12094    type: RelaxedAtomicUint32
  12095    value: 8
  12096    mirror: always
  12097 
  12098 -   name: media.wmf.use-nv12-format
  12099    type: RelaxedAtomicBool
  12100    value: true
  12101    mirror: always
  12102 
  12103 -   name: media.wmf.zero-copy-nv12-textures
  12104    type: bool
  12105    value: true
  12106    mirror: once
  12107 # Enable hardware decoded video no copy even when it is blocked.
  12108 -   name: media.wmf.zero-copy-nv12-textures-force-enabled
  12109    type: bool
  12110    value: false
  12111    mirror: once
  12112 
  12113 -   name: media.wmf.force.allow-p010-format
  12114    type: RelaxedAtomicBool
  12115    value: false
  12116    mirror: always
  12117 
  12118 -   name: media.wmf.use-sync-texture
  12119    type: bool
  12120    value: true
  12121    mirror: once
  12122 
  12123 -   name: media.wmf.low-latency.enabled
  12124    type: RelaxedAtomicBool
  12125    value: true
  12126    mirror: always
  12127 
  12128 -   name: media.wmf.skip-blacklist
  12129    type: RelaxedAtomicBool
  12130    value: false
  12131    mirror: always
  12132 
  12133 -   name: media.wmf.amd.highres.enabled
  12134    type: RelaxedAtomicBool
  12135    value: true
  12136    mirror: always
  12137 
  12138 -   name: media.wmf.allow-unsupported-resolutions
  12139    type: RelaxedAtomicBool
  12140    value: true
  12141    mirror: always
  12142 
  12143 -   name: media.wmf.vp9.enabled
  12144    type: RelaxedAtomicBool
  12145    value: true
  12146    mirror: always
  12147 
  12148 -   name: media.wmf.av1.enabled
  12149    type: RelaxedAtomicBool
  12150    value: true
  12151    mirror: always
  12152 
  12153 -   name: media.wmf.encoder.realtime.wait-for-output
  12154    type: RelaxedAtomicBool
  12155    value: @IS_NIGHTLY_BUILD@
  12156    mirror: always
  12157 
  12158 # Using Windows Media Foundation Media Engine for encrypted playback
  12159 # 0 : disable, 1 : enable for encrypted and clear,
  12160 # 2 : enable for encrypted only, 3 : enable for clear only
  12161 -   name: media.wmf.media-engine.enabled
  12162    type: RelaxedAtomicUint32
  12163    value: 2
  12164    mirror: always
  12165 
  12166 # Testing purpose, enable media engine on channel decoder as well.
  12167 -   name: media.wmf.media-engine.channel-decoder.enabled
  12168    type: RelaxedAtomicBool
  12169    value: false
  12170    mirror: always
  12171 
  12172 # The amount of video raw data the engine stream will queue
  12173 -   name: media.wmf.media-engine.raw-data-threshold.video
  12174    type: RelaxedAtomicInt32
  12175    value: 500000
  12176    mirror: always
  12177 
  12178 # The amount of audio raw data the engine stream will queue
  12179 -   name: media.wmf.media-engine.raw-data-threshold.audio
  12180    type: RelaxedAtomicInt32
  12181    value: 2000000
  12182    mirror: always
  12183 
  12184 # Specifies how many times we restart MFCDM process after crash till we give up.
  12185 -   name: media.wmf.media-engine.max-crashes
  12186    type: RelaxedAtomicInt32
  12187    value: 2
  12188    mirror: always
  12189 
  12190 # Bypass the gfx block list check for the media engine playback.
  12191 -   name: media.wmf.media-engine.bypass-gfx-blocklist
  12192    type: RelaxedAtomicBool
  12193    value: false
  12194    mirror: always
  12195 
  12196 # [TEST-ONLY] Use Media Foundation Clearkey CDM for EME related testing.
  12197 -   name: media.eme.wmf.clearkey.enabled
  12198    type: RelaxedAtomicBool
  12199    value: false
  12200    mirror: always
  12201 
  12202 # [TEST-ONLY] use Media Foundation clearkey CDM dll to mock as an external CDM,
  12203 # external CDM like Widevine and PlayReady so that we won't be interfered by
  12204 # unexpected behaviors caused by the external library.
  12205 -   name: media.eme.wmf.use-mock-cdm-for-external-cdms
  12206    type: RelaxedAtomicBool
  12207    value: false
  12208    mirror: always
  12209 
  12210 # Enable PlayReady DRM for EME
  12211 -   name: media.eme.playready.enabled
  12212    type: RelaxedAtomicBool
  12213    value: true
  12214    mirror: always
  12215 
  12216 # Enable Widevine experiment DRM for EME
  12217 -   name: media.eme.widevine.experiment.enabled
  12218    type: RelaxedAtomicBool
  12219    value: false
  12220    mirror: always
  12221 
  12222 # Enable origin filter for MFCDM support
  12223 # 0 : disabled, 1 : enabled allowed list, 2 : enabled blocked list,
  12224 # 3 : enabled allowed by default via Remote Settings
  12225 # 4 : enabled blocked by default via Remote Settings
  12226 -   name: media.eme.mfcdm.origin-filter.enabled
  12227    type: RelaxedAtomicUint32
  12228 #ifdef NIGHTLY_BUILD
  12229    value: 3
  12230 #else
  12231    value: 4
  12232 #endif
  12233    mirror: always
  12234 
  12235 #endif  # MOZ_WMF
  12236 
  12237 - name: media.hevc.enabled
  12238  type: RelaxedAtomicBool
  12239  value: true
  12240  mirror: always
  12241 
  12242 - name: media.decoder-doctor.testing
  12243  type: bool
  12244  value: false
  12245  mirror: always
  12246 
  12247 - name: media.hardware-video-decoding.enabled
  12248  type: bool
  12249  value: true
  12250  mirror: once
  12251 
  12252 - name: media.hardware-video-decoding.force-enabled
  12253  type: bool
  12254  value: false
  12255  mirror: once
  12256 
  12257 - name: media.hardware-video-encoding.enabled
  12258  type: bool
  12259  value: true
  12260  mirror: once
  12261 
  12262 - name: media.hardware-video-encoding.force-enabled
  12263  type: bool
  12264  value: false
  12265  mirror: once
  12266 
  12267 # Whether to check the decoder supports recycling.
  12268 - name: media.decoder.recycle.enabled
  12269  type: RelaxedAtomicBool
  12270  value: @IS_ANDROID@
  12271  mirror: always
  12272 
  12273 # Should MFR try to skip to the next key frame?
  12274 - name: media.decoder.skip-to-next-key-frame.enabled
  12275  type: RelaxedAtomicBool
  12276  value: true
  12277  mirror: always
  12278 
  12279 # The delay time (ms) before releasing an audio wakelock.
  12280 -   name: media.wakelock.audio.delay-releasing.ms
  12281    type: RelaxedAtomicUint32
  12282    value: 10000
  12283    mirror: always
  12284 
  12285 # When video continues later than the current media time for this period of
  12286 # time, then it will trigger skip-to-next-keyframe mechanism. As this aims to
  12287 # solve the drop frames issue where video decoding too slow for high
  12288 # resolution videos. eg. 4k+. Therefore, the value is is determined by the
  12289 # telemetry probe `video_inter_keyframe_max_ms` in the key of `AV,h>2160` which
  12290 # shows that 95% video's key frame interval are less than ~5000. We use its
  12291 # half value as a threashold to decide whether we should keep decoding in the
  12292 # current video position or jump to the next keyframe in order to decode future
  12293 # frames in advance.
  12294 - name: media.decoder.skip_when_video_too_slow_ms
  12295  type: RelaxedAtomicInt32
  12296  value: 2500
  12297  mirror: always
  12298 
  12299 # True if we want to decode in batches.
  12300 - name: media.gmp.decoder.decode_batch
  12301  type: RelaxedAtomicBool
  12302  value: false
  12303  mirror: always
  12304 
  12305 # True if we allow use of any decoders found in GMP plugins.
  12306 - name: media.gmp.decoder.enabled
  12307  type: RelaxedAtomicBool
  12308  value: true
  12309  mirror: always
  12310 
  12311 # True if we want to request the multithreaded GMP decoder.
  12312 - name: media.gmp.decoder.multithreaded
  12313  type: RelaxedAtomicBool
  12314  value: false
  12315  mirror: always
  12316 
  12317 # True if we want to try using the GMP plugin decoders first.
  12318 - name: media.gmp.decoder.preferred
  12319  type: RelaxedAtomicBool
  12320  value: false
  12321  mirror: always
  12322 
  12323 # True if we want to reorder frames from the decoder based on the timestamp.
  12324 - name: media.gmp.decoder.reorder_frames
  12325  type: RelaxedAtomicBool
  12326  value: true
  12327  mirror: always
  12328 
  12329 # True if we allow use of any encoders found in GMP plugins.
  12330 - name: media.gmp.encoder.enabled
  12331  type: RelaxedAtomicBool
  12332  value: false
  12333  mirror: always
  12334 
  12335 # True if we want to request the multithreaded GMP encoder.
  12336 - name: media.gmp.encoder.multithreaded
  12337  type: RelaxedAtomicBool
  12338  value: false
  12339  mirror: always
  12340 
  12341 # True if we want to try using the GMP plugin encoders first.
  12342 - name: media.gmp.encoder.preferred
  12343  type: RelaxedAtomicBool
  12344  value: false
  12345  mirror: always
  12346 
  12347 # Whether to suspend decoding of videos in background tabs.
  12348 - name: media.suspend-background-video.enabled
  12349  type: RelaxedAtomicBool
  12350  value: true
  12351  mirror: always
  12352 
  12353 # Delay, in ms, from time window goes to background to suspending
  12354 # video decoders. Defaults to 10 seconds.
  12355 - name: media.suspend-background-video.delay-ms
  12356  type: RelaxedAtomicUint32
  12357  value: 10000
  12358  mirror: always
  12359 
  12360 - name: media.dormant-on-pause-timeout-ms
  12361  type: RelaxedAtomicInt32
  12362  value: 5000
  12363  mirror: always
  12364 
  12365 # AudioTrack and VideoTrack support
  12366 - name: media.track.enabled
  12367  type: bool
  12368  value: false
  12369  mirror: always
  12370 
  12371 
  12372 # This pref disables the reception of RTCP. It is used for testing.
  12373 - name: media.webrtc.net.force_disable_rtcp_reception
  12374  type: ReleaseAcquireAtomicBool
  12375  value: false
  12376  mirror: always
  12377 
  12378 # This pref disables using PQ crypto for WebRTC DTLS code.
  12379 - name: media.webrtc.enable_pq_hybrid_kex
  12380  type: RelaxedAtomicBool
  12381  value: true
  12382  mirror: always
  12383 
  12384 # This pref enabled sending ssl_grp_kem_mlkem768x25519 Key Share for WebRTC DTLS code.
  12385 # When modifying this pref, please update the test_peerConnection_glean.html tests as well.
  12386 - name: media.webrtc.send_mlkem_keyshare
  12387  type: RelaxedAtomicBool
  12388  value: true
  12389  mirror: always
  12390 
  12391 # This pref controls whether dispatch testing-only events.
  12392 - name: media.webvtt.testing.events
  12393  type: bool
  12394  value: false
  12395  mirror: always
  12396 
  12397 #ifdef MOZ_WEBSPEECH
  12398 - name: media.webspeech.synth.force_global_queue
  12399  type: bool
  12400  value: false
  12401  mirror: always
  12402 
  12403 - name: media.webspeech.test.enable
  12404  type: bool
  12405  value: false
  12406  mirror: always
  12407 
  12408 - name: media.webspeech.test.fake_fsm_events
  12409  type: bool
  12410  value: false
  12411  mirror: always
  12412 
  12413 - name: media.webspeech.test.fake_recognition_service
  12414  type: bool
  12415  value: false
  12416  mirror: always
  12417 
  12418 -   name: media.webspeech.recognition.enable
  12419    type: bool
  12420    value: false
  12421    mirror: always
  12422 
  12423 -   name: media.webspeech.synth.enabled
  12424    type: bool
  12425    value: true
  12426    mirror: always
  12427 #endif  # MOZ_WEBSPEECH
  12428 
  12429 - name: media.encoder.webm.enabled
  12430  type: RelaxedAtomicBool
  12431  value: true
  12432  mirror: always
  12433 
  12434 - name: media.audio-max-decode-error
  12435  type: uint32_t
  12436 #if defined(RELEASE_OR_BETA)
  12437  value: 3
  12438 #else
  12439  # Zero tolerance in pre-release builds to detect any decoder regression.
  12440  value: 0
  12441 #endif
  12442  mirror: always
  12443 
  12444 - name: media.video-max-decode-error
  12445  type: uint32_t
  12446 #if defined(RELEASE_OR_BETA)
  12447  value: 2
  12448 #else
  12449  # Zero tolerance in pre-release builds to detect any decoder regression.
  12450  value: 0
  12451 #endif
  12452  mirror: always
  12453 
  12454 # Are video stats enabled? (Disabling can help prevent fingerprinting.)
  12455 - name: media.video_stats.enabled
  12456  type: bool
  12457  value: true
  12458  mirror: always
  12459 
  12460 # forces the number of dropped frames to 0
  12461 - name: media.video.dropped_frame_stats.enabled
  12462  type: bool
  12463  value: true
  12464  mirror: always
  12465 
  12466 # The target number of decoded video frames to maintain in
  12467 # MediaDecoderStateMachine's mVideoQueue for hardware video decoding. Hardware
  12468 # decoding is fast, so a small queue size is used to lower frame latency.
  12469 - name: media.video-queue.hw-accel-size
  12470  type: RelaxedAtomicInt32
  12471  value: 3
  12472  mirror: always
  12473 
  12474 # The target number of decoded video frames to maintain in
  12475 # MediaDecoderStateMachine's mVideoQueue for software video decoding. Software
  12476 # decoding is slower, so a larger queue is used to lower chances of
  12477 # dropping late frames.
  12478 - name: media.video-queue.default-size
  12479  type: RelaxedAtomicInt32
  12480  value: 10
  12481  mirror: always
  12482 
  12483 # The maximum number of queued frames to send to the compositor.
  12484 - name: media.video-queue.send-to-compositor-size
  12485  type: RelaxedAtomicInt32
  12486 #ifdef ANDROID
  12487 # On Android, it needs to be throttled because SurfaceTexture contains only one
  12488 # (the most recent) image data. See bug 1299068.
  12489  value: 1
  12490 #else
  12491 # Send all of them.
  12492  value: 9999
  12493 #endif
  12494  mirror: always
  12495 
  12496 # Opus
  12497 - name: media.opus.enabled
  12498  type: RelaxedAtomicBool
  12499  value: true
  12500  mirror: always
  12501 
  12502 # Wave
  12503 - name: media.wave.enabled
  12504  type: RelaxedAtomicBool
  12505  value: true
  12506  mirror: always
  12507 
  12508 # Ogg
  12509 - name: media.ogg.enabled
  12510  type: RelaxedAtomicBool
  12511  value: true
  12512  mirror: always
  12513 
  12514 # WebM
  12515 - name: media.webm.enabled
  12516  type: RelaxedAtomicBool
  12517  value: true
  12518  mirror: always
  12519 
  12520 # AV1
  12521 - name: media.av1.enabled
  12522  type: RelaxedAtomicBool
  12523  value: true
  12524  mirror: always
  12525 
  12526 # Matroska
  12527 - name: media.mkv.enabled
  12528  type: RelaxedAtomicBool
  12529  value: true
  12530  mirror: always
  12531 
  12532 - name: media.av1.use-dav1d
  12533  type: RelaxedAtomicBool
  12534  value: true
  12535  mirror: always
  12536 
  12537 - name: media.av1.new-thread-count-strategy
  12538  type: RelaxedAtomicBool
  12539  value: false
  12540  mirror: always
  12541 
  12542 - name: media.av1.force-thread-count
  12543  type: RelaxedAtomicInt32
  12544  value: 0
  12545  mirror: always
  12546 
  12547 - name: media.flac.enabled
  12548  type: RelaxedAtomicBool
  12549  value: true
  12550  mirror: always
  12551 
  12552 # Hls
  12553 - name: media.hls.enabled
  12554  type: RelaxedAtomicBool
  12555  value: @IS_ANDROID@
  12556  mirror: always
  12557 
  12558 # Max number of HLS players that can be created concurrently. Used only on
  12559 # Android and when "media.hls.enabled" is true.
  12560 #ifdef ANDROID
  12561 -   name: media.hls.max-allocations
  12562    type: uint32_t
  12563    value: 20
  12564    mirror: always
  12565 #endif
  12566 
  12567 - name: media.mp4.enabled
  12568  type: RelaxedAtomicBool
  12569  value: true
  12570  mirror: always
  12571 
  12572 - name: media.mp4.sniff_iso_brand
  12573  type: RelaxedAtomicBool
  12574  value: true
  12575  mirror: always
  12576 
  12577 # Error/warning handling, Decoder Doctor.
  12578 #
  12579 # Set to true to force demux/decode warnings to be treated as errors.
  12580 - name: media.playback.warnings-as-errors
  12581  type: RelaxedAtomicBool
  12582  value: false
  12583  mirror: always
  12584 
  12585 # Resume video decoding when the cursor is hovering on a background tab to
  12586 # reduce the resume latency and improve the user experience.
  12587 - name: media.resume-background-video-on-tabhover
  12588  type: bool
  12589  value: true
  12590  mirror: always
  12591 
  12592 # Media Seamless Looping
  12593 - name: media.seamless-looping
  12594  type: RelaxedAtomicBool
  12595  value: true
  12596  mirror: always
  12597 
  12598 - name: media.seamless-looping-video
  12599  type: RelaxedAtomicBool
  12600  value: true
  12601  mirror: always
  12602 
  12603 - name: media.autoplay.block-event.enabled
  12604  type: bool
  12605  value: false
  12606  mirror: always
  12607 
  12608 - name: media.media-capabilities.screen.enabled
  12609  type: RelaxedAtomicBool
  12610  value: false
  12611  mirror: always
  12612 
  12613 - name: media.benchmark.vp9.fps
  12614  type: RelaxedAtomicUint32
  12615  value: 0
  12616  mirror: always
  12617 
  12618 - name: media.benchmark.vp9.threshold
  12619  type: RelaxedAtomicUint32
  12620  value: 150
  12621  mirror: always
  12622 
  12623 - name: media.benchmark.vp9.versioncheck
  12624  type: RelaxedAtomicUint32
  12625  value: 0
  12626  mirror: always
  12627 
  12628 - name: media.benchmark.frames
  12629  type: RelaxedAtomicUint32
  12630  value: 300
  12631  mirror: always
  12632 
  12633 - name: media.benchmark.timeout
  12634  type: RelaxedAtomicUint32
  12635  value: 1000
  12636  mirror: always
  12637 
  12638 - name: media.test.video-suspend
  12639  type: RelaxedAtomicBool
  12640  value: false
  12641  mirror: always
  12642 
  12643 - name: media.test.null.decoder.creation-failure
  12644  type: RelaxedAtomicBool
  12645  value: false
  12646  mirror: always
  12647 
  12648 # MediaCapture prefs follow
  12649 
  12650 # Enables navigator.mediaDevices and getUserMedia() support. See also
  12651 # media.peerconnection.enabled
  12652 - name: media.navigator.enabled
  12653  type: bool
  12654  value: true
  12655  mirror: always
  12656 
  12657 # Expose the deprecated method navigator.mozGetUserMedia().
  12658 - name: media.navigator.mozgetusermedia.enabled
  12659  type: bool
  12660  value: true
  12661  mirror: always
  12662 
  12663 # This pref turns off window-focus checks on the navigator.mediaDevices methods,
  12664 # for partner testing frameworks.
  12665 # Prefer "focusmanager.testmode", which is already set by default for
  12666 # web-platform tests.
  12667 - name: media.devices.unfocused.enabled
  12668  type: bool
  12669  value: false
  12670  mirror: always
  12671 
  12672 # This pref turns off [SecureContext] on the navigator.mediaDevices object, for
  12673 # more compatible legacy behavior.
  12674 - name: media.devices.insecure.enabled
  12675  type: bool
  12676  value: false
  12677  mirror: always
  12678 
  12679 # If the above pref is also enabled, this pref enabled getUserMedia() support
  12680 # in http, bypassing the instant NotAllowedError you get otherwise.
  12681 - name: media.getusermedia.insecure.enabled
  12682  type: bool
  12683  value: false
  12684  mirror: always
  12685 
  12686 # Enable tab sharing
  12687 - name: media.getusermedia.browser.enabled
  12688  type: RelaxedAtomicBool
  12689  value: @IS_NIGHTLY_BUILD@
  12690  mirror: always
  12691 
  12692 # The getDisplayMedia method is always SecureContext regardless of the above two
  12693 # prefs. But it is not implemented on android, and can be turned off elsewhere.
  12694 - name: media.getdisplaymedia.enabled
  12695  type: bool
  12696  value: @IS_NOT_MOBILE@
  12697  mirror: always
  12698 
  12699 # The getDisplayMedia prompt uses getDisplayMedia under the hood to show previews.
  12700 # This can be turned off if, e.g. on systems with known issues like X11, or if
  12701 # previews are not desired.
  12702 - name: media.getdisplaymedia.previews.enabled
  12703  type: bool
  12704  value: @IS_NOT_ANDROID@
  12705  mirror: always
  12706 
  12707 #if defined(MOZ_WEBRTC) && defined(XP_MACOSX)
  12708 # Use the libwebrtc ScreenCaptureKit desktop capture backend on Mac by default.
  12709 # When disabled, or on a host where not supported (< macOS 14), the older
  12710 # CoreGraphics backend is used instead.
  12711 -   name: media.getdisplaymedia.screencapturekit.enabled
  12712    type: bool
  12713    value: true
  12714    mirror: once
  12715 
  12716 # Use SCContentSharingPicker for source picking when the libwebrtc
  12717 # ScreenCaptureKit desktop capture backend is used. When this is true and the
  12718 # backend supports SCContentSharingPicker, this takes precendence over the
  12719 # enumeration pref below.
  12720 -   name: media.getdisplaymedia.screencapturekit.picker.enabled
  12721    type: bool
  12722    value: true
  12723    mirror: once
  12724 
  12725 # Use the libwebrtc ScreenCaptureKit desktop capture backend on Mac for screen
  12726 # enumeration when enabled.
  12727 # When this is false and the backend is used (see above), the older CoreGraphics
  12728 # backend is used to enumerate CGDirectDisplayIDs, which the ScreenCaptureKit
  12729 # backend understand as well.
  12730 -   name: media.getdisplaymedia.screencapturekit.enumeration.enabled
  12731    type: bool
  12732    value: false
  12733    mirror: once
  12734 #endif
  12735 
  12736 # Turn off any cameras (but not mics) while in the background. This is desirable
  12737 # on mobile.
  12738 - name: media.getusermedia.camera.background.mute.enabled
  12739  type: bool
  12740  value: @IS_ANDROID@
  12741  mirror: always
  12742 
  12743 # Use the libwebrtc AVFoundation camera backend on Mac by default. When
  12744 # disabled, an older forked capture module is used.
  12745 - name: media.getusermedia.camera.macavf.enabled
  12746  type: bool
  12747  value: true
  12748  mirror: once
  12749 
  12750 # When true enables capability enumeration and capture of a fake video capture
  12751 # backend. Platform independent. Note, does not come into effect when the pref
  12752 # `media.navigator.streams.fake` or the `fake` constraint is true.
  12753 - name: media.getusermedia.camera.fake.force
  12754  type: RelaxedAtomicBool
  12755  value: false
  12756  mirror: always
  12757 
  12758 # Tell the audio backend to prefer a stream adapted for voice when processing is
  12759 # enabled through constraints (possibly defaults). Whether it has any effect
  12760 # depends on the backend.
  12761 - name: media.getusermedia.microphone.prefer_voice_stream_with_processing.enabled
  12762  type: RelaxedAtomicBool
  12763  value: true
  12764  mirror: always
  12765 
  12766 # Tell the audio backend to create a voice stream for later re-use before asking
  12767 # the user for microphone permissions, if approving those permissions would
  12768 # result in a voice stream when created later on.
  12769 - name: media.getusermedia.microphone.voice_stream_priming.enabled
  12770  type: RelaxedAtomicBool
  12771  value: @IS_XP_MACOSX@
  12772  mirror: always
  12773 
  12774 # This pref turns on legacy (non-spec) exposure of camera and microphone
  12775 # information from enumerateDevices and devicechange ahead of successful
  12776 # getUserMedia calls. Should only be turned on to resolve web compat issues,
  12777 # since doing so reveals more user fingerprinting information to trackers.
  12778 #
  12779 # In this mode, camera and microphone device labels are exposed if the site has a
  12780 # persisted permission to either kind, as well as while actively capturing either
  12781 # kind (temporary and tab-specific grace-period permissions do not count).
  12782 - name: media.devices.enumerate.legacy.enabled
  12783  type: bool
  12784  value: false
  12785  mirror: always
  12786 
  12787 # Turns on legacy (non-spec) exposure of camera and microphone information
  12788 # from enumerateDevices and devicechange ahead of successful getUserMedia
  12789 # calls only for certain domains (ignored if above pref is true).
  12790 - name: media.devices.enumerate.legacy.allowlist
  12791  type: String
  12792  value: "slack.com,*.slack.com,riverside.fm,*.riverside.fm"
  12793  mirror: never
  12794 
  12795 # WebRTC prefs follow
  12796 
  12797 # Enables auto refresh of peerconnection stats by default
  12798 - name: media.aboutwebrtc.auto_refresh.peerconnection_section
  12799  type: bool
  12800  value: @IS_NOT_NIGHTLY_BUILD@
  12801  mirror: always
  12802 
  12803 # Enables auto refresh of the transport connection log by default
  12804 - name: media.aboutwebrtc.auto_refresh.connection_log_section
  12805  type: bool
  12806  value: false
  12807  mirror: always
  12808 
  12809 # Enables auto refresh of user config by default
  12810 - name: media.aboutwebrtc.auto_refresh.user_modified_config_section
  12811  type: bool
  12812  value: true
  12813  mirror: always
  12814 
  12815 # Enables auto refresh of media context by default
  12816 - name: media.aboutwebrtc.auto_refresh.media_ctx_section
  12817  type: bool
  12818  value: false
  12819  mirror: always
  12820 
  12821 # Enables RTCPeerConnection support. Note that, when true, this pref enables
  12822 # navigator.mediaDevices and getUserMedia() support as well.
  12823 # See also media.navigator.enabled
  12824 - name: media.peerconnection.enabled
  12825  type: RelaxedAtomicBool
  12826  value: true
  12827  mirror: always
  12828 
  12829 - name: media.peerconnection.scripttransform.enabled
  12830  type: RelaxedAtomicBool
  12831  value: true
  12832  mirror: always
  12833 
  12834 #ifdef MOZ_WEBRTC
  12835  # Use MediaDataDecoder API for VP8/VP9 in WebRTC. This includes hardware
  12836  # acceleration for decoding.
  12837 -   name: media.navigator.mediadatadecoder_vpx_enabled
  12838    type: RelaxedAtomicBool
  12839 #if defined(NIGHTLY_BUILD) || defined(MOZ_WIDGET_GTK)
  12840    value: true
  12841 #else
  12842    value: false
  12843 #endif
  12844    mirror: always
  12845 
  12846  # Use MediaDataDecoder API for H264 in WebRTC. This includes hardware
  12847  # acceleration for decoding.
  12848 -   name: media.navigator.mediadatadecoder_h264_enabled
  12849    type: RelaxedAtomicBool
  12850  #if defined(_ARM64_) && defined(XP_WIN)
  12851    value: false
  12852  #else
  12853    value: true
  12854  #endif
  12855    mirror: always
  12856 
  12857 #if defined(MOZ_WIDGET_GTK)
  12858  # Use hardware acceleration for VP8 decoding on Linux.
  12859 -   name: media.navigator.mediadatadecoder_vp8_hardware_enabled
  12860    type: RelaxedAtomicBool
  12861    value: false
  12862    mirror: always
  12863 #endif
  12864 
  12865  # Interval in milliseconds at which to gather WebRTC stats for use in about:webrtc.
  12866 -   name: media.aboutwebrtc.hist.poll_interval_ms
  12867    type: RelaxedAtomicUint32
  12868    value: 250
  12869    mirror: always
  12870 
  12871  # History time depth in seconds to keep for webrtc:stats for use in about:webrtc.
  12872 -   name: media.aboutwebrtc.hist.storage_window_s
  12873    type: RelaxedAtomicUint32
  12874    value: 60
  12875    mirror: always
  12876 
  12877  # Time in minutes to retain peer connection stats after closing.
  12878 -   name: media.aboutwebrtc.hist.prune_after_m
  12879    type: RelaxedAtomicUint32
  12880    value: 60 * 24 * 2
  12881    mirror: always
  12882 
  12883  # Max number of closed PC stats histories to retain
  12884 -   name: media.aboutwebrtc.hist.closed_stats_to_retain
  12885    type: RelaxedAtomicUint32
  12886    value: 8
  12887    mirror: always
  12888 
  12889  # Gather PeerConnection stats history for display in about:webrtc. If
  12890  # disabled history will only gather when about:webrtc is open. Additionally,
  12891  # if disabled and when about:webrtc is not in the foreground history data
  12892  # will become sparse.
  12893 -   name: media.aboutwebrtc.hist.enabled
  12894    type: RelaxedAtomicBool
  12895 #if defined(MOZ_WIDGET_ANDROID)
  12896    value: false
  12897 #else
  12898    value: @IS_NIGHTLY_BUILD@
  12899 #endif
  12900    mirror: always
  12901 
  12902 #endif  # MOZ_WEBRTC
  12903 
  12904 # HTMLMediaElement.allowedToPlay should be exposed to web content when
  12905 # block autoplay rides the trains to release. Until then, Nightly only.
  12906 - name: media.allowed-to-play.enabled
  12907  type: bool
  12908  value: @IS_NIGHTLY_BUILD@
  12909  mirror: always
  12910 
  12911 # Is support for HTMLMediaElement.seekToNextFrame enabled?
  12912 - name: media.seekToNextFrame.enabled
  12913  type: bool
  12914  value: false
  12915  mirror: always
  12916 
  12917 # Is the Audio Output Devices API enabled?
  12918 - name: media.setsinkid.enabled
  12919  type: bool
  12920 #if defined(MOZ_WIDGET_ANDROID)
  12921  value: false # bug 1473346
  12922 #else
  12923  value: true
  12924 #endif
  12925  mirror: always
  12926 
  12927 # Turn on this pref can enable test-only events for media element.
  12928 - name: media.testing-only-events
  12929  type: bool
  12930  value: false
  12931  mirror: always
  12932 
  12933 - name: media.useAudioChannelService.testing
  12934  type: bool
  12935  value: false
  12936  mirror: always
  12937 
  12938 - name: media.audioFocus.management
  12939  type: bool
  12940 #if defined(MOZ_WIDGET_ANDROID)
  12941  value: true
  12942 #else
  12943  value: false
  12944 #endif
  12945  mirror: always
  12946 
  12947 - name: media.hardwaremediakeys.enabled
  12948  type: bool
  12949  value: true
  12950  mirror: always
  12951 
  12952 # If this pref is on, then `media.mediacontrol.stopcontrol.timer.ms` would take
  12953 # effect and determine the timing to stop controlling media.
  12954 - name: media.mediacontrol.stopcontrol.timer
  12955  type: bool
  12956  value: true
  12957  mirror: always
  12958 
  12959 # If media is being paused after a certain period, then we would think that
  12960 # media doesn't need to be controlled anymore. Therefore, that media would stop
  12961 # listening to the media control key events. The value of this pref is how long
  12962 # media would stop listening to the event after it's paused. The default value
  12963 # is set to 24 hrs (24*60*60*1000)
  12964 - name: media.mediacontrol.stopcontrol.timer.ms
  12965  type: RelaxedAtomicUint32
  12966  value: 86400000
  12967  mirror: always
  12968 
  12969 # If this pref is on, we would stop controlling media after it reaches to the
  12970 # end.
  12971 - name: media.mediacontrol.stopcontrol.aftermediaends
  12972  type: bool
  12973  value: true
  12974  mirror: always
  12975 
  12976 # We would only use media control to control media which duration is longer
  12977 # than this value.
  12978 - name: media.mediacontrol.eligible.media.duration.s
  12979  type: AtomicFloat
  12980  value: 3.0f
  12981  mirror: always
  12982 
  12983 # Encoder creation strategy for WebRTC
  12984 # 0: prefer builtin WebRTC encoder (including OpenH264 via GMP)
  12985 # 1: prefer PlatformEncoderModule
  12986 - name: media.webrtc.encoder_creation_strategy
  12987  type: RelaxedAtomicUint32
  12988 #ifdef ANDROID
  12989  value: 1
  12990 #else
  12991  value: 0
  12992 #endif
  12993  mirror: always
  12994 
  12995 #if defined(XP_MACOSX)
  12996 - name: media.webrtc.capture.allow-iosurface
  12997  type: RelaxedAtomicBool
  12998  value: true
  12999  mirror: always
  13000 #endif
  13001 
  13002 #if defined(XP_WIN)
  13003 - name: media.webrtc.capture.allow-directx
  13004  type: RelaxedAtomicBool
  13005  value: true
  13006  mirror: always
  13007 
  13008 - name: media.webrtc.capture.screen.allow-wgc
  13009  type: RelaxedAtomicBool
  13010  value: false
  13011  mirror: always
  13012 
  13013 - name: media.webrtc.capture.window.allow-wgc
  13014  type: RelaxedAtomicBool
  13015  value: false
  13016  mirror: always
  13017 
  13018 - name: media.webrtc.capture.wgc.allow-zero-hertz
  13019  type: RelaxedAtomicBool
  13020  value: false
  13021  mirror: always
  13022 #endif
  13023 
  13024 #if defined(MOZ_WIDGET_GTK)
  13025 - name: media.webrtc.capture.allow-pipewire
  13026  type: RelaxedAtomicBool
  13027  value: true
  13028  mirror: always
  13029 
  13030 - name: media.webrtc.camera.allow-pipewire
  13031  type: bool
  13032  value: false
  13033  mirror: once
  13034 #endif
  13035 
  13036 - name: media.block-autoplay-until-in-foreground
  13037  type: bool
  13038 #if !defined(MOZ_WIDGET_ANDROID)
  13039  value: true
  13040 #else
  13041  value: false
  13042 #endif
  13043  mirror: always
  13044 
  13045 - name: media.webrtc.hw.h264.enabled
  13046  type: bool
  13047 #if defined(MOZ_WIDGET_ANDROID)
  13048  value: true
  13049 #else
  13050  value: false
  13051 #endif
  13052  mirror: always
  13053 
  13054 - name: media.webrtc.codec.video.av1.enabled
  13055  type: RelaxedAtomicBool
  13056 #if defined(MOZ_AV1)
  13057  value: true
  13058 #endif
  13059  mirror: always
  13060 
  13061 # If true, then AV1 will be used as the preferred codec for WebRTC video.
  13062 # After the AV1 codec is enabled by default, this pref will be renamed.
  13063 - name: media.webrtc.codec.video.av1.experimental_preferred
  13064  type: bool
  13065  value: false
  13066  mirror: always
  13067 
  13068 - name: media.webrtc.simulcast.av1.enabled
  13069  type: RelaxedAtomicBool
  13070  value: true
  13071  mirror: always
  13072 
  13073 - name: media.webrtc.simulcast.h264.enabled
  13074  type: RelaxedAtomicBool
  13075  value: true
  13076  mirror: always
  13077 
  13078 - name: media.webrtc.simulcast.vp9.enabled
  13079  type: RelaxedAtomicBool
  13080  value: @IS_EARLY_BETA_OR_EARLIER@
  13081  mirror: always
  13082 
  13083 - name: media.peerconnection.video.use_dd
  13084  type: RelaxedAtomicBool
  13085  value: true
  13086  mirror: always
  13087 
  13088 - name: media.webrtc.tls_tunnel_for_all_proxy
  13089  type: bool
  13090  value: true
  13091  mirror: always
  13092 
  13093 - name: media.webrtc.disallow_HTTPS_upgrade_for_TURN
  13094  type: bool
  13095  value: true
  13096  mirror: always
  13097 
  13098 # If true, then we require explicit approval from the embedding app (ex. Fenix)
  13099 # on GeckoView to know if we can allow audible, inaudible media or both kinds
  13100 # of media to autoplay.
  13101 - name: media.geckoview.autoplay.request
  13102  type: bool
  13103  value: false
  13104  mirror: always
  13105 
  13106 # This is used in testing only, in order to skip the prompting process. This
  13107 # pref works only when enabling the pref `media.geckoview.autoplay.request`.
  13108 # 0=prompt as normal, 1=allow all, 2=deny all, 3=allow audible request,
  13109 # 4=deny audible request, 5=allow inaudible request, 6=deny inaudible request.
  13110 # 7=leave all requests pending, 8=asynchronous allow all
  13111 - name: media.geckoview.autoplay.request.testing
  13112  type: uint32_t
  13113  value: 0
  13114  mirror: always
  13115 
  13116 - name: media.mediacontrol.testingevents.enabled
  13117  type: bool
  13118  value: false
  13119  mirror: always
  13120 
  13121 #if defined(XP_MACOSX)
  13122 - name: media.macos.screenrecording.oscheck.enabled
  13123  type: bool
  13124  value: true
  13125  mirror: always
  13126 #endif
  13127 
  13128 # When the playback rate of an HTMLMediaElement is greater than this value, or
  13129 # lower than the inverse of this value, the audio is muted.
  13130 - name: media.audio.playbackrate.muting_threshold
  13131  type: uint32_t
  13132  value: 8
  13133  mirror: always
  13134 
  13135 # The interval of time in milliseconds between attempts to reopen any
  13136 # previously unavailable audio device.
  13137 - name: media.audio.device.retry.ms
  13138  type: RelaxedAtomicInt32
  13139  value: 1000
  13140  mirror: always
  13141 
  13142 # Time-stretch algorithm single processing sequence length in milliseconds.
  13143 # This determines to how long sequences the original sound is chopped in the
  13144 # time-stretch algorithm.
  13145 - name: media.audio.playbackrate.soundtouch_sequence_ms
  13146  type: RelaxedAtomicInt32
  13147  value: 10
  13148  mirror: always
  13149 
  13150 # Time-stretch algorithm seeking window length in milliseconds for algorithm
  13151 # that finds the best possible overlapping location. This determines from how
  13152 # wide window the algorithm may look for an optimal joining location when mixing
  13153 # the sound sequences back together.
  13154 - name: media.audio.playbackrate.soundtouch_seekwindow_ms
  13155  type: RelaxedAtomicInt32
  13156  value: 15
  13157  mirror: always
  13158 
  13159 # Time-stretch algorithm overlap length in milliseconds. When the chopped sound
  13160 # sequences are mixed back together, to form a continuous sound stream, this
  13161 # parameter defines over how long period the two consecutive sequences are let
  13162 # to overlap each other.
  13163 - name: media.audio.playbackrate.soundtouch_overlap_ms
  13164  type: RelaxedAtomicInt32
  13165  value: 8
  13166  mirror: always
  13167 
  13168 # The duration, in milliseconds, of decoded audio to keep around in the
  13169 # AudioSink ring-buffer. New decoding operations are started when this limit is
  13170 # reached. The total size of the ring-buffer is slightly bigger than this.
  13171 - name: media.audio.audiosink.threshold_ms
  13172  type: AtomicFloat
  13173 #if defined(XP_MACOSX) && defined(MOZ_AARCH64)
  13174  value: 1000.0
  13175 #else
  13176  value: 200.0
  13177 #endif
  13178  mirror: always
  13179 
  13180 - name: media.video-wakelock
  13181  type: RelaxedAtomicBool
  13182  value: true
  13183  mirror: always
  13184 
  13185 # On Mac, enables using the `<Brand> Media Plugin Helper` executable as the
  13186 # GMP child process instead of the plugin-container executable.
  13187 #if defined(XP_MACOSX)
  13188 -   name: media.plugin_helper_process.enabled
  13189    type: RelaxedAtomicBool
  13190    value: true
  13191    mirror: always
  13192 #endif
  13193 
  13194 # When this is true, the protection mask that Firefox replies to Widevine API
  13195 # QueryOutputProtectionStatus is `kProtectionHDCP` when no potential capturing.
  13196 - name: media.widevine.hdcp-protection-mask
  13197  type: RelaxedAtomicBool
  13198  value: true
  13199  mirror: always
  13200 
  13201 #---------------------------------------------------------------------------
  13202 # Prefs starting with "memory."
  13203 #---------------------------------------------------------------------------
  13204 
  13205 - name: memory.phc.enabled
  13206  type: bool
  13207  value: true
  13208  mirror: always
  13209 
  13210 - name: memory.phc.min_ram_mb
  13211  type: uint32_t
  13212  value: 8000
  13213  mirror: always
  13214 
  13215 - name: memory.phc.avg_delay.first
  13216  type: uint32_t
  13217  value: 65536
  13218  mirror: always
  13219 
  13220 - name: memory.phc.avg_delay.normal
  13221  type: uint32_t
  13222  value: 16384
  13223  mirror: always
  13224 
  13225 - name: memory.phc.avg_delay.page_reuse
  13226  type: uint32_t
  13227  value: 262144
  13228  mirror: always
  13229 
  13230 - name: memory.phc.avg_delay.content.first
  13231  type: uint32_t
  13232  value: 16384
  13233  mirror: always
  13234 
  13235 - name: memory.phc.avg_delay.content.normal
  13236  type: uint32_t
  13237  value: 4096
  13238  mirror: always
  13239 
  13240 - name: memory.phc.avg_delay.content.page_reuse
  13241  type: uint32_t
  13242  value: 262144
  13243  mirror: always
  13244 
  13245 # The maximum desired size of PHC, This includes allocations and excludes
  13246 # metadata. PHC allocations are "oversized" to the system page size.
  13247 - name: memory.phc.size_kb
  13248  type: uint32_t
  13249 #ifdef EARLY_BETA_OR_EARLIER
  13250  value: 16 * 1024
  13251 #else
  13252 # Before Bug 1867191 PHC used aproximately 1.1MB since it was set to a round
  13253 # number of 256 pages.  To keep the size the same we now specify this
  13254 # strange total size, but will follow-up with a more sensible maximum in
  13255 # the future.
  13256  value: 1024 + 128
  13257 #endif
  13258  mirror: always
  13259 
  13260 # Tell mozjemalloc and the TaskController to use lazy purge.
  13261 - name: memory.lazypurge.enable
  13262  type: bool
  13263  value: true
  13264  mirror: always
  13265 
  13266 # If lazy purge is enabled, the maximum delay we wait for idle time in MS.
  13267 - name: memory.lazypurge.maximum_delay
  13268  type: uint32_t
  13269  value: 5000
  13270  mirror: always
  13271 
  13272 # If lazy purge is enabled, the minimum idle budget we wait for in MS.
  13273 - name: memory.lazypurge.minimum_idle_budget
  13274  type: uint32_t
  13275  value: 5
  13276  mirror: always
  13277 
  13278 # If lazy purge is enabled, the minimum time we wait with purge after some
  13279 # memory was reused (tracked per arena).
  13280 - name: memory.lazypurge.reuse_grace_period
  13281  type: uint32_t
  13282  value: 500
  13283  mirror: always
  13284 
  13285 #---------------------------------------------------------------------------
  13286 # Prefs starting with "middlemouse."
  13287 #---------------------------------------------------------------------------
  13288 
  13289 # If set and browser.tabs.opentabfor.middleclick is not set, middle clicking on
  13290 # a link opens the link in a new window.
  13291 - name: middlemouse.openNewWindow
  13292  type: bool
  13293 #if defined(ANDROID) || !defined(XP_MACOSX) && defined(XP_UNIX)
  13294  value: true
  13295 #else
  13296  value: false
  13297 #endif
  13298  mirror: always
  13299 
  13300 #---------------------------------------------------------------------------
  13301 # Prefs starting with "midi."
  13302 #---------------------------------------------------------------------------
  13303 
  13304 - name: midi.testing
  13305  type: RelaxedAtomicBool
  13306  value: false
  13307  mirror: always
  13308 
  13309 #---------------------------------------------------------------------------
  13310 # Prefs starting with "mousewheel."
  13311 #---------------------------------------------------------------------------
  13312 
  13313 # This affects how line scrolls from wheel events will be accelerated.
  13314 # Factor to be multiplied for constant acceleration.
  13315 - name: mousewheel.acceleration.factor
  13316  type: RelaxedAtomicInt32
  13317  value: 10
  13318  mirror: always
  13319 
  13320 # This affects how line scrolls from wheel events will be accelerated.
  13321 # Number of mousewheel clicks when acceleration starts.
  13322 # Acceleration can be turned off if pref is set to -1.
  13323 - name: mousewheel.acceleration.start
  13324  type: RelaxedAtomicInt32
  13325  value: -1
  13326  mirror: always
  13327 
  13328 # Auto-dir is a feature which treats any single-wheel scroll as a scroll in the
  13329 # only one scrollable direction if the target has only one scrollable
  13330 # direction. For example, if the user scrolls a vertical wheel inside a target
  13331 # which is horizontally scrollable but vertical unscrollable, then the vertical
  13332 # scroll is converted to a horizontal scroll for that target.
  13333 # Note that auto-dir only takes effect for |mousewheel.*.action|s and
  13334 # |mousewheel.*.action.override_x|s whose values are 1.
  13335 - name: mousewheel.autodir.enabled
  13336  type: bool
  13337  value: false
  13338  mirror: always
  13339 
  13340 # When a wheel scroll is converted due to auto-dir, which side the converted
  13341 # scroll goes towards is decided by one thing called "honoured target". If the
  13342 # content of the honoured target horizontally starts from right to left, then
  13343 # an upward scroll maps to a rightward scroll and a downward scroll maps to a
  13344 # leftward scroll; otherwise, an upward scroll maps to a leftward scroll and a
  13345 # downward scroll maps to a rightward scroll.
  13346 # If this pref is set to false, then consider the scrolling target as the
  13347 # honoured target.
  13348 # If set to true, then consider the root element in the document where the
  13349 # scrolling target is as the honoured target. But note that there's one
  13350 # exception: for targets in an HTML document, the real root element(I.e. the
  13351 # <html> element) is typically not considered as a root element, but the <body>
  13352 # element is typically considered as a root element. If there is no <body>
  13353 # element, then consider the <html> element instead.
  13354 - name: mousewheel.autodir.honourroot
  13355  type: bool
  13356  value: false
  13357  mirror: always
  13358 
  13359 - name: mousewheel.system_scroll_override.enabled
  13360  type: RelaxedAtomicBool
  13361 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
  13362  value: true
  13363 #else
  13364  value: false
  13365 #endif
  13366  mirror: always
  13367 
  13368 # Prefs for overriding the system mouse wheel scrolling speed on
  13369 # content of the web pages.  When
  13370 # "mousewheel.system_scroll_override.enabled" is true and the
  13371 # system scrolling speed isn't customized by the user, the content scrolling
  13372 # speed is multiplied by the following factors.  The value will be used as
  13373 # 1/100.  E.g., 200 means 2.00.
  13374 # NOTE: Even if "mousewheel.system_scroll_override.enabled" is
  13375 # true, when Gecko detects the user customized the system scrolling speed
  13376 # settings, the override isn't executed.
  13377 - name: mousewheel.system_scroll_override.horizontal.factor
  13378  type: RelaxedAtomicInt32
  13379  value: 200
  13380  mirror: always
  13381 - name: mousewheel.system_scroll_override.vertical.factor
  13382  type: RelaxedAtomicInt32
  13383  value: 200
  13384  mirror: always
  13385 
  13386 # Mouse wheel scroll transaction is held even if the mouse cursor is moved.
  13387 - name: mousewheel.transaction.ignoremovedelay
  13388  type: RelaxedAtomicInt32
  13389  value: 100
  13390  mirror: always
  13391 
  13392 # Mouse wheel scroll transaction period of time (in milliseconds).
  13393 - name: mousewheel.transaction.timeout
  13394  type: RelaxedAtomicInt32
  13395  value: 1500
  13396  mirror: always
  13397 
  13398 # Mouse wheel scroll position is determined by GetMessagePos rather than
  13399 # LPARAM msg value
  13400 - name: mousewheel.ignore_cursor_position_in_lparam
  13401  type: RelaxedAtomicBool
  13402  value: false
  13403  mirror: always
  13404 
  13405 # If line-height is lower than this value (in device pixels), 1 line scroll
  13406 # scrolls this height.
  13407 - name: mousewheel.min_line_scroll_amount
  13408  type: int32_t
  13409  value: 5
  13410  mirror: always
  13411 
  13412 # Timeout period (in milliseconds) when the mouse wheel event is no longer
  13413 # handled as the same series.
  13414 - name: mousewheel.scroll_series_timeout
  13415  type: RelaxedAtomicInt32
  13416  value: 80
  13417  mirror: always
  13418 
  13419 #---------------------------------------------------------------------------
  13420 # Prefs starting with "mozilla."
  13421 #---------------------------------------------------------------------------
  13422 
  13423 - name: mozilla.widget.raise-on-setfocus
  13424  type: bool
  13425  value: true
  13426  mirror: once
  13427 
  13428 #---------------------------------------------------------------------------
  13429 # Prefs starting with "network."
  13430 #---------------------------------------------------------------------------
  13431 
  13432 # Force less-secure NTLMv1 when needed (NTLMv2 is the default).
  13433 - name: network.auth.force-generic-ntlm-v1
  13434  type: RelaxedAtomicBool
  13435  value: false
  13436  mirror: always
  13437 
  13438 # Sub-resources HTTP-authentication:
  13439 #   0 - don't allow sub-resources to open HTTP authentication credentials
  13440 #       dialogs
  13441 #   1 - allow sub-resources to open HTTP authentication credentials dialogs,
  13442 #       but don't allow it for cross-origin sub-resources
  13443 #   2 - allow the cross-origin authentication as well.
  13444 - name: network.auth.subresource-http-auth-allow
  13445  type: uint32_t
  13446  value: 2
  13447  mirror: always
  13448 
  13449 # Sub-resources HTTP-authentication for cross-origin images:
  13450 # - true: It is allowed to present http auth. dialog for cross-origin images.
  13451 # - false: It is not allowed.
  13452 # If network.auth.subresource-http-auth-allow has values 0 or 1 this pref does
  13453 # not have any effect.
  13454 - name: network.auth.subresource-img-cross-origin-http-auth-allow
  13455  type: bool
  13456  value: false
  13457  mirror: always
  13458 
  13459 # Resources that are triggered by some non-web-content:
  13460 # - true: They are allow to present http auth. dialog
  13461 # - false: They are not allow to present http auth. dialog.
  13462 - name: network.auth.non-web-content-triggered-resources-http-auth-allow
  13463  type: bool
  13464  value: false
  13465  mirror: always
  13466 
  13467 # Whether to display auth prompts if X-Frame-Options header will block loading
  13468 # page
  13469 - name: network.auth.supress_auth_prompt_for_XFO_failures
  13470  type: bool
  13471  value: true
  13472  mirror: always
  13473 
  13474 # whether to redirect the channel for auth redirects. See Bug 1820807
  13475 - name: network.auth.use_redirect_for_retries
  13476  type: RelaxedAtomicBool
  13477  value: @IS_EARLY_BETA_OR_EARLIER@
  13478  mirror: always
  13479 
  13480 # When true, authentication challenges will be sorted even if
  13481 # an authentication is already in progress. This may cause issues sometimes.
  13482 - name: network.auth.sort_challenge_in_progress
  13483  type: RelaxedAtomicBool
  13484  value: false
  13485  mirror: always
  13486 
  13487 # When true, the hashing of the certificate will be done with the hashing
  13488 # algorithm specified in the cert instead of SHA256.
  13489 - name: network.auth.sspi_detect_hash
  13490  type: RelaxedAtomicBool
  13491  value: true
  13492  mirror: always
  13493 
  13494 # Default buffer size for buffered stream operations. The actual value used will
  13495 # be floored to the nearest power of two.
  13496 - name: network.buffer.default_size
  13497  type: RelaxedAtomicUint32
  13498  value: 65536
  13499  mirror: always
  13500 
  13501 # See the full list of values in nsICookieService.idl.
  13502 - name: network.cookie.cookieBehavior
  13503  type: RelaxedAtomicInt32
  13504  value: 0 # accept all cookies
  13505  mirror: always
  13506 
  13507 # Maximum client-side cookie life-time cap. Measured in seconds, set to 0 to
  13508 # disable.
  13509 - name: network.cookie.maxageCap
  13510  type: RelaxedAtomicUint32
  13511  value: 34560000
  13512  mirror: always
  13513 
  13514 # The cookieBehavior to be used in Private Browsing mode.
  13515 - name: network.cookie.cookieBehavior.pbmode
  13516  type: RelaxedAtomicInt32
  13517  value: 0 # accept all cookies
  13518  mirror: always
  13519 
  13520 # Changes cookieBehavior=5 to block third-party cookies by default
  13521 - name: network.cookie.cookieBehavior.optInPartitioning
  13522  type: bool
  13523  value: false
  13524  mirror: always
  13525 
  13526 # Changes cookieBehavior=5 to block third-party cookies in the private browsing
  13527 # mode.
  13528 - name: network.cookie.cookieBehavior.optInPartitioning.pbmode
  13529  type: bool
  13530  value: false
  13531  mirror: always
  13532 
  13533 # Whether to block third-party tracker cookie and storage access when
  13534 # cookieBehavior=5.
  13535 - name: network.cookie.cookieBehavior.trackerCookieBlocking
  13536  type: bool
  13537  value: false
  13538  mirror: always
  13539 
  13540 # Whether to support CHIPS(Cookies Having Independent Partitioned State).
  13541 - name: network.cookie.CHIPS.enabled
  13542  type: RelaxedAtomicBool
  13543  value: true
  13544  mirror: always
  13545 
  13546 # Updated to match the target count when we migrate the unpartitioned CHIPS
  13547 # cookies to their first-party partition.
  13548 - name: network.cookie.CHIPS.lastMigrateDatabase
  13549  type: RelaxedAtomicUint32
  13550  value: 0
  13551  mirror: always
  13552 
  13553 # Used to increase the number of times we want to have migrated the database.
  13554 # This lets us remotely perform a database migration with Nimbus.
  13555 - name: network.cookie.CHIPS.migrateDatabaseTarget
  13556  type: RelaxedAtomicUint32
  13557  value: 2
  13558  mirror: always
  13559 
  13560 # Stale threshold for cookies in seconds.
  13561 - name: network.cookie.staleThreshold
  13562  type: uint32_t
  13563  value: 60
  13564  mirror: always
  13565 
  13566 # Enable CHIPS partition byte limit enforcement
  13567 # This pref will only be consulted if CHIPS itself is enabled
  13568 - name: network.cookie.chips.partitionLimitEnabled
  13569  type: bool
  13570  value: true
  13571  mirror: always
  13572 
  13573 # CHIPS partition limit DryRun mode disables purging/rejection
  13574 # but still checks for capacity overflow and reports telemetry
  13575 - name: network.cookie.chips.partitionLimitDryRun
  13576  type: bool
  13577  value: false
  13578  mirror: always
  13579 
  13580 # The actual CHIPS parition limit in bytes
  13581 - name: network.cookie.chips.partitionLimitByteCapacity
  13582  type: RelaxedAtomicInt32
  13583  value: 10240 # 10KiB
  13584  mirror: always
  13585 
  13586 - name: network.cookie.sameSite.laxByDefault
  13587  type: RelaxedAtomicBool
  13588  value: false
  13589  mirror: always
  13590 
  13591 - name: network.cookie.sameSite.laxByDefaultWarningsForBeta
  13592  type: RelaxedAtomicBool
  13593  value: false
  13594  mirror: always
  13595 
  13596 # lax-by-default 2 minutes tollerance for unsafe methods. The value is in seconds.
  13597 - name: network.cookie.sameSite.laxPlusPOST.timeout
  13598  type: uint32_t
  13599  value: 120
  13600  mirror: always
  13601 
  13602 # For lax-by-default cookies ignore cross-site redirects when the final
  13603 # redirect is same-site again.
  13604 # https://github.com/httpwg/http-extensions/issues/2104
  13605 - name: network.cookie.sameSite.laxByDefault.allowBoomerangRedirect
  13606  type: bool
  13607  value: true
  13608  mirror: always
  13609 
  13610 - name: network.cookie.sameSite.noneRequiresSecure
  13611  type: bool
  13612  value: true
  13613  mirror: always
  13614 
  13615 - name: network.cookie.sameSite.schemeful
  13616  type: bool
  13617  value: @IS_NIGHTLY_BUILD@
  13618  mirror: always
  13619 
  13620 - name: network.cookie.sameSite.crossSiteIframeSetCheck
  13621  type: bool
  13622  value: true
  13623  mirror: always
  13624 
  13625 # If we should not store "persistent" cookies at all, i.e., make the
  13626 # "persistent" storage be like "private" storage.  This value is only read when
  13627 # instantiating persistent storage for the cookie service, which usually only
  13628 # happens when the cookie service singleton is created.
  13629 - name: network.cookie.noPersistentStorage
  13630  type: bool
  13631  value: false
  13632  mirror: always
  13633 
  13634 # If true then any cookies containing unicode will be rejected
  13635 - name: network.cookie.blockUnicode
  13636  type: RelaxedAtomicBool
  13637  value: false
  13638  mirror: always
  13639 
  13640 # If true cookies loaded from the sqlite DB that have a creation or
  13641 # last accessed time that is in the future will be fixed and the
  13642 # timestamps will be set to the current time.
  13643 - name: network.cookie.fixup_on_db_load
  13644  type: RelaxedAtomicBool
  13645  value: true
  13646  mirror: always
  13647 
  13648 # If true content types of multipart/x-mixed-replace cannot set a cookie
  13649 - name: network.cookie.prevent_set_cookie_from_multipart
  13650  type: RelaxedAtomicBool
  13651  value: true
  13652  mirror: always
  13653 
  13654 # Use sever time (Date header) to adjust the expire cookie attribute
  13655 - name: network.cookie.useServerTime
  13656  type: RelaxedAtomicBool
  13657  value: true
  13658  mirror: always
  13659 
  13660 # When true, Firefox will reject nameless cookies that contain `=` in value.
  13661 - name: network.cookie.block_nameless_with_equal_char
  13662  type: RelaxedAtomicBool
  13663  value: true
  13664  mirror: always
  13665 
  13666 # A Enable a workaround for XPCShell tests to avoid setting the cookies via
  13667 # HttpChannelParent actor
  13668 - name: network.cookie.skip_browsing_context_check_in_parent_for_testing
  13669  type: bool
  13670  value: false
  13671  mirror: always
  13672 
  13673 # If we should attempt to race the cache with network.
  13674 # See also race_with_non_ssd for auto-enable behavior on Windows non-SSD drives.
  13675 - name: network.http.rcwn.enabled
  13676  type: bool
  13677  value: false
  13678  mirror: always
  13679 
  13680 # If we should attempt to race the cache with network for non-SSD drives (Windows only).
  13681 - name: network.http.rcwn.race_with_non_ssd
  13682  type: bool
  13683  value: true
  13684  mirror: always
  13685 
  13686 - name: network.http.rcwn.cache_queue_normal_threshold
  13687  type: uint32_t
  13688  value: 8
  13689  mirror: always
  13690 
  13691 - name: network.http.rcwn.cache_queue_priority_threshold
  13692  type: uint32_t
  13693  value: 2
  13694  mirror: always
  13695 
  13696 # We might attempt to race the cache with the network only if a resource
  13697 # is smaller than this size.
  13698 - name: network.http.rcwn.small_resource_size_kb
  13699  type: uint32_t
  13700  value: 256
  13701  mirror: always
  13702 
  13703 - name: network.http.rcwn.min_wait_before_racing_ms
  13704  type: uint32_t
  13705  value: 0
  13706  mirror: always
  13707 
  13708 - name: network.http.rcwn.max_wait_before_racing_ms
  13709  type: uint32_t
  13710  value: 500
  13711  mirror: always
  13712 
  13713  # Whether to send the Referer header in response to a meta refresh, or
  13714  # in response to a Refresh header.
  13715 - name: network.http.referer.sendFromRefresh
  13716  type: bool
  13717  value: true
  13718  mirror: always
  13719 
  13720 # false=real referer, true=spoof referer (use target URI as referer).
  13721 - name: network.http.referer.spoofSource
  13722  type: bool
  13723  value: false
  13724  mirror: always
  13725 
  13726 # Check whether we need to hide referrer when leaving a .onion domain.
  13727 # false=allow onion referer, true=hide onion referer (use empty referer).
  13728 - name: network.http.referer.hideOnionSource
  13729  type: bool
  13730  value: true
  13731  mirror: always
  13732 
  13733 # Include an origin header on non-GET and non-HEAD requests regardless of CORS.
  13734 # 0=never send, 1=send when same-origin only, 2=always send.
  13735 - name: network.http.sendOriginHeader
  13736  type: uint32_t
  13737  value: 2
  13738  mirror: always
  13739 
  13740 # Include an idempotency-key header for POST requests
  13741 - name: network.http.idempotencyKey.enabled
  13742  type: RelaxedAtomicBool
  13743  value: @IS_NIGHTLY_BUILD@
  13744  mirror: always
  13745 
  13746 # Whether to respect the redirected-tainted origin flag
  13747 # https://fetch.spec.whatwg.org/#concept-request-tainted-origin
  13748 - name: network.http.origin.redirectTainted
  13749  type: bool
  13750  value: true
  13751  mirror: always
  13752 
  13753 # If true, cross origin fetch (or XHR) requests would be keyed
  13754 # with a different cache key.
  13755 - name: network.fetch.cache_partition_cross_origin
  13756  type: RelaxedAtomicBool
  13757  value: true
  13758  mirror: always
  13759 
  13760 # If true, when browser code itself makes network requests, default to
  13761 # omitting credentials.
  13762 - name: network.fetch.systemDefaultsToOmittingCredentials
  13763  type: RelaxedAtomicBool
  13764  value: true
  13765  mirror: always
  13766 
  13767 # Prefs allowing granular control of referers.
  13768 # 0=don't send any, 1=send only on clicks, 2=send on image requests as well
  13769 - name: network.http.sendRefererHeader
  13770  type: uint32_t
  13771  value: 2
  13772  mirror: always
  13773  do_not_use_directly: true
  13774 
  13775 # Whether to add urgency and incremental to request headers
  13776 - name: network.http.priority_header.enabled
  13777  type: RelaxedAtomicBool
  13778  value: true
  13779  mirror: always
  13780 
  13781 # The maximum allowed length for a referrer header - 4096 default.
  13782 # 0 means no limit.
  13783 - name: network.http.referer.referrerLengthLimit
  13784  type: uint32_t
  13785  value: 4096
  13786  mirror: always
  13787 
  13788 #  0=always send, 1=send iff base domains match, 2=send iff hosts match.
  13789 - name: network.http.referer.XOriginPolicy
  13790  type: uint32_t
  13791  value: 0
  13792  mirror: always
  13793  do_not_use_directly: true
  13794 
  13795 # 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port.
  13796 - name: network.http.referer.trimmingPolicy
  13797  type: uint32_t
  13798  value: 0
  13799  mirror: always
  13800  do_not_use_directly: true
  13801 
  13802 # 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port.
  13803 - name: network.http.referer.XOriginTrimmingPolicy
  13804  type: uint32_t
  13805  value: 0
  13806  mirror: always
  13807  do_not_use_directly: true
  13808 
  13809 # Set the default Referrer Policy; to be used unless overriden by the site.
  13810 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
  13811 # 3=no-referrer-when-downgrade.
  13812 - name: network.http.referer.defaultPolicy
  13813  type: uint32_t
  13814  value: 2
  13815  mirror: always
  13816 
  13817 # Set the default Referrer Policy applied to third-party trackers when the
  13818 # default cookie policy is set to reject third-party trackers, to be used
  13819 # unless overriden by the site.
  13820 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
  13821 # 3=no-referrer-when-downgrade.
  13822 # Trim referrers from trackers to origins by default.
  13823 - name: network.http.referer.defaultPolicy.trackers
  13824  type: uint32_t
  13825  value: 2
  13826  mirror: always
  13827 
  13828 # Set the Private Browsing Default Referrer Policy, to be used
  13829 # unless overriden by the site.
  13830 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
  13831 # 3=no-referrer-when-downgrade.
  13832 - name: network.http.referer.defaultPolicy.pbmode
  13833  type: uint32_t
  13834  value: 2
  13835  mirror: always
  13836 
  13837 # Set to ignore referrer policies which is less restricted than the default for
  13838 # cross-site requests, including 'unsafe-url', 'no-referrer-when-downgrade' and
  13839 # 'origin-when-cross-origin'.
  13840 - name: network.http.referer.disallowCrossSiteRelaxingDefault
  13841  type: bool
  13842  value: true
  13843  mirror: always
  13844 
  13845 # Whether we ignore less restricted referrer policies for top navigations.
  13846 - name: network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation
  13847  type: bool
  13848  value: false
  13849  mirror: always
  13850 
  13851 
  13852 # Set to ignore referrer policies which is less restricted than the default for
  13853 # cross-site requests in the private browsing mode, including 'unsafe-url',
  13854 # 'no-referrer-when-downgrade' and 'origin-when-cross-origin'.
  13855 - name: network.http.referer.disallowCrossSiteRelaxingDefault.pbmode
  13856  type: bool
  13857  value: true
  13858  mirror: always
  13859 
  13860 # Whether we ignore less restricted referrer policies for top navigations in the
  13861 # private browsing mode.
  13862 - name: network.http.referer.disallowCrossSiteRelaxingDefault.pbmode.top_navigation
  13863  type: bool
  13864  value: true
  13865  mirror: always
  13866 
  13867 # Set the Private Browsing Default Referrer Policy applied to third-party
  13868 # trackers when the default cookie policy is set to reject third-party
  13869 # trackers, to be used unless overriden by the site.
  13870 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
  13871 # 3=no-referrer-when-downgrade.
  13872 # No need to change this pref for trimming referrers from trackers since in
  13873 # private windows we already trim all referrers to origin only.
  13874 - name: network.http.referer.defaultPolicy.trackers.pbmode
  13875  type: uint32_t
  13876  value: 2
  13877  mirror: always
  13878 
  13879 # Whether certain http header values should be censored out in logs.
  13880 # Specifically filters out "authorization" and "proxy-authorization".
  13881 - name: network.http.sanitize-headers-in-logs
  13882  type: RelaxedAtomicBool
  13883  value: true
  13884  mirror: always
  13885 
  13886 # Whether network error logging is enabled.
  13887 - name: network.http.network_error_logging.enabled
  13888  type: RelaxedAtomicBool
  13889  value: false
  13890  mirror: always
  13891 
  13892 # Whether or not we use Windows for SSO to Microsoft sites.
  13893 - name: network.http.windows-sso.enabled
  13894  type: RelaxedAtomicBool
  13895  value: false
  13896  mirror: always
  13897 
  13898 # Whether windows-sso is enabled for the default (0) container.
  13899 # To enable SSO for additional containers, add a new pref like
  13900 # `network.http.windows-sso.container-enabled.${containerId}` = true
  13901 - name: network.http.windows-sso.container-enabled.0
  13902  type: bool
  13903  value: true
  13904  mirror: never
  13905 
  13906 # Whether or not we use MS Entra SSO to network.microsoft-sso-authority-list sites.
  13907 - name: network.http.microsoft-entra-sso.enabled
  13908  type: RelaxedAtomicBool
  13909  value: false
  13910  mirror: always
  13911 
  13912 # Whether microsoft-entra-sso is enabled for the default (0) container.
  13913 # To enable SSO for additional containers, add a new pref like
  13914 # `network.http.microsoft-entra-sso.container-enabled.${containerId}` = true
  13915 - name: network.http.microsoft-entra-sso.container-enabled.0
  13916  type: bool
  13917  value: true
  13918  mirror: never
  13919 
  13920 # To specify the list of trusted Microsoft Single Sign-On (SSO) authority URLs
  13921 # This is needed for macOS unlike Windows where we send every URL to SSO
  13922 - name: network.microsoft-sso-authority-list
  13923  type: String
  13924  value: >-
  13925    login.microsoft.com,
  13926    login.microsoftonline.com,
  13927    sts.windows.net,
  13928    login.partner.microsoftonline.cn,
  13929    login.chinacloudapi.cn,
  13930    login.microsoftonline.us,
  13931    login-us.microsoftonline.com
  13932  mirror: never
  13933 
  13934 # The factor by which to increase the keepalive timeout when the
  13935 # NS_HTTP_LARGE_KEEPALIVE flag is used for a connection
  13936 - name: network.http.largeKeepaliveFactor
  13937  type: RelaxedAtomicUint32
  13938 #if defined(ANDROID)
  13939  value: 10
  13940 #else
  13941  value: 20
  13942 #endif
  13943  mirror: always
  13944 
  13945 # Max size, in bytes, for received HTTP response header.
  13946 - name: network.http.max_response_header_size
  13947  type: RelaxedAtomicUint32
  13948  value: 393216
  13949  mirror: always
  13950 
  13951 # Whether or not we give more priority to active tab.
  13952 - name: network.http.active_tab_priority
  13953  type: RelaxedAtomicBool
  13954 #if defined(ANDROID)
  13955  value: false
  13956 #else
  13957  value: true
  13958 #endif
  13959  mirror: always
  13960 
  13961 # Treat all Unicode labels as confusable/unsafe so that they show up
  13962 # as Punycode in the UI.
  13963 - name: network.IDN_show_punycode
  13964  type: RelaxedAtomicBool
  13965  value: false
  13966  mirror: always
  13967 
  13968 # If set to true, IOService.offline depends on IOService.connectivity.
  13969 - name: network.offline-mirrors-connectivity
  13970  type: RelaxedAtomicBool
  13971  value: false
  13972  mirror: always
  13973 
  13974 # If set to true, disallow localhost connections when offline.
  13975 - name: network.disable-localhost-when-offline
  13976  type: RelaxedAtomicBool
  13977  value: false
  13978  mirror: always
  13979 
  13980 # If set to true, Firefox will use the file extension of a URL
  13981 # to sniff its content type. When false, nsUnknownDecoder will
  13982 # use the file extension only for file URLs
  13983 - name: network.sniff.use_extension
  13984  type: RelaxedAtomicBool
  13985  value: false
  13986  mirror: always
  13987 
  13988 # Disable requests to 0.0.0.0
  13989 # See Bug 1889130
  13990 - name: network.socket.ip_addr_any.disabled
  13991  type: RelaxedAtomicBool
  13992  value: true
  13993  mirror: always
  13994 
  13995 # Set true to allow resolving proxy for localhost
  13996 - name: network.proxy.allow_hijacking_localhost
  13997  type: RelaxedAtomicBool
  13998  value: false
  13999  mirror: always
  14000 
  14001 # This pref will still treat localhost URLs as secure even when hijacked
  14002 # during testing. This is necessary for automated testing to check that we
  14003 # actually treat localhost as a secure origin.
  14004 - name: network.proxy.testing_localhost_is_secure_when_hijacked
  14005  type: RelaxedAtomicBool
  14006  value: true
  14007  mirror: always
  14008 
  14009 # The timeout used when calling DhcpRequestParams. The call may sometimes hang
  14010 # after resuming from suspend.
  14011 - name: network.proxy.dhcp_wpad_timeout_sec
  14012  type: AtomicFloat
  14013  value: 5.0
  14014  mirror: always
  14015 
  14016 # When true, we only allow one outstanding GetPacFromDHCP runnable
  14017 - name: network.proxy.dhcp_wpad_only_one_outstanding
  14018  type: RelaxedAtomicBool
  14019  value: true
  14020  mirror: always
  14021 
  14022 # Allow CookieJarSettings to be unblocked for channels without a document.
  14023 # This is for testing only.
  14024 - name: network.cookieJarSettings.unblocked_for_testing
  14025  type: bool
  14026  value: false
  14027  mirror: always
  14028 
  14029 - name: network.predictor.enable-hover-on-ssl
  14030  type: bool
  14031  value: false
  14032  mirror: always
  14033 
  14034 # Indicates whether the `fetchpriority` attribute for elements which support it
  14035 # (e.g. `<script>`) is enabled.
  14036 - name: network.fetchpriority.enabled
  14037  type: RelaxedAtomicBool
  14038  value: true
  14039  mirror: always
  14040 
  14041 # When true, the channel's urgency will be adjusted based on the
  14042 # channel's nsISupportsPriority.
  14043 - name: network.fetchpriority.adjust_urgency
  14044  type: RelaxedAtomicBool
  14045  value: true
  14046  mirror: always
  14047 
  14048 # Adjustments to apply to the internal priority of <link rel=preload as=script
  14049 # fetchpriority=low/high/auto> and equivalent Link header with respect to the
  14050 # case when network.fetchpriority is disabled.
  14051 # - When the flag is disabled, Gecko currently sets priority to HIGHEST.
  14052 # - When the flag is enabled, it respectively maps to LOW/HIGHEST/HIGHEST.
  14053 - name: network.fetchpriority.adjustments.link-preload-script.low
  14054  type: int32_t
  14055  value: 30
  14056  mirror: always
  14057 - name: network.fetchpriority.adjustments.link-preload-script.high
  14058  type: int32_t
  14059  value: 0
  14060  mirror: always
  14061 - name: network.fetchpriority.adjustments.link-preload-script.auto
  14062  type: int32_t
  14063  value: 0
  14064  mirror: always
  14065 
  14066 # Adjustments to apply to the internal priority of <script type="module"
  14067 # fetchpriority=low/high/auto> with respect to the case when
  14068 # network.fetchpriority is disabled.
  14069 # - When the flag is disabled, Gecko currently sets priority to NORMAL.
  14070 # - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL.
  14071 - name: network.fetchpriority.adjustments.module-script.low
  14072  type: int32_t
  14073  value: 10
  14074  mirror: always
  14075 - name: network.fetchpriority.adjustments.module-script.high
  14076  type: int32_t
  14077  value: -10
  14078  mirror: always
  14079 - name: network.fetchpriority.adjustments.module-script.auto
  14080  type: int32_t
  14081  value: 0
  14082  mirror: always
  14083 
  14084 # Adjustments to apply to the internal priority of async or defer <script
  14085 # fetchpriority=low/high/auto> with respect to the case when
  14086 # network.fetchpriority is disabled.
  14087 # - When the flag is disabled, Gecko currently sets priority to NORMAL.
  14088 # - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL.
  14089 - name: network.fetchpriority.adjustments.async-or-defer-script.low
  14090  type: int32_t
  14091  value: 10
  14092  mirror: always
  14093 - name: network.fetchpriority.adjustments.async-or-defer-script.high
  14094  type: int32_t
  14095  value: -10
  14096  mirror: always
  14097 - name: network.fetchpriority.adjustments.async-or-defer-script.auto
  14098  type: int32_t
  14099  value: 0
  14100  mirror: always
  14101 
  14102 # Adjustments to apply to the internal priority of <script
  14103 # fetchpriority=low/high/auto> inside the <head>, with respect to the case when
  14104 # network.fetchpriority is disabled.
  14105 # - When the flag is disabled, Gecko currently sets priority to NORMAL.
  14106 # - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL.
  14107 - name: network.fetchpriority.adjustments.script-in-head.low
  14108  type: int32_t
  14109  value: 10
  14110  mirror: always
  14111 - name: network.fetchpriority.adjustments.script-in-head.high
  14112  type: int32_t
  14113  value: -10
  14114  mirror: always
  14115 - name: network.fetchpriority.adjustments.script-in-head.auto
  14116  type: int32_t
  14117  value: 0
  14118  mirror: always
  14119 
  14120 # Adjustments to apply to the internal priority of <script
  14121 # fetchpriority=low/high/auto> (other than the scripts handled above) with
  14122 # respect to the case when network.fetchpriority is disabled.
  14123 # - When the flag is disabled, Gecko currently sets priority to NORMAL.
  14124 # - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL.
  14125 - name: network.fetchpriority.adjustments.other-script.low
  14126  type: int32_t
  14127  value: 10
  14128  mirror: always
  14129 - name: network.fetchpriority.adjustments.other-script.high
  14130  type: int32_t
  14131  value: -10
  14132  mirror: always
  14133 - name: network.fetchpriority.adjustments.other-script.auto
  14134  type: int32_t
  14135  value: 0
  14136  mirror: always
  14137 
  14138 # Adjustments to apply to the internal priority of <link rel=preload as=font
  14139 # fetchpriority=low/high/auto> with respect to the case when
  14140 # network.fetchpriority is disabled.
  14141 # - When the flag is disabled, Gecko currently sets priority to HIGH.
  14142 # - When the flag is enabled, it respectively maps to LOW/HIGH/HIGH.
  14143 - name: network.fetchpriority.adjustments.link-preload-font.low
  14144  type: int32_t
  14145  value: 20
  14146  mirror: always
  14147 - name: network.fetchpriority.adjustments.link-preload-font.high
  14148  type: int32_t
  14149  value: -10
  14150  mirror: always
  14151 - name: network.fetchpriority.adjustments.link-preload-font.auto
  14152  type: int32_t
  14153  value: 0
  14154  mirror: always
  14155 
  14156 # Adjustments to apply to the internal priority of <link rel=preload as=fetch
  14157 # fetchpriority=low/high/auto> with respect to the case when
  14158 # network.fetchpriority is disabled.
  14159 # - When the flag is disabled, Gecko currently sets priority to NORMAL.
  14160 # - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL.
  14161 - name: network.fetchpriority.adjustments.link-preload-fetch.low
  14162  type: int32_t
  14163  value: 10
  14164  mirror: always
  14165 - name: network.fetchpriority.adjustments.link-preload-fetch.high
  14166  type: int32_t
  14167  value: -10
  14168  mirror: always
  14169 - name: network.fetchpriority.adjustments.link-preload-fetch.auto
  14170  type: int32_t
  14171  value: 0
  14172  mirror: always
  14173 
  14174 # Adjustments to apply to the internal priority of deferred style for
  14175 # fetchpriority=low/high/auto> with respect to the case when
  14176 # network.fetchpriority is disabled.
  14177 # - When the flag is disabled, Gecko currently sets priority to NORMAL.
  14178 # - When the flag is enabled, it respectively maps to LOW/NORMAL/NORMAL.
  14179 - name: network.fetchpriority.adjustments.deferred-style.low
  14180  type: int32_t
  14181  value: 10
  14182  mirror: always
  14183 - name: network.fetchpriority.adjustments.deferred-style.high
  14184  type: int32_t
  14185  value: 0
  14186  mirror: always
  14187 - name: network.fetchpriority.adjustments.deferred-style.auto
  14188  type: int32_t
  14189  value: 0
  14190  mirror: always
  14191 
  14192 # Adjustments to apply to the internal priority of <link rel=preload as=style
  14193 # fetchpriority=low/high/auto> with respect to the case when
  14194 # network.fetchpriority is disabled.
  14195 # - When the flag is disabled, Gecko currently sets priority to HIGHEST.
  14196 # - When the flag is enabled, it respectively maps to HIGH/HIGHEST/HIGHEST.
  14197 - name: network.fetchpriority.adjustments.link-preload-style.low
  14198  type: int32_t
  14199  value: 10
  14200  mirror: always
  14201 - name: network.fetchpriority.adjustments.link-preload-style.high
  14202  type: int32_t
  14203  value: 0
  14204  mirror: always
  14205 - name: network.fetchpriority.adjustments.link-preload-style.auto
  14206  type: int32_t
  14207  value: 0
  14208  mirror: always
  14209 
  14210 # Adjustments to apply to the internal priority of other non-deferred
  14211 # stylesheet load for fetchpriority=low/high/auto with respect to the case when
  14212 # network.fetchpriority is disabled.
  14213 # - When the flag is disabled, Gecko currently sets priority to NORMAL.
  14214 # - When the flag is enabled, it respectively maps to HIGH/HIGHEST/NORMAL.
  14215 - name: network.fetchpriority.adjustments.non-deferred-style.low
  14216  type: int32_t
  14217  value: 0
  14218  mirror: always
  14219 - name: network.fetchpriority.adjustments.non-deferred-style.high
  14220  type: int32_t
  14221  value: -20
  14222  mirror: always
  14223 - name: network.fetchpriority.adjustments.non-deferred-style.auto
  14224  type: int32_t
  14225  value: 0
  14226  mirror: always
  14227 
  14228 # Adjustments to apply to the internal priority of global fetch API
  14229 # for fetchpriority=low/high/auto with respect to the case when
  14230 # network.fetchpriority is disabled.
  14231 # - When the flag is disabled, Gecko currently sets priority to NORMAL.
  14232 # - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL.
  14233 - name: network.fetchpriority.adjustments.global-fetch-api.low
  14234  type: RelaxedAtomicInt32
  14235  value: 10
  14236  mirror: always
  14237 - name: network.fetchpriority.adjustments.global-fetch-api.high
  14238  type: RelaxedAtomicInt32
  14239  value: -10
  14240  mirror: always
  14241 - name: network.fetchpriority.adjustments.global-fetch-api.auto
  14242  type: RelaxedAtomicInt32
  14243  value: 0
  14244  mirror: always
  14245 
  14246 # Adjustments to apply to the internal priority of <link rel=preload as=images
  14247 # fetchpriority=low/high/auto> and <img fetchpriority=low/high/auto> with
  14248 # respect to the case when network.fetchpriority is disabled.
  14249 # - When the flag is disabled, Gecko currently sets priority to LOW.
  14250 # - When the flag is enabled, it respectively maps to LOW/LOW/HIGH.
  14251 # The image code can currently further adjust the priority for image load, see
  14252 # imgRequest::BoostPriority and AdjustPriorityForImages.
  14253 - name: network.fetchpriority.adjustments.images.low
  14254  type: int32_t
  14255  value: 10
  14256  mirror: always
  14257 - name: network.fetchpriority.adjustments.images.high
  14258  type: int32_t
  14259  value: -20
  14260  mirror: always
  14261 - name: network.fetchpriority.adjustments.images.auto
  14262  type: int32_t
  14263  value: 0
  14264  mirror: always
  14265 
  14266 # Adjustments to apply to the internal priority of <audio>, <track>, <video>,
  14267 # or <link rel=preload as=audio/track/video> with respect to the case when
  14268 # network.fetchpriority is disabled.
  14269 # - When the flag is disabled, Gecko currently sets priority to NORMAL.
  14270 # - When the flag is enabled, it respectively maps to LOW/LOW/HIGH.
  14271 - name: network.fetchpriority.adjustments.media.low
  14272  type: int32_t
  14273  value: 10
  14274  mirror: always
  14275 - name: network.fetchpriority.adjustments.media.high
  14276  type: int32_t
  14277  value: 0
  14278  mirror: always
  14279 - name: network.fetchpriority.adjustments.media.auto
  14280  type: int32_t
  14281  value: 0
  14282  mirror: always
  14283 
  14284 # Enables `<link rel="preconnect">` tag and `Link: rel=preconnect` response header
  14285 # handling.
  14286 - name: network.preconnect
  14287  type: RelaxedAtomicBool
  14288  value: true
  14289  mirror: always
  14290 
  14291 # Enables `<link rel="modulepreload">` tag and `Link: rel=modulepreload`
  14292 # response header handling.
  14293 - name: network.modulepreload
  14294  type: RelaxedAtomicBool
  14295  value: true
  14296  mirror: always
  14297 
  14298 # Enable 103 Early Hint status code (RFC 8297)
  14299 - name: network.early-hints.enabled
  14300  type: RelaxedAtomicBool
  14301  value: true
  14302  mirror: always
  14303 
  14304 # Enable sending 103 (Early Hints) responses over HTTP/1.1
  14305 - name: network.early-hints.over-http-v1-1.enabled
  14306  type: RelaxedAtomicBool
  14307  value: true
  14308  mirror: always
  14309 
  14310 # Enable `Link: rel=preconnect` in 103 Early Hint response.
  14311 - name: network.early-hints.preconnect.enabled
  14312  type: RelaxedAtomicBool
  14313  value: true
  14314  mirror: always
  14315 
  14316 # The max number of speculative connections we allow for `Link: rel=preconnect`.
  14317 # When 0, the speculative connection created due to `Link: rel=preconnect` will
  14318 # be limited by "network.http.speculative-parallel-limit".
  14319 - name: network.early-hints.preconnect.max_connections
  14320  type: uint32_t
  14321  value: 10
  14322  mirror: always
  14323 
  14324 # How long we should wait for EarlyHintPreloader to be used.
  14325 # Under normal circumstances it should be used immidiately.
  14326 - name: network.early-hints.parent-connect-timeout
  14327  type: uint32_t
  14328  value: 10000
  14329  mirror: always
  14330 
  14331 # Whether to use the network process or not
  14332 # Start a separate socket process. Performing networking on the socket process
  14333 # is control by a sepparate pref
  14334 # ("network.http.network_access_on_socket_process.enabled").
  14335 # Changing these prefs requires a restart.
  14336 - name: network.process.enabled
  14337  type: RelaxedAtomicBool
  14338  mirror: always
  14339 #if defined(ANDROID) || defined(MOZ_THUNDERBIRD) || defined(XP_IOS)
  14340  value: false # see bug 1641427
  14341 #else
  14342  value: true
  14343 #endif
  14344 
  14345 # Whether we can send OnDataAvailable to content process directly.
  14346 - name: network.send_ODA_to_content_directly
  14347  type: RelaxedAtomicBool
  14348  value: true
  14349  mirror: always
  14350 
  14351 # Whether we can send OnDataFinished to html5parser in content process directly
  14352 - name: network.send_OnDataFinished.html5parser
  14353  type: RelaxedAtomicBool
  14354  value: true
  14355  mirror: always
  14356 
  14357 # Whether we can send OnDataFinished in the content process
  14358 - name: network.send_OnDataFinished
  14359  type: RelaxedAtomicBool
  14360  value: true
  14361  mirror: always
  14362 
  14363 # Whether we can send OnDataFinished to content process directly.
  14364 - name: network.send_OnDataFinished.nsInputStreamPump
  14365  type: RelaxedAtomicBool
  14366  value: true
  14367  mirror: always
  14368 
  14369 # Whether we can send OnDataFinished to cssLoader in content process.
  14370 - name: network.send_OnDataFinished.cssLoader
  14371  type: RelaxedAtomicBool
  14372  value: true
  14373  mirror: always
  14374 
  14375 # Whether we can send send OnDataFinished only after dispatching
  14376 # all the progress events on the main thread
  14377 - name: network.send_OnDataFinished_after_progress_updates
  14378  type: RelaxedAtomicBool
  14379  value: false
  14380  mirror: always
  14381 
  14382 # Perform all network access on the socket process.
  14383 # The pref requires "network.process.enabled" to be true.
  14384 # Changing these prefs requires a restart.
  14385 - name: network.http.network_access_on_socket_process.enabled
  14386  type: RelaxedAtomicBool
  14387  mirror: always
  14388  value: false
  14389 
  14390 # Telemetry of traffic categories. Whether or not to enable HttpTrafficAnalyzer.
  14391 - name: network.traffic_analyzer.enabled
  14392  type: RelaxedAtomicBool
  14393  value: true
  14394  mirror: always
  14395 
  14396 # Whether DNS resolution is limited to literals and cached entries.
  14397 - name: network.dns.disabled
  14398  type: RelaxedAtomicBool
  14399  value: false
  14400  mirror: always
  14401 
  14402 - name: network.dns.disablePrefetchFromHTTPS
  14403  type: bool
  14404  value: false
  14405  mirror: always
  14406 
  14407 # For testing purpose only: allow dns prefetch through proxies
  14408 - name: network.dns.prefetch_via_proxy
  14409  type: bool
  14410  value: false
  14411  mirror: always
  14412 
  14413 # Max time to shutdown the resolver threads
  14414 - name: network.dns.resolver_shutdown_timeout_ms
  14415  type: uint32_t
  14416  value: 5000
  14417  mirror: always
  14418 
  14419 # When true on Windows DNS resolutions for single label domains
  14420 # (domains that don't contain a dot) will be resolved using the DnsQuery
  14421 # API instead of PR_GetAddrInfoByName
  14422 - name: network.dns.dns_query_single_label
  14423  type: RelaxedAtomicBool
  14424  value: false
  14425  mirror: always
  14426 
  14427 # Use platform DNS APIs (where available) to resolve HTTPS queries
  14428 - name: network.dns.native_https_query
  14429  type: RelaxedAtomicBool
  14430 #if !defined(XP_MACOSX)
  14431  value: true
  14432 #else
  14433  value: false
  14434 #endif
  14435  mirror: always
  14436 
  14437 # DnsQuery_A is broken for HTTPS queries on Windows 10.
  14438 # Once it gets fixed, we can flip this pref to enable it.
  14439 # Changes might not take effect until restart.
  14440 - name: network.dns.native_https_query_win10
  14441  type: RelaxedAtomicBool
  14442  value: false
  14443  mirror: always
  14444 
  14445 # When true, the HTTPS query will actually call the native
  14446 # platform API. When false it will return before the call
  14447 # to the platform API
  14448 # This pref is necessary because having a HTTPS record
  14449 # could cause channels to connect to a different port,
  14450 # which is not desirable in automation.
  14451 - name: network.dns.native_https_query_in_automation
  14452  type: RelaxedAtomicBool
  14453  value: false
  14454  mirror: always
  14455 
  14456 #ifdef MOZ_WIDGET_ANDROID
  14457 # When resolving a native HTTPS query with native APIs
  14458 # the Android implementation has a max timeout
  14459 - name: network.dns.native_https_timeout_android
  14460  type: RelaxedAtomicInt32
  14461  value: 20000
  14462  mirror: always
  14463 #endif
  14464 
  14465 #ifdef XP_MACOSX
  14466 # When resolving a native HTTPS query with native APIs
  14467 # the MacOS implementation has a max timeout
  14468 - name: network.dns.native_https_timeout_mac_msec
  14469  type: RelaxedAtomicInt32
  14470  value: 5000
  14471  mirror: always
  14472 #endif
  14473 
  14474 # When this pref is true, we copy the host name to a fresh string before
  14475 # calling into getaddrinfo.
  14476 - name: network.dns.copy_string_before_call
  14477  type: RelaxedAtomicBool
  14478  value: true
  14479  mirror: always
  14480 
  14481 - name: network.dns.max_high_priority_threads
  14482  type: RelaxedAtomicUint32
  14483  value: 40
  14484  mirror: always
  14485 
  14486 - name: network.dns.max_any_priority_threads
  14487  type: RelaxedAtomicUint32
  14488  value: 24
  14489  mirror: always
  14490 
  14491 # This makes it so NS_HTTP_REFRESH_DNS is only
  14492 # set on DNS resolutions when LOAD_FRESH_CONNECTION is set.
  14493 # That's because we don't need to refresh DNS on
  14494 # every page reload.
  14495 - name: network.dns.only_refresh_on_fresh_connection
  14496  type: RelaxedAtomicBool
  14497  value: true
  14498  mirror: always
  14499 
  14500 # When true, DNS resolutions will downgrade DNS
  14501 # from AF_UNSPEC to AF_INET when no non-local IPv6 addresses are
  14502 # available.
  14503 - name: network.dns.skip_ipv6_when_no_addresses
  14504  type: RelaxedAtomicBool
  14505  value: false
  14506  mirror: always
  14507 
  14508 # This preference specifies a list of domains for which DNS lookups will be
  14509 # IPv4 only. Works around broken DNS servers which can't handle IPv6 lookups
  14510 # and/or allows the user to disable IPv6 on a per-domain basis. See bug 68796.
  14511 - name: network.dns.ipv4OnlyDomains
  14512  type: String
  14513  value: ""
  14514  mirror: never
  14515 
  14516 # This is the number of dns cache entries allowed
  14517 - name: network.dnsCacheEntries
  14518  type: RelaxedAtomicUint32
  14519  value: 800
  14520  mirror: always
  14521 
  14522 # In the absence of OS TTLs, the DNS cache TTL value
  14523 - name: network.dnsCacheExpiration
  14524  type: RelaxedAtomicUint32
  14525  value: 60
  14526  mirror: always
  14527 
  14528 # Get TTL; not supported on all platforms; nop on the unsupported ones.
  14529 - name: network.dns.get-ttl
  14530  type: RelaxedAtomicBool
  14531 #if defined(XP_WIN)
  14532  value: true
  14533 #else
  14534  value: false
  14535 #endif
  14536  mirror: always
  14537 
  14538 # For testing purposes! Makes the native resolver resolve IPv4 "localhost"
  14539 # instead of the actual given name.
  14540 - name: network.dns.native-is-localhost
  14541  type: RelaxedAtomicBool
  14542  value: false
  14543  mirror: always
  14544 
  14545 # The grace period allows the DNS cache to use expired entries, while kicking off
  14546 # a revalidation in the background.
  14547 - name: network.dnsCacheExpirationGracePeriod
  14548  type: RelaxedAtomicUint32
  14549  value: 600
  14550  mirror: always
  14551 
  14552 # This preference can be used to turn off DNS prefetch.
  14553 - name: network.dns.disablePrefetch
  14554  type: RelaxedAtomicBool
  14555  value: false
  14556  mirror: always
  14557 
  14558 # This preference controls whether .onion hostnames are
  14559 # rejected before being given to DNS. RFC 7686
  14560 - name: network.dns.blockDotOnion
  14561  type: RelaxedAtomicBool
  14562  value: true
  14563  mirror: always
  14564 
  14565 # These domains are treated as localhost equivalent
  14566 - name: network.dns.localDomains
  14567  type: String
  14568  value: ""
  14569  mirror: never
  14570 
  14571 # When non empty all non-localhost DNS queries (including IP addresses)
  14572 # resolve to this value. The value can be a name or an IP address.
  14573 # domains mapped to localhost with localDomains stay localhost.
  14574 - name: network.dns.forceResolve
  14575  type: String
  14576  value: ""
  14577  mirror: never
  14578 
  14579 # Contols whether or not "localhost" should resolve when offline
  14580 - name: network.dns.offline-localhost
  14581  type: RelaxedAtomicBool
  14582  value: true
  14583  mirror: always
  14584 
  14585 # Defines how much longer resolver threads should stay idle before are shut down.
  14586 # A negative value will keep the thread alive forever.
  14587 - name: network.dns.resolver-thread-extra-idle-time-seconds
  14588  type: RelaxedAtomicInt32
  14589  value: 60
  14590  mirror: always
  14591 
  14592 # When true, the DNS code will always set the AI_CANONNAME
  14593 # when calling getaddrinfo
  14594 - name: network.dns.always_ai_canonname
  14595  type: RelaxedAtomicBool
  14596  value: true
  14597  mirror: always
  14598 
  14599 # This preference specifies a comma seperated list of URL/IPAddress:Port that will be treated as public IPAddressSpace.
  14600 - name: network.lna.address_space.public.override
  14601  type: String
  14602  type: String
  14603  value: ""
  14604  mirror: never
  14605 
  14606 # This preference specifies a comma seperated list of URL/IPAddress:Port that will be treated as private IPAddressSpace.
  14607 - name: network.lna.address_space.private.override
  14608  type: String
  14609  value: ""
  14610  mirror: never
  14611 
  14612 # This preference specifies a comma seperated list of URL/IPAddress:Port that will be treated as local IPAddressSpace.
  14613 - name: network.lna.address_space.local.override
  14614  type: String
  14615  value: ""
  14616  mirror: never
  14617 
  14618 # This preference controls Local Network Access (LNA) feature.
  14619 - name: network.lna.enabled
  14620  type: RelaxedAtomicBool
  14621  value: true
  14622  mirror: always
  14623 
  14624 # This preference controls if we need to fail transactions for Local Network Access (LNA) failures.
  14625 # Currently it is enabled only for nightly builds.
  14626 # For beta and release users we will be enabling it only for ETP strict users using network.lna.etp.enabled
  14627 - name: network.lna.blocking
  14628  type: RelaxedAtomicBool
  14629  value: @IS_NIGHTLY_BUILD@
  14630  mirror: always
  14631 
  14632 # When this pref is true, loads triggered by scripts classified as trackers
  14633 # will automatically be blocked.
  14634 - name: network.lna.block_trackers
  14635  type: RelaxedAtomicBool
  14636  value: false
  14637  mirror: always
  14638 
  14639 # When this pref is true, top-level document navigation to local network addresses
  14640 # will bypass LNA permission checks.
  14641 - name: network.lna.allow_top_level_navigation
  14642  type: RelaxedAtomicBool
  14643  value: true
  14644  mirror: always
  14645 
  14646 # Comma-separated list of domains to skip LNA checks for.
  14647 # Supports suffix wildcard patterns (*.example.com)
  14648 - name: network.lna.skip-domains
  14649  type: String
  14650  value: ""
  14651  mirror: never
  14652 
  14653 # When this pref is false, skip all LNA checks for WebSocket connections.
  14654 # When true, WebSocket connections follow normal LNA rules.
  14655 # Currently this is disabled for parity with chrome
  14656 - name: network.lna.websocket.enabled
  14657  type: RelaxedAtomicBool
  14658  value: false
  14659  mirror: always
  14660 
  14661 # When this pref is true, skip LNA checks for requests from private network
  14662 # to localhost (private -> local IP address space transitions).
  14663 - name: network.lna.local-network-to-localhost.skip-checks
  14664  type: RelaxedAtomicBool
  14665  value: true
  14666  mirror: always
  14667 
  14668 # When true, benchmarking IP addresses 198.18.X.X is treated as local
  14669 # Depending on how this ends up being treated in the LNA spec, we might
  14670 # change it to be in the private space, but for now it's disabled to
  14671 # match Chrome LNA behaviour.
  14672 - name: network.lna.benchmarking-is-local
  14673  type: RelaxedAtomicBool
  14674  value: false
  14675  mirror: always
  14676 
  14677 
  14678 # The proxy type. See nsIProtocolProxyService.idl
  14679 #     PROXYCONFIG_DIRECT   = 0
  14680 #     PROXYCONFIG_MANUAL   = 1
  14681 #     PROXYCONFIG_PAC      = 2
  14682 #     PROXYCONFIG_WPAD     = 4
  14683 #     PROXYCONFIG_SYSTEM   = 5
  14684 - name: network.proxy.type
  14685  type: RelaxedAtomicUint32
  14686  value: 5
  14687  mirror: always
  14688 
  14689 # Whether to use WPAD while configuring proxy with system settings
  14690 - name: network.proxy.system_wpad
  14691  type: bool
  14692  value: false
  14693  mirror: always
  14694 
  14695 # Whether to allow the use of WPAD while configuring proxy with system settings
  14696 - name: network.proxy.system_wpad.allowed
  14697  type: bool
  14698  value: false
  14699  mirror: always
  14700 
  14701 # Whether the SOCKS5 proxy should be in charge of DNS resolution. Making it a
  14702 # SOCKS5h proxy by convention
  14703 - name: network.proxy.socks5_remote_dns
  14704  type: RelaxedAtomicBool
  14705  value: true
  14706  mirror: always
  14707 
  14708 # Whether the SOCKS4 proxy should be in charge of DNS resolution. Making it a
  14709 # SOCKS4a proxy.
  14710 - name: network.proxy.socks_remote_dns
  14711  type: RelaxedAtomicBool
  14712  value: false
  14713  mirror: always
  14714 
  14715 # When receiving a network change event, the time (in ms) we wait to reload the
  14716 # PAC url.
  14717 - name: network.proxy.reload_pac_delay
  14718  type: RelaxedAtomicUint32
  14719  value: 2000
  14720  mirror: always
  14721 
  14722 # When parsing "SOCKS" in PAC string, the default version of SOCKS that will be
  14723 # used.
  14724 - name: network.proxy.default_pac_script_socks_version
  14725  type: RelaxedAtomicUint32
  14726  value: 4
  14727  mirror: always
  14728 
  14729 # Whether to force failover to direct for system requests.
  14730 #ifdef MOZ_PROXY_DIRECT_FAILOVER
  14731 - name: network.proxy.failover_direct
  14732  type: bool
  14733  value: true
  14734  mirror: always
  14735 #endif
  14736 
  14737 # Whether to allow a bypass flag to be set on httpChannel that will
  14738 # prevent proxies from being used for that specific request.
  14739 - name: network.proxy.allow_bypass
  14740  type: bool
  14741 #ifdef MOZ_PROXY_BYPASS_PROTECTION
  14742  value: false
  14743 #else
  14744  value: true
  14745 #endif
  14746  mirror: always
  14747 
  14748 - name: network.proxy.parse_pac_on_socket_process
  14749  type: RelaxedAtomicBool
  14750  value: false
  14751  mirror: always
  14752 
  14753 - name: network.proxy.detect_system_proxy_changes
  14754  type: RelaxedAtomicBool
  14755  value: false
  14756  mirror: always
  14757 
  14758 # If all non-direct proxies have failed, we retry all of them in case they
  14759 # are online now.
  14760 - name: network.proxy.retry_failed_proxies
  14761  type: RelaxedAtomicBool
  14762  value: true
  14763  mirror: always
  14764 
  14765 # Some requests during a page load are marked as "tail", mainly trackers, but not only.
  14766 # This pref controls whether such requests are put to the tail, behind other requests
  14767 # emerging during page loading process.
  14768 - name: network.http.tailing.enabled
  14769  type: bool
  14770  value: true
  14771  mirror: always
  14772 
  14773 # Priority urgency of tailed request. Default to 6, which is a very low priority
  14774 - name: network.http.tailing.urgency
  14775  type: RelaxedAtomicUint32
  14776  value: 6
  14777  mirror: always
  14778 
  14779 # Tailing: When the page load has not yet reached DOMContentLoaded point, tail requestes are delayed
  14780 # by (non-tailed requests count + 1) * delay-quantum milliseconds.
  14781 - name: network.http.tailing.delay-quantum
  14782  type: int32_t
  14783  value: 600
  14784  mirror: always
  14785 
  14786 # Tailing: The same as above, but applied after the document load reached DOMContentLoaded event.
  14787 - name: network.http.tailing.delay-quantum-after-domcontentloaded
  14788  type: int32_t
  14789  value: 100
  14790  mirror: always
  14791 
  14792 # Tailing: Upper limit for the calculated delay, prevents long standing and comet-like requests tail forever.  This is in milliseconds as well.
  14793 - name: network.http.tailing.delay-max
  14794  type: int32_t
  14795  value: 6000
  14796  mirror: always
  14797 
  14798 # Tailing: Total limit we delay tailed requests since a page load beginning.
  14799 - name: network.http.tailing.total-max
  14800  type: int32_t
  14801  value: 45000
  14802  mirror: always
  14803 
  14804 # When true, the default Accept request header will include the supported mime
  14805 # types for images.
  14806 - name: network.http.accept_include_images
  14807  type: RelaxedAtomicBool
  14808  value: false
  14809  mirror: always
  14810 
  14811 # Whether to run proxy checks when processing Alt-Svc headers.
  14812 - name: network.http.altsvc.proxy_checks
  14813  type: bool
  14814  value: true
  14815  mirror: always
  14816 
  14817 - name: network.http.stale_while_revalidate.enabled
  14818  type: RelaxedAtomicBool
  14819  value: true
  14820  mirror: always
  14821 
  14822 # Capacity of the above cache, in kilobytes.
  14823 - name: network.ssl_tokens_cache_capacity
  14824  type: RelaxedAtomicUint32
  14825  value: 2048
  14826  mirror: always
  14827 
  14828 # How many records we store per entry
  14829 - name: network.ssl_tokens_cache_records_per_entry
  14830  type: RelaxedAtomicUint32
  14831  value: 2
  14832  mirror: always
  14833 
  14834 # The maximum allowed length for a URL - 1MB default.
  14835 - name: network.standard-url.max-length
  14836  type: RelaxedAtomicUint32
  14837  value: 1048576
  14838  mirror: always
  14839 
  14840 # If true, use the HSTS preload list.
  14841 - name: network.stricttransportsecurity.preloadlist
  14842  type: RelaxedAtomicBool
  14843  value: true
  14844  mirror: always
  14845 
  14846 # DNS Trusted Recursive Resolver
  14847 # 0 - default off, 1 - reserved/off, 2 - TRR first, 3 - TRR only,
  14848 # 4 - reserved/off, 5 off by choice
  14849 - name: network.trr.mode
  14850  type: RelaxedAtomicUint32
  14851  value: 0
  14852  mirror: always
  14853 
  14854 # Default global TRR provider
  14855 - name: network.trr.default_provider_uri
  14856  type: String
  14857  value: "https://mozilla.cloudflare-dns.com/dns-query"
  14858  mirror: never
  14859 
  14860 # If true, retry TRR for recoverable errors once.
  14861 - name: network.trr.retry_on_recoverable_errors
  14862  type: RelaxedAtomicBool
  14863  value: false
  14864  mirror: always
  14865 
  14866 # If true, don't fallback to native DNS upon network errors.
  14867 - name: network.trr.strict_native_fallback
  14868  type: RelaxedAtomicBool
  14869  value: false
  14870  mirror: always
  14871 
  14872 # If true, we'll fallback to native if the retry also times out.
  14873 - name: network.trr.strict_native_fallback_allow_timeouts
  14874  type: RelaxedAtomicBool
  14875  value: true
  14876  mirror: always
  14877 
  14878 # Single TRR request timeout (ms) when strict native fallback is enabled.
  14879 - name: network.trr.strict_fallback_request_timeout_ms
  14880  type: RelaxedAtomicUint32
  14881  value: 6000
  14882  mirror: always
  14883 
  14884 # If false, the temporary blocklisting feature is disabled.
  14885 # This is useful for tests to prevent bleeding extra reqs
  14886 # between tasks, since we may attempt to look up the
  14887 # parent domain in the background when blocklisting a host.
  14888 - name: network.trr.temp_blocklist
  14889  type: RelaxedAtomicBool
  14890  value: true
  14891  mirror: always
  14892 
  14893 # TRR blocklist entry expire time (in seconds). Default is one minute.
  14894 # Meant to survive basically a page load.
  14895 - name: network.trr.temp_blocklist_duration_sec
  14896  type: RelaxedAtomicUint32
  14897  value: 60
  14898  mirror: always
  14899 
  14900 # Single TRR request timeout, in milliseconds
  14901 - name: network.trr.request_timeout_ms
  14902  type: RelaxedAtomicUint32
  14903  value: 1500
  14904  mirror: always
  14905 
  14906 # Single TRR request timeout, in milliseconds for mode 3
  14907 - name: network.trr.request_timeout_mode_trronly_ms
  14908  type: RelaxedAtomicUint32
  14909  value: 30000
  14910  mirror: always
  14911 
  14912 # Similar to network.http.http2.ping-timeout, but this is used when the
  14913 # Http/2 connection is connected to the TRR server.
  14914 - name: network.trr.ping_timeout
  14915  type: RelaxedAtomicUint32
  14916  value: 3000
  14917  mirror: always
  14918 
  14919 # The timeout of the TRR confirmation request
  14920 - name: network.trr.confirmation_timeout_ms
  14921  type: RelaxedAtomicUint32
  14922  value: 6000
  14923  mirror: always
  14924 
  14925 # Whether to send the Accept-Language header for TRR requests
  14926 - name: network.trr.send_accept-language_headers
  14927  type: RelaxedAtomicBool
  14928  value: false
  14929  mirror: always
  14930 
  14931 # Whether to send an empty Accept-Encoding header for TRR requests
  14932 - name: network.trr.send_empty_accept-encoding_headers
  14933  type: RelaxedAtomicBool
  14934  value: true
  14935  mirror: always
  14936 
  14937 # Whether to send the User-Agent header for TRR requests
  14938 - name: network.trr.send_user-agent_headers
  14939  type: RelaxedAtomicBool
  14940  value: false
  14941  mirror: always
  14942 
  14943 # If we should wait for captive portal confirmation before enabling TRR
  14944 - name: network.trr.wait-for-portal
  14945  type: RelaxedAtomicBool
  14946  value: false
  14947  mirror: always
  14948 
  14949 # If we should wait for TRR service confirmation to complete before enabling
  14950 # TRR for lookups when fallback is enabled. Confirmation is always skipped when
  14951 # global mode is TRR-only (no fallback).
  14952 - name: network.trr.wait-for-confirmation
  14953  type: RelaxedAtomicBool
  14954  value: false
  14955  mirror: always
  14956 
  14957 # Normally when confirmation fails we wait for the confirmation to succeed
  14958 # before attempting to do TRR. When this pref is true, we optimistically
  14959 # assume the confirmation will succeed and might attempt TRR anyway.
  14960 # If network.trr.wait-for-confirmation is true, this pref is ignored.
  14961 - name: network.trr.attempt-when-retrying-confirmation
  14962  type: RelaxedAtomicBool
  14963  value: false
  14964  mirror: always
  14965 
  14966 # Use GET (rather than POST)
  14967 - name: network.trr.useGET
  14968  type: RelaxedAtomicBool
  14969  value: @IS_NIGHTLY_BUILD@
  14970  mirror: always
  14971 
  14972 # Allow RFC1918 address in responses?
  14973 - name: network.trr.allow-rfc1918
  14974  type: RelaxedAtomicBool
  14975  value: false
  14976  mirror: always
  14977 
  14978 # When true, it only sends AAAA when the system has IPv6 connectivity
  14979 - name: network.trr.skip-AAAA-when-not-supported
  14980  type: RelaxedAtomicBool
  14981  value: true
  14982  mirror: always
  14983 
  14984 # Whether to apply split horizon mitigations when using TRR.
  14985 # These include adding the DNS suffix to the excluded domains
  14986 - name: network.trr.split_horizon_mitigations
  14987  type: RelaxedAtomicBool
  14988  value: true
  14989  mirror: always
  14990 
  14991 # Explicitly disable ECS (EDNS Client Subnet, RFC 7871)
  14992 - name: network.trr.disable-ECS
  14993  type: RelaxedAtomicBool
  14994  value: true
  14995  mirror: always
  14996 
  14997 # When true, the DNS+TRR cache will be cleared when a relevant TRR pref
  14998 # changes. (uri, bootstrapAddress, excluded-domains)
  14999 - name: network.trr.clear-cache-on-pref-change
  15000  type: RelaxedAtomicBool
  15001  value: true
  15002  mirror: always
  15003 
  15004 # After this many failed TRR requests in a row, consider TRR borked
  15005 - name: network.trr.max-fails
  15006  type: RelaxedAtomicUint32
  15007  value: 15
  15008  mirror: always
  15009 
  15010 # When the TRR confirmation is set to CONFIRM_FAILED due to many failures in
  15011 # a row, we set a timer to retry. This has an exponential backoff up to
  15012 # network.trr.max-retry-timeout-ms (64 seconds by default)
  15013 - name: network.trr.retry-timeout-ms
  15014  type: RelaxedAtomicUint32
  15015  value: 125
  15016  mirror: always
  15017 
  15018 - name: network.trr.max-retry-timeout-ms
  15019  type: RelaxedAtomicUint32
  15020  value: 64000
  15021  mirror: always
  15022 
  15023 # Retry with no TRR when the response contained only 0.0.0.0 or ::
  15024 - name: network.trr.fallback-on-zero-response
  15025  type: RelaxedAtomicBool
  15026  value: false
  15027  mirror: always
  15028 
  15029 # If true we parse the /etc/hosts file and exclude any host names from TRR.
  15030 # Reading the file is only done once, when TRR is first enabled - this could be
  15031 # soon after startup or when the pref is flipped.
  15032 - name: network.trr.exclude-etc-hosts
  15033  type: RelaxedAtomicBool
  15034  value: true
  15035  mirror: always
  15036 
  15037 # Whether to add padding in the doh dns queries (rfc 7830)
  15038 - name: network.trr.padding
  15039  type: RelaxedAtomicBool
  15040  value: true
  15041  mirror: always
  15042 
  15043 # The block size to pad to. Capped at 1024 bytes.
  15044 # Setting it to 0 doesn't add additional padding, but allows the server to
  15045 # respond with padding (RFC7930 Sec 4)
  15046 - name: network.trr.padding.length
  15047  type: RelaxedAtomicUint32
  15048  value: 128
  15049  mirror: always
  15050 
  15051 # Whether to skip the NS check for the blocked host.
  15052 # Note this is used for test only.
  15053 - name: network.trr.skip-check-for-blocked-host
  15054  type: RelaxedAtomicBool
  15055  value: false
  15056  mirror: always
  15057 
  15058 # Whether to use the connection info that is generated asynchronously.
  15059 - name: network.trr.async_connInfo
  15060  type: RelaxedAtomicBool
  15061  value: @IS_EARLY_BETA_OR_EARLIER@
  15062  mirror: always
  15063 
  15064 # If true, a failed TRR request that contains an extended DNS error
  15065 # matching the hardFail condition in DNSPacket.cpp will not be
  15066 # retried with native DNS
  15067 - name: network.trr.hard_fail_on_extended_error
  15068  type: RelaxedAtomicBool
  15069  value: true
  15070  mirror: always
  15071 
  15072 # The base URL of the `Learn more` button for skip reasons
  15073 - name: network.trr_ui.skip_reason_learn_more_url
  15074  type: String
  15075  value: "https://firefox-source-docs.mozilla.org/networking/dns/trr-skip-reasons.html#"
  15076  mirror: never
  15077 
  15078 # Use Oblivious HTTP when making TRR requests.
  15079 - name: network.trr.use_ohttp
  15080  type: RelaxedAtomicBool
  15081  value: false
  15082  mirror: always
  15083 
  15084 # Oblivious HTTP relay URI for TRR requests.
  15085 - name: network.trr.ohttp.relay_uri
  15086  type: String
  15087  value: ""
  15088  mirror: never
  15089 
  15090 # URI from which to fetch the configuration for the Oblivious HTTP gateway for TRR requests.
  15091 - name: network.trr.ohttp.config_uri
  15092  type: String
  15093  value: ""
  15094  mirror: never
  15095 
  15096 # The URI used for the target DoH server when network.trr.use_ohttp is true
  15097 - name: network.trr.ohttp.uri
  15098  type: String
  15099  value: ""
  15100  mirror: never
  15101 
  15102 # The idle timeout for the HTTP/3 connection that is used for DoH
  15103 - name: network.trr.idle_timeout_for_http3_conn
  15104  type: RelaxedAtomicUint32
  15105 #ifdef EARLY_BETA_OR_EARLIER
  15106  value: 400
  15107 #else
  15108  value: 30
  15109 #endif
  15110  mirror: always
  15111 
  15112 # Allow the network changed event to get sent when a network topology or setup
  15113 # change is noticed while running.
  15114 - name: network.notify.changed
  15115  type: RelaxedAtomicBool
  15116  value: true
  15117  mirror: always
  15118 
  15119 # Allow network detection of IPv6 related changes (bug 1245059)
  15120 - name: network.notify.IPv6
  15121  type: RelaxedAtomicBool
  15122 #ifdef XP_WIN
  15123  value: false
  15124 #else
  15125  value: true
  15126 #endif
  15127  mirror: always
  15128 
  15129 # Whether to check the dnsSuffix on network changes
  15130 - name: network.notify.dnsSuffixList
  15131  type: RelaxedAtomicBool
  15132  value: true
  15133  mirror: always
  15134 
  15135 # Whether to check the registry for proxies on network changes that indicate
  15136 # that TRR should not be used.
  15137 - name: network.notify.checkForProxies
  15138  type: RelaxedAtomicBool
  15139  value: true
  15140  mirror: always
  15141 
  15142 # Whether to check the registry for NRPT rules on network changes that
  15143 # indicate that TRR should not be used.
  15144 - name: network.notify.checkForNRPT
  15145  type: RelaxedAtomicBool
  15146  value: true
  15147  mirror: always
  15148 
  15149 # Whether NotifyIpInterfaceChange should be called immediately after
  15150 # registration in order to record the initial state of the network adapters.
  15151 - name: network.notify.initial_call
  15152  type: RelaxedAtomicBool
  15153  value: true
  15154  mirror: always
  15155 
  15156 # Whether to check for DNS resolvers
  15157 - name: network.notify.resolvers
  15158  type: RelaxedAtomicBool
  15159  value: true
  15160  mirror: always
  15161 
  15162 # Whether to use the rust implemented DefaultURI for unknown scheme types
  15163 - name: network.url.useDefaultURI
  15164  type: RelaxedAtomicBool
  15165  value: true
  15166  mirror: always
  15167 
  15168 # Allows use of a protocol exception list that will bypass defaultURI parser
  15169 - name: network.url.simple_uri_unknown_schemes_enabled
  15170  type: RelaxedAtomicBool
  15171  value: true
  15172  mirror: always
  15173 
  15174 # A list of schemes to allow for bypassing defaultURI as default
  15175 # This is only used when network.url.simple_uri_unknown_schemes_enabled is true
  15176 - name: network.url.simple_uri_unknown_schemes
  15177  type: String
  15178  value: ""
  15179  mirror: never
  15180 
  15181 # The maximum allowed length for a URL - 512MB default.
  15182 # If 0 that means no limit.
  15183 - name: network.url.max-length
  15184  type: RelaxedAtomicUint32
  15185  value: 512 * 1024 * 1024
  15186  mirror: always
  15187 
  15188 # When true, if all the cyrillic characters in a label
  15189 # are latin confusables and on a non-cyrillic domain
  15190 # the label will be displayed as punycode.
  15191 - name: network.idn.punycode_cyrillic_confusables
  15192  type: RelaxedAtomicBool
  15193  value: true
  15194  mirror: always
  15195 
  15196 # Force remapping of remote port numbers to allow reaching local testing
  15197 # servers or port forwarders listening on non-standard ports.  Note that
  15198 # this is not changing the origin URL in the addressbar, only internally
  15199 # the port number used.  This is intended to be used along with the
  15200 # `network.dns.forceResolve` preference.
  15201 #
  15202 # The form is:
  15203 #   "80,443,808-888=8080; 563=8081"
  15204 # this will remap ports for HTTP, HTTPS and the range of 808-888 included
  15205 # to use port 8080, and port 563 to go to 8081.
  15206 - name: network.socket.forcePort
  15207  type: String
  15208  value: ""
  15209  mirror: never
  15210 
  15211 # Try and use HTTP2 when using SSL
  15212 - name: network.http.http2.enabled
  15213  type: RelaxedAtomicBool
  15214  value: true
  15215  mirror: always
  15216 
  15217 - name: network.http.http2.enabled.deps
  15218  type: RelaxedAtomicBool
  15219  value: false
  15220  mirror: always
  15221 
  15222 # When true, Firefox will send Extensivle prioritization scheme
  15223 # PRIORITY_UPDATE frames.
  15224 - name: network.http.http2.priority_updates
  15225  type: RelaxedAtomicBool
  15226  value: false
  15227  mirror: always
  15228 
  15229 # This pref controls whether to send the
  15230 # SETTINGS_NO_RFC7540_PRIORITIES when stream dependencies
  15231 # are disabled, and extensible prioritization scheme is in use.
  15232 # defaults to false as some servers panic when they see this (bug 1928600)
  15233 - name: network.http.http2.send_NO_RFC7540_PRI
  15234  type: RelaxedAtomicBool
  15235  value: false
  15236  mirror: always
  15237 
  15238 - name: network.http.http2.enforce-tls-profile
  15239  type: RelaxedAtomicBool
  15240  value: true
  15241  mirror: always
  15242 
  15243 - name: network.http.http2.chunk-size
  15244  type: RelaxedAtomicInt32
  15245  value: 16000
  15246  mirror: always
  15247 
  15248 - name: network.http.http2.timeout
  15249  type: RelaxedAtomicInt32
  15250  value: 170
  15251  mirror: always
  15252 
  15253 - name: network.http.http2.coalesce-hostnames
  15254  type: RelaxedAtomicBool
  15255  value: true
  15256  mirror: always
  15257 
  15258 # When true, origin A and origin B will be coalesced if they have an overlap
  15259 # in IP addresses as advertized by DNS, regardless if the existing connection
  15260 # to origin A is not to an IP present in B's DNS response.
  15261 # When false, an existing connection will only be reused if the
  15262 # connection's remote IP is also present in B's DNS response.
  15263 - name: network.http.http2.aggressive_coalescing
  15264  type: RelaxedAtomicBool
  15265  value: false
  15266  mirror: always
  15267 
  15268 - name: network.http.http2.ping-threshold
  15269  type: RelaxedAtomicInt32
  15270  value: 58
  15271  mirror: always
  15272 
  15273 - name: network.http.http2.ping-timeout
  15274  type: RelaxedAtomicInt32
  15275  value: 8
  15276  mirror: always
  15277 
  15278 - name: network.http.http2.send-buffer-size
  15279  type: RelaxedAtomicInt32
  15280  value: 0
  15281  mirror: always
  15282 
  15283 # When true, Firefox will send a SETTINGS_MAX_CONCURRENT_STREAMS
  15284 # parameter when push is disabled. Chrome doesn't send this,
  15285 # so some servers misbehave when we do. See Bug 1919750.
  15286 - name: network.http.http2.send-push-max-concurrent-frame
  15287  type: RelaxedAtomicBool
  15288  value: false
  15289  mirror: always
  15290 
  15291 - name: network.http.http2.push-allowance
  15292  type: RelaxedAtomicInt32
  15293  value: 131072  # 128KB
  15294  mirror: always
  15295 
  15296 - name: network.http.http2.pull-allowance
  15297  type: RelaxedAtomicInt32
  15298  value: 12582912  # 12MB
  15299  mirror: always
  15300 
  15301 - name: network.http.http2.default-concurrent
  15302  type: RelaxedAtomicInt32
  15303  value: 100
  15304  mirror: always
  15305 
  15306 - name: network.http.http2.default-hpack-buffer
  15307  type: RelaxedAtomicInt32
  15308  value: 65536 # 64K
  15309  mirror: always
  15310 
  15311 - name: network.http.http2.websockets
  15312  type: RelaxedAtomicBool
  15313  value: true
  15314  mirror: always
  15315 
  15316 - name: network.http.http2.enable-hpack-dump
  15317  type: RelaxedAtomicBool
  15318  value: false
  15319  mirror: always
  15320 
  15321 # According to RFC 9113, the maximum stream ID is 0x80000000.
  15322 # However, we've been using a smaller value since the beginning.
  15323 - name: network.http.http2.max_stream_id
  15324  type: RelaxedAtomicInt32
  15325  value: 0x7800000
  15326  mirror: always
  15327 
  15328 - name: network.http.move_to_pending_list_after_network_change
  15329  type: RelaxedAtomicBool
  15330  value: true
  15331  mirror: always
  15332 
  15333 # Enable HTTP/3
  15334 - name: network.http.http3.enable
  15335  type: RelaxedAtomicBool
  15336  value: true
  15337  mirror: always
  15338 
  15339 # Receive buffer size of QUIC socket
  15340 - name: network.http.http3.recvBufferSize
  15341  type: RelaxedAtomicInt32
  15342  value: 1048576
  15343  mirror: always
  15344 
  15345 # Use NSPR for HTTP3 UDP IO
  15346 - name: network.http.http3.use_nspr_for_io
  15347  type: RelaxedAtomicBool
  15348  value: false
  15349  mirror: always
  15350  rust: true
  15351 
  15352 # Set IP ECN marks on HTTP3/QUIC UDP datagrams. Noop if
  15353 # network.http.http3.use_nspr_for_io is true.
  15354 - name: network.http.http3.ecn_mark
  15355  type: RelaxedAtomicBool
  15356  value: true
  15357  mirror: always
  15358  rust: true
  15359 
  15360 # Report IP ECN marks from HTTP3/QUIC UDP datagrams via QUIC ACKs back to the
  15361 # sender. Noop if network.http.http3.use_nspr_for_io is true.
  15362 - name: network.http.http3.ecn_report
  15363  type: RelaxedAtomicBool
  15364  value: true
  15365  mirror: always
  15366  rust: true
  15367 
  15368 # Poll UDP socket via PR_POLL_WRITE on WOULD_BLOCK. Noop if
  15369 # network.http.http3.use_nspr_for_io is true.
  15370 #
  15371 # See <https://phabricator.services.mozilla.com/D239162> for details.
  15372 - name: network.http.http3.pr_poll_write
  15373  type: RelaxedAtomicBool
  15374  value: true
  15375  mirror: always
  15376  rust: true
  15377 
  15378 # Fallback to H2 if mHttp3Connection->Fetch returns an error in
  15379 # Http3Session::TryActivating
  15380 - name: network.http.http3.fallback_to_h2_on_error
  15381  type: RelaxedAtomicBool
  15382  value: true
  15383  mirror: always
  15384 
  15385 # Maximum number of UDP segments in a single UDP GSO send. Noop if
  15386 # network.http.http3.use_nspr_for_io is true.
  15387 - name: network.http.http3.max_gso_segments
  15388  type: RelaxedAtomicUint32
  15389 #ifdef XP_WIN
  15390  # Disable GSO on Windows.
  15391  #
  15392  # See https://bugzilla.mozilla.org/show_bug.cgi?id=1979279 for details.
  15393  value: 1
  15394 #else
  15395  # Current industry standard. Likely worth tuning.
  15396  value: 10
  15397 #endif
  15398  mirror: always
  15399  rust: true
  15400 
  15401 - name: network.http.http3.enable_qlog
  15402  type: RelaxedAtomicBool
  15403  value: false
  15404  mirror: always
  15405 
  15406 - name: network.http.http3.enable_0rtt
  15407  type: RelaxedAtomicBool
  15408  value: true
  15409  mirror: always
  15410 
  15411 # When a h3 transaction is inserted in the pending queue, the time (ms) we wait
  15412 # to create a TCP backup connection.
  15413 - name: network.http.http3.backup_timer_delay
  15414  type: RelaxedAtomicUint32
  15415  value: 100
  15416  mirror: always
  15417 
  15418 # Delay in milliseconds before falling back the proxy’s inner connection
  15419 # from HTTP/3 to HTTP/2/1 after receiving 200 OK.
  15420 - name: network.http.http3.inner_fallback_delay
  15421  type: RelaxedAtomicUint32
  15422  value: 3000
  15423  mirror: always
  15424 
  15425 # The global half open sockets allowed for creating a backup connection.
  15426 - name: network.http.http3.parallel_fallback_conn_limit
  15427  type: RelaxedAtomicUint32
  15428  value: 32
  15429  mirror: always
  15430 
  15431 # Connection-level flow control limit
  15432 - name: network.http.http3.max_data
  15433  type: RelaxedAtomicUint32
  15434  value: 25165824
  15435  mirror: always
  15436 
  15437 # Stream-level flow control limit
  15438 - name: network.http.http3.max_stream_data
  15439  type: RelaxedAtomicUint32
  15440  value: 12582912
  15441  mirror: always
  15442 
  15443 # Enable http3 network priority as described in
  15444 # <https://www.rfc-editor.org/rfc/rfc9218.html>.
  15445 - name: network.http.http3.priority
  15446  type: RelaxedAtomicBool
  15447  value: true
  15448  mirror: always
  15449 
  15450 # Depriorizing background tabs notifies websites when switching to or from the
  15451 # tab while still loading resources for the website. On one hand it might
  15452 # improve performance when switching to an tab with a website using the same
  15453 # QUIC connection. On the other hand it sends more data to the website and
  15454 # might be a privacy concern.
  15455 - name: network.http.http3.send_background_tabs_deprioritization
  15456  type: RelaxedAtomicBool
  15457  value: false
  15458  mirror: always
  15459 
  15460 - name: network.http.http3.version_negotiation.enabled
  15461  type: RelaxedAtomicBool
  15462  value: false
  15463  mirror: always
  15464 
  15465 # When a Http/3 connection failed, whether to retry with a different IP address.
  15466 - name: network.http.http3.retry_different_ip_family
  15467  type: RelaxedAtomicBool
  15468  value: @IS_EARLY_BETA_OR_EARLIER@
  15469  mirror: always
  15470 
  15471 # This is for testing purpose. When true, nsUDPSocket::SendWithAddress and
  15472 # neqo_http3conn_process_output_and_send will return NS_ERROR_CONNECTION_REFUSED
  15473 # for address "::1".
  15474 - name: network.http.http3.block_loopback_ipv6_addr
  15475  type: RelaxedAtomicBool
  15476  value: false
  15477  mirror: always
  15478  rust: true
  15479 
  15480 # The congestion control algorithm with which to configure neqo.
  15481 # 0 => NewReno
  15482 # 1 => Cubic
  15483 - name: network.http.http3.cc_algorithm
  15484  type: RelaxedAtomicUint32
  15485  value: 1
  15486  mirror: always
  15487  rust: true
  15488 
  15489 # Whether to send an mlkem768x25519 key share in HTTP/3 TLS handshakes.
  15490 # Has no effect unless security.tls.enable_kyber is true.
  15491 - name: network.http.http3.enable_kyber
  15492  type: RelaxedAtomicBool
  15493  value: true
  15494  mirror: always
  15495  rust: true
  15496 
  15497 # When true, HTTP/3 will be disabled when third party roots are found.
  15498 - name: network.http.http3.disable_when_third_party_roots_found
  15499  type: RelaxedAtomicBool
  15500  value: true
  15501  mirror: always
  15502 
  15503 # Only used for testing purposes. In automation, this value is used to override
  15504 # the result of third party roots check.
  15505 - name: network.http.http3.has_third_party_roots_found_in_automation
  15506  type: RelaxedAtomicBool
  15507  value: false
  15508  mirror: always
  15509 
  15510 # When network.http.http3.alt-svc-mapping-for-testing is set, only use
  15511 # HTTP/3 to connect.
  15512 - name: network.http.http3.force-use-alt-svc-mapping-for-testing
  15513  type: RelaxedAtomicBool
  15514  value: false
  15515  mirror: always
  15516 
  15517 # When network.http.http3.sni-slicing is set, TLS SNI slicing is enabled.
  15518 - name: network.http.http3.sni-slicing
  15519  type: RelaxedAtomicBool
  15520  value: true
  15521  mirror: always
  15522  rust: true
  15523 
  15524 # Whether to enable Zlib for H3/QUIC certificate compression.
  15525 # Has no effect unless security.tls.enable_certificate_compression_zlib is true.
  15526 - name: network.http.http3.enable_certificate_compression_zlib
  15527  type: RelaxedAtomicBool
  15528  value: true
  15529  mirror: always
  15530  rust: true
  15531 
  15532 # Whether to enable Zstd for H3/QUIC certificate compression.
  15533 # Has no effect unless security.tls.enable_certificate_compression_zstd is true.
  15534 - name: network.http.http3.enable_certificate_compression_zstd
  15535  type: RelaxedAtomicBool
  15536  value: true
  15537  mirror: always
  15538  rust: true
  15539 
  15540 # Whether to enable Brotli for H3/QUIC certificate compression.
  15541 # Has no effect unless security.tls.enable_certificate_compression_brotli is true.
  15542 - name: network.http.http3.enable_certificate_compression_brotli
  15543  type: RelaxedAtomicBool
  15544  value: true
  15545  mirror: always
  15546  rust: true
  15547 
  15548 # When true, skip alt-svc validation when the connection is made using HTTPS RR.
  15549 - name: network.http.skip_alt_svc_validation_on_https_rr
  15550  type: RelaxedAtomicBool
  15551  value: true
  15552  mirror: always
  15553 
  15554 # The idle timeout used for HTTP/3 connection.
  15555 - name: network.http.http3.idle_timeout
  15556  type: RelaxedAtomicUint32
  15557  value: 30
  15558  mirror: always
  15559 
  15560 # Whether to enable Packetization Layer Path MTU Discovery.
  15561 - name: network.http.http3.pmtud
  15562  type: RelaxedAtomicBool
  15563  value: false
  15564  mirror: always
  15565  rust: true
  15566 
  15567 # When true, a http request will be upgraded to https when HTTPS RR is
  15568 # available.
  15569 - name: network.dns.upgrade_with_https_rr
  15570  type: RelaxedAtomicBool
  15571  value: true
  15572  mirror: always
  15573 
  15574 # Whether to use HTTPS RR as AltSvc
  15575 - name: network.dns.use_https_rr_as_altsvc
  15576  type: RelaxedAtomicBool
  15577  value: true
  15578  mirror: always
  15579 
  15580 # Whether to check for NAT64 using the system resolver
  15581 - name: network.connectivity-service.nat64-check
  15582  type: bool
  15583  value: true
  15584  mirror: always
  15585 
  15586 # Manually enter the NAT64 prefix that will be used if IPv4 is unavailable.
  15587 # The value is formatted as IPv6 with the least significant bits to be dropped.
  15588 # For example, 64:ff9b:: is a common prefix. This will not disable
  15589 # the NAT64 check, although the value of this pref will be prioritized.
  15590 - name: network.connectivity-service.nat64-prefix
  15591  type: String
  15592  value: ""
  15593  mirror: never
  15594 
  15595 # Whether to wait for idle-startup notification before performing connectivity checks
  15596 - name: network.connectivity-service.wait_for_idle_startup
  15597  type: RelaxedAtomicBool
  15598  value: true
  15599  mirror: always
  15600 
  15601 # Whether to enable echconfig.
  15602 - name: network.dns.echconfig.enabled
  15603  type: RelaxedAtomicBool
  15604  value: true
  15605  mirror: always
  15606 
  15607 # Whether to enable echconfig for http3.
  15608 - name: network.dns.http3_echconfig.enabled
  15609  type: RelaxedAtomicBool
  15610  value: true
  15611  mirror: always
  15612 
  15613 # This pref needs to be worked together with network.dns.echconfig.enabled
  15614 # being true and there is no record without ECHConfig.
  15615 # When we try all records with ECHConfig in HTTPS RRs and still can't connect,
  15616 # this pref indicate whether we can fallback to the origin server.
  15617 - name: network.dns.echconfig.fallback_to_origin_when_all_failed
  15618  type: RelaxedAtomicBool
  15619  value: false
  15620  mirror: always
  15621 
  15622 # When true, reset the exclusion list when all records are excluded.
  15623 - name: network.dns.httpssvc.reset_exclustion_list
  15624  type: RelaxedAtomicBool
  15625  value: true
  15626  mirror: always
  15627 
  15628 # If the http3 connection cannot be ready after the timeout value here, the
  15629 # transaction will start another non-http3 conneciton.
  15630 # Setting this value to 0 indicates this feature is disabled.
  15631 - name: network.dns.httpssvc.http3_fast_fallback_timeout
  15632  type: RelaxedAtomicUint32
  15633  value: 50
  15634  mirror: always
  15635 
  15636 # The TTL for negative responses of TXT and HTTPS records.
  15637 - name: network.dns.negative_ttl_for_type_record
  15638  type: RelaxedAtomicUint32
  15639  value: 300   # 5 minutes (in seconds)
  15640  mirror: always
  15641 
  15642 # Whether to use port prefixed QNAME for HTTPS RR
  15643 - name: network.dns.port_prefixed_qname_https_rr
  15644  type: RelaxedAtomicBool
  15645  value: true
  15646  mirror: always
  15647 
  15648 # Whether to use HTTPS RR and ignore NS_HTTP_DISALLOW_HTTPS_RR
  15649 # This pref is only set when running tests
  15650 - name: network.dns.force_use_https_rr
  15651  type: RelaxedAtomicBool
  15652  value: false
  15653  mirror: always
  15654 
  15655 # When true, we check if the cname is the same as the target name of the record.
  15656 # If not, the record will not be used.
  15657 - name: network.dns.https_rr.check_record_with_cname
  15658  type: RelaxedAtomicBool
  15659  value: true
  15660  mirror: always
  15661 
  15662 # This preference can be used to turn off IPv6 name lookups. See bug 68796.
  15663 - name: network.dns.disableIPv6
  15664  type: RelaxedAtomicBool
  15665  value: false
  15666  mirror: always
  15667 
  15668 # Whether to prefer IPv6 name lookups.
  15669 - name: network.dns.preferIPv6
  15670  type: RelaxedAtomicBool
  15671  value: false
  15672  mirror: always
  15673 
  15674 # Only used for testing
  15675 - name: network.dns.mock_HTTPS_RR_domain
  15676  type: String
  15677  value: ""
  15678  mirror: never
  15679 
  15680 # When true, placing the most recent used cache entry
  15681 # to the tail of the EvictionQ.
  15682 - name: network.dns.mru_to_tail
  15683  type: RelaxedAtomicBool
  15684  value: @IS_NIGHTLY_BUILD@
  15685  mirror: always
  15686 
  15687 # Whether to add additional record IPs to the cache
  15688 - name: network.trr.add_additional_records
  15689  type: RelaxedAtomicBool
  15690  value: true
  15691  mirror: always
  15692 
  15693 # When this pref is true, AddStorageEntry will return an error if the
  15694 # OPEN_READONLY & OPEN_SECRETLY flags are passed and no entry exists.
  15695 # If no regressions occur this pref should be removed.
  15696 - name: network.cache.bug1708673
  15697  type: RelaxedAtomicBool
  15698  value: false
  15699  mirror: always
  15700 
  15701 # How much progress we want to do minimum when purging under pressure.
  15702 # On disk, we may see blocking I/O, so for now we keep 0 here.
  15703 - name: network.cache.purge_minprogress_disk
  15704  type: RelaxedAtomicUint32
  15705  value: 0
  15706  mirror: always
  15707 
  15708 # How much progress we want to do minimum when purging under pressure.
  15709 # In memory, purging is cheap and memory is precious.
  15710 - name: network.cache.purge_minprogress_memory
  15711  type: RelaxedAtomicUint32
  15712  value: 32
  15713  mirror: always
  15714 
  15715 # When true we will dispatch a background task (separate process) to
  15716 # delete the cache folder at shutdown in order to avoid shutdown hangs.
  15717 - name: network.cache.shutdown_purge_in_background_task
  15718  type: RelaxedAtomicBool
  15719 #if defined(XP_WIN)
  15720  value: true
  15721 #else
  15722  value: false
  15723 #endif
  15724  mirror: always
  15725 
  15726 # Number of seconds to wait for the cache folder to be renamed before
  15727 # the background task forcefully exists.
  15728 - name: network.cache.shutdown_purge_folder_wait_seconds
  15729  type: RelaxedAtomicUint32
  15730  value: 10
  15731  mirror: always
  15732 
  15733 - name: network.cache.persist_permanent_redirects_http
  15734  type: bool
  15735  value: false
  15736  mirror: always
  15737 
  15738 # Disable cache purging temporarily to support cache tests
  15739 - name: network.cache.purge_disable
  15740  type: RelaxedAtomicBool
  15741  value: false
  15742  mirror: always
  15743 
  15744 # The number of milliseconds after which a suspended channel writing
  15745 # to a cache entry will notify all readers waiting for a callback to
  15746 # continue without a cache entry.
  15747 - name: network.cache.suspended_writer_delay_ms
  15748  type: RelaxedAtomicUint32
  15749  value: 5000
  15750  mirror: always
  15751 
  15752 # This is used for a temporary workaround for a web-compat issue. If pref is
  15753 # true CORS preflight requests are allowed to send client certificates.
  15754 - name: network.cors_preflight.allow_client_cert
  15755  type: RelaxedAtomicBool
  15756  value: false
  15757  mirror: always
  15758 
  15759 # Whether to record the telemetry event when a JAR channel is failed to load.
  15760 - name: network.jar.record_failure_reason
  15761  type: RelaxedAtomicBool
  15762  value: @IS_EARLY_BETA_OR_EARLIER@
  15763  mirror: always
  15764 
  15765 # nsJARInputStream::Available returns the size indicated by the archived entry
  15766 # so we need a limit so we don't OOM if the archive is corrupted.
  15767 - name: network.jar.max_available_size
  15768  type: RelaxedAtomicUint32
  15769  value: 256*1024*1024 # 256 Mb
  15770  mirror: always
  15771 
  15772 # When decompressing an archived entry we need to allocate a buffer
  15773 # large enough to hold the uncompressed entry. This pref specifies the max
  15774 # size of such a buffer.
  15775 # When set to 0 there is no limit.
  15776 - name: network.jar.max_entry_size
  15777  type: RelaxedAtomicUint32
  15778  value: 256*1024*1024 # 256 Mb
  15779  mirror: always
  15780 
  15781 # When this pref is true, we will use the HTTPS acceptable content encoding
  15782 # list for trustworthy domains such as http://localhost
  15783 - name: network.http.encoding.trustworthy_is_https
  15784  type: RelaxedAtomicBool
  15785  value: true
  15786  mirror: always
  15787 
  15788 # Support http3 version1
  15789 - name: network.http.http3.support_version1
  15790  type: RelaxedAtomicBool
  15791  value: true
  15792  mirror: always
  15793 
  15794 # Disable early data on an origin if SSL_ERROR_PROTOCOL_VERSION_ALERT is received
  15795 - name: network.http.early_data_disable_on_error
  15796  type: RelaxedAtomicBool
  15797  value: true
  15798  mirror: always
  15799 
  15800 # Disable early data if it fails for more than this number of origins
  15801 - name: network.http.early_data_max_error
  15802  type: RelaxedAtomicUint32
  15803  value: 5
  15804  mirror: always
  15805 
  15806 # If true, remove the resumption token when 0RTT failed.
  15807 - name: network.http.remove_resumption_token_when_early_data_failed
  15808  type: RelaxedAtomicBool
  15809  value: true
  15810  mirror: always
  15811 
  15812  # The length of cnonce string used in HTTP digest auth.
  15813 - name: network.http.digest_auth_cnonce_length
  15814  type: uint32_t
  15815  value: 16
  15816  mirror: always
  15817 
  15818 # When a primary or backup half-open socket fails while another is still
  15819 # connecting, retry with the remaining one
  15820 - name: network.http.retry_with_another_half_open
  15821  type: RelaxedAtomicBool
  15822  value: @IS_EARLY_BETA_OR_EARLIER@
  15823  mirror: always
  15824 
  15825 - name: network.http.basic_http_auth.enabled
  15826  type: RelaxedAtomicBool
  15827  value: true
  15828  mirror: always
  15829 
  15830  # If true, HTTP response content-type headers will be parsed using the standards-compliant MimeType parser
  15831 - name: network.standard_content_type_parsing.response_headers
  15832  type: RelaxedAtomicBool
  15833  value: true
  15834  mirror: always
  15835 
  15836 # If true, it will include extra tags to be sniffed by nsUnknownDecoder
  15837 # These tags were previously sniffed by Firefox for legacy/webcompat but
  15838 # are not part of the MIME sniffing spec.
  15839 - name: network.mimesniff.extra_moz_html_tags
  15840  type: RelaxedAtomicBool
  15841  value: false
  15842  mirror: always
  15843 
  15844 # The maximum count that we allow socket prrocess to crash. If this count is
  15845 # reached, we won't use networking over socket process.
  15846 - name: network.max_socket_process_failed_count
  15847  type: RelaxedAtomicUint32
  15848  value: 1
  15849  mirror: always
  15850 
  15851 - name: network.allow_redirect_to_data
  15852  type: RelaxedAtomicBool
  15853  value: false
  15854  mirror: always
  15855 
  15856 - name: network.allow_raw_sockets_in_content_processes
  15857  type: bool
  15858  value: false
  15859  mirror: once
  15860 
  15861 - name: network.allow_large_stack_size_for_socket_thread
  15862  type: RelaxedAtomicBool
  15863  value: true
  15864  mirror: always
  15865 
  15866 # WebTransport
  15867 - name: network.webtransport.enabled
  15868  type: RelaxedAtomicBool
  15869  value: true
  15870  mirror: always
  15871 
  15872 # WebTransport Redirect support
  15873 - name: network.webtransport.redirect.enabled
  15874  type: RelaxedAtomicBool
  15875  value: false
  15876  mirror: always
  15877 
  15878 # Wifi-scan polling period, in ms, when on a mobile network.
  15879 # A value of 0 indicates that no polling should be done.
  15880 - name: network.wifi.scanning_period
  15881  type: RelaxedAtomicUint32
  15882  value: 60000
  15883  mirror: always
  15884 
  15885 # Block synchronous XMLHttpRequests coming from system requests
  15886 - name: network.xhr.block_sync_system_requests
  15887  type: bool
  15888  value: true
  15889  mirror: always
  15890 
  15891 # When the Access-Control-Allow-Headers is wildcard (*), whether to allow
  15892 # CORS-protected requests with the Authorization request header.
  15893 - name: network.cors_preflight.authorization_covered_by_wildcard
  15894  type: bool
  15895  value: true
  15896  mirror: always
  15897 
  15898 # Inner schemes that are allowed to display application/http-index-format.
  15899 # Set to * to allow all schemes.
  15900 - name: network.http_index_format.allowed_schemes
  15901  type: String
  15902  value: "file,moz-gio"
  15903  mirror: never
  15904 
  15905 # Enable off-main-thread decompression of network streams
  15906 # Note:network.decompression_off_mainthread triggered a bug, so
  15907 # we switched to a new pref that can be turned off safely
  15908 - name: network.decompression_off_mainthread2
  15909  type: bool
  15910  value: true
  15911  mirror: always
  15912 
  15913 # Minimum content-length to use off-main-thread decompression of network streams
  15914 - name: network.decompression_off_mainthread_min_size
  15915  type: int32_t
  15916  value: 512
  15917  mirror: always
  15918 
  15919 # Cached state of parental controls (enabled/disabled)
  15920 - name: network.parental_controls_cached_state
  15921  type: RelaxedAtomicBool
  15922  value: false
  15923  mirror: always
  15924 
  15925 # Used for testing purposes only. When true, it attaches an extra networking
  15926 # layer to simulate different network scenarios.
  15927 - name: network.socket.attach_mock_network_layer
  15928  type: RelaxedAtomicBool
  15929  value: false
  15930  mirror: always
  15931 
  15932 # Whether to redirect a failing request to an essential domain
  15933 # to a fallback domain that hosts the same content.
  15934 - name: network.essential_domains_fallback
  15935  type: RelaxedAtomicBool
  15936  value: @IS_NIGHTLY_BUILD@
  15937  mirror: always
  15938 
  15939 # Enable HTTP Compression Dictionary support
  15940 - name: network.http.dictionaries.enable
  15941  type: RelaxedAtomicBool
  15942  value: true
  15943  mirror: always
  15944 
  15945 #---------------------------------------------------------------------------
  15946 # Prefs starting with "nglayout."
  15947 #---------------------------------------------------------------------------
  15948 
  15949 # Enable/disable display list invalidation logging --- useful for debugging.
  15950 - name: nglayout.debug.invalidation
  15951  type: bool
  15952  value: false
  15953  mirror: always
  15954 
  15955 - name: nglayout.debug.disable_xul_cache
  15956  type: bool
  15957  value: false
  15958  mirror: always
  15959 
  15960 - name: nglayout.initialpaint.delay
  15961  type: int32_t
  15962  value: 5
  15963  mirror: always
  15964 
  15965 - name: nglayout.initialpaint.delay_in_oopif
  15966  type: int32_t
  15967  value: 5
  15968  mirror: always
  15969 
  15970 #---------------------------------------------------------------------------
  15971 # Prefs starting with "page_load."
  15972 #---------------------------------------------------------------------------
  15973 
  15974 # Time in milliseconds during which certain tasks are deprioritized during
  15975 # page load.
  15976 - name: page_load.deprioritization_period
  15977  type: RelaxedAtomicUint32
  15978  value: 5000
  15979  mirror: always
  15980 
  15981 #---------------------------------------------------------------------------
  15982 # Prefs starting with "pdfjs."
  15983 #---------------------------------------------------------------------------
  15984 
  15985 - name: pdfjs.disabled
  15986  type: bool
  15987  value: false
  15988  mirror: always
  15989 
  15990 #---------------------------------------------------------------------------
  15991 # Prefs starting with "permissions."
  15992 #---------------------------------------------------------------------------
  15993 
  15994 # 1-Accept, 2-Deny, Any other value: Accept
  15995 - name: permissions.default.image
  15996  type: RelaxedAtomicUint32
  15997  value: 1
  15998  mirror: always
  15999 
  16000 - name: permissions.default.screen-wake-lock
  16001  type: RelaxedAtomicUint32
  16002  value: 1
  16003  mirror: always
  16004 
  16005 - name: permissions.isolateBy.userContext
  16006  type: RelaxedAtomicBool
  16007  value: false
  16008  mirror: always
  16009 
  16010 - name: permissions.isolateBy.privateBrowsing
  16011  type: RelaxedAtomicBool
  16012  value: true
  16013  mirror: always
  16014 
  16015 # Is support for Permissions.query enabled for camera and microphone?
  16016 - name: permissions.media.query.enabled
  16017  type: RelaxedAtomicBool
  16018  value: true
  16019  mirror: always
  16020 
  16021 # Whether default permissions should be imported from remote settings in
  16022 # addition to importing them from browser/app/permissions.
  16023 - name: permissions.manager.remote.enabled
  16024  type: bool
  16025  value: true
  16026  mirror: always
  16027 
  16028 #---------------------------------------------------------------------------
  16029 # Prefs starting with "places."
  16030 #---------------------------------------------------------------------------
  16031 
  16032 # Whether pages alternative frecency is enabled. This and the following related
  16033 # prefs only apply at restart.
  16034 - name: places.frecency.pages.alternative.featureGate
  16035  type: bool
  16036  value: false
  16037  mirror: once
  16038 
  16039 - name: places.frecency.pages.alternative.veryHighWeight
  16040  type: uint32_t
  16041  value: 200
  16042  mirror: once
  16043 
  16044 - name: places.frecency.pages.alternative.highWeight
  16045  type: uint32_t
  16046  value: 100
  16047  mirror: once
  16048 
  16049 - name: places.frecency.pages.alternative.mediumWeight
  16050  type: uint32_t
  16051  value: 50
  16052  mirror: once
  16053 
  16054 - name: places.frecency.pages.alternative.lowWeight
  16055  type: uint32_t
  16056  value: 20
  16057  mirror: once
  16058 
  16059 - name: places.frecency.pages.alternative.halfLifeDays
  16060  type: uint32_t
  16061  value: 30
  16062  mirror: once
  16063 
  16064 - name: places.frecency.pages.alternative.numSampledVisits
  16065  type: uint32_t
  16066  value: 10
  16067  mirror: once
  16068 
  16069 # Max difference allowed between a visit and an interaction.
  16070 - name: places.frecency.pages.alternative.interactions.maxVisitGapSeconds
  16071  type: uint32_t
  16072  value: 2 * 60
  16073  mirror: once
  16074 
  16075 # Minimum view time required to upgrade a visit score.
  16076 - name: places.frecency.pages.alternative.interactions.viewTimeSeconds
  16077  type: uint32_t
  16078  value: 60
  16079  mirror: once
  16080 
  16081 # Minimum view time required to upgrade a visit score of a visit
  16082 # provided there is a minimum threshold of keypresses.
  16083 - name: places.frecency.pages.alternative.interactions.viewTimeIfManyKeypressesSeconds
  16084  type: uint32_t
  16085  value: 20
  16086  mirror: once
  16087 
  16088 # Minimum keypresses of a visit required to upgrade a visit score.
  16089 - name: places.frecency.pages.alternative.interactions.manyKeypresses
  16090  type: uint32_t
  16091  value: 50
  16092  mirror: once
  16093 
  16094 # Preferences related to interaction based frecency.
  16095 - name: places.frecency.pages.veryHighWeight
  16096  type: uint32_t
  16097  value: 200
  16098  mirror: once
  16099 
  16100 - name: places.frecency.pages.highWeight
  16101  type: uint32_t
  16102  value: 100
  16103  mirror: once
  16104 
  16105 - name: places.frecency.pages.mediumWeight
  16106  type: uint32_t
  16107  value: 50
  16108  mirror: once
  16109 
  16110 - name: places.frecency.pages.lowWeight
  16111  type: uint32_t
  16112  value: 20
  16113  mirror: once
  16114 
  16115 - name: places.frecency.pages.halfLifeDays
  16116  type: uint32_t
  16117  value: 30
  16118  mirror: once
  16119 
  16120 - name: places.frecency.pages.numSampledVisits
  16121  type: uint32_t
  16122  value: 10
  16123  mirror: once
  16124 
  16125 # Max difference allowed between a visit and an interaction.
  16126 - name: places.frecency.pages.interactions.maxVisitGapSeconds
  16127  type: uint32_t
  16128  value: 2 * 60
  16129  mirror: once
  16130 
  16131 # Minimum view time required to upgrade a visit score.
  16132 - name: places.frecency.pages.interactions.viewTimeSeconds
  16133  type: uint32_t
  16134  value: 60
  16135  mirror: once
  16136 
  16137 # Minimum view time required to upgrade a visit score of a visit
  16138 # provided there is a minimum threshold of keypresses.
  16139 - name: places.frecency.pages.interactions.viewTimeIfManyKeypressesSeconds
  16140  type: uint32_t
  16141  value: 20
  16142  mirror: once
  16143 
  16144 # Minimum keypresses of a visit required to upgrade a visit score.
  16145 - name: places.frecency.pages.interactions.manyKeypresses
  16146  type: uint32_t
  16147  value: 50
  16148  mirror: once
  16149 
  16150 # Whether flooding prevention feature is enabled or not.
  16151 - name: places.history.floodingPrevention.enabled
  16152  type: bool
  16153  value: true
  16154  mirror: always
  16155 
  16156 # Maximum elapsed time betwen a user interaction and a visit before starting to
  16157 # apply flooding prevention.
  16158 - name: places.history.floodingPrevention.maxSecondsFromLastUserInteraction
  16159  type: uint32_t
  16160  value: 3
  16161  mirror: always
  16162 
  16163 # Number of consecutive accesses to an origin in a short timeframe before
  16164 # starting to restrict storing visits for it.
  16165 - name: places.history.floodingPrevention.restrictionCount
  16166  type: uint32_t
  16167  value: 3
  16168  mirror: always
  16169 
  16170 # Duration of the timeframe where consecutive visits to an origin should happen
  16171 # before starting to restrict storing visits for it.
  16172 - name: places.history.floodingPrevention.restrictionExpireSeconds
  16173  type: uint32_t
  16174  value: 5
  16175  mirror: always
  16176 
  16177 #---------------------------------------------------------------------------
  16178 # Prefs starting with "plain_text."
  16179 #---------------------------------------------------------------------------
  16180 
  16181 # When false, text in plaintext documents does not wrap long lines.
  16182 - name: plain_text.wrap_long_lines
  16183  type: bool
  16184  value: true
  16185  mirror: always
  16186 
  16187 #---------------------------------------------------------------------------
  16188 # Prefs starting with "preferences."
  16189 #---------------------------------------------------------------------------
  16190 
  16191 - name: preferences.allow.omt-write
  16192  type: bool
  16193  value: true
  16194  mirror: never
  16195 
  16196 #ifdef DEBUG
  16197  # If set to true, setting a Preference matched to a `Once` StaticPref will
  16198  # assert that the value matches. Such assertion being broken is a clear flag
  16199  # that the Once policy shouldn't be used.
  16200 -   name: preferences.check.once.policy
  16201    type: bool
  16202    value: false
  16203    mirror: always
  16204 
  16205  # If set to true, StaticPrefs Once policy check will be skipped during
  16206  # automation regression test. Use with care. This pref must be set back to
  16207  # false as soon as specific test has completed.
  16208 -   name: preferences.force-disable.check.once.policy
  16209    type: bool
  16210    value: false
  16211    mirror: always
  16212 #endif
  16213 
  16214 #---------------------------------------------------------------------------
  16215 # Prefs starting with "print."
  16216 #---------------------------------------------------------------------------
  16217 
  16218 # Variation fonts can't always be embedded in certain output formats
  16219 # such as PDF. To work around this, draw the variation fonts using
  16220 # paths instead of using font embedding.
  16221 - name: print.font-variations-as-paths
  16222  type: RelaxedAtomicBool
  16223  value: true
  16224  mirror: always
  16225 
  16226 # Whether we always print silently (without a print dialog).
  16227 - name: print.always_print_silent
  16228  type: RelaxedAtomicBool
  16229  value: false
  16230  mirror: always
  16231 
  16232 # Whether we directly use the system print dialog to collect the user's print
  16233 # settings rather than using the tab-modal print preview dialog.
  16234 # Note: `print.always_print_silent` overrides this.
  16235 - name: print.prefer_system_dialog
  16236  type: RelaxedAtomicBool
  16237  value: false
  16238  mirror: always
  16239 
  16240 # Whether we attempt to generate links in Save As PDF output.
  16241 - name: print.save_as_pdf.links.enabled
  16242  type: RelaxedAtomicBool
  16243  value: true
  16244  mirror: always
  16245 
  16246 # Whether we attempt to generate and use document-internal PDF destinations.
  16247 - name: print.save_as_pdf.internal_destinations.enabled
  16248  type: RelaxedAtomicBool
  16249  value: true
  16250  mirror: always
  16251 
  16252 # Whether we use the CSS @page size as the paper size in PDF output.
  16253 - name: print.save_as_pdf.use_page_rule_size_as_paper_size.enabled
  16254  type: RelaxedAtomicBool
  16255  value: @IS_NOT_ANDROID@
  16256  mirror: always
  16257 
  16258 # The default DPI for printing.
  16259 #
  16260 # For PDF-based output, DPI should ideally be irrelevant, but in fact it is not
  16261 # for multiple reasons:
  16262 #
  16263 #  * Layout code that tries to respect device pixels (e.g. for snapping glyph
  16264 #    positions and baselines, and especially for the "GDI Classic"
  16265 #    rendering-mode threshold for certain fonts).
  16266 #
  16267 #  * The limitations of the PDF format mean that we can't natively represent
  16268 #    certain effects, such as filters, in PDF output, so we need to rasterize
  16269 #    the parts of the document with these applied.
  16270 #
  16271 #  * Other rasterized things like images and such are also affected by DPI
  16272 #    (both in the output, and the images we select via srcset, for example).
  16273 #
  16274 # Therefore, using a high DPI is preferable. For now, we use 144dpi to match
  16275 # physical printer output on Windows, but higher (e.g. 300dpi) might be better,
  16276 # but only if it does not lead to issues such as excessive memory use.
  16277 - name: print.default_dpi
  16278  type: float
  16279  value: 144.0f
  16280  mirror: always
  16281 
  16282 # Whether support for monochrome printing is enabled for CUPS.
  16283 - name: print.cups.monochrome.enabled
  16284  type: RelaxedAtomicBool
  16285  value: true
  16286  mirror: always
  16287 
  16288 # Whether simpler monochrome printing set-up is enabled for CUPS.
  16289 # TODO(emilio): remove after a few releases on-by-default
  16290 - name: print.cups.monochrome-gtk-simple.enabled
  16291  type: RelaxedAtomicBool
  16292  value: true
  16293  mirror: always
  16294 
  16295 # Disabling this will no-op window.print()
  16296 - name: print.enabled
  16297  type: RelaxedAtomicBool
  16298  value: true
  16299  mirror: always
  16300 
  16301 # Determines if and when to center pages on a sheet horiontally when printing.
  16302 # With a setting of 2, it's guaranteed that A4 on US Letter will be centered.
  16303 #  0: never,
  16304 #  1: always,
  16305 #  2: when the ratio of sheet to page size after content scaling is near 1.0
  16306 - name: print.center_page_on_sheet
  16307  type: RelaxedAtomicUint32
  16308  value: 2
  16309  mirror: always
  16310 
  16311 #ifdef MOZ_ENABLE_SKIA_PDF
  16312 # Whether we should try to use skpdf for pdf output.
  16313 - name: print.experimental.skpdf
  16314  type: RelaxedAtomicBool
  16315  value: false
  16316  mirror: always
  16317 #endif
  16318 
  16319 #---------------------------------------------------------------------------
  16320 # Prefs starting with "privacy."
  16321 #---------------------------------------------------------------------------
  16322 
  16323 # Annotate trackers using the strict list. If set to false, the basic list will
  16324 # be used instead.
  16325 - name: privacy.annotate_channels.strict_list.enabled
  16326  type: bool
  16327  value: false
  16328  mirror: always
  16329 
  16330 # Annotate trackers using the strict list in the private browsing mode. If set
  16331 # to false, the basic list will be used instead.
  16332 - name: privacy.annotate_channels.strict_list.pbmode.enabled
  16333  type: bool
  16334  value: true
  16335  mirror: always
  16336 
  16337 # Enable the clearing of cache data using the clear-site-data header. If enabled,
  16338 # header values of "cache" and "*" will clear cached data from the origin
  16339 - name: privacy.clearSiteDataHeader.cache.enabled
  16340  type: bool
  16341  value: true
  16342  mirror: always
  16343 
  16344 # Also enable the clearing the bfcache for "Clear-Site-Data"-Header
  16345 - name: privacy.clearSiteDataHeader.cache.bfcache.enabled
  16346  type: bool
  16347  value: true
  16348  mirror: always
  16349 
  16350 # First Party Isolation (double keying), disabled by default.
  16351 - name: privacy.firstparty.isolate
  16352  type: RelaxedAtomicBool
  16353  value: false
  16354  mirror: always
  16355 
  16356 # If false, two windows in the same domain with different first party domains
  16357 # (top level URLs) can access resources through window.opener. This pref is
  16358 # effective only when "privacy.firstparty.isolate" is true.
  16359 - name: privacy.firstparty.isolate.restrict_opener_access
  16360  type: RelaxedAtomicBool
  16361  value: true
  16362  mirror: always
  16363 
  16364 - name: privacy.firstparty.isolate.block_post_message
  16365  type: RelaxedAtomicBool
  16366  value: false
  16367  mirror: always
  16368 
  16369 - name: privacy.firstparty.isolate.use_site
  16370  type: RelaxedAtomicBool
  16371  value: false
  16372  mirror: always
  16373 
  16374 # Enforce tracking protection in all modes.
  16375 - name: privacy.trackingprotection.enabled
  16376  type: bool
  16377  value: false
  16378  mirror: always
  16379 
  16380 # Enforce tracking protection in Private Browsing mode.
  16381 - name: privacy.trackingprotection.pbmode.enabled
  16382  type: bool
  16383  value: true
  16384  mirror: always
  16385 
  16386 # Annotate channels based on the tracking protection list in all modes
  16387 - name: privacy.trackingprotection.annotate_channels
  16388  type: bool
  16389  value: true
  16390  mirror: always
  16391 
  16392 # Block harmful addon URLs.
  16393 - name: privacy.trackingprotection.harmfuladdon.enabled
  16394  type: bool
  16395  value: false
  16396  mirror: always
  16397 
  16398 # Block 3rd party fingerprinting resources.
  16399 - name: privacy.trackingprotection.fingerprinting.enabled
  16400  type: bool
  16401  value: false
  16402  mirror: always
  16403 
  16404 # Block 3rd party cryptomining resources.
  16405 - name: privacy.trackingprotection.cryptomining.enabled
  16406  type: bool
  16407  value: false
  16408  mirror: always
  16409 
  16410 # Block 3rd party socialtracking resources.
  16411 - name: privacy.trackingprotection.socialtracking.enabled
  16412  type: bool
  16413  value: false
  16414  mirror: always
  16415 
  16416 # Consider socialtracking annotation as trackers (see ETP).
  16417 - name: privacy.socialtracking.block_cookies.enabled
  16418  type: bool
  16419  value: true
  16420  mirror: always
  16421 
  16422 # Block 3rd party emailtracking resources in all mode.
  16423 - name: privacy.trackingprotection.emailtracking.enabled
  16424  type: bool
  16425  value: false
  16426  mirror: always
  16427 
  16428 # Block 3rd party emailtracking resources in Private Browsing mode.
  16429 - name: privacy.trackingprotection.emailtracking.pbmode.enabled
  16430  type: bool
  16431  value: true
  16432  mirror: always
  16433 
  16434 # Collecting 3rd party emailtracking telemetry.
  16435 - name: privacy.trackingprotection.emailtracking.data_collection.enabled
  16436  type: bool
  16437  value: true
  16438  mirror: always
  16439 
  16440 - name: privacy.trackingprotection.testing.report_blocked_node
  16441  type: RelaxedAtomicBool
  16442  value: false
  16443  mirror: always
  16444 
  16445 # Annotate channels based on the consent manager list
  16446 # Note: consent manager annotations will be disabled if tracking protection is disabled
  16447 - name: privacy.trackingprotection.consentmanager.annotate_channels
  16448  type: bool
  16449  value: true
  16450  mirror: always
  16451 
  16452 # Skip blocking for consentmanager resources in all modes.
  16453 - name: privacy.trackingprotection.consentmanager.skip.enabled
  16454  type: RelaxedAtomicBool
  16455  value: false
  16456  mirror: always
  16457 
  16458 # Skip blocking for consentmanager resources in Private Browsing mode.
  16459 - name: privacy.trackingprotection.consentmanager.skip.pbmode.enabled
  16460  type: RelaxedAtomicBool
  16461  value: true
  16462  mirror: always
  16463 
  16464 # Annotate channels based on the anti-fraud list
  16465 # Note: anti-fraud annotations will be disabled if tracking protection is disabled
  16466 - name: privacy.trackingprotection.antifraud.annotate_channels
  16467  type: bool
  16468  value: true
  16469  mirror: always
  16470 
  16471 # Skip blocking for anti-fraud resources in all modes.
  16472 - name: privacy.trackingprotection.antifraud.skip.enabled
  16473  type: RelaxedAtomicBool
  16474  value: false
  16475  mirror: always
  16476 
  16477 # Skip blocking for anti-fraud resources in Private Browsing mode.
  16478 - name: privacy.trackingprotection.antifraud.skip.pbmode.enabled
  16479  type: RelaxedAtomicBool
  16480  value: true
  16481  mirror: always
  16482 
  16483 # Enable the "baseline" allow-list for fixing severe site breakage (e.g. blank
  16484 # page).
  16485 - name: privacy.trackingprotection.allow_list.baseline.enabled
  16486  type: bool
  16487  value: true
  16488  mirror: always
  16489 
  16490 # Enable the "convenience" allow-list for less severe site breakage (e.g. embeds
  16491 # or images missing). "convenience" can only be enabled if "baseline" is
  16492 # enabled. When "baseline" is false this pref is ignored.
  16493 - name: privacy.trackingprotection.allow_list.convenience.enabled
  16494  type: bool
  16495  value: true
  16496  mirror: always
  16497 
  16498 # Whether to spoof user locale to English (used as part of Resist
  16499 # Fingerprinting).
  16500 # 0 - will prompt
  16501 # 1 - don't spoof
  16502 # 2 - spoof
  16503 - name: privacy.spoof_english
  16504  type: RelaxedAtomicUint32
  16505  value: 0
  16506  mirror: always
  16507  do_not_use_directly: true
  16508 
  16509 # Send "do not track" HTTP header, disabled by default.
  16510 - name: privacy.donottrackheader.enabled
  16511  type: bool
  16512  value: false
  16513  mirror: always
  16514 
  16515 # Potentially send "global privacy control" HTTP header and set navigator
  16516 # property accordingly. Communicates user's desire to opt-out/in of
  16517 # websites or services selling or sharing the user's information, false by
  16518 # default.
  16519 # true - Send the header with a value of 1 to indicate opting-out
  16520 # false - Do not send header to indicate opting-in
  16521 - name: privacy.globalprivacycontrol.enabled
  16522  type: RelaxedAtomicBool
  16523  value: false
  16524  mirror: always
  16525 
  16526 # Controls whether or not GPC signals are sent in private browsing mode.
  16527 # This can be overridden by `privacy.globalprivacycontrol.enabled` as true.
  16528 - name: privacy.globalprivacycontrol.pbmode.enabled
  16529  type: RelaxedAtomicBool
  16530  value: false
  16531  mirror: always
  16532 
  16533 # Controls whether or not GPC signals are sent. Meant to act as a third option
  16534 # of 'undecided' by leaving the navigator property undefined and not attaching
  16535 # the Sec-GPC HTTP header.
  16536 - name: privacy.globalprivacycontrol.functionality.enabled
  16537  type: RelaxedAtomicBool
  16538  value: false
  16539  mirror: always
  16540 
  16541 # Lower the priority of network loads for resources on the tracking protection
  16542 # list.  Note that this requires the
  16543 # privacy.trackingprotection.annotate_channels pref to be on in order to have
  16544 # any effect.
  16545 - name: privacy.trackingprotection.lower_network_priority
  16546  type: bool
  16547  value: false
  16548  mirror: always
  16549 
  16550 # A subset of Resist Fingerprinting protections focused specifically on timers.
  16551 # This affects the Animation API, the performance APIs, Date.getTime,
  16552 # Event.timestamp, File.lastModified, audioContext.currentTime,
  16553 # canvas.captureStream.currentTime.
  16554 - name: privacy.reduceTimerPrecision
  16555  type: RelaxedAtomicBool
  16556  value: true
  16557  mirror: always
  16558 
  16559 # If privacy.reduceTimerPrecision is false, this pref controls whether or not
  16560 # to clamp all timers at a fixed 20 microsconds. It should always be enabled,
  16561 # and is only specified as a pref to enable an emergency disabling in the event
  16562 # of catastrophic failure.
  16563 - name: privacy.reduceTimerPrecision.unconditional
  16564  type: RelaxedAtomicBool
  16565  value: true
  16566  mirror: always
  16567 
  16568 # The resistFingerprinting variables are marked with 'Relaxed' memory ordering.
  16569 # We don't particurally care that threads have a percently consistent view of
  16570 # the values of these prefs. They are not expected to change often, and having
  16571 # an outdated view is not particurally harmful. They will eventually become
  16572 # consistent.
  16573 #
  16574 # The variables will, however, be read often (specifically .microseconds on
  16575 # each timer rounding) so performance is important.
  16576 - name: privacy.resistFingerprinting
  16577  type: RelaxedAtomicBool
  16578  value: false
  16579  mirror: always
  16580  do_not_use_directly: true
  16581 
  16582 # When the .pbmode pref is on, RFP or FPP will be enabled in PBM
  16583 # When the non-pbm pref is on, they will be enabled in PBM and non-PBM
  16584 - name: privacy.resistFingerprinting.pbmode
  16585  type: RelaxedAtomicBool
  16586  value: false
  16587  mirror: always
  16588  do_not_use_directly: true
  16589 
  16590 # privacy.fingerprintingProtection enables a set of fingerprinting protections
  16591 # designed to minimize breakage while maximizing protection.
  16592 - name: privacy.fingerprintingProtection
  16593  type: RelaxedAtomicBool
  16594  value: false
  16595  mirror: always
  16596  do_not_use_directly: true
  16597 
  16598 - name: privacy.fingerprintingProtection.pbmode
  16599  type: RelaxedAtomicBool
  16600  value: true
  16601  mirror: always
  16602  do_not_use_directly: true
  16603 
  16604 # Disables FPP Remote settings bucket. Allows user to stop overriding
  16605 # of FPP overrides
  16606 - name: privacy.fingerprintingProtection.remoteOverrides.enabled
  16607  type: RelaxedAtomicBool
  16608  value: true
  16609  mirror: always
  16610 
  16611 - name: privacy.fingerprintingProtection.testing
  16612  type: RelaxedAtomicBool
  16613  value: false
  16614  mirror: always
  16615 
  16616 # Enable/Disable fingerprinting protections that are enabled in
  16617 # Enhanced Tracking Protection Standard mode.
  16618 # bFPP cannot be enabled in only PBM, it is either enabled
  16619 # browser-wide or disabled browser-wide. If FPP is enabled
  16620 # in the same context as bFPP, FPP takes precedence. If
  16621 # RFP is enabled in the same context as FPP, then RFP takes precedence
  16622 - name: privacy.baselineFingerprintingProtection
  16623  type: RelaxedAtomicBool
  16624  value: true
  16625  mirror: always
  16626  do_not_use_directly: true
  16627 
  16628 # This pref can be used to disable mozAddonManager entirely for fingerprinting
  16629 # reasons. Someone like Tor browser will use this pref.
  16630 # NOTE: We'd like this to be a "hidden" pref once StaticPrefs supports it.
  16631 - name: privacy.resistFingerprinting.block_mozAddonManager
  16632  type: RelaxedAtomicBool
  16633  value: false
  16634  mirror: always
  16635 
  16636 # The log level for browser console messages logged in RFPHelper.sys.mjs. Change to
  16637 # 'All' and restart to see the messages.
  16638 - name: privacy.resistFingerprinting.jsmloglevel
  16639  type: String
  16640  value: "Warn"
  16641  mirror: never
  16642 
  16643 # Enable jittering the clock one precision value forward.
  16644 - name: privacy.resistFingerprinting.reduceTimerPrecision.jitter
  16645  type: RelaxedAtomicBool
  16646  value: true
  16647  mirror: always
  16648 
  16649 # Dynamically tune the resolution of the timer reduction for
  16650 # `privacy.reduceTimerPrecision` and `privacy.resistFingerprinting`.
  16651 - name: privacy.resistFingerprinting.reduceTimerPrecision.microseconds
  16652  type: RelaxedAtomicUint32
  16653  value: 1000
  16654  mirror: always
  16655 
  16656 - name: privacy.resistFingerprinting.target_video_res
  16657  type: uint32_t
  16658  value: 1080
  16659  mirror: always
  16660 
  16661 # Enable resetting the fingerprinting randomization key daily for normal windwos.
  16662 - name: privacy.resistFingerprinting.randomization.daily_reset.enabled
  16663  type: RelaxedAtomicBool
  16664  value: false
  16665  mirror: always
  16666 
  16667 # Enable resetting the fingerprinting randomization key daily for private windwos.
  16668 - name: privacy.resistFingerprinting.randomization.daily_reset.private.enabled
  16669  type: RelaxedAtomicBool
  16670  value: false
  16671  mirror: always
  16672 
  16673 # Control whether we use the SipHash to generate the canvas random key.
  16674 - name:  privacy.resistFingerprinting.randomization.canvas.use_siphash
  16675  type: RelaxedAtomicBool
  16676  value: false
  16677  mirror: always
  16678 
  16679 # Anti-tracking permission expiration.
  16680 - name: privacy.restrict3rdpartystorage.expiration
  16681  type: uint32_t
  16682  value: 2592000   # 30 days (in seconds)
  16683  mirror: always
  16684 
  16685 # Report Anti-tracking warnings to console lazily
  16686 - name: privacy.restrict3rdpartystorage.console.lazy
  16687  type: bool
  16688  value: true
  16689  mirror: always
  16690 
  16691 # Enable the heuristic to allow storage access for windows opened using window.open() after user interaction
  16692 - name: privacy.restrict3rdpartystorage.heuristic.opened_window_after_interaction
  16693  type: bool
  16694  value: true
  16695  mirror: always
  16696 
  16697 # Enable the heuristic to allow storage access for windows opened using window.open()
  16698 - name: privacy.restrict3rdpartystorage.heuristic.window_open
  16699  type: bool
  16700  value: false
  16701  mirror: always
  16702 
  16703 # Enable the heuristic to allow storage access for windows opened using window.open()
  16704 - name: privacy.restrict3rdpartystorage.heuristic.redirect
  16705  type: bool
  16706  value: false
  16707  mirror: always
  16708 
  16709 # Enable the heuristic to allow storage access for extended navigations with interaction
  16710 - name: privacy.restrict3rdpartystorage.heuristic.navigation
  16711  type: bool
  16712 #if defined(ANDROID)
  16713  value: false
  16714 #else
  16715  value: true
  16716 #endif
  16717  mirror: always
  16718 
  16719 # Anti-tracking permission expiration.
  16720 - name: privacy.restrict3rdpartystorage.expiration_redirect
  16721  type: uint32_t
  16722  value: 2592000   # 30 days (in seconds)
  16723  mirror: always
  16724 
  16725 # Anti-tracking user-interaction expiration.
  16726 - name: privacy.userInteraction.expiration
  16727  type: uint32_t
  16728  value: 3888000   # 45 days (in seconds)
  16729  mirror: always
  16730 
  16731 # Anti-tracking user-interaction document interval.
  16732 - name: privacy.userInteraction.document.interval
  16733  type: uint32_t
  16734  value: 1800   # 30 minutes (in seconds)
  16735  mirror: always
  16736 
  16737 # Enable Anti-tracking testing. When it enables, it will notify the observers
  16738 # when user-interaction permission or storage access permission is added. This
  16739 # is for testing only.
  16740 - name: privacy.antitracking.testing
  16741  type: bool
  16742  value: false
  16743  mirror: always
  16744 
  16745  # Full isolation (referrer, cookie jar, etc) of resources injected by content-scripts.
  16746 - name: privacy.antitracking.isolateContentScriptResources
  16747  type: bool
  16748  value: @IS_NIGHTLY_BUILD@
  16749  mirror: always
  16750 
  16751 # Controls the anti-tracking webcompat features. This includes:
  16752 # - All URL-Classifier and state partitioning skip lists (prefs and remote
  16753 #   settings)
  16754 # - Storage access heuristics (opener, redirect, etc.)
  16755 # - StorageAccessAPI automatic grants (skips the prompt)
  16756 # - Allowing specific tracking channels on user opt-in (e.g. facebook login
  16757 #   shim).
  16758 - name: privacy.antitracking.enableWebcompat
  16759  type: RelaxedAtomicBool
  16760  value: true
  16761  mirror: always
  16762 
  16763 # Enable the heuristic to allow storage access for recent visited pages
  16764 - name: privacy.restrict3rdpartystorage.heuristic.recently_visited
  16765  type: bool
  16766 #if defined(ANDROID)
  16767  value: true
  16768 #else
  16769  value: false
  16770 #endif
  16771  mirror: always
  16772 
  16773 # Valid time gap since last visit
  16774 - name: privacy.restrict3rdpartystorage.heuristic.recently_visited_time
  16775  type: uint32_t
  16776  value: 600    # 10 minutes
  16777  mirror: always
  16778 
  16779 # Whether to exclude third-party trackers from the storage access heuristics.
  16780 - name: privacy.restrict3rdpartystorage.heuristic.exclude_third_party_trackers
  16781  type: bool
  16782  value: true
  16783  mirror: always
  16784 
  16785 # Recent visited pages redirection permission expiration.
  16786 - name: privacy.restrict3rdpartystorage.expiration_visited
  16787  type: uint32_t
  16788  value: 2592000   # 30 days (in seconds)
  16789  mirror: always
  16790 
  16791 - name: privacy.window.maxInnerWidth
  16792  type: int32_t
  16793  value: 1400
  16794  mirror: always
  16795 
  16796 - name: privacy.window.maxInnerHeight
  16797  type: int32_t
  16798  value: 900
  16799  mirror: always
  16800 
  16801 - name: privacy.sanitize.useOldClearHistoryDialog
  16802  type: RelaxedAtomicBool
  16803  value: true
  16804  mirror: always
  16805 
  16806 - name: privacy.sanitize.sanitizeOnShutdown
  16807  type: RelaxedAtomicBool
  16808  value: false
  16809  mirror: always
  16810 
  16811 - name: privacy.clearOnShutdown.cache
  16812  type: RelaxedAtomicBool
  16813  value: false
  16814  mirror: always
  16815 
  16816 - name: privacy.clearOnShutdown_v2.cache
  16817  type: RelaxedAtomicBool
  16818  value: false
  16819  mirror: always
  16820 
  16821 - name: privacy.dynamic_firstparty.limitForeign
  16822  type: RelaxedAtomicBool
  16823  value: false
  16824  mirror: always
  16825 
  16826 - name: privacy.dynamic_firstparty.use_site
  16827  type: RelaxedAtomicBool
  16828  value: true
  16829  mirror: always
  16830 
  16831 - name: privacy.partition.network_state
  16832  type: RelaxedAtomicBool
  16833  value: true
  16834  mirror: always
  16835 
  16836 # Partition the OCSP cache by the partitionKey.
  16837 - name: privacy.partition.network_state.ocsp_cache
  16838  type: RelaxedAtomicBool
  16839  value: true
  16840  mirror: always
  16841 
  16842 # Partition the OCSP cache by the partitionKey for private browsing mode.
  16843 - name: privacy.partition.network_state.ocsp_cache.pbmode
  16844  type: RelaxedAtomicBool
  16845  value: true
  16846  mirror: always
  16847 
  16848 # Always partition web storage APIs except cookies.
  16849 - name: privacy.partition.always_partition_third_party_non_cookie_storage
  16850  type: RelaxedAtomicBool
  16851  value: true
  16852  mirror: always
  16853 
  16854 # Exclude session storage from the above preference.
  16855 - name: privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage
  16856  type: RelaxedAtomicBool
  16857  value: false
  16858  mirror: always
  16859 
  16860 - name: privacy.partition.bloburl_per_partition_key
  16861  type: bool
  16862  value: true
  16863  mirror: always
  16864 
  16865 - name: privacy.window.name.update.enabled
  16866  type: bool
  16867  value: true
  16868  mirror: always
  16869 
  16870 # By default, the network state isolation is not active when there is a proxy
  16871 # setting. This pref forces the network isolation even in these scenarios.
  16872 - name: privacy.partition.network_state.connection_with_proxy
  16873  type: bool
  16874  value: false
  16875  mirror: always
  16876 
  16877 # Partition the service workers unconditionally when dFPI is enabled.
  16878 - name: privacy.partition.serviceWorkers
  16879  type: RelaxedAtomicBool
  16880  value: true
  16881  mirror: always
  16882 
  16883 # Enables / disables the strip on share feature which strips query parameters
  16884 # when copying/sharing in-content links or from the url bar.
  16885 - name: privacy.query_stripping.strip_on_share.enabled
  16886  type: RelaxedAtomicBool
  16887  value: false
  16888  mirror: always
  16889 
  16890 # Enables / disables the URL query string stripping in normal browsing mode
  16891 # which strips query parameters from loading URIs to prevent bounce (redirect)
  16892 # tracking.
  16893 - name: privacy.query_stripping.enabled
  16894  type: RelaxedAtomicBool
  16895  value: false
  16896  mirror: always
  16897 
  16898 # Same as the pref above, but controls query stripping for private browsing
  16899 # mode.
  16900 - name: privacy.query_stripping.enabled.pbmode
  16901  type: RelaxedAtomicBool
  16902  value: false
  16903  mirror: always
  16904 
  16905 # The list which contains query parameters that are needed to be stripped from
  16906 # URIs. The query parameters are separated by a space.
  16907 - name: privacy.query_stripping.strip_list
  16908  type: String
  16909  value: ""
  16910  mirror: never
  16911 
  16912 # This controls if we will do the query string stripping for redirects.
  16913 - name: privacy.query_stripping.redirect
  16914  type: bool
  16915  value: true
  16916  mirror: always
  16917 
  16918 # the list which contains sites where should exempt from query stripping
  16919 - name: privacy.query_stripping.allow_list
  16920  type: String
  16921  value: ""
  16922  mirror: never
  16923 
  16924 # Controls Bounce Tracking Protection behavior.
  16925 # Set to 0 to fully disable. See nsIBounceTrackingProtection.idl for
  16926 # documentation.
  16927 - name: privacy.bounceTrackingProtection.mode
  16928  type: uint32_t
  16929 #ifdef NIGHTLY_BUILD
  16930  value: 1
  16931 #else
  16932  value: 3
  16933 #endif
  16934  mirror: always
  16935 
  16936 # How long to wait for a client redirect after a navigation ends.
  16937 - name: privacy.bounceTrackingProtection.clientBounceDetectionTimerPeriodMS
  16938  type: uint32_t
  16939  value: 10000
  16940  mirror: always
  16941 
  16942 # How long user activations will protect a site host from storage deletion.
  16943 - name: privacy.bounceTrackingProtection.bounceTrackingActivationLifetimeSec
  16944  type: uint32_t
  16945  value: 3888000
  16946  mirror: always
  16947 
  16948 # How long to wait for interaction after a possible bounce tracking event before
  16949 # deleting a site host's storage.
  16950 - name: privacy.bounceTrackingProtection.bounceTrackingGracePeriodSec
  16951  type: uint32_t
  16952  value: 3600
  16953  mirror: always
  16954 
  16955 # How often to run the bounce tracking timer algorithm  which purges bounce
  16956 # tracker state periodically. Set to 0 to disable purging.
  16957 - name: privacy.bounceTrackingProtection.bounceTrackingPurgeTimerPeriodSec
  16958  type: uint32_t
  16959  value: 3600
  16960  mirror: always
  16961 
  16962 # Whether only bounces that access storage should be considered trackers.
  16963 - name: privacy.bounceTrackingProtection.requireStatefulBounces
  16964  type: bool
  16965  value: false
  16966  mirror: always
  16967 
  16968 # To be used in automated test environments to enable observer messages.
  16969 - name: privacy.bounceTrackingProtection.enableTestMode
  16970  type: RelaxedAtomicBool
  16971  value: false
  16972  mirror: always
  16973 
  16974 # Whether the migration ran to import user activation flags into the BTP user
  16975 # activation store. Set to false to trigger a new migration.
  16976 - name: privacy.bounceTrackingProtection.hasMigratedUserActivationData
  16977  type: bool
  16978  value: false
  16979  mirror: always
  16980 
  16981 # Maximum number of pending storage updates before flushing to disk.
  16982 - name: privacy.bounceTrackingProtection.storage.maxPendingUpdates
  16983  type: uint32_t
  16984  value: 25
  16985  mirror: always
  16986 
  16987 #---------------------------------------------------------------------------
  16988 # Prefs starting with "prompts."
  16989 #---------------------------------------------------------------------------
  16990 
  16991 # Prompt modal type prefs
  16992 # See nsIPromptService::MODAL_TYPE fields for possible values.
  16993 
  16994 # Insecure form submit warning.
  16995 - name: prompts.modalType.insecureFormSubmit
  16996  type: int32_t
  16997  value: 2
  16998  mirror: always
  16999 
  17000 #---------------------------------------------------------------------------
  17001 # Prefs starting with "security."
  17002 #---------------------------------------------------------------------------
  17003 
  17004 # Mochitests that need to load resource:// URIs not declared content-accessible
  17005 # in manifests should set this pref.
  17006 - name: security.all_resource_uri_content_accessible
  17007  type: bool
  17008  value: false
  17009  mirror: always
  17010 
  17011 - name: security.bad_cert_domain_error.url_fix_enabled
  17012  type: bool
  17013  value: true
  17014  mirror: always
  17015 
  17016 # When a TLS server asks for a client authentication certificate, the platform
  17017 # will ask the user to select one or opt to not send one. At the same time, the
  17018 # platform will offer a few options for how long to remember the decision at
  17019 # hand. The value of this preference determines which of these three options is
  17020 # selected by default.
  17021 # 0 selects "do not remember the decision"
  17022 # 1 selects "remember the decision permanently"
  17023 # 2 selects "remember the decision for the rest of the session"
  17024 - name: security.client_auth_certificate_default_remember_setting
  17025  type: uint32_t
  17026  value: 2
  17027  mirror: always
  17028 
  17029 - name: security.csp.reporting.script-sample.max-length
  17030  type: int32_t
  17031  value: 40
  17032  mirror: always
  17033 
  17034 - name: security.csp.truncate_blocked_uri_for_frame_navigations
  17035  type: bool
  17036  value: false
  17037  mirror: always
  17038 
  17039 # Limit the number of CSP reports that are send in a specific timespan.
  17040 - name: security.csp.reporting.limit.count
  17041  type: uint32_t
  17042  value: 100
  17043  mirror: always
  17044 
  17045 # Enable/disable CSP reporting (report-uri and report-to)
  17046 - name: security.csp.reporting.enabled
  17047  type: bool
  17048  value: true
  17049  mirror: always
  17050 
  17051 #ifdef DEBUG
  17052 # Crash on CSP violations on internal pages (i.e. chrome:)
  17053 - name: security.csp.testing.allow_internal_csp_violation
  17054  type: bool
  17055  value: false
  17056  mirror: always
  17057 #endif
  17058 
  17059 # If true, all toplevel data: URI navigations will be blocked.
  17060 # Please note that manually entering a data: URI in the
  17061 # URL-Bar will not be blocked when flipping this pref.
  17062 - name: security.data_uri.block_toplevel_data_uri_navigations
  17063  type: bool
  17064  value: true
  17065  mirror: always
  17066 
  17067 # Whether to apply the <meta http="Content-Security-Policy"> to browser.xhtml
  17068 - name: security.browser_xhtml_csp.enabled
  17069  type: bool
  17070  value: true
  17071  mirror: always
  17072 
  17073 # Allow unsafe eval usage with high privileges to. This should
  17074 # not be activated without a very good reason.
  17075 # This pref has to be set before starting Firefox!
  17076 - name: security.allow_unsafe_dangerous_privileged_evil_eval
  17077  type: bool
  17078  value: false
  17079  mirror: once
  17080 
  17081 # Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but
  17082 # not allowed for Firefox Desktop in firefox.js
  17083 - name: security.allow_parent_unrestricted_js_loads
  17084  type: RelaxedAtomicBool
  17085  value: true
  17086  mirror: always
  17087 
  17088 # A temporary pref that will be removed when the dialog in 1979341 is removed
  17089 # Needed for early enforcement of a user-initiated block action
  17090 - name: security.block_parent_unrestricted_js_loads.temporary
  17091  type: RelaxedAtomicBool
  17092  value: false
  17093  mirror: always
  17094 
  17095 # A temporary pref that will be removed when the dialog in 1979341 is removed
  17096 # Disables the notification bar and dialog
  17097 - name: security.hide_parent_unrestricted_js_loads_warning.temporary
  17098  type: RelaxedAtomicBool
  17099  value: false
  17100  mirror: always
  17101 
  17102 # A pref needed for testing: xpinstall.signatures.required is disabled
  17103 # for Marionette, which trips the JSHacks detection and disables our script
  17104 # protections, so this pref skips the JSHacks check
  17105 - name: security.parent_unrestricted_js_loads.skip_jshacks
  17106  type: RelaxedAtomicBool
  17107  value: false
  17108  mirror: always
  17109 
  17110 # Don't enable this! This is only meant for legacy tests.
  17111 - name: security.allow_eval_with_system_principal
  17112  type: RelaxedAtomicBool
  17113  value: false
  17114  mirror: always
  17115 
  17116 # Don't enable this! This is only meant for legacy tests.
  17117 - name: security.allow_eval_in_parent_process
  17118  type: RelaxedAtomicBool
  17119  value: false
  17120  mirror: always
  17121 
  17122 # Disallowed by default, ensure not disallowed content is loaded in the parent
  17123 # process.
  17124 - name: security.allow_unsafe_parent_loads
  17125  type: bool
  17126  value: false
  17127  mirror: always
  17128 
  17129 # Pref to block mixed scripts (fonts, plugin content, scripts, stylesheets,
  17130 # iframes, websockets, XHR).
  17131 - name: security.mixed_content.block_active_content
  17132  type: bool
  17133  value: @IS_ANDROID@
  17134  mirror: always
  17135 
  17136 # Pref for mixed display content blocking (images, audio, video).
  17137 - name: security.mixed_content.block_display_content
  17138  type: bool
  17139  value: false
  17140  mirror: always
  17141 
  17142 # Pref for mixed display content upgrading (images, audio, video).
  17143 - name: security.mixed_content.upgrade_display_content
  17144  type: RelaxedAtomicBool
  17145  value: true
  17146  mirror: always
  17147 
  17148 # Whether strict file origin policy is in effect. "False" is traditional.
  17149 - name: security.fileuri.strict_origin_policy
  17150  type: RelaxedAtomicBool
  17151  value: true
  17152  mirror: always
  17153 
  17154 # The level to which we sandbox the content process. firefox.js sets the
  17155 # default to different values on a per-OS basis, and has documentation
  17156 # on what the defaults are and what the numbers mean.
  17157 - name: security.sandbox.content.level
  17158  type: int32_t
  17159  value: 0
  17160  mirror: always
  17161  do_not_use_directly: true # Consumers should use SandboxSettings to ask.
  17162 
  17163 - name: security.sandbox.socket.process.level
  17164  type: int32_t
  17165  value: 0
  17166  mirror: always
  17167  do_not_use_directly: true # Consumers should use SandboxSettings to ask.
  17168 
  17169 # This controls the strength of the GPU process sandbox on Windows
  17170 # and macOS. Changes will require restart. Levels have different meanings
  17171 # on Windows and macOS. For information on what the level number means on
  17172 # Windows, see SetSecurityLevelForGPUProcess() in
  17173 # security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp
  17174 # For macOS, any level >= 1 enables the sandbox and setting a higher level
  17175 # has no effect.
  17176 - name: security.sandbox.gpu.level
  17177  type: int32_t
  17178 #if defined(XP_WIN)
  17179  value: 2
  17180 #elif defined(XP_MACOSX)
  17181  value: 1
  17182 #else
  17183  value: 0
  17184 #endif
  17185  mirror: always
  17186 
  17187 # Enrollment preferences for the win32k experiment, set and managed by Normandy
  17188 - name: security.sandbox.content.win32k-experiment.enrollmentStatus
  17189  type: uint32_t
  17190  value: 0
  17191  mirror: never
  17192 
  17193 - name: security.sandbox.content.win32k-experiment.startupEnrollmentStatus
  17194  type: uint32_t
  17195  value: 0
  17196  mirror: never
  17197 
  17198 #if defined(XP_WIN) && defined(MOZ_SANDBOX)
  17199 
  17200  # Whether win32k is disabled for content processes.
  17201  # true means win32k system calls are not permitted.
  17202 -   name: security.sandbox.content.win32k-disable
  17203    type: RelaxedAtomicBool
  17204    value: true
  17205    mirror: always
  17206 
  17207  # Whether win32k is disabled for compatible plugins.
  17208 -   name: security.sandbox.gmp.win32k-disable
  17209    type: RelaxedAtomicBool
  17210    value: true
  17211    mirror: always
  17212 
  17213  # Whether ACG is enabled (dynamic code blocked) for compatible plugins.
  17214 -   name: security.sandbox.gmp.acg.enabled
  17215    type: RelaxedAtomicBool
  17216    value: true
  17217    mirror: always
  17218 
  17219  # Whether win32k is disabled for socket processes.
  17220  # true means win32k system calls are not permitted.
  17221 -   name: security.sandbox.socket.win32k-disable
  17222    type: RelaxedAtomicBool
  17223    value: true
  17224    mirror: always
  17225 
  17226  # Whether CET User Shadow Stack compatible modules only is enabled for the
  17227  # relevant process type.
  17228 -   name: security.sandbox.content.shadow-stack.enabled
  17229    type: RelaxedAtomicBool
  17230    value: false
  17231    mirror: always
  17232 
  17233 -   name: security.sandbox.rdd.shadow-stack.enabled
  17234    type: RelaxedAtomicBool
  17235    value: true
  17236    mirror: always
  17237 
  17238 -   name: security.sandbox.socket.shadow-stack.enabled
  17239    type: RelaxedAtomicBool
  17240    value: true
  17241    mirror: always
  17242 
  17243 -   name: security.sandbox.gpu.shadow-stack.enabled
  17244    type: RelaxedAtomicBool
  17245    value: true
  17246    mirror: always
  17247 
  17248 -   name: security.sandbox.gmp.shadow-stack.enabled
  17249    type: RelaxedAtomicBool
  17250    value: true
  17251    mirror: always
  17252 
  17253  # Whether a Low Privilege AppContainer (LPAC) is enabled for the relevant
  17254  # process type.
  17255 
  17256 #if defined(MOZ_WMF_MEDIA_ENGINE)
  17257 -   name: security.sandbox.utility-wmf-cdm.lpac.enabled
  17258    type: RelaxedAtomicBool
  17259    value: true
  17260    mirror: always
  17261 #endif
  17262 
  17263  # Whether Arbitrary Code Guard is enabled for the RDD process.
  17264 -   name: security.sandbox.rdd.acg.enabled
  17265    type: RelaxedAtomicBool
  17266    value: true
  17267    mirror: always
  17268 
  17269 #ifdef MOZ_WMF
  17270  # Whether Arbitrary Code Guard is enabled for the utility WMF audio decoder
  17271  # process.
  17272 
  17273 -   name: security.sandbox.utility-wmf.acg.enabled
  17274    type: RelaxedAtomicBool
  17275    value: true
  17276    mirror: always
  17277 #endif  // MOZ_WMF
  17278 
  17279  # Whether CIG is applied pre-spawn or later when lowering the sandbox. We
  17280  # enable pre-spawn CIG only in Nightly for now because it caused a compat
  17281  # issue (bug 1682304 and 1704373).
  17282 -   name: security.sandbox.cig.prespawn.enabled
  17283    type: RelaxedAtomicBool
  17284    value: @IS_NIGHTLY_BUILD@
  17285    mirror: always
  17286 
  17287  # This controls the depth of stack trace that is logged when Windows sandbox
  17288  # logging is turned on. This is only currently available for the content
  17289  # process because the only other sandbox (for GMP) has too strict a policy to
  17290  # allow stack tracing. This does not require a restart to take effect.
  17291 -   name: security.sandbox.windows.log.stackTraceDepth
  17292    type: RelaxedAtomicUint32
  17293    value: 0
  17294    mirror: always
  17295 
  17296  # Whether \\??\\pipe\\chrome.* rule is added to the sandbox configurations.
  17297  # We are removing this using a pref because we know that in the past some
  17298  # injected DLLs have relied on this rule existing for their own pipes.
  17299  # This gives users a work-around if they have issues.
  17300 -   name: security.sandbox.chrome-pipe-rule.enabled
  17301    type: RelaxedAtomicBool
  17302    value: false
  17303    mirror: always
  17304 
  17305  # Whether \Device\KsecDD is closed in content process. We are closing this
  17306  # using a pref to give users a work-around if they have issues.
  17307 -   name: security.sandbox.content.close-ksecdd-handle
  17308    type: RelaxedAtomicBool
  17309    value: true
  17310    mirror: always
  17311 #endif
  17312 
  17313 #if defined(XP_LINUX) && defined(MOZ_SANDBOX)
  17314 - name: security.sandbox.warn_unprivileged_namespaces
  17315  type: bool
  17316  value: true
  17317  mirror: always
  17318 #endif
  17319 
  17320 # Pref to show warning when submitting from secure to insecure.
  17321 - name: security.warn_submit_secure_to_insecure
  17322  type: bool
  17323  value: true
  17324  mirror: always
  17325 
  17326 # Hardware Origin-bound Second Factor Support
  17327 - name: security.webauth.webauthn
  17328  type: bool
  17329  value: true
  17330  mirror: always
  17331 
  17332 # WebAuthn CTAP2 support
  17333 - name: security.webauthn.ctap2
  17334  type: RelaxedAtomicBool
  17335  value: true
  17336  mirror: always
  17337  rust: true
  17338 
  17339 # WebAuthn JSON serialization methods
  17340 - name: security.webauthn.enable_json_serialization_methods
  17341  type: RelaxedAtomicBool
  17342  value: true
  17343  mirror: always
  17344 
  17345 # WebAuthn conditional mediation
  17346 - name: security.webauthn.enable_conditional_mediation
  17347  type: RelaxedAtomicBool
  17348  value: true
  17349  mirror: always
  17350 
  17351 # Dispatch WebAuthn requests to virtual authenticators (mutually exclusive
  17352 # with and webauthn_enable_usbtoken)
  17353 - name: security.webauth.webauthn_enable_softtoken
  17354  type: RelaxedAtomicBool
  17355  value: false
  17356  mirror: always
  17357  rust: true
  17358 
  17359 # residentKey support when using Android platform API
  17360 - name: security.webauthn.webauthn_enable_android_fido2.residentkey
  17361  type: RelaxedAtomicBool
  17362  value: true
  17363  mirror: always
  17364 
  17365 #ifdef XP_MACOSX
  17366 # Dispatch WebAuthn requests to the macOS platform API
  17367 - name: security.webauthn.enable_macos_passkeys
  17368  type: RelaxedAtomicBool
  17369  value: true
  17370  mirror: always
  17371 #endif
  17372 
  17373 # Dispatch WebAuthn requests to authenticator-rs
  17374 - name: security.webauth.webauthn_enable_usbtoken
  17375  type: RelaxedAtomicBool
  17376  value: @IS_NOT_MOBILE@
  17377  mirror: always
  17378  rust: true
  17379 
  17380 # Skip direct attestation consent prompts
  17381 - name: security.webauthn.always_allow_direct_attestation
  17382  type: RelaxedAtomicBool
  17383  value: false
  17384  mirror: always
  17385  rust: true
  17386 
  17387 # Show the Windows Passkey settings link in about:preferences. This is
  17388 # set to true if we find that webauthn.dll is sufficiently recent.
  17389 - name: security.webauthn.show_ms_settings_link
  17390  type: RelaxedAtomicBool
  17391  value: false
  17392  mirror: always
  17393 
  17394 # Allow WebAuthn when a certificate override is in place
  17395 - name: security.webauthn.allow_with_certificate_override
  17396  type: RelaxedAtomicBool
  17397  value: false
  17398  mirror: always
  17399 
  17400 # Block Worker/SharedWorker scripts with wrong MIME type.
  17401 - name: security.block_Worker_with_wrong_mime
  17402  type: bool
  17403  value: true
  17404  mirror: always
  17405 
  17406 # Block the execution of scripts using a wrong type as defined by the file extension
  17407 # (OS) mapping when loaded via the file:// protocol.
  17408 - name: security.block_fileuri_script_with_wrong_mime
  17409  type: bool
  17410  value: false
  17411  mirror: always
  17412 
  17413 # Cancel outgoing requests from privileged about pages:
  17414 # but only with scheme http(s) and contentpolicytype script
  17415 - name: security.disallow_privilegedabout_remote_script_loads
  17416  type: RelaxedAtomicBool
  17417  value: false
  17418  mirror: always
  17419 
  17420 # Enable preloaded static key pins by default.
  17421 - name: security.cert_pinning.enforcement_level
  17422  type: RelaxedAtomicUint32
  17423  value: 1
  17424  mirror: always
  17425  do_not_use_directly: true
  17426 
  17427 # OCSP fetching behavior:
  17428 # 0: do not fetch OCSP
  17429 # 1: fetch OCSP for DV and EV certificates
  17430 # 2: fetch OCSP only for EV certificates
  17431 - name: security.OCSP.enabled
  17432  type: RelaxedAtomicUint32
  17433 #ifdef ANDROID
  17434  value: 2
  17435 #else
  17436  value: 1
  17437 #endif
  17438  mirror: always
  17439 
  17440 
  17441 # Whether or not OCSP is required.
  17442 # true => hard-fail (if an OCSP request times out, stop the connection)
  17443 # false => soft-fail (if an OCSP request times out, continue the connection)
  17444 - name: security.OCSP.require
  17445  type: RelaxedAtomicBool
  17446  value: false
  17447  mirror: always
  17448 
  17449 # How many milliseconds to wait for an OCSP response before assuming it failed
  17450 # (when fetching for soft-fail).
  17451 - name: security.OCSP.timeoutMilliseconds.soft
  17452  type: RelaxedAtomicUint32
  17453 #ifdef RELEASE_OR_BETA
  17454  value: 2000
  17455 #else
  17456  value: 1000
  17457 #endif
  17458  mirror: always
  17459 
  17460 # How many milliseconds to wait for an OCSP response before assuming it failed
  17461 # (when fetching for hard-fail).
  17462 - name: security.OCSP.timeoutMilliseconds.hard
  17463  type: RelaxedAtomicUint32
  17464  value: 10000
  17465  mirror: always
  17466 
  17467 # Whether or not to enable OCSP must-staple (in other words, TLS-feature with
  17468 # status request).
  17469 - name: security.ssl.enable_ocsp_must_staple
  17470  type: RelaxedAtomicBool
  17471  value: true
  17472  mirror: always
  17473 
  17474 # Whether or not to enable OCSP stapling.
  17475 - name: security.ssl.enable_ocsp_stapling
  17476  type: RelaxedAtomicBool
  17477  value: true
  17478  mirror: always
  17479 
  17480 # This is checked at startup to see if NSS should be initialized without the
  17481 # user's certificate and key databases.
  17482 - name: security.nocertdb
  17483  type: bool
  17484  value: false
  17485  mirror: once
  17486 
  17487 # Whether or not to import and trust third party root certificates from the OS.
  17488 - name: security.enterprise_roots.enabled
  17489  type: RelaxedAtomicBool
  17490  value: true
  17491  mirror: always
  17492 
  17493 # If true, attempt to load the osclientcerts PKCS#11 module at startup on a
  17494 # background thread. This module allows Firefox to use client certificates
  17495 # stored in OS certificate storage. Currently only available for Windows and
  17496 # macOS.
  17497 - name: security.osclientcerts.autoload
  17498  type: RelaxedAtomicBool
  17499  value: true
  17500  mirror: always
  17501 
  17502 - name: security.pki.cert_short_lifetime_in_days
  17503  type: RelaxedAtomicUint32
  17504  value: 10
  17505  mirror: always
  17506 
  17507 # Configures Certificate Transparency support mode:
  17508 # 0: Fully disabled.
  17509 # 1: Only collect telemetry. CT qualification checks are not performed.
  17510 # 2: Enforce CT.
  17511 - name: security.pki.certificate_transparency.mode
  17512  type: RelaxedAtomicUint32
  17513 #if defined(ANDROID) && !defined(EARLY_BETA_OR_EARLIER)
  17514  value: 0
  17515 #else
  17516  value: 2
  17517 #endif
  17518  mirror: always
  17519 
  17520 # A comma-separated list of host names to not enforce certificate transparency
  17521 # for. Entries of the form 'example.com' apply to the host 'example.com' and
  17522 # all subdomains (e.g. 'sub.example.com', 'sub.www.example.com', etc.).
  17523 # Entries of the form '.example.com' only apply to the host 'example.com'.
  17524 # Entries may also be IP addresses.
  17525 - name: security.pki.certificate_transparency.disable_for_hosts
  17526  type: String
  17527  value: ""
  17528  mirror: never
  17529 
  17530 # A comma-separated list of base64-encoded sha256 hashes of subject public key
  17531 # infos to not enforce certificate transparency for. If a verified certificate
  17532 # chain contains a certificate with a SPKI hash in this list, certificate
  17533 # transparency will not be enforced for that connection.
  17534 - name: security.pki.certificate_transparency.disable_for_spki_hashes
  17535  type: String
  17536  value: ""
  17537  mirror: never
  17538 
  17539 # 0: Disable CRLite entirely.
  17540 # 1: Enable CRLite but only to collect telemetry.
  17541 # 2: Enable CRLite and enforce its results. Firefox will not fetch OCSP for DV
  17542 #    certificates that chain to the Mozilla root store unless
  17543 #    security.OCSP.require is true. Firefox will, however, fetch OCSP for EV
  17544 #    certificates that chain to the Mozilla root store (unless
  17545 #    security.OCSP.enable is 0).
  17546 - name: security.pki.crlite_mode
  17547  type: RelaxedAtomicUint32
  17548  value: 2
  17549  mirror: always
  17550 
  17551 # The CRLite filter channel to which the user is subscribed.
  17552 # - "default" => clubcards that contain all revocations
  17553 # - "compat" => clubcards that contain priority revocations
  17554 - name: security.pki.crlite_channel
  17555  type: String
  17556 #ifdef ANDROID
  17557  value: "compat"
  17558 #else
  17559  value: "default"
  17560 #endif
  17561  mirror: never
  17562 
  17563 # The number of SCTs that must be "covered" by a CRLite filter before
  17564 # we will enforce a result from that filter.
  17565 - name: security.pki.crlite_timestamps_for_coverage
  17566  type: RelaxedAtomicUint32
  17567  value: 1
  17568  mirror: always
  17569  rust: true
  17570 
  17571 - name: security.pki.use_modern_crypto_with_pkcs12
  17572  type: RelaxedAtomicBool
  17573  value: true
  17574  mirror: always
  17575 
  17576 # The number of entries in the certificate signature cache.
  17577 # A higher number increases memory usage, but should increase the cache hit rate.
  17578 # Each entry is approximately 64 bytes, and the maximum number of entries is 65535.
  17579 - name: security.pki.cert_signature_cache_size
  17580  type: RelaxedAtomicUint32
  17581  value: 128
  17582  mirror: always
  17583 
  17584 # The number of entries in the SCT signature cache.
  17585 # A higher number increases memory usage, but should increase the cache hit rate.
  17586 # Each entry is approximately 64 bytes, and the maximum number of entries is 65535.
  17587 # There will be 2-3 SCTs per certificate, so this probably needs to be 2-3x
  17588 # security.pki.cert_signature_cache_size to achieve similar hit rates.
  17589 - name: security.pki.sct_signature_cache_size
  17590  type: RelaxedAtomicUint32
  17591  value: 256
  17592  mirror: always
  17593 
  17594 # The number of entries in the certificate trust cache.
  17595 # A higher number increases memory usage, but should increase the cache hit rate.
  17596 # Each entry is approximately 65 bytes, and the maximum number of entries is 65535.
  17597 - name: security.pki.cert_trust_cache_size
  17598  type: RelaxedAtomicUint32
  17599  value: 128
  17600  mirror: always
  17601 
  17602 # Whether or not to enable the test trust anchor list when verifying QWACs
  17603 # (qualified website authentication certificates)
  17604 - name: security.qwacs.enable_test_trust_anchors
  17605  type: RelaxedAtomicBool
  17606  value: false
  17607  mirror: always
  17608  rust: true
  17609 
  17610 - name: security.tls.version.min
  17611  type: RelaxedAtomicUint32
  17612  value: 3
  17613  mirror: always
  17614 
  17615 - name: security.tls.version.max
  17616  type: RelaxedAtomicUint32
  17617  value: 4
  17618  mirror: always
  17619 
  17620 - name: security.tls.version.enable-deprecated
  17621  type: RelaxedAtomicBool
  17622  value: false
  17623  mirror: always
  17624 
  17625 - name: security.tls.version.fallback-limit
  17626  type: RelaxedAtomicUint32
  17627  value: 4
  17628  mirror: always
  17629 
  17630 # Turn off post-handshake authentication for TLS 1.3 by default,
  17631 # until the incompatibility with HTTP/2 is resolved:
  17632 # https://tools.ietf.org/html/draft-davidben-http2-tls13-00
  17633 - name: security.tls.enable_post_handshake_auth
  17634  type: RelaxedAtomicBool
  17635  value: false
  17636  mirror: always
  17637 
  17638 # Probability of GREASEing a TLS connection with ECH (0-100)
  17639 # 0 means never GREASE, 100 means always GREASE
  17640 - name: security.tls.ech.grease_probability
  17641  type: RelaxedAtomicUint32
  17642  value: 100
  17643  mirror: always
  17644 
  17645 # Whether to apply ECH GREASE settings to HTTP3/QUIC connections
  17646 - name: security.tls.ech.grease_http3
  17647  type: RelaxedAtomicBool
  17648  value: true
  17649  mirror: always
  17650 
  17651 # Whether to retry connections without ECH Grease
  17652 - name: security.tls.ech.disable_grease_on_fallback
  17653  type: RelaxedAtomicBool
  17654  value: false
  17655  mirror: always
  17656 
  17657 # ECH GREASE Padding target (1-255)
  17658 - name: security.tls.ech.grease_size
  17659  type: RelaxedAtomicUint32
  17660  value: 100
  17661  mirror: always
  17662 
  17663 # Whether to apply GREASE settings to HTTP3/QUIC connections
  17664 - name: security.tls.grease_http3_enable
  17665  type: RelaxedAtomicBool
  17666  value: false
  17667  mirror: always
  17668  rust: true
  17669 
  17670 - name: security.tls.hello_downgrade_check
  17671  type: RelaxedAtomicBool
  17672  value: true
  17673  mirror: always
  17674 
  17675 - name: security.tls.enable_delegated_credentials
  17676  type: RelaxedAtomicBool
  17677  value: true
  17678  mirror: always
  17679 
  17680 - name: security.tls.enable_0rtt_data
  17681  type: RelaxedAtomicBool
  17682  value: true
  17683  mirror: always
  17684 
  17685 - name: security.tls.enable_kyber
  17686  type: RelaxedAtomicBool
  17687  value: true
  17688  mirror: always
  17689  rust: true
  17690 
  17691 - name: security.tls.client_hello.send_p256_keyshare
  17692  type: RelaxedAtomicBool
  17693  value: @IS_NOT_NIGHTLY_BUILD@
  17694  mirror: always
  17695  rust: true
  17696 
  17697 - name: security.tls.enable_certificate_compression_zlib
  17698  type: RelaxedAtomicBool
  17699  value: true
  17700  mirror: always
  17701  rust: true
  17702 
  17703 - name: security.tls.enable_certificate_compression_brotli
  17704  type: RelaxedAtomicBool
  17705  value: true
  17706  mirror: always
  17707  rust: true
  17708 
  17709 - name: security.tls.enable_certificate_compression_zstd
  17710  type: RelaxedAtomicBool
  17711  value: true
  17712  mirror: always
  17713  rust: true
  17714 
  17715 - name: security.tls.enable_certificate_compression_abridged
  17716  type: RelaxedAtomicBool
  17717  value: false
  17718  mirror: always
  17719 
  17720 - name: security.ssl.treat_unsafe_negotiation_as_broken
  17721  type: RelaxedAtomicBool
  17722  value: false
  17723  mirror: always
  17724 
  17725 - name: security.ssl.require_safe_negotiation
  17726  type: RelaxedAtomicBool
  17727  value: false
  17728  mirror: always
  17729 
  17730 - name: security.ssl.enable_false_start
  17731  type: RelaxedAtomicBool
  17732  value: true
  17733  mirror: always
  17734 
  17735 - name: security.ssl.enable_alpn
  17736  type: RelaxedAtomicBool
  17737  value: true
  17738  mirror: always
  17739 
  17740 - name: security.ssl.disable_session_identifiers
  17741  type: RelaxedAtomicBool
  17742  value: false
  17743  mirror: always
  17744 
  17745 - name: security.ssl3.ecdhe_rsa_aes_128_gcm_sha256
  17746  type: RelaxedAtomicBool
  17747  value: true
  17748  mirror: always
  17749 
  17750 - name: security.ssl3.ecdhe_ecdsa_aes_128_gcm_sha256
  17751  type: RelaxedAtomicBool
  17752  value: true
  17753  mirror: always
  17754 
  17755 - name: security.ssl3.ecdhe_ecdsa_chacha20_poly1305_sha256
  17756  type: RelaxedAtomicBool
  17757  value: true
  17758  mirror: always
  17759 
  17760 - name: security.ssl3.ecdhe_rsa_chacha20_poly1305_sha256
  17761  type: RelaxedAtomicBool
  17762  value: true
  17763  mirror: always
  17764 
  17765 - name: security.ssl3.ecdhe_ecdsa_aes_256_gcm_sha384
  17766  type: RelaxedAtomicBool
  17767  value: true
  17768  mirror: always
  17769 
  17770 - name: security.ssl3.ecdhe_rsa_aes_256_gcm_sha384
  17771  type: RelaxedAtomicBool
  17772  value: true
  17773  mirror: always
  17774 
  17775 - name: security.ssl3.ecdhe_rsa_aes_128_sha
  17776  type: RelaxedAtomicBool
  17777  value: true
  17778  mirror: always
  17779 
  17780 - name: security.ssl3.ecdhe_ecdsa_aes_128_sha
  17781  type: RelaxedAtomicBool
  17782  value: @IS_NOT_EARLY_BETA_OR_EARLIER@
  17783  mirror: always
  17784 
  17785 - name: security.ssl3.ecdhe_rsa_aes_256_sha
  17786  type: RelaxedAtomicBool
  17787  value: true
  17788  mirror: always
  17789 
  17790 - name: security.ssl3.ecdhe_ecdsa_aes_256_sha
  17791  type: RelaxedAtomicBool
  17792  value: @IS_NOT_EARLY_BETA_OR_EARLIER@
  17793  mirror: always
  17794 
  17795 - name: security.ssl3.dhe_rsa_aes_128_sha
  17796  type: RelaxedAtomicBool
  17797  value: false
  17798  mirror: always
  17799 
  17800 - name: security.ssl3.dhe_rsa_aes_256_sha
  17801  type: RelaxedAtomicBool
  17802  value: false
  17803  mirror: always
  17804 
  17805 - name: security.ssl3.rsa_aes_128_sha
  17806  type: RelaxedAtomicBool
  17807  value: true
  17808  mirror: always
  17809 
  17810 - name: security.ssl3.rsa_aes_256_sha
  17811  type: RelaxedAtomicBool
  17812  value: true
  17813  mirror: always
  17814 
  17815 - name: security.ssl3.rsa_aes_128_gcm_sha256
  17816  type: RelaxedAtomicBool
  17817  value: true
  17818  mirror: always
  17819 
  17820 - name: security.ssl3.rsa_aes_256_gcm_sha384
  17821  type: RelaxedAtomicBool
  17822  value: true
  17823  mirror: always
  17824 
  17825 - name: security.ssl3.deprecated.rsa_des_ede3_sha
  17826  type: RelaxedAtomicBool
  17827  value: true
  17828  mirror: always
  17829 
  17830 - name: security.tls13.aes_128_gcm_sha256
  17831  type: RelaxedAtomicBool
  17832  value: true
  17833  mirror: always
  17834 
  17835 - name: security.tls13.chacha20_poly1305_sha256
  17836  type: RelaxedAtomicBool
  17837  value: true
  17838  mirror: always
  17839 
  17840 - name: security.tls13.aes_256_gcm_sha384
  17841  type: RelaxedAtomicBool
  17842  value: true
  17843  mirror: always
  17844 
  17845 - name: security.integrity_policy.enabled
  17846  type: RelaxedAtomicBool
  17847  value: true
  17848  mirror: always
  17849 
  17850 - name: security.integrity_policy.stylesheet.enabled
  17851  type: RelaxedAtomicBool
  17852  value: false
  17853  mirror: always
  17854 
  17855 # Which mechanism the secret decoder ring should use for encryption. Decryption
  17856 # can always happen with all mechanisms.
  17857 # 0 - DES3_CBC
  17858 # 1 - AES_CBC
  17859 - name: security.sdr.mechanism
  17860  type: RelaxedAtomicUint32
  17861  value: 1
  17862  mirror: always
  17863 
  17864 - name: security.restrict_to_adults.respect_platform
  17865  type: RelaxedAtomicBool
  17866  value: false
  17867  mirror: always
  17868 
  17869 - name: security.restrict_to_adults.always
  17870  type: bool
  17871  value: false
  17872  mirror: always
  17873 
  17874 
  17875 #---------------------------------------------------------------------------
  17876 # Prefs starting with "signon."
  17877 #---------------------------------------------------------------------------
  17878 - name: signon.usernameOnlyForm.enabled
  17879  type: bool
  17880  value: true
  17881  mirror: always
  17882 
  17883 #---------------------------------------------------------------------------
  17884 # Prefs starting with "slider."
  17885 #---------------------------------------------------------------------------
  17886 
  17887 # Scrollbar snapping region.
  17888 # - 0: off
  17889 # - 1 and higher: slider thickness multiple
  17890 - name: slider.snapMultiplier
  17891  type: int32_t
  17892 #ifdef XP_WIN
  17893  value: 6
  17894 #else
  17895  value: 0
  17896 #endif
  17897  mirror: always
  17898 
  17899 #---------------------------------------------------------------------------
  17900 # Prefs starting with "storage."
  17901 #---------------------------------------------------------------------------
  17902 
  17903 # Whether to use a non-exclusive VFS.
  17904 # By default we use the unix-excl VFS, for the following reasons:
  17905 # 1. It improves compatibility with NFS shares, whose implementation
  17906 #    is incompatible with SQLite's locking requirements (reliable fcntl), and
  17907 #    in particular with WAL journaling.
  17908 #    Bug 433129 attempted to automatically identify such file-systems,
  17909 #    but a reliable way was not found and the fallback locking is slower than
  17910 #    POSIX locking, so we do not want to do it by default.
  17911 # 2. It allows wal mode to avoid the memory mapped -shm file, reducing the
  17912 #    likelihood of SIGBUS failures when disk space is exhausted.
  17913 # 3. It provides some protection from third party database tampering while a
  17914 #    connection is open.
  17915 # Note there's no win32-excl VFS, so this has no effect on Windows.
  17916 - name: storage.sqlite.exclusiveLock.enabled
  17917  type: RelaxedAtomicBool
  17918  value: @IS_NOT_MOBILE@
  17919  mirror: always
  17920 
  17921 #---------------------------------------------------------------------------
  17922 # Prefs starting with "svg."
  17923 #---------------------------------------------------------------------------
  17924 
  17925 # This pref controls whether the 'context-fill' and 'context-stroke' keywords
  17926 # can be used in SVG-as-an-image in the content processes to use the fill/
  17927 # stroke specified on the element that embeds the image. (These keywords are
  17928 # always enabled in the chrome process, regardless of this pref.) Also, these
  17929 # keywords are currently not part of any spec, which is partly why we disable
  17930 # them for web content.
  17931 - name: svg.context-properties.content.enabled
  17932  type: RelaxedAtomicBool
  17933  value: false
  17934  mirror: always
  17935 
  17936 # Enables the 'context-fill' and 'context-stroke' keywords for particular
  17937 # domains. We expect this list to be Mozilla-controlled properties, since the
  17938 # 'context-*' keywords are not part of any spec. We expect to remove this
  17939 # preference and the 'context-` keyword support entirely in the
  17940 # not-too-distant future when a standardized alternative ships. This preference
  17941 # is _not_ for allowing web content to use these keywords. For performance
  17942 # reasons, the list of domains in this preference should remain short in
  17943 # length.
  17944 - name: svg.context-properties.content.allowed-domains
  17945  type: String
  17946  value: ""
  17947  mirror: never
  17948 
  17949 # Is support for the new getBBox method from SVG 2 enabled?
  17950 # See https://svgwg.org/svg2-draft/single-page.html#types-SVGBoundingBoxOptions
  17951 - name: svg.new-getBBox.enabled
  17952  type: bool
  17953  value: @IS_NIGHTLY_BUILD@
  17954  mirror: always
  17955 
  17956 # Whether we use Moz2D Path::GetStrokedBounds to get the stroke bounds.
  17957 - name: svg.Moz2D.strokeBounds.enabled
  17958  type: bool
  17959  value: @IS_NIGHTLY_BUILD@
  17960  mirror: always
  17961 
  17962 # Whether SVGAElement.text is enabled.
  17963 - name: svg.SVGAElement.text.enabled
  17964  type: bool
  17965  value: false
  17966  mirror: always
  17967 
  17968 # Whether SVGImageElement loading is forced to be sync.
  17969 - name: svg.image-element.force-sync-load
  17970  type: bool
  17971  value: true
  17972  mirror: always
  17973 
  17974 # Tweak which elements are allowed in <svg:use> subtrees, and in which
  17975 # circumstances. See RemoveForbiddenNodes in SVGUseElement.cpp for the spec
  17976 # text.
  17977 #
  17978 # - 0: Don't restrict ever.
  17979 # - 1: Restrict only cross-document.
  17980 # - 2/other: restrict always.
  17981 #
  17982 # We allow the behavior to be configurable via this pref. Our chosen default
  17983 # value forbids non-graphical content in <svg:use> clones of cross-document
  17984 # elements. This is a compromise between our more-permissive pre-existing
  17985 # behavior (which SVG 2 seems to call for, and maps to pref value 0) and the
  17986 # behavior of other UAs (which SVG 1.1 seems to call for, and maps to pref
  17987 # value 2).
  17988 - name: svg.use-element.graphics-element-restrictions
  17989  type: int32_t
  17990  value: 1
  17991  mirror: always
  17992 
  17993 # Whether to restrict <svg:use> element recursion levels.
  17994 #
  17995 # - 0: Don't restrict ever.
  17996 # - 1: Restrict everywhere
  17997 # - 2/other: Restrict only in the parent process.
  17998 #
  17999 - name: svg.use-element.recursive-clone-limit.enabled
  18000  type: int32_t
  18001  value: 2
  18002  mirror: always
  18003 
  18004 # What is the recursion limit for svg use element cloning if enabled.
  18005 - name: svg.use-element.recursive-clone-limit
  18006  type: uint32_t
  18007  value: 8
  18008  mirror: always
  18009 
  18010 #---------------------------------------------------------------------------
  18011 # Prefs starting with "telemetry."
  18012 #---------------------------------------------------------------------------
  18013 
  18014 - name: telemetry.number_of_site_origin.min_interval
  18015  type: uint32_t
  18016  value: 300000
  18017  mirror: always
  18018 
  18019 - name: telemetry.fog.test.localhost_port
  18020  type: RelaxedAtomicInt32
  18021  value: 0
  18022  mirror: always
  18023  rust: true
  18024 
  18025 - name: telemetry.fog.test.activity_limit
  18026  type: RelaxedAtomicInt32
  18027  value: 120
  18028  mirror: always
  18029  rust: true
  18030 
  18031 - name: telemetry.fog.test.inactivity_limit
  18032  type: RelaxedAtomicInt32
  18033  value: 1200
  18034  mirror: always
  18035  rust: true
  18036 
  18037 - name: telemetry.fog.artifact_build
  18038  type: RelaxedAtomicBool
  18039  value: false
  18040  mirror: always
  18041 
  18042 - name: telemetry.fog.init_on_shutdown
  18043  type: RelaxedAtomicBool
  18044  value: true
  18045  mirror: always
  18046 
  18047 #---------------------------------------------------------------------------
  18048 # Prefs starting with "test."
  18049 #---------------------------------------------------------------------------
  18050 
  18051 # A mechanism to make the current time seem later than it is for specific
  18052 # operations. Currently used to test expiration of the HSTS preload list.
  18053 - name: test.currentTimeOffsetSeconds
  18054  type: RelaxedAtomicUint32
  18055  value: 0
  18056  mirror: always
  18057 
  18058 - name: test.events.async.enabled
  18059  type: RelaxedAtomicBool
  18060  value: false
  18061  mirror: always
  18062 
  18063 # Enable assertions in IMEContentObserver::FlatTextCache on debug builds.
  18064 # If this pref is enabled, DOM mutation becomes much slower.
  18065 - name: test.ime_content_observer.assert_valid_cache
  18066  type: bool
  18067  value: false
  18068  mirror: always
  18069 
  18070 - name: test.mousescroll
  18071  type: RelaxedAtomicBool
  18072  value: false
  18073  mirror: always
  18074 
  18075 #---------------------------------------------------------------------------
  18076 # Prefs starting with "thread."
  18077 #---------------------------------------------------------------------------
  18078 
  18079 # If the service is available, set threads to low-power mode when in the background.
  18080 - name: threads.use_low_power.enabled
  18081  type: RelaxedAtomicBool
  18082 #ifdef XP_MACOSX
  18083  value: true
  18084 #else
  18085  value: @IS_NIGHTLY_BUILD@
  18086 #endif
  18087  mirror: always
  18088 
  18089 
  18090 # If the process priority is set to background, put the main thread in the background.
  18091 # Currently off by default.
  18092 - name: threads.lower_mainthread_priority_in_background.enabled
  18093  type: bool
  18094 #ifdef XP_MACOSX
  18095  value: true
  18096 #else
  18097  value: @IS_NIGHTLY_BUILD@
  18098 #endif
  18099  mirror: always
  18100 
  18101 #---------------------------------------------------------------------------
  18102 # Prefs starting with "timer."
  18103 #---------------------------------------------------------------------------
  18104 
  18105 # Since our timestamp on macOS does not increment while the system is asleep, we
  18106 # should ignore sleep/wake notifications to make timer thread process timers.
  18107 - name: timer.ignore_sleep_wake_notifications
  18108  type: RelaxedAtomicBool
  18109 #ifdef XP_MACOSX
  18110  value: true
  18111 #else
  18112  value: false
  18113 #endif
  18114  mirror: always
  18115 
  18116 # Amount of time by which it is always acceptable to delay the firing of a timer.
  18117 # Any timer may be delayed by up to this amount in order to enable timers to be
  18118 # bundled together for efficiency.
  18119 - name: timer.minimum_firing_delay_tolerance_ms
  18120  type: AtomicFloat
  18121  value: 1.0
  18122  mirror: always
  18123 
  18124 # Maximum amount of time by which it is ever acceptable to delay the firing of a timer.
  18125 # Setting this to zero will effectively disable timer coalescing.
  18126 - name: timer.maximum_firing_delay_tolerance_ms
  18127  type: AtomicFloat
  18128  value: 10000.0
  18129  mirror: always
  18130 
  18131 #ifdef XP_WIN
  18132  # Controls whether or not TimerThread will automatically increase the Windows timer
  18133  # resolution when appropriate conditions are met.
  18134 -   name: timer.auto_increase_timer_resolution
  18135    type: RelaxedAtomicBool
  18136 #ifdef NIGHTLY_BUILD
  18137    value: true
  18138 #else
  18139    value: false
  18140 #endif
  18141    mirror: always
  18142 #endif
  18143 
  18144 #---------------------------------------------------------------------------
  18145 # Prefs starting with "toolkit."
  18146 #---------------------------------------------------------------------------
  18147 
  18148 # Makes removeDirectory background task wait for the given milliseconds before removal.
  18149 - name: toolkit.background_tasks.remove_directory.testing.sleep_ms
  18150  type: RelaxedAtomicUint32
  18151  value: 0
  18152  mirror: always
  18153 
  18154 # Indicates whether we are testng crash annotation validation. In DEBUG builds,
  18155 # invalid crash annotations cause an assertion failure, which would prevent us
  18156 # from checking the non-DEBUG behavior.
  18157 #ifdef DEBUG
  18158 - name: toolkit.crash_annotation.testing_validation
  18159  type: bool
  18160  value: false
  18161  mirror: always
  18162 #endif
  18163 
  18164 # Enable the gecko trace system.
  18165 - name: toolkit.gecko-trace.enable
  18166  type: bool
  18167  value: false
  18168  mirror: always
  18169 
  18170 # Returns true if BHR is disabled.
  18171 - name: toolkit.content-background-hang-monitor.disabled
  18172  type: bool
  18173  value: false
  18174  mirror: always
  18175 
  18176 - name: toolkit.scrollbox.smoothScroll
  18177  type: RelaxedAtomicBool
  18178  value: true
  18179  mirror: always
  18180 
  18181 - name: toolkit.scrollbox.horizontalScrollDistance
  18182  type: RelaxedAtomicInt32
  18183  value: 5
  18184  mirror: always
  18185 
  18186 - name: toolkit.scrollbox.verticalScrollDistance
  18187  type: RelaxedAtomicInt32
  18188  value: 3
  18189  mirror: always
  18190 
  18191 # The maximum overlap between pages when scrolling with
  18192 # page-up/page-down/spacebar, as a percentage of scrollport size.
  18193 - name: toolkit.scrollbox.pagescroll.maxOverlapPercent
  18194  type: RelaxedAtomicInt32
  18195  value: 10
  18196  mirror: always
  18197 
  18198 # The maximum overlap between pages when scrolling with
  18199 # page-up/page-down/spacebar, in lines.
  18200 - name: toolkit.scrollbox.pagescroll.maxOverlapLines
  18201  type: RelaxedAtomicInt32
  18202  value: 2
  18203  mirror: always
  18204 
  18205 # The lateWriteChecksStage and fastShutdownStage below represent the stage
  18206 # of shutdown after which we (for lateWriteChecksStage) crash / gather
  18207 # telemetry data on file writes, or (for fastShutdownStage) we call _exit(0).
  18208 # Higher values are earlier during shutdown, and the full enumeration can
  18209 # be found in AppShutdown.h in the AppShutdownPhase enum.
  18210 - name: toolkit.shutdown.lateWriteChecksStage
  18211  type: int32_t
  18212 #ifdef MOZ_CODE_COVERAGE
  18213  value: 0
  18214 #else
  18215  value: 2
  18216 #endif
  18217  mirror: always
  18218 
  18219 # See the comment above toolkit.shutdown.lateWriteChecksStage. A higher value
  18220 # for this pref means we call _exit(0) earlier during shutdown.
  18221 - name: toolkit.shutdown.fastShutdownStage
  18222  type: int32_t
  18223 #if !defined(DEBUG) && !defined(MOZ_ASAN) && !defined(MOZ_TSAN) && !defined(MOZ_CODE_COVERAGE) && !defined(MOZ_VALGRIND) && !defined(MOZ_PROFILE_GENERATE) && !defined(JS_STRUCTURED_SPEW)
  18224  value: 1
  18225 #else
  18226  value: 0
  18227 #endif
  18228  mirror: always
  18229 
  18230 # Sending each remote accumulation immediately places undue strain on the IPC
  18231 # subsystem. Batch the remote accumulations for a period of time before sending
  18232 # them all at once. This value was chosen as a balance between data timeliness
  18233 # and performance (see bug 1218576).
  18234 - name: toolkit.telemetry.ipcBatchTimeout
  18235  type: uint32_t
  18236  value: 2000
  18237  mirror: always
  18238 
  18239 - name: toolkit.telemetry.testing.overrideProductsCheck
  18240  type: RelaxedAtomicBool
  18241  value: false
  18242  mirror: always
  18243 
  18244 #---------------------------------------------------------------------------
  18245 # Prefs starting with "ui."
  18246 #---------------------------------------------------------------------------
  18247 
  18248 - name: ui.key.generalAccessKey
  18249  type: int32_t
  18250  value: -1
  18251  mirror: always
  18252 
  18253 # Use 17 for Ctrl, 18 for Alt, 91 or 224 for Meta, 0 for none.
  18254 - name: ui.key.accelKey
  18255  type: uint32_t
  18256 #ifdef XP_MACOSX
  18257  value: 224
  18258 #else
  18259  value: 17
  18260 #endif
  18261  mirror: always
  18262 
  18263 # See above for the key codes to use.
  18264 - name: ui.key.menuAccessKey
  18265  type: uint32_t
  18266 #ifdef XP_MACOSX
  18267  value: 0
  18268 #else
  18269  value: 18
  18270 #endif
  18271  mirror: always
  18272 
  18273 # Only used if generalAccessKey is -1.
  18274 - name: ui.key.chromeAccess
  18275  type: int32_t
  18276 #ifdef XP_MACOSX
  18277  # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 3 =  ctrl+shift, 8 = Meta
  18278  value: 2
  18279 #else
  18280  # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 5 =  Alt+Shift, 8 = Win
  18281  value: 4
  18282 #endif
  18283  mirror: always
  18284 
  18285 # Only used if generalAccessKey is -1.
  18286 - name: ui.key.contentAccess
  18287  type: int32_t
  18288 #ifdef XP_MACOSX
  18289  # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 3 = ctrl+shift, 8 = Meta
  18290  value: 6
  18291 #else
  18292  # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 5 =  Alt+Shift, 8 = Win
  18293  value: 5
  18294 #endif
  18295  mirror: always
  18296 
  18297 #ifdef XP_WIN
  18298 - name: ui.key.layout.load_when_first_needed
  18299  type: bool
  18300  value: true
  18301  mirror: always
  18302 #endif
  18303 
  18304 # Does the access key by itself focus the menu bar?
  18305 - name: ui.key.menuAccessKeyFocuses
  18306  type: bool
  18307 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
  18308  # On Windows and Linux, we now default to showing the menu bar only when alt
  18309  # is pressed.
  18310  value: true
  18311 #else
  18312  value: false
  18313 #endif
  18314  mirror: always
  18315 
  18316 # Whether native key bindings in the environment or builtin shortcut key
  18317 # definitions in Gecko are used first in <input> and <textarea>
  18318 - name: ui.key.textcontrol.prefer_native_key_bindings_over_builtin_shortcut_key_definitions
  18319  type: bool
  18320  value: true
  18321  mirror: always
  18322 
  18323 #ifdef MOZ_WIDGET_GTK
  18324 # Only GtkTextView (native multiline text viewer/editor) supports "select-all"
  18325 # signal so that we cannot know "select-all" key bindings only with GtkEntry.
  18326 # When this pref is set to true, if a key combination does not cause any
  18327 # signals in GtkEntry, try to check the key combination is mapped to
  18328 # "select-all" in GtkTextView or not.  If it's mapped to other commands, they
  18329 # are just ignored.
  18330 - name: ui.key.use_select_all_in_single_line_editor
  18331  type: bool
  18332  value: true
  18333  mirror: always
  18334 #endif
  18335 
  18336 # Duration of timeout of incremental search in menus (ms).  0 means infinite.
  18337 - name: ui.menu.incremental_search.timeout
  18338  type: uint32_t
  18339  value: 1000
  18340  mirror: always
  18341 
  18342 # If true, popups are attached to their native parent window (and move with it)
  18343 # and can't overlap the OS chrome. Otherwise they are topmost.
  18344 # NOTE(emilio): Comments below might not be accurate anymore.
  18345 - name: ui.panel.default_level_parent
  18346  type: RelaxedAtomicBool
  18347 #if defined(XP_WIN) || defined(XP_MACOSX)
  18348  # See bug 448927, on topmost panel, some IMEs are not usable on Windows.
  18349  # See bug 404131, topmost <panel> element wins to Dashboard on MacOSX.
  18350  value: true
  18351 #else
  18352  # Setting default_level_parent to true makes the default level for popup
  18353  # windows "top" instead of "parent".  On GTK2 platform, this is implemented
  18354  # with override-redirect windows which is the normal way to implement
  18355  # temporary popup windows.  Setting this to false would make the default
  18356  # level "parent" which is implemented with managed windows. A problem with
  18357  # using managed windows is that metacity sometimes deactivates the parent
  18358  # window when the managed popup is shown, see bug 526941.
  18359  #
  18360  # TODO(emilio): Re-evaluate this default, the comment above is no longer
  18361  # true since bug 552982 (where we started looking at mNoAutohide rather than
  18362  # popup level to make the override-redirect vs. managed window distinction).
  18363  #
  18364  # The Android default was copied from GTK in bug 568700.
  18365  value: false
  18366 #endif
  18367  mirror: always
  18368 
  18369 # If true, all popups won't hide automatically on blur
  18370 - name: ui.popup.disable_autohide
  18371  type: RelaxedAtomicBool
  18372  value: false
  18373  mirror: always
  18374 
  18375 # Negate scroll, true will make the mouse scroll wheel move the screen the
  18376 # same direction as with most desktops or laptops.
  18377 - name: ui.scrolling.negate_wheel_scroll
  18378  type: RelaxedAtomicBool
  18379  value: @IS_ANDROID@
  18380  mirror: always
  18381 
  18382 # Delay in milliseconds for tooltips
  18383 - name: ui.tooltip.delay_ms
  18384  type: uint32_t
  18385  value: 500
  18386  mirror: always
  18387 
  18388 # If the user puts a finger down on an element and we think the user might be
  18389 # executing a pan gesture, how long do we wait before tentatively deciding the
  18390 # gesture is actually a tap and activating the target element?
  18391 - name: ui.touch_activation.delay_ms
  18392  type: int32_t
  18393  value: 100
  18394  mirror: always
  18395 
  18396 # If the user has clicked an element, how long do we keep the :active state
  18397 # before it is cleared.
  18398 - name: ui.touch_activation.duration_ms
  18399  type: int32_t
  18400  value: 50
  18401  mirror: always
  18402 
  18403 # If the user puts a finger down on an element and we think the user might be
  18404 # executing a pan gesture, how long do we wait before :hover state is set to
  18405 # the target element.
  18406 - name: ui.touch_hover.delay_ms
  18407  type: int32_t
  18408  value: 100
  18409  mirror: always
  18410 
  18411 # Prevent system colors from being exposed to CSS or canvas.
  18412 - name: ui.use_standins_for_native_colors
  18413  type: RelaxedAtomicBool
  18414  value: false
  18415  mirror: always
  18416 
  18417 # Whether context menus should only appear on mouseup instead of mousedown,
  18418 # on OSes where they normally appear on mousedown (macOS, *nix).
  18419 # Note: ignored on Windows (context menus always use mouseup).
  18420 - name: ui.context_menus.after_mouseup
  18421  type: bool
  18422  value: false
  18423  mirror: always
  18424 
  18425 # Whether click-hold context menus are enabled.
  18426 - name: ui.click_hold_context_menus
  18427  type: RelaxedAtomicBool
  18428  value: false
  18429  mirror: always
  18430 
  18431 # How long to wait for a drag gesture before displaying click-hold context menu,
  18432 # in milliseconds.
  18433 - name: ui.click_hold_context_menus.delay
  18434  type: RelaxedAtomicInt32
  18435  value: 500
  18436  mirror: always
  18437 
  18438 # When enabled, the touch.radius and mouse.radius prefs allow events to be
  18439 # dispatched to nearby elements that are sensitive to the event. See
  18440 # PositionedEventTargeting.cpp. The 'mm' prefs define a rectangle around the
  18441 # nominal event target point within which we will search for suitable elements.
  18442 # 'visitedWeight' is a percentage weight; a value > 100 makes a visited link be
  18443 # treated as further away from the event target than it really is, while a
  18444 # value < 100 makes a visited link be treated as closer to the event target
  18445 # than it really is.
  18446 
  18447 - name: ui.touch.radius.enabled
  18448  type: bool
  18449  value: @IS_ANDROID@
  18450  mirror: always
  18451 
  18452 - name: ui.touch.radius.topmm
  18453  type: uint32_t
  18454 #ifdef ANDROID
  18455  value: 2
  18456 #else
  18457  value: 12
  18458 #endif
  18459  mirror: always
  18460 
  18461 - name: ui.touch.radius.rightmm
  18462  type: uint32_t
  18463 #ifdef ANDROID
  18464  value: 3
  18465 #else
  18466  value: 8
  18467 #endif
  18468  mirror: always
  18469 
  18470 - name: ui.touch.radius.bottommm
  18471  type: uint32_t
  18472 #ifdef ANDROID
  18473  value: 2
  18474 #else
  18475  value: 4
  18476 #endif
  18477  mirror: always
  18478 
  18479 - name: ui.touch.radius.leftmm
  18480  type: uint32_t
  18481 #ifdef ANDROID
  18482  value: 3
  18483 #else
  18484  value: 8
  18485 #endif
  18486  mirror: always
  18487 
  18488 # If this pref and ui.touch.radious.enabled are both true, clickable content is
  18489 # also treated as touchable content if and only if a sigle touch.
  18490 - name: ui.touch.radius.single_touch.treat_clickable_as_touchable
  18491  type: bool
  18492  value: true
  18493  mirror: always
  18494 
  18495 - name: ui.touch.radius.visitedWeight
  18496  type: uint32_t
  18497  value: 120
  18498  mirror: always
  18499 
  18500 - name: ui.mouse.radius.enabled
  18501  type: bool
  18502  value: @IS_ANDROID@
  18503  mirror: always
  18504 
  18505 - name: ui.mouse.radius.topmm
  18506  type: uint32_t
  18507 #ifdef ANDROID
  18508  value: 2
  18509 #else
  18510  value: 12
  18511 #endif
  18512  mirror: always
  18513 
  18514 - name: ui.mouse.radius.rightmm
  18515  type: uint32_t
  18516 #ifdef ANDROID
  18517  value: 3
  18518 #else
  18519  value: 8
  18520 #endif
  18521  mirror: always
  18522 
  18523 - name: ui.mouse.radius.bottommm
  18524  type: uint32_t
  18525 #ifdef ANDROID
  18526  value: 2
  18527 #else
  18528  value: 4
  18529 #endif
  18530  mirror: always
  18531 
  18532 - name: ui.mouse.radius.leftmm
  18533  type: uint32_t
  18534 #ifdef ANDROID
  18535  value: 3
  18536 #else
  18537  value: 8
  18538 #endif
  18539  mirror: always
  18540 
  18541 - name: ui.mouse.radius.visitedWeight
  18542  type: uint32_t
  18543  value: 120
  18544  mirror: always
  18545 
  18546 - name: ui.mouse.radius.reposition
  18547  type: bool
  18548  value: @IS_ANDROID@
  18549  mirror: always
  18550 
  18551 # When true, the ui.mouse.radius.* prefs will only affect simulated mouse
  18552 # events generated by touch input. When false, the prefs will be used for all
  18553 # mouse events.
  18554 - name: ui.mouse.radius.inputSource.touchOnly
  18555  type: bool
  18556  value: true
  18557  mirror: always
  18558 
  18559 # When true, selection is not collapsed at the right click point if there is a
  18560 # non-collapsed selection.
  18561 - name: ui.mouse.right_click.collapse_selection.stop_if_non_collapsed_selection
  18562  type: bool
  18563  value: true
  18564  mirror: always
  18565 
  18566 # When true, selection is not collapsed at the right click point if the clicked
  18567 # node is not editable.
  18568 - name: ui.mouse.right_click.collapse_selection.stop_if_non_editable_node
  18569  type: bool
  18570  value: false
  18571  mirror: always
  18572 
  18573 # When true, the caret is not moved to the right click point in focused editable
  18574 # content.
  18575 - name: ui.mouse.right_click.move_caret.stop_if_in_focused_editable_node
  18576  type: bool
  18577  value: false
  18578  mirror: always
  18579 
  18580 #---------------------------------------------------------------------------
  18581 # Prefs starting with "urlclassifier."
  18582 #---------------------------------------------------------------------------
  18583 
  18584 # Update server response timeout for Safe Browsing.
  18585 - name: urlclassifier.update.response_timeout_ms
  18586  type: uint32_t
  18587  value: 30000
  18588  mirror: always
  18589 
  18590 # Download update timeout for Safe Browsing.
  18591 - name: urlclassifier.update.timeout_ms
  18592  type: uint32_t
  18593  value: 90000
  18594  mirror: always
  18595 
  18596 # Whether to delay the CRC32 check of prefix files until the update.
  18597 - name: urlclassifier.delay_prefixes_crc32_check
  18598  type: RelaxedAtomicBool
  18599  value: false
  18600  mirror: always
  18601 
  18602 # Enable classification for safebrowsing and anti-tracking
  18603 # 0 -> disabled, 1 -> anti-tracking only, 2 -> safe-browsing only, 3 -> enabled
  18604 # see netwerk/base/nsNetUtil.cpp for C++ enum
  18605 - name: urlclassifier.enabled_mode
  18606  type: RelaxedAtomicUint32
  18607  value: 3
  18608  mirror: always
  18609 
  18610 #---------------------------------------------------------------------------
  18611 # Prefs starting with "view_source."
  18612 #---------------------------------------------------------------------------
  18613 
  18614 - name: view_source.editor.external
  18615  type: bool
  18616  value: false
  18617  mirror: always
  18618 
  18619 - name: view_source.wrap_long_lines
  18620  type: bool
  18621  value: @IS_ANDROID@
  18622  mirror: always
  18623 
  18624 - name: view_source.syntax_highlight
  18625  type: bool
  18626  value: true
  18627  mirror: always
  18628 
  18629 - name: view_source.tab_size
  18630  type: int32_t
  18631  value: 4
  18632  mirror: always
  18633 
  18634 #---------------------------------------------------------------------------
  18635 # Prefs starting with "webgl." (for pref access from Worker threads)
  18636 #---------------------------------------------------------------------------
  18637 
  18638 - name: webgl.1.allow-core-profiles
  18639  type: RelaxedAtomicBool
  18640 #ifdef XP_MACOSX
  18641  value: true
  18642 #else
  18643  value: false
  18644 #endif
  18645  mirror: always
  18646 
  18647 - name: webgl.1.request_es2
  18648  type: RelaxedAtomicBool
  18649 #ifdef XP_WIN
  18650  value: false
  18651 #else
  18652  value: true
  18653 #endif
  18654  mirror: always
  18655 
  18656 - name: webgl.angle.force-d3d11
  18657  type: RelaxedAtomicBool
  18658  value: false
  18659  mirror: always
  18660 
  18661 - name: webgl.angle.try-d3d11
  18662  type: RelaxedAtomicBool
  18663 #ifdef XP_WIN
  18664  value: true
  18665 #else
  18666  value: false
  18667 #endif
  18668  mirror: always
  18669 
  18670 - name: webgl.angle.force-warp
  18671  type: RelaxedAtomicBool
  18672  value: false
  18673  mirror: always
  18674 
  18675 - name: webgl.auto-flush
  18676  type: RelaxedAtomicBool
  18677  value: true
  18678  mirror: always
  18679 
  18680 - name: webgl.auto-flush.gl
  18681  type: RelaxedAtomicBool
  18682  value: false
  18683  mirror: always
  18684 
  18685 - name: webgl.can-lose-context-in-foreground
  18686  type: RelaxedAtomicBool
  18687  value: true
  18688  mirror: always
  18689 
  18690 - name: webgl.cgl.multithreaded
  18691  type: RelaxedAtomicBool
  18692  value: true
  18693  mirror: always
  18694 
  18695 - name: webgl.drawing_buffer_color_space
  18696  type: RelaxedAtomicBool
  18697  value: true
  18698  mirror: always
  18699 
  18700 - name: webgl.debug.incomplete-tex-color
  18701  type: RelaxedAtomicUint32
  18702  value: 0
  18703  mirror: always
  18704 
  18705 - name: webgl.default-antialias
  18706  type: RelaxedAtomicBool
  18707  value: @IS_NOT_ANDROID@
  18708  mirror: always
  18709 
  18710 - name: webgl.default-no-alpha
  18711  type: RelaxedAtomicBool
  18712  value: false
  18713  mirror: always
  18714 
  18715 - name: webgl.disable-angle
  18716  type: RelaxedAtomicBool
  18717  value: false
  18718  mirror: always
  18719 
  18720 - name: webgl.disable-wgl
  18721  type: RelaxedAtomicBool
  18722  value: false
  18723  mirror: always
  18724 
  18725 - name: webgl.porting.strict_readpixels_formats
  18726  type: RelaxedAtomicBool
  18727  value: false
  18728  mirror: always
  18729 
  18730 - name: webgl.porting.strict_readpixels_formats.non_es
  18731  type: RelaxedAtomicBool
  18732  value: false
  18733  mirror: always
  18734 
  18735 #ifdef XP_WIN
  18736 - name: webgl.dxgl.enabled
  18737  type: RelaxedAtomicBool
  18738  value: true
  18739  mirror: always
  18740 
  18741 - name: webgl.dxgl.needs-finish
  18742  type: RelaxedAtomicBool
  18743  value: false
  18744  mirror: always
  18745 #endif
  18746 
  18747 - name: webgl.disable-fail-if-major-performance-caveat
  18748  type: RelaxedAtomicBool
  18749  value: true
  18750  mirror: always
  18751 
  18752 - name: webgl.disable-DOM-blit-uploads
  18753  type: RelaxedAtomicBool
  18754 #if defined(MOZ_AARCH64) && defined(XP_MACOSX)
  18755  value: true
  18756 #else
  18757  value: false
  18758 #endif
  18759  mirror: always
  18760 
  18761 - name: webgl.disabled
  18762  type: RelaxedAtomicBool
  18763  value: false
  18764  mirror: always
  18765 
  18766 - name: webgl.enable-debug-renderer-info
  18767  type: RelaxedAtomicBool
  18768  value: true
  18769  mirror: always
  18770 
  18771 - name: webgl.enable-draft-extensions
  18772  type: RelaxedAtomicBool
  18773  value: false
  18774  mirror: always
  18775 
  18776 - name: webgl.enable-privileged-extensions
  18777  type: RelaxedAtomicBool
  18778  value: false
  18779  mirror: always
  18780 
  18781 - name: webgl.enable-renderer-query
  18782  type: RelaxedAtomicBool
  18783  value: true
  18784  mirror: always
  18785 
  18786 - name: webgl.enable-egl-image
  18787  type: RelaxedAtomicBool
  18788  value: true
  18789  mirror: always
  18790 
  18791 - name: webgl.enable-surface-texture
  18792  type: RelaxedAtomicBool
  18793  value: true
  18794  mirror: always
  18795 
  18796 - name: webgl.enable-webgl2
  18797  type: RelaxedAtomicBool
  18798  value: true
  18799  mirror: always
  18800 
  18801 - name: webgl.fake-verts.max
  18802  type: RelaxedAtomicUint32
  18803  value: 10*1000*1000  # 10M as vec4 is count*4*4 = 160MB
  18804  mirror: always
  18805 
  18806 # Only works on Mac for now.
  18807 - name: webgl.forbid-hardware
  18808  type: RelaxedAtomicBool
  18809  value: false
  18810  mirror: always
  18811 
  18812 # Only works on Mac for now.
  18813 - name: webgl.forbid-software
  18814  type: RelaxedAtomicBool
  18815  value: true  # It's generally better to encourage fallback to e.g. canvas2d.
  18816  mirror: always
  18817 
  18818 - name: webgl.force-enabled
  18819  type: RelaxedAtomicBool
  18820  value: false
  18821  mirror: always
  18822 
  18823 - name: webgl.force-index-validation
  18824  type: RelaxedAtomicInt32
  18825  value: 0
  18826  mirror: always
  18827 
  18828 - name: webgl.gl_khr_no_error
  18829  type: RelaxedAtomicBool
  18830 #ifdef XP_WIN
  18831  value: false
  18832 #elif defined(MOZ_WIDGET_GTK)
  18833  # Bug 1862039 - All versions of Mesa as of Nov 2023 have issues with
  18834  # GL_CONTEXT_FLAG_NO_ERROR_BIT. We should aspire to reenable it at
  18835  # some point when the bugs are fixed.
  18836  # See also https://gitlab.freedesktop.org/mesa/mesa/-/issues/10062
  18837  value: false
  18838 #else
  18839  value: true
  18840 #endif
  18841  mirror: always
  18842 
  18843 - name: webgl.glsl.max_var_size_in_kibytes
  18844  type: RelaxedAtomicInt32
  18845  value: -1 # -1 => default for platform, 0 => no limit, >0 => max valid size
  18846  mirror: always
  18847 
  18848 - name: webgl.glsl.max_private_var_size_in_bytes
  18849  type: RelaxedAtomicInt32
  18850  value: -1 # -1 => default for platform, 0 => no limit, >0 => max valid size
  18851  mirror: always
  18852 
  18853 - name: webgl.lose-context-on-memory-pressure
  18854  type: RelaxedAtomicBool
  18855  value: false
  18856  mirror: always
  18857 
  18858 - name: webgl.max-contexts
  18859  type: RelaxedAtomicUint32
  18860  value: 1000
  18861  mirror: always
  18862 
  18863 - name: webgl.max-contexts-per-principal
  18864  type: RelaxedAtomicUint32
  18865  value: 300
  18866  mirror: always
  18867 
  18868 - name: webgl.max-size-per-texture-mib
  18869  type: RelaxedAtomicUint32
  18870  value: 1024
  18871  mirror: always
  18872 
  18873 - name: webgl.max-vert-ids-per-draw
  18874  type: RelaxedAtomicUint32
  18875  value: 30*1000*1000
  18876  mirror: always
  18877 
  18878 - name: webgl.max-warnings-per-context
  18879  type: RelaxedAtomicUint32
  18880  value: 32
  18881  mirror: always
  18882 
  18883 - name: webgl.min_capability_mode
  18884  type: RelaxedAtomicBool
  18885  value: false
  18886  mirror: always
  18887 
  18888 - name: webgl.msaa-force
  18889  type: RelaxedAtomicBool
  18890  value: false
  18891  mirror: always
  18892 
  18893 - name: webgl.msaa-samples
  18894  type: RelaxedAtomicUint32
  18895  value: 4
  18896  mirror: always
  18897 
  18898 - name: webgl.out-of-process
  18899  type: RelaxedAtomicBool
  18900  value: true
  18901  mirror: always
  18902 
  18903 - name: webgl.out-of-process.worker
  18904  type: RelaxedAtomicBool
  18905  value: true
  18906  mirror: always
  18907 
  18908 - name: webgl.out-of-process.force
  18909  type: RelaxedAtomicBool
  18910  value: false
  18911  mirror: always
  18912 
  18913 - name: webgl.out-of-process.shmem-size
  18914  type: RelaxedAtomicUint32
  18915  value: 100000 # 100KB
  18916  mirror: always
  18917 
  18918 - name: webgl.out-of-process.async-present
  18919  type: RelaxedAtomicBool
  18920  value: true
  18921  mirror: always
  18922 
  18923 # Forces async present to wait for a sync, even while using remote textures.
  18924 - name: webgl.out-of-process.async-present.force-sync
  18925  type: RelaxedAtomicBool
  18926  value: false
  18927  mirror: always
  18928 
  18929 #if defined(MOZ_WIDGET_ANDROID)
  18930 - name: webgl.out-of-process.enable-ahardwarebuffer
  18931  type: bool
  18932  value: false
  18933  mirror: once
  18934 #endif
  18935 
  18936 # Override the blocklist to assume that GL is threadsafe.
  18937 - name: webgl.threadsafe-gl.force-enabled
  18938  type: bool
  18939  value: false
  18940  mirror: once
  18941 
  18942 # Override the blocklist to assume that GL is not threadsafe.
  18943 - name: webgl.threadsafe-gl.force-disabled
  18944  type: bool
  18945  value: false
  18946  mirror: once
  18947 
  18948 - name: webgl.use-canvas-render-thread
  18949  type: bool
  18950  value: true
  18951  mirror: once
  18952 
  18953 - name: webgl.override-unmasked-renderer
  18954  type: DataMutexString
  18955  value: ""
  18956  mirror: always
  18957 
  18958 - name: webgl.override-unmasked-vendor
  18959  type: DataMutexString
  18960  value: ""
  18961  mirror: always
  18962 
  18963 - name: webgl.power-preference-override
  18964  type: RelaxedAtomicInt32
  18965  value: 0
  18966  mirror: always
  18967 
  18968 - name: webgl.sanitize-unmasked-renderer
  18969  type: RelaxedAtomicBool
  18970  value: true
  18971  mirror: always
  18972 
  18973 - name: webgl.allow-immediate-queries
  18974  type: RelaxedAtomicBool
  18975  value: false
  18976  mirror: always
  18977 
  18978 - name: webgl.allow-fb-invalidation
  18979  type: RelaxedAtomicBool
  18980  value: false
  18981  mirror: always
  18982 
  18983 
  18984 - name: webgl.perf.max-warnings
  18985  type: RelaxedAtomicInt32
  18986  value: 0
  18987  mirror: always
  18988 
  18989 - name: webgl.perf.max-acceptable-fb-status-invals
  18990  type: RelaxedAtomicInt32
  18991  value: 0
  18992  mirror: always
  18993 
  18994 - name: webgl.perf.spew-frame-allocs
  18995  type: RelaxedAtomicBool
  18996  value: true
  18997  mirror: always
  18998 
  18999 #---------------------------------------------------------------------------
  19000 # Prefs starting with "widget."
  19001 #---------------------------------------------------------------------------
  19002 
  19003 # Whether the non-native theme should always use system colors. Useful mostly
  19004 # for testing forced colors mode.
  19005 - name: widget.non-native-theme.always-high-contrast
  19006  type: RelaxedAtomicBool
  19007  value: false
  19008  mirror: always
  19009 
  19010 # The style of scrollbars to use. Here are the current options:
  19011 #
  19012 #   0: Default platform scrollbar style.
  19013 #   1: macOS scrollbars
  19014 #   2: GTK scrollbars
  19015 #   3: Android scrollbars
  19016 #   4: Windows 10 scrollbars
  19017 #   5: Windows 11 scrollbars
  19018 #
  19019 # Note that switching to non-default scrollbars is experimental and other
  19020 # scrollbar-related prefs may interfere with the experience. For example,
  19021 # setting the GTK thumb size may have no effect when using non-GTK scrollbars
  19022 # on GTK.
  19023 - name: widget.non-native-theme.scrollbar.style
  19024  type: uint32_t
  19025  value: 0
  19026  mirror: always
  19027 
  19028 # An override that allows to override the default platform size. The size in CSS
  19029 # pixels at full zoom of the minimum scrollbar width.
  19030 - name: widget.non-native-theme.scrollbar.size.override
  19031  type: uint32_t
  19032  value: 0
  19033  mirror: always
  19034 
  19035 # Whether we should use themed values for dark scrollbars.
  19036 - name: widget.non-native-theme.scrollbar.dark-themed
  19037  type: RelaxedAtomicBool
  19038  value: true
  19039  mirror: always
  19040 
  19041 # Whether the active thumb color should always use the themed colors, even if
  19042 # dark scrollbars are in use.
  19043 - name: widget.non-native-theme.scrollbar.active-always-themed
  19044  type: RelaxedAtomicBool
  19045  value: true
  19046  mirror: always
  19047 
  19048 # Whether we use the Windows CSS scrollbar sizes, or the scrollbar sizes
  19049 # defined above.
  19050 - name: widget.non-native-theme.win.scrollbar.use-system-size
  19051  type: bool
  19052  value: true
  19053  mirror: always
  19054 
  19055 # Whether Windows 11 scrollbars are always drawn with the thinner "overlay"
  19056 # scrollbar style.
  19057 - name: widget.non-native-theme.win11.scrollbar.force-overlay-style
  19058  type: bool
  19059  value: false
  19060  mirror: always
  19061 
  19062 # Whether Windows 11 overlay scrollbar tracks are round.
  19063 - name: widget.non-native-theme.win11.scrollbar.round-track
  19064  type: bool
  19065  value: false
  19066  mirror: always
  19067 
  19068 # The amount of space that the thumb should fill the scrollbar, from zero to
  19069 # one.
  19070 - name: widget.non-native-theme.gtk.scrollbar.thumb-size
  19071  type: float
  19072  value: 0.75
  19073  mirror: always
  19074 
  19075 # The minimum size of the scroll thumb, in the scrollbar direction.
  19076 - name: widget.non-native-theme.gtk.scrollbar.thumb-cross-size
  19077  type: uint32_t
  19078  value: 40
  19079  mirror: always
  19080 
  19081 # Whether the thumb should be rounded for the non-native scrollbars.
  19082 - name: widget.non-native-theme.gtk.scrollbar.round-thumb
  19083  type: bool
  19084  value: true
  19085  mirror: always
  19086 
  19087 # Whether buttons shouldn't be suppressed for non-native scrollbars.
  19088 - name: widget.non-native-theme.gtk.scrollbar.allow-buttons
  19089  type: bool
  19090  value: false
  19091  mirror: always
  19092 
  19093 # Whether we should use the default accent color or the theme-provided one for
  19094 # content (e.g. for form controls and CSS system colors).
  19095 #
  19096 # Turned off on Windows, for now (we always use the default blue-ish
  19097 # accent-color there). We might want to turn this on there, though it's worth
  19098 # thinking on what the behavior should be for grey-ish accent colors (which are
  19099 # a thing on Windows and can cause confusion with things like disabled form
  19100 # controls). Maybe it's just fine.
  19101 - name: widget.non-native-theme.use-theme-accent
  19102  type: RelaxedAtomicBool
  19103 #if defined(XP_WIN) && !defined(MOZ_THUNDERBIRD)
  19104  value: false
  19105 #else
  19106  value: true
  19107 #endif
  19108  mirror: always
  19109 
  19110 # Preference to disable dark scrollbar implementation.
  19111 # This is mainly for testing because dark scrollbars have to be semi-
  19112 # transparent, but many reftests expect scrollbars to look identical
  19113 # among different backgrounds.
  19114 # However, some users may want to disable this as well.
  19115 - name: widget.disable-dark-scrollbar
  19116  type: bool
  19117  value: false
  19118  mirror: always
  19119 
  19120 - name: widget.disable_file_pickers
  19121  type: RelaxedAtomicBool
  19122  value: false
  19123  mirror: always
  19124 
  19125 # When looking for a recent window (for example, when a link is clicked
  19126 # on from an external application), whether to prefer windows on the
  19127 # current virtual desktop (aka workspace). For now this only applies on Windows.
  19128 # See bug 1994825
  19129 - name: widget.prefer_windows_on_current_virtual_desktop
  19130  type: RelaxedAtomicBool
  19131  value: true
  19132  mirror: always
  19133 
  19134 #ifdef XP_MACOSX
  19135 
  19136 # Whether to shift by the menubar height on fullscreen mode.
  19137 # 0: never
  19138 # 1: always
  19139 # 2: auto (tries to detect when it is needed)
  19140 - name: widget.macos.shift-by-menubar-on-fullscreen
  19141  type: RelaxedAtomicUint32
  19142  value: 2
  19143  mirror: always
  19144 
  19145 - name: widget.macos.native-context-menus
  19146  type: RelaxedAtomicBool
  19147  value: true
  19148  mirror: always
  19149 
  19150 - name: widget.macos.sidebar-blend-mode.behind-window
  19151  type: RelaxedAtomicBool
  19152  value: true
  19153  mirror: always
  19154 
  19155 - name: widget.macos.titlebar-blend-mode.behind-window
  19156  type: RelaxedAtomicBool
  19157  value: false
  19158  mirror: always
  19159 
  19160 - name: widget.macos.window-transforms.disabled
  19161  type: RelaxedAtomicBool
  19162  value: false
  19163  mirror: always
  19164 #endif
  19165 
  19166 # Whether native GTK global menubar support is enabled.
  19167 # Disabled because there are some minor bugs and it needs deeper integration
  19168 # with the front-end.
  19169 - name: widget.gtk.global-menu.enabled
  19170  type: RelaxedAtomicBool
  19171  value: false
  19172  mirror: always
  19173 
  19174 # Whether GTK global menubar support is enabled using wayland's experimental
  19175 # dbus_annotation protocol:
  19176 # https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/52
  19177 # Disabled until it has a final shape and it is available in compositors.
  19178 - name: widget.gtk.global-menu.wayland.enabled
  19179  type: RelaxedAtomicBool
  19180  value: false
  19181  mirror: always
  19182 
  19183 # Whether native GTK context menus are enabled.
  19184 # Disabled because at the very least there's missing custom icon support.
  19185 - name: widget.gtk.native-context-menus
  19186  type: RelaxedAtomicBool
  19187  value: false
  19188  mirror: always
  19189 
  19190 # Whether we use overlay scrollbars on GTK.
  19191 - name: widget.gtk.overlay-scrollbars.enabled
  19192  type: RelaxedAtomicBool
  19193  value: true
  19194  mirror: always
  19195 
  19196 # Whether we hide the pointer while typing on Linux
  19197 - name: widget.gtk.hide-pointer-while-typing.enabled
  19198  type: RelaxedAtomicBool
  19199  value: true
  19200  mirror: always
  19201 
  19202 # Whether we honor the scrollbar colors from the gtk theme.
  19203 - name: widget.gtk.theme-scrollbar-colors.enabled
  19204  type: bool
  19205  value: true
  19206  mirror: always
  19207 
  19208 # Whether libadwaita colors are used rather than the default ones.
  19209 - name: widget.gtk.libadwaita-colors.enabled
  19210  type: bool
  19211  value: true
  19212  mirror: always
  19213 
  19214 # Whether to use gtk titlebar actions for middle click instead of Firefox
  19215 # build in one
  19216 - name: widget.gtk.titlebar-action-middle-click-enabled
  19217  type: bool
  19218  value: false
  19219  mirror: always
  19220 
  19221 # Whether to ignore middle click events on widget level.
  19222 - name: widget.gtk.middle-click-enabled
  19223  type: bool
  19224  value: true
  19225  mirror: always
  19226 
  19227 # Whether we enable rounded bottom corners on GTK by default.
  19228 #
  19229 # The implementation is a bit hacky (see details in bug 1850827) so behind a
  19230 # pref for emergency purposes.
  19231 - name: widget.gtk.rounded-bottom-corners.enabled
  19232  type: bool
  19233  value: false
  19234  mirror: always
  19235  rust: true
  19236 
  19237 # Whether selection colors for the non-system theme get passed from the system
  19238 # GTK theme.
  19239 - name: widget.gtk.alt-theme.selection
  19240  type: bool
  19241  value: true
  19242  mirror: always
  19243 
  19244 # Whether form control accent colors for the non-system theme get passed from
  19245 # the system GTK theme.
  19246 - name: widget.gtk.alt-theme.accent
  19247  type: bool
  19248  value: true
  19249  mirror: always
  19250 
  19251 # Whether the scrollbar thumb active color from the non-system theme gets
  19252 # passed from the system GTK theme.
  19253 - name: widget.gtk.alt-theme.scrollbar_active
  19254  type: bool
  19255  value: true
  19256  mirror: always
  19257 
  19258 # Whether we should try to grab the pointer on popups.
  19259 #  0: Never
  19260 #  1: Always
  19261 #  2: Auto (depending on the system)
  19262 - name: widget.gtk.grab-pointer
  19263  type: int32_t
  19264  value: 2
  19265  mirror: always
  19266 
  19267 # Whether we should try ignore bogus leave-notify events from the window
  19268 # manager.
  19269 #  0: Never
  19270 #  1: Always
  19271 #  2: Auto (depending on the system)
  19272 - name: widget.gtk.ignore-bogus-leave-notify
  19273  type: int32_t
  19274  value: 2
  19275  mirror: always
  19276 
  19277 # Whether to use gtk legacy cursor API.
  19278 - name: widget.gtk.legacy-cursors.enabled
  19279  type: bool
  19280  value: false
  19281  mirror: always
  19282 
  19283 # Gtk clipboard timeout
  19284 - name: widget.gtk.clipboard_timeout_ms
  19285  type: RelaxedAtomicUint32
  19286  value: 1000
  19287  mirror: always
  19288 
  19289 # Whether to use gtk high contrast themes to disable content styling like on
  19290 # windows high contrast mode.
  19291 - name: widget.content.gtk-high-contrast.enabled
  19292  type: bool
  19293  value: true
  19294  mirror: always
  19295 
  19296 #ifdef MOZ_WAYLAND
  19297 - name: widget.wayland.fractional-scale.enabled
  19298  type: bool
  19299  value: true
  19300  mirror: always
  19301 
  19302 # Use opaque region for MozContainer wl_surface
  19303 - name: widget.wayland.opaque-region.enabled
  19304  type: bool
  19305  value: true
  19306  mirror: once
  19307 
  19308 # Use frame callback based vsync
  19309 - name: widget.wayland.vsync.enabled
  19310  type: bool
  19311  value: true
  19312  mirror: once
  19313 
  19314 # Whether experimental PiP support for Wayland is enabled via the xx_pip_v1
  19315 # protocol.
  19316 - name: widget.wayland.experimental.pip.enabled
  19317  type: bool
  19318  value: true
  19319  mirror: once
  19320 
  19321 # Whether to keep firing vsync at layout.throttled_frame_rate after we've been
  19322 # occluded.
  19323 - name: widget.wayland.vsync.keep-firing-at-idle
  19324  type: bool
  19325  value: false
  19326  mirror: always
  19327 #endif
  19328 
  19329 #ifdef MOZ_WIDGET_GTK
  19330 # Whether to use DMABuf backend.
  19331 - name: widget.dmabuf.enabled
  19332  type: bool
  19333  value: true
  19334  mirror: once
  19335 
  19336 # Whether to override the DMABuf blocklist.
  19337 - name: widget.dmabuf.force-enabled
  19338  type: bool
  19339  value: false
  19340  mirror: once
  19341 
  19342 #ifdef NIGHTLY_BUILD
  19343 # Keep those pref hidden on non-nightly builds to avoid people accidentally
  19344 # turning it on.
  19345 
  19346 # Override FEATURE_DMABUF_SURFACE_EXPORT for testing
  19347 - name: widget.dmabuf-export.force-enabled
  19348  type: bool
  19349  value: false
  19350  mirror: once
  19351 
  19352 # Get DMABuf format feedback from compositor.
  19353 # For testing only
  19354 - name: widget.dmabuf-feedback.enabled
  19355  type: bool
  19356  value: false
  19357  mirror: once
  19358 #endif
  19359 
  19360 # Use DMABuf backend for WebGL.
  19361 - name: widget.dmabuf-webgl.enabled
  19362  type: bool
  19363  value: true
  19364  mirror: once
  19365 
  19366 # Use gdk_window_move_to_rect to move Wayland popups when available.
  19367 - name: widget.wayland.use-move-to-rect
  19368  type: bool
  19369  value: true
  19370  mirror: once
  19371 
  19372 # The time we should spend on a DBUS call to the FileManager1 interface before
  19373 # giving up and trying an alternative method.
  19374 #
  19375 # -1 for the default system timeout, INT_MAX for "infinite time".
  19376 #
  19377 # This happens right now on the main thread so 1 second should be enough, we
  19378 # should consider moving it to a background task and just use the default
  19379 # timeout.
  19380 - name: widget.gtk.file-manager-show-items-timeout-ms
  19381  type: int32_t
  19382  value: 1000
  19383  mirror: always
  19384 
  19385 # The timeout we should spend on a DBUS call to the Settings proxy before
  19386 # giving up.
  19387 #
  19388 # -1 for the default system timeout, INT_MAX for "infinite time".
  19389 #
  19390 # This runs just once, but during startup, so make sure it doesn't take too
  19391 # long. Three seconds should be way more than enough, and if we don't get the
  19392 # reply on time then the only potential issue is that we use a light instead of
  19393 # dark interface or vice versa.
  19394 - name: widget.gtk.settings-portal-timeout-ms
  19395  type: int32_t
  19396  value: 3000
  19397  mirror: always
  19398 
  19399 # Whether to use gtk portal for the file picker.
  19400 #  - 0: never
  19401 #  - 1: always
  19402 #  - 2: auto (true for flatpak or GTK_USE_PORTAL=1, false otherwise)
  19403 - name: widget.use-xdg-desktop-portal.file-picker
  19404  type: int32_t
  19405  value: 2
  19406  mirror: always
  19407 
  19408 # Whether to use gtk portal for the mime handler.
  19409 #  - 0: never
  19410 #  - 1: always
  19411 #  - 2: auto (for now only true for flatpak, see bug 1516290)
  19412 - name: widget.use-xdg-desktop-portal.mime-handler
  19413  type: int32_t
  19414  value: 2
  19415  mirror: always
  19416 
  19417 # Whether to use XDG portal for native messaging.
  19418 # https://github.com/flatpak/xdg-desktop-portal/issues/655
  19419 #  - 0: never
  19420 #  - 1: always
  19421 #  - 2: auto (true for snap and flatpak or GTK_USE_PORTAL=1, false otherwise)
  19422 - name: widget.use-xdg-desktop-portal.native-messaging
  19423  type: int32_t
  19424  value: 0
  19425  mirror: always
  19426 
  19427 # Whether to try to use XDG portal for settings / look-and-feel information.
  19428 # https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.Settings
  19429 #  - 0: never
  19430 #  - 1: always
  19431 #  - 2: auto
  19432 - name: widget.use-xdg-desktop-portal.settings
  19433  type: int32_t
  19434  value: 2
  19435  mirror: always
  19436 
  19437 # Whether to use XDG portal for geolocation.
  19438 # https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.Location
  19439 #  - 0: never
  19440 #  - 1: always
  19441 #  - 2: auto
  19442 - name: widget.use-xdg-desktop-portal.location
  19443  type: int32_t
  19444  value: 2
  19445  mirror: always
  19446 # Whether to use XDG portal for opening to a file.
  19447 # https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.OpenURI
  19448 #  - 0: never
  19449 #  - 1: always
  19450 #  - 2: auto (true for flatpak or GTK_USE_PORTAL=1, false otherwise)
  19451 - name: widget.use-xdg-desktop-portal.open-uri
  19452  type: int32_t
  19453  value: 2
  19454  mirror: always
  19455 #endif
  19456 
  19457 #ifdef XP_WIN
  19458 # WindowsUIUtils::Share to wait for user action on Windows share dialog
  19459 # `true` means the promise resolves when user completes or cancels the share
  19460 # action. This can be unsafe since selecting copy action fires no DataPackage
  19461 # event as of 21H1.
  19462 # `false` means the promise resolves when the share data is passed to
  19463 # DataPackage.
  19464 # This affects the behavior of `navigator.share()`.
  19465 - name: widget.windows.share.wait_action.enabled
  19466  type: bool
  19467  value: false
  19468  mirror: always
  19469 
  19470 - name: widget.windows.window_occlusion_tracking.enabled
  19471  type: bool
  19472  value: true
  19473  mirror: always
  19474 
  19475 # Whether overlay scrollbars respect the system settings.
  19476 # Note that these can be overridden by the ui.useOverlayScrollbars pref.
  19477 - name: widget.windows.overlay-scrollbars.enabled
  19478  type: bool
  19479  value: true
  19480  mirror: always
  19481 
  19482 # Whether we allow accessing the UWP system color pallete.
  19483 - name: widget.windows.uwp-system-colors.enabled
  19484  type: bool
  19485  value: true
  19486  mirror: always
  19487 
  19488 # Whether PiP windows have window decorations (borders and shadows).
  19489 # Off for now while we fix bug 1934760 and related issues.
  19490 - name: widget.windows.pip-decorations.enabled
  19491  type: bool
  19492  value: false
  19493  mirror: always
  19494 
  19495 # Whether we use the accent color for highlight as some other UWP apps do.
  19496 #
  19497 # false for now since it can cause some contrast-with-background issues
  19498 # specially with grey accents, see bug 1776588.
  19499 - name: widget.windows.uwp-system-colors.highlight-accent
  19500  type: bool
  19501  value: false
  19502  mirror: always
  19503 
  19504 - name: widget.windows.window_occlusion_tracking_display_state.enabled
  19505  type: bool
  19506  value: false
  19507  mirror: always
  19508 
  19509 - name: widget.windows.window_occlusion_tracking_session_lock.enabled
  19510  type: bool
  19511  value: true
  19512  mirror: always
  19513 
  19514 # tiltX and tiltY are supported only by expensive pen tablet devices.  For
  19515 # testing the feature, enabling this pref overrides tiltX and tiltY values to
  19516 # non-zero values.
  19517 - name: widget.windows.pen.tilt_override.enabled
  19518  type: bool
  19519  value: false
  19520  mirror: always
  19521 
  19522 # twist is supported only by expensive pen tablet devices.  For testing the
  19523 # feature, enabling this overrides twist value to non-zero values.
  19524 - name: widget.windows.pen.twist_override.enabled
  19525  type: bool
  19526  value: false
  19527  mirror: always
  19528 
  19529 # How frequently updates the value of tiltX, tiltY and/or twist value of pen
  19530 # input which can be enabled by the above prefs.
  19531 - name: widget.windows.pen.override.number_of_preserver_value
  19532  type: RelaxedAtomicUint32
  19533  value: 75
  19534  mirror: always
  19535 
  19536 # Whether this device is capable of entering tablet mode. (Win11+ only.)
  19537 #
  19538 # Valid values:
  19539 #  * -1: assume this device is tablet-mode-incapable
  19540 #  *  0: rely on heuristics
  19541 #  *  1: assume this device is tablet-mode-capable
  19542 - name: widget.windows.tablet_detection_override
  19543  type: RelaxedAtomicInt32
  19544  value: 0
  19545  mirror: always
  19546 
  19547 # Whether to give explorer.exe a delayed nudge to recalculate the fullscreenness
  19548 # of a window after unminimizing it.
  19549 - name: widget.windows.fullscreen_remind_taskbar
  19550  type: RelaxedAtomicBool
  19551  value: true
  19552  mirror: always
  19553 
  19554 # Mechanism to use to mark fullscreen windows.
  19555 #
  19556 # This value can be fixed once we settle on a version that works universally.
  19557 #
  19558 # * 0: Default. Use Gecko-internal heuristics. May vary between versions.
  19559 # * 1: Use only "NonRudeHWND". Historical default on Win7.
  19560 # * 2: Use only MarkFullscreenWindow. Historical default for Win10+.
  19561 # * 3: Use both. (Never a default; not well-tested.)
  19562 - name: widget.windows.fullscreen_marking_method
  19563  type: RelaxedAtomicUint32
  19564  value: 2
  19565  mirror: always
  19566 
  19567 # Whether to open the Windows file and folder pickers "remotely" (in a utility
  19568 # process) or "locally" (in the main process).
  19569 #
  19570 # Valid values:
  19571 #  *  0: auto (possibly release-channel-dependent)
  19572 #  *  1: remotely, falling back to locally
  19573 #  *  2: remotely, no fallback
  19574 #  *  3: remotely, falling back to locally except on crashes
  19575 #  * -1: locally, no fallback
  19576 - name: widget.windows.utility_process_file_picker
  19577  type: RelaxedAtomicInt32
  19578  value: 0
  19579  mirror: always
  19580 
  19581 # Whether to follow `.lnk` (etc.) shortcuts in the Windows file-open dialog.
  19582 #
  19583 # Valid values:
  19584 #  * 0: never
  19585 #  * 1: always
  19586 #  * 2: auto
  19587 - name: widget.windows.follow_shortcuts_on_file_open
  19588  type: RelaxedAtomicInt32
  19589  value: 1
  19590  mirror: always
  19591 
  19592 # The number of messages of each type to keep for display in
  19593 # about:windows-messages
  19594 - name: widget.windows.messages_to_log
  19595  type: RelaxedAtomicUint32
  19596  value: 6
  19597  mirror: always
  19598 
  19599 # Whether to flush the Ole clipboard synchronously.
  19600 # Possible values are:
  19601 #  * 0: never
  19602 #  * 1: always
  19603 #  * 2 (or others): when needed
  19604 - name: widget.windows.sync-clipboard-flush
  19605  type: uint32_t
  19606  value: 2
  19607  mirror: always
  19608 
  19609 # Whether to allow dragging and dropping tabs onto another application. This is
  19610 # disallowed by default because most applications that say they can handle
  19611 # Firefox tabs are lying (bug 1598915).
  19612 - name: widget.windows.allow-external-tab-drag
  19613  type: bool
  19614  value: false
  19615  mirror: always
  19616 
  19617 # Whether to apply a hack (adjusting the window height by -1px and back again)
  19618 # upon first entering fullscreen intended to work around a bug exhibited under
  19619 # on some Windows 11 machines under some configurations. (See bug 1763981.)
  19620 #
  19621 # Semantics:
  19622 #  * 0: never
  19623 #  * 1: always
  19624 #  * 2: auto
  19625 - name: widget.windows.apply-dwm-resize-hack
  19626  type: RelaxedAtomicInt32
  19627  value: 2
  19628  mirror: always
  19629 
  19630 # Whether we use the mica backdrop for top level windows. Off by default for
  19631 # now.
  19632 - name: widget.windows.mica
  19633  type: bool
  19634  value: false
  19635  mirror: always
  19636 
  19637 # Whether we use the mica backdrop for popups when available.
  19638 #  * 0: never
  19639 #  * 1: always
  19640 #  * 2 or others: auto
  19641 - name: widget.windows.mica.popups
  19642  type: RelaxedAtomicInt32
  19643  value: 2
  19644  mirror: always
  19645 
  19646 # What mica backdrop do we use for toplevels. See [1] for the meaning.
  19647 #
  19648 #  * 0 or other values: auto
  19649 #  * 1: MAINWINDOW
  19650 #  * 2: TRANSIENTWINDOW
  19651 #  * 3: TABBEDWINDOW
  19652 #
  19653 # [1]: https://learn.microsoft.com/en-us/windows/win32/api/dwmapi/ne-dwmapi-dwm_systembackdrop_type#constants
  19654 - name: widget.windows.mica.toplevel-backdrop
  19655  type: RelaxedAtomicInt32
  19656  value: 0
  19657  mirror: always
  19658 
  19659 # Whether to use the Windows App SDK to disable the minimize/maximize/close buttons.
  19660 # This should only be disabled if crashes are happening, because it will make
  19661 # double minimize/maximize/close buttons draw. Note that this preference is disregarded
  19662 # when running on Windows 11 H2 or earlier (which includes Windows 10), as we never use
  19663 # the Windows App SDK on those versions.
  19664 - name: widget.windows.windowsappsdk.enabled
  19665  type: bool
  19666  value: true
  19667  mirror: always
  19668 #endif
  19669 
  19670 # Whether to disable SwipeTracker (e.g. swipe-to-nav).
  19671 - name: widget.disable-swipe-tracker
  19672  type: bool
  19673  value: false
  19674  mirror: always
  19675 
  19676 # Various metrics to control SwipeTracker.
  19677 - name: widget.swipe.velocity-twitch-tolerance
  19678  type: float
  19679  value: 0.0000001f
  19680  mirror: always
  19681 
  19682 - name: widget.swipe.success-velocity-contribution
  19683  type: float
  19684  value: 0.05f
  19685  mirror: always
  19686 
  19687 # When using pixel deltas for pan input, how many pixels do we consider a whole
  19688 # swipe?
  19689 #
  19690 # The values for this pref are derived from trial and error in an effort to
  19691 # match the existing behavior on the respective platforms.
  19692 - name: widget.swipe.pixel-size
  19693  type: float
  19694 #if defined(XP_MACOSX)
  19695  value: 550.0f
  19696 #else
  19697  value: 1100.0f
  19698 #endif
  19699  mirror: always
  19700 
  19701 # When using page deltas for pan input, how many pages do we consider a whole
  19702 # swipe navigation?
  19703 #
  19704 # This is only relevant for GTK which is as of right now the only platform
  19705 # which supports page-based pan gestures.
  19706 - name: widget.swipe.page-size
  19707  type: float
  19708  value: 40.0f
  19709  mirror: always
  19710 
  19711 - name: widget.transparent-windows
  19712  type: bool
  19713  value: true
  19714  mirror: once
  19715 
  19716 # Whether the clipboard cached are used while getting system clipboard data.
  19717 - name: widget.clipboard.use-cached-data.enabled
  19718  type: bool
  19719 #if defined(XP_MACOSX)
  19720  value: true
  19721 #else
  19722  value: false
  19723 #endif
  19724  mirror: always
  19725 
  19726 #ifdef XP_MACOSX
  19727 # The folllowing widget.macos.automatic.* prefs are whether Gecko turns on
  19728 # text replacement features.
  19729 - name: widget.macos.automatic.text_replacement
  19730  type: bool
  19731  value: true
  19732  mirror: always
  19733 
  19734 # Whether the smart dash feature is enabled
  19735 - name: widget.macos.automatic.dash_substitution
  19736  type: bool
  19737  value: false
  19738  mirror: always
  19739 
  19740 # Whether the smart quote feature is enabled
  19741 - name: widget.macos.automatic.quote_substitution
  19742  type: bool
  19743  value: false
  19744  mirror: always
  19745 
  19746 # fetching length when processing text substitution.
  19747 - name: widget.macos.automatic.text_substitution_fetch_length
  19748  type: uint32_t
  19749  value: 20
  19750  mirror: always
  19751 #endif
  19752 
  19753 #ifdef ANDROID
  19754 # Whether to render in to a child SurfaceControl rather than directly into the SurfaceView
  19755 - name: widget.android.use-surfacecontrol
  19756  type: bool
  19757  value: false
  19758  mirror: once
  19759 
  19760 # A threshold value for double click by mouse.
  19761 - name: widget.double-click.threshold
  19762  type: RelaxedAtomicInt32
  19763  value: 4
  19764  mirror: always
  19765 
  19766 # A timeout value for double click by mouse.
  19767 - name: widget.double-click.timeout
  19768  type: RelaxedAtomicInt32
  19769  value: 500
  19770  mirror: always
  19771 
  19772 # A min time value for double click by mouse.
  19773 - name: widget.double-click.min
  19774  type: RelaxedAtomicInt32
  19775  value: 40
  19776  mirror: always
  19777 #endif
  19778 
  19779 #---------------------------------------------------------------------------
  19780 # Prefs starting with "zoom."
  19781 #---------------------------------------------------------------------------
  19782 
  19783 - name: zoom.maxPercent
  19784  type: uint32_t
  19785 #ifdef ANDROID
  19786  value: 400
  19787 #else
  19788  value: 500
  19789 #endif
  19790  mirror: always
  19791 
  19792 - name: zoom.minPercent
  19793  type: uint32_t
  19794 #ifdef ANDROID
  19795  value: 20
  19796 #else
  19797  value: 30
  19798 #endif
  19799  mirror: always
  19800 
  19801 #---------------------------------------------------------------------------
  19802 # End of prefs
  19803 #---------------------------------------------------------------------------