Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/modules/libpref/init/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 514 kB image not shown  

Quelle  StaticPrefList.yaml   Sprache: unbekannt

 
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/. */

# This file defines static prefs, i.e. those that are defined at startup and
# used entirely or mostly from C++ and/or Rust code.
#
# The file is separated into sections, where each section contains a group of
# prefs that all share the same first segment of their name -- all the "gfx.*"
# prefs are together, all the "network.*" prefs are together, etc. Sections
# must be kept in alphabetical order, but prefs within sections need not be.
#
# Basics
# ------
# Any pref defined in one of the files included here should *not* be defined
# in a data file such as all.js; that would just be useless duplication.
#
# (Except under unusual circumstances where the value defined here must be
# overridden, e.g. for some Thunderbird prefs. In those cases the default
# value from the data file will override the static default value defined
# here.)
#
# Please follow the existing prefs naming convention when considering adding a
# new pref, and don't create a new pref group unless it's appropriate and there
# are likely to be multiple prefs within that group. (If you do, you'll need to
# update the `pref_groups` variable in modules/libpref/moz.build.)
#
# Definitions
# -----------
# A pref definition looks like this:
#
#   - name: <pref-name>                                 # mandatory
#     type: <cpp-type>                                  # mandatory
#     value: <default-value>                            # mandatory
#     mirror: <never | once | always>                   # mandatory
#     do_not_use_directly: <true | false>               # optional
#     include: <header-file>                            # optional
#     rust: <true | false>                              # optional
#     set_spidermonkey_pref: <false | startup | always> # optional
#
# - `name` is the name of the pref, without double-quotes, as it appears
#   in about:config. It is used in most libpref API functions (from both C++
#   and JS code).
#
# - `type` is one of `bool`, `int32_t`, `uint32_t`, `float`, an atomic version
#   of one of those, `String` or `DataMutexString`. Note that float prefs are
#   stored internally as strings. The C++ preprocessor doesn't like template
#   syntax in a macro argument, so use the typedefs defined in
#   StaticPrefsBase.h; for example, use `RelaxedAtomicBool` instead of
#   `Atomic<bool, Relaxed>`.
#
# - `value` is the default value. Its type should be appropriate for
#   <cpp-type>, otherwise the generated code will fail to compile. A complex
#   C++ numeric expressions like `60 * 60` (which the YAML parser cannot treat
#   as an integer or float) is treated as a string and passed through without
#   change, which is useful.
#
# - `mirror` indicates how the pref value is mirrored into a C++ variable.
#
#   * `never`: There is no C++ mirror variable. The pref value can only be
#     accessed via the standard libpref API functions.
#
#   * `once`: The pref value is mirrored into a variable at startup; the
#     mirror variable is left unchanged after that. (The exact point at which
#     all `once` mirror variables are set is when the first `once` mirror
#     variable is accessed, via its getter function.) This is mostly useful for
#     graphics prefs where we often don't want a new pref value to apply until
#     restart. Otherwise, this update policy is best avoided because its
#     behaviour can cause confusion and bugs.
#
#   * `always`: The mirror variable is always kept in sync with the pref value.
#     This is the most common choice.
#
#   When a mirror variable is present, a getter will be created that can access
#   it. Using the getter function to read the pref's value has the two
#   following advantages over the normal API functions.
#
#   * A direct variable access is faster than a hash table lookup.
#
#   * A mirror variable can be accessed off the main thread. If a pref *is*
#     accessed off the main thread, it should have an atomic type. Assertions
#     enforce this.
#
#   Note that Rust code must access the mirror variable directly, rather than
#   via the getter function.
#
# - `do_not_use_directly` indicates if `_DoNotUseDirectly` should be appended to
#   the name of the getter function. This is simply a naming convention
#   indicating that there is some other wrapper getter function that should be
#   used in preference to the normal static pref getter. Defaults to `false` if
#   not present. Cannot be used with a `never` mirror value, because there is
#   no getter function in that case.
#
# - `include` names a header file that must be included for the pref value to
#   compile correctly, e.g. because it refers to a code constant. System
#   headers should be surrounded with angle brackets, e.g. `<cmath>`.
#
# - `rust` indicates if the mirror variable is used by Rust code. If so, it
#   will be usable via the `static_prefs::pref!` macro, e.g.
#   `static_prefs::pref!("layout.css.cross-fade.enabled")`.
#
# - `set_spidermonkey_pref` indicates whether SpiderMonkey boilerplate code
#   should be generated for this pref. If this is set to 'startup', the
#   pref on the SpiderMonkey side is only set during process startup. If set to
#   'always', the SpiderMonkey pref value is also updated when this pref is
#   changed at runtime.
#   This option is only valid for javascript.options.* prefs.
#
# The getter function's base name is the same as the pref's name, but with
# '.' or '-' chars converted to '_', to make a valid identifier. For example,
# the getter for `foo.bar_baz` is `foo_bar_baz()`. This is ugly but clear,
# and you can search for both the pref name and the getter using the regexp
# /foo.bar.baz/. Suffixes are added as follows:
#
# - If the `mirror` value is `once`, `_AtStartup` is appended, to indicate the
#   value was obtained at startup.
#
# - If the `do_not_use_directly` value is true, `_DoNotUseDirectly` is
#   appended.
#
# Preprocessor
# ------------
# Note finally that this file is preprocessed by preprocessor.py, not the C++
# preprocessor. As a result, the following things may be surprising.
#
# - YAML comments start with a '#', so putting a comment on the same line as a
#   preprocessor directive is dubious. E.g. avoid lines like `#define X 3 #
#   three` because the ` # three` will be part of `X`.
#
# - '@' use is required for substitutions to occur. E.g. with `#define FOO 1`,
#   `FOO` won't be replaced with `1` unless it has '@' chars around it.
#
# - Spaces aren't permitted between the leading '#' and the name of a
#   directive, e.g. `#ifdef XYZ` works but `# ifdef XYZ` does not.
#
# Please indent all prefs defined within #ifdef/#ifndef conditions. This
# improves readability, particular for conditional blocks that exceed a single
# screen. But note that the leading '-' in a definition must remain in the
# first column for it to be valid YAML.

#ifdef RELEASE_OR_BETA
#define IS_NOT_RELEASE_OR_BETA false
#else
#define IS_NOT_RELEASE_OR_BETA true
#endif

#ifdef NIGHTLY_BUILD
#define IS_NIGHTLY_BUILD      true
#define IS_NOT_NIGHTLY_BUILD  false
#else
#define IS_NIGHTLY_BUILD      false
#define IS_NOT_NIGHTLY_BUILD  true
#endif

#if defined(NIGHTLY_BUILD) || defined(MOZ_DEV_EDITION)
#define IS_NIGHTLY_OR_DEV_EDITION true
#else
#define IS_NIGHTLY_OR_DEV_EDITION false
#endif

#ifdef MOZILLA_OFFICIAL
#define IS_NOT_MOZILLA_OFFICIAL false
#else
#define IS_NOT_MOZILLA_OFFICIAL true
#endif

#ifdef EARLY_BETA_OR_EARLIER
#define IS_EARLY_BETA_OR_EARLIER true
#define IS_NOT_EARLY_BETA_OR_EARLIER false
#else
#define IS_EARLY_BETA_OR_EARLIER false
#define IS_NOT_EARLY_BETA_OR_EARLIER true
#endif

#if defined(MOZ_DEV_EDITION) || defined(EARLY_BETA_OR_EARLIER)
#define IS_DEV_EDITION_OR_EARLY_BETA_OR_EARLIER true
#else
#define IS_DEV_EDITION_OR_EARLY_BETA_OR_EARLIER false
#endif

#ifdef ANDROID
#define IS_ANDROID true
#define IS_NOT_ANDROID false
#else
#define IS_ANDROID false
#define IS_NOT_ANDROID true
#endif

#ifdef XP_WIN
#define IS_XP_WIN true
#define IS_NOT_XP_WIN false
#else
#define IS_XP_WIN false
#define IS_NOT_XP_WIN true
#endif

#ifdef XP_MACOSX
#define IS_XP_MACOSX true
#define IS_NOT_XP_MACOSX false
#else
#define IS_XP_MACOSX false
#define IS_NOT_XP_MACOSX true
#endif

#---------------------------------------------------------------------------
# Prefs starting with "accessibility."
#---------------------------------------------------------------------------

# Tab focus model bit field:
# 1 focuses text controls, 2 focuses other form elements, 4 adds links.
# Most users will want 1, 3, or 7. On macOS we expose a checkbox to alter
# between 7 and 3.
- name: accessibility.tabfocus
  type: int32_t
  value: 7
  mirror: always

# Only on mac tabfocus is expected to handle UI widgets as well as web content.
# FIXME(emilio): This is weird now that we have a lot of HTML in our pages.
- name: accessibility.tabfocus_applies_to_xul
  type: bool
  value: @IS_XP_MACOSX@
  mirror: always

- name: accessibility.accesskeycausesactivation
  type: bool
  value: true
  mirror: always

- name: accessibility.monoaudio.enable
  type: RelaxedAtomicBool
  value: false
  mirror: always

- name: accessibility.browsewithcaret
  type: RelaxedAtomicBool
  value: false
  mirror: always

- name: accessibility.AOM.enabled
  type: bool
  value: false
  mirror: always

- name: accessibility.ARIAElementReflection.enabled
  type: bool
  value: true
  mirror: always

# Whether to enable all accessibility cache domains on startup.
#  * false: enable domains as needed
#  * true:  enable all domains regardless of need (cache everything)
- name: accessibility.enable_all_cache_domains
  type: bool
  value: false
  mirror: once

# Whether form controls and images should be focusable with mouse, in content
# documents.
#
# This matches historical macOS / Safari behavior.
#
#  * 0: never
#  * 1: always
#  * 2: on content documents
- name: accessibility.mouse_focuses_formcontrol
  type: int32_t
#ifdef XP_MACOSX
  value: 2
#else
  value: 1
#endif
  mirror: always

# Whether to enable support for the UI Automation API on Windows.
- name: accessibility.uia.enable
  type: bool
  value: false
  mirror: always

# Whether to avoid accessibility activation on Windows shortly after clipboard
# copy.
#
# Possible values are:
#  * 0: never
#  * 1: always
#  * 2 (or others): when needed
- name: accessibility.windows.suppress-after-clipboard-copy
  type: uint32_t
  value: 2
  mirror: always

# Whether to avoid accessibility activation on Windows shortly after max button
# hit-test for the "snap layout" feature.
#
# Possible values are:
#  * 0: never
#  * 1: always
#  * 2 (or others): when needed
- name: accessibility.windows.suppress-for-snap-layout
  type: uint32_t
  value: 2
  mirror: always

#---------------------------------------------------------------------------
# Prefs starting with "alerts."
#---------------------------------------------------------------------------

# Whether to use platform-specific backends for showing desktop notifications.
# If no such backend is available, or if the pref is false, then XUL
# notifications are used.
- name: alerts.useSystemBackend
  type: bool
  value: true
  mirror: always

#if defined(XP_WIN)
 # On Windows, a COM Surrogate notification server receives notification events
 # and can relaunch the application after it has been closed.
- name: alerts.useSystemBackend.windows.notificationserver.enabled
  type: bool
  value: true
  mirror: never
#endif

#ifdef ANDROID
  #---------------------------------------------------------------------------
  # Prefs starting with "android."
  #---------------------------------------------------------------------------

  # On Android, we want an opaque background to be visible under the page,
  # so layout should not force a default background.
-   name: android.widget_paints_background
    type: RelaxedAtomicBool
    value: true
    mirror: always

-   name: android.touch_resampling.enabled
    type: RelaxedAtomicBool
    value: false
    mirror: always

#endif

#---------------------------------------------------------------------------
# Prefs starting with "apz."
# The apz prefs are explained in AsyncPanZoomController.cpp
#---------------------------------------------------------------------------

# amount we zoom in for a double tap gesture if we couldn't find any content
# based rect to zoom to
- name: apz.doubletapzoom.defaultzoomin
  type: AtomicFloat
  value: 1.2f
  mirror: always

- name: apz.scrollbarbuttonrepeat.enabled
  type: RelaxedAtomicBool
  value: true
  mirror: always

# After a user has executed a pan gesture, we may receive momentum phase pan
# gestures from the OS. This specifies how long we should wait following the
# pan end gesture for possible momentum phase pan gestures before sending the
# TransformEnd notification.
- name: apz.scrollend-event.content.delay_ms
  type: RelaxedAtomicInt32
  value: 100
  mirror: always

- name: apz.wr.activate_all_scroll_frames
  type: RelaxedAtomicBool
  value: false
  mirror: always

- name: apz.wr.activate_all_scroll_frames_when_fission
  type: RelaxedAtomicBool
  value: true
  mirror: always

- name: apz.prefer_jank_minimal_displayports
  type: RelaxedAtomicBool
  value: true
  mirror: always

- name: apz.allow_double_tap_zooming
  type: RelaxedAtomicBool
  value: true
  mirror: always

- name: apz.mac.enable_double_tap_zoom_touchpad_gesture
  type: RelaxedAtomicBool
  value: true
  mirror: always

- name: apz.allow_immediate_handoff
  type: RelaxedAtomicBool
  value: false
  mirror: always

- name: apz.allow_zooming
  type: RelaxedAtomicBool
  value: true
  mirror: always

- name: apz.max_zoom
  type: AtomicFloat
  value: 10.0f
  mirror: always

- name: apz.min_zoom
  type: AtomicFloat
  value: 0.25f
  mirror: always

- name: apz.allow_zooming_out
  type: RelaxedAtomicBool
  value: false
  mirror: always

- name: apz.android.chrome_fling_physics.friction
  type: AtomicFloat
  value: 0.015f
  mirror: always

- name: apz.android.chrome_fling_physics.inflexion
  type: AtomicFloat
  value: 0.35f
  mirror: always

- name: apz.android.chrome_fling_physics.stop_threshold
  type: AtomicFloat
  value: 0.1f
  mirror: always

- name: apz.autoscroll.enabled
  type: RelaxedAtomicBool
  value: true
  mirror: always

- name: apz.axis_lock.breakout_angle
  type: AtomicFloat
  value: float(M_PI / 8.0)    # 22.5 degrees
  mirror: always
  include: <cmath>

- name: apz.axis_lock.breakout_threshold
  type: AtomicFloat
  value: 1.0f / 32.0f
  mirror: always

- name: apz.axis_lock.direct_pan_angle
  type: AtomicFloat
  value: float(M_PI / 3.0)    # 60 degrees
  mirror: always
  include: <cmath>

- name: apz.axis_lock.lock_angle
  type: AtomicFloat
  value: float(M_PI / 6.0)    # 30 degrees
  mirror: always
  include: <cmath>

# Whether to lock touch scrolling to one axis at a time. When a new
# axis lock mode is added, the APZCAxisLockCompatTester GTest shoud
# be updated to include the lock mode value.
# 0 = FREE (No locking at all)
# 1 = STANDARD (Once locked, remain locked until scrolling ends)
# 2 = STICKY (Allow lock to be broken, with hysteresis)
# 3 = DOMINANT_AXIS (Only allow movement on one axis at a time, only
#     applies to touchpad scrolling)
- name: apz.axis_lock.mode
  type: RelaxedAtomicInt32
#if defined(XP_MACOSX)
  value: 3
#else
  value: 2
#endif
  mirror: always

- name: apz.content_response_timeout
  type: RelaxedAtomicInt32
  value: 400
  mirror: always

- name: apz.danger_zone_x
  type: RelaxedAtomicInt32
  value: 50
  mirror: always

- name: apz.danger_zone_y
  type: RelaxedAtomicInt32
  value: 100
  mirror: always

- name: apz.disable_for_scroll_linked_effects
  type: RelaxedAtomicBool
  value: false
  mirror: always

- name: apz.displayport_expiry_ms
  type: RelaxedAtomicUint32
  value: 15000
  mirror: always

- name: apz.drag.enabled
  type: RelaxedAtomicBool
  value: true
  mirror: always

- name: apz.drag.touch.enabled
  type: RelaxedAtomicBool
  value: true
  mirror: always

- name: apz.enlarge_displayport_when_clipped
  type: RelaxedAtomicBool
  value: @IS_ANDROID@
  mirror: always

# Test only.
- name: apz.fixed-margin-override.enabled
  type: RelaxedAtomicBool
  value: false
  mirror: always

# Test only.
- name: apz.fixed-margin-override.bottom
  type: RelaxedAtomicInt32
  value: 0
  mirror: always

# Test only.
- name: apz.fixed-margin-override.top
  type: RelaxedAtomicInt32
  value: 0
  mirror: always

- name: apz.fling_accel_base_mult
  type: AtomicFloat
  value: 1.0f
  mirror: always

- name: apz.fling_accel_supplemental_mult
  type: AtomicFloat
  value: 1.0f
  mirror: always

- name: apz.fling_accel_min_fling_velocity
  type: AtomicFloat
  value: 1.5f
  mirror: always

- name: apz.fling_accel_min_pan_velocity
  type: AtomicFloat
  value: 0.8f
  mirror: always

- name: apz.fling_accel_max_pause_interval_ms
  type: RelaxedAtomicInt32
  value: 50
  mirror: always

- name: apz.fling_curve_function_x1
  type: float
  value: 0.0f
  mirror: once

- name: apz.fling_curve_function_x2
  type: float
  value: 1.0f
  mirror: once

- name: apz.fling_curve_function_y1
  type: float
  value: 0.0f
  mirror: once

- name: apz.fling_curve_function_y2
  type: float
  value: 1.0f
  mirror: once

- name: apz.fling_curve_threshold_inches_per_ms
  type: AtomicFloat
  value: -1.0f
  mirror: always

- name: apz.fling_friction
  type: AtomicFloat
  value: 0.002f
  mirror: always

- name: apz.fling_min_velocity_threshold
  type: AtomicFloat
  value: 0.5f
  mirror: always

- name: apz.fling_stop_on_tap_threshold
  type: AtomicFloat
  value: 0.05f
  mirror: always

- name: apz.fling_stopped_threshold
  type: AtomicFloat
  value: 0.01f
  mirror: always

- name: apz.touch_acceleration_factor_x
  type: float
  value: 1.0f
  mirror: always

- name: apz.touch_acceleration_factor_y
  type: float
  value: 1.0f
  mirror: always

#ifdef MOZ_WIDGET_GTK
-   name: apz.gtk.kinetic_scroll.enabled
    type: RelaxedAtomicBool
    value: true
    mirror: always

-   name: apz.gtk.pangesture.enabled
    type: RelaxedAtomicBool
    value: true
    mirror: always

# Mode to use when receiving pan gesture input.
#
#  * 0: Auto mode (uses the default behavior, subject to change).
#  * 1: Page mode: Uses gtk deltas as a percentage of the page size to scroll. This mode matches:
#
#    https://gitlab.gnome.org/GNOME/gtk/blob/c734c7e9188b56f56c3a504abee05fa40c5475ac/gtk/gtkrange.c#L3063-3074
#
#  * 2: Pixel mode: Uses gtk deltas as a fixed pixel multiplier. This mode matches e.g. GNOME web.
#
#    https://webkit-search.igalia.com/webkit/rev/215039ef09d6bfd6e088175bfe30788d95b9705d/Source/WebKit/Shared/gtk/WebEventFactory.cpp#265-296
#    (multiplied then by pixelsPerLineStep which in GNOME-web is 40).
-   name: apz.gtk.pangesture.delta_mode
    type: uint32_t
    value: 0
    mirror: always

-   name: apz.gtk.pangesture.page_delta_mode_multiplier
    type: float
    value: 1.0f
    mirror: always

-   name: apz.gtk.pangesture.pixel_delta_mode_multiplier
    type: float
    value: 40.0f
    mirror: always

-   name: apz.gtk.touchpad_pinch.enabled
    type: RelaxedAtomicBool
    value: true
    mirror: always

-   name: apz.gtk.touchpad_pinch.three_fingers.enabled
    type: RelaxedAtomicBool
    value: false
    mirror: always

-   name: apz.gtk.touchpad_hold.enabled
    type: RelaxedAtomicBool
    value: true
    mirror: always
#endif

- name: apz.keyboard.enabled
  type: bool
  value: @IS_NOT_ANDROID@
  mirror: once

- name: apz.keyboard.passive-listeners
  type: RelaxedAtomicBool
  value: @IS_NOT_ANDROID@
  mirror: always

- name: apz.keyboard.focus-optimization
  type: bool
  value: false
  mirror: always

- name: apz.max_tap_time
  type: RelaxedAtomicInt32
  value: 300
  mirror: always

- name: apz.max_velocity_inches_per_ms
  type: AtomicFloat
  value: -1.0f
  mirror: always

- name: apz.max_velocity_queue_size
  type: uint32_t
  value: 5
  mirror: once

- name: apz.min_skate_speed
  type: AtomicFloat
  value: 1.0f
  mirror: always

- name: apz.minimap.enabled
  type: RelaxedAtomicBool
  value: false
  mirror: always

- name: apz.mousemove_hittest_optimization.enabled
  type: RelaxedAtomicBool
  value: true
  mirror: always

- name: apz.one_touch_pinch.enabled
  type: RelaxedAtomicBool
  value: @IS_ANDROID@
  mirror: always

- name: apz.overscroll.enabled
  type: RelaxedAtomicBool
  value: true
  mirror: always

# The "test async scroll offset" (used via reftest-async-scroll
# or nsIDOMWindowUtils.setAsyncScrollOffset()) can be used to
# trigger overscroll. Used for tests only.
- name: apz.overscroll.test_async_scroll_offset.enabled
  type: RelaxedAtomicBool
  value: false
  mirror: always

- name: apz.overscroll.min_pan_distance_ratio
  type: AtomicFloat
  value: 1.0f
  mirror: always

- name: apz.overscroll.stop_distance_threshold
  type: AtomicFloat
  value: 5.0f
  mirror: always

- name: apz.overscroll.spring_stiffness
  type: AtomicFloat
  value: 200
  mirror: always

- name: apz.overscroll.damping
  type: AtomicFloat
  value: 1.1
  mirror: always

- name: apz.overscroll.max_velocity
  type: AtomicFloat
  value: 10
  mirror: always

- name: apz.paint_skipping.enabled
  type: RelaxedAtomicBool
  value: true
  mirror: always

# Fetch displayport updates early from the message queue.
- name: apz.pinch_lock.mode
  type: RelaxedAtomicInt32
  value: 2
  mirror: always

- name: apz.pinch_lock.scroll_lock_threshold
  type: AtomicFloat
  value: 1.0f / 16.0f   # 1/16 inches
  mirror: always

- name: apz.pinch_lock.span_breakout_threshold
  type: AtomicFloat
  value: 1.0f / 32.0f   # 1/32 inches
  mirror: always

- name: apz.pinch_lock.span_lock_threshold
  type: AtomicFloat
  value: 1.0f / 32.0f   # 1/32 inches
  mirror: always

- name: apz.pinch_lock.buffer_max_age
  type: int32_t
  value: 80   # milliseconds
  mirror: once

- name: apz.popups.enabled
  type: RelaxedAtomicBool
  value: true
  mirror: always

- name: apz.popups_without_remote.enabled
  type: RelaxedAtomicBool
  value: true
  mirror: always

# Whether to print the APZC tree for debugging.
- name: apz.printtree
  type: RelaxedAtomicBool
  value: false
  mirror: always

- name: apz.record_checkerboarding
  type: RelaxedAtomicBool
  value: @IS_NIGHTLY_BUILD@
  mirror: always

- name: apz.second_tap_tolerance
  type: AtomicFloat
  value: 0.5f
  mirror: always

# If this is true, APZ fully recalculates the scroll thumb size and
# position in the compositor. This leads to the size and position
# being more accurate in scenarios such as async zooming.
- name: apz.scrollthumb.recalc
  type: RelaxedAtomicBool
  value: true
  mirror: always

- name: apz.test.fails_with_native_injection
  type: RelaxedAtomicBool
  value: false
  mirror: always

- name: apz.test.logging_enabled
  type: RelaxedAtomicBool
  value: false
  mirror: always

- name: apz.touch_move_tolerance
  type: AtomicFloat
  value: 0.1f
  mirror: always

- name: apz.touch_scroll.buffer_max_age
  type: int32_t
  value: 200  # milliseconds
  mirror: once

- name: apz.touch_start_tolerance
  type: AtomicFloat
  value: 0.1f
  mirror: always

- name: apz.velocity_bias
  type: AtomicFloat
  value: 0.0f
  mirror: always

- name: apz.velocity_relevance_time_ms
  type: RelaxedAtomicUint32
  value: 100
  mirror: always

- name: apz.windows.force_disable_direct_manipulation
  type: RelaxedAtomicBool
  value: false
  mirror: always

- name: apz.windows.use_direct_manipulation
  type: RelaxedAtomicBool
  value: true
  mirror: always

- name: apz.windows.check_for_pan_gesture_conversion
  type: RelaxedAtomicBool
  value: true
  mirror: always

- name: apz.x_skate_highmem_adjust
  type: AtomicFloat
  value: 0.0f
  mirror: always

- name: apz.x_skate_size_multiplier
  type: AtomicFloat
  value: 1.25f
  mirror: always

- name: apz.x_stationary_size_multiplier
  type: AtomicFloat
  value: 1.5f
  mirror: always

- name: apz.y_skate_highmem_adjust
  type: AtomicFloat
  value: 0.0f
  mirror: always

- name: apz.y_skate_size_multiplier
  type: AtomicFloat
#if defined(MOZ_WIDGET_ANDROID)
  value: 1.5f
#else
  value: 3.5f
#endif
  mirror: always

- name: apz.y_stationary_size_multiplier
  type: AtomicFloat
#if defined(MOZ_WIDGET_ANDROID)
  value: 1.5f
#else
  value: 3.5f
#endif
  mirror: always

- name: apz.zoom_animation_duration_ms
  type: RelaxedAtomicInt32
#if defined(MOZ_WIDGET_ANDROID)
  value: 250
#else
  value: 350
#endif
  mirror: always

- name: apz.scale_repaint_delay_ms
  type: RelaxedAtomicInt32
  value: 500
  mirror: always

# Whether to use rounded external scroll offsets.
- name: apz.rounded_external_scroll_offset
  type: bool
  value: false
  mirror: always

#---------------------------------------------------------------------------
# Prefs starting with "beacon."
#---------------------------------------------------------------------------

# Is support for Navigator.sendBeacon enabled?
- name: beacon.enabled
  type: bool
  value: true
  mirror: always

#---------------------------------------------------------------------------
# Prefs starting with "bidi."
#---------------------------------------------------------------------------

# Whether delete and backspace should immediately delete characters not
# visually adjacent to the caret, or adjust the visual position of the caret
# on the first keypress and delete the character on a second keypress
- name: bidi.edit.delete_immediately
  type: bool
  value: true
  mirror: always

# Bidi caret movement style:
# 0 = logical
# 1 = visual
# 2 = visual, but logical during selection
- name: bidi.edit.caret_movement_style
  type: int32_t
#if !defined(XP_LINUX) && defined(NIGHTLY_BUILD)
  value: 1
#else
  value: 2 # See Bug 1638240
#endif
  mirror: always

# Bidi numeral style:
# 0 = nominalnumeralBidi *
# 1 = regularcontextnumeralBidi
# 2 = hindicontextnumeralBidi
# 3 = arabicnumeralBidi
# 4 = hindinumeralBidi
# 5 = persiancontextnumeralBidi
# 6 = persiannumeralBidi
- name: bidi.numeral
  type: RelaxedAtomicUint32
  value: 0
  mirror: always

# Bidi text type
# 1 = charsettexttypeBidi *
# 2 = logicaltexttypeBidi
# 3 = visualtexttypeBidi
- name: bidi.texttype
  type: RelaxedAtomicUint32
  value: 1
  mirror: always

# Bidi direction
# 1 = directionLTRBidi *
# 2 = directionRTLBidi
- name: bidi.direction
  type: RelaxedAtomicUint32
  value: 1
  mirror: always

# Setting this pref to |true| forces Bidi UI menu items and keyboard shortcuts
# to be exposed, and enables the directional caret hook. By default, only
# expose it for bidi-associated system locales.
- name: bidi.browser.ui
  type: bool
  value: false
  mirror: always

#---------------------------------------------------------------------------
# Prefs starting with "browser."
#---------------------------------------------------------------------------

- name: browser.active_color
  type: String
  value: "#EE0000"
  mirror: never

- name: browser.active_color.dark
  type: String
  value: "#FF6666"
  mirror: never

- name: browser.anchor_color
  type: String
  value: "#0000EE"
  mirror: never

# If you change this, you probably also want to change
# nsXPLookAndFeel::GenericDarkColor for MozNativehyperlinktext.
- name: browser.anchor_color.dark
  type: String
  value: "#8C8CFF"
  mirror: never

# See http://dev.w3.org/html5/spec/forms.html#attr-fe-autofocus
- name: browser.autofocus
  type: bool
  value: true
  mirror: always

- name: browser.cache.disk.enable
  type: RelaxedAtomicBool
  value: true
  mirror: always

- name: browser.cache.memory.enable
  type: RelaxedAtomicBool
  value: true
  mirror: always

# Limit of recent metadata we keep in memory for faster access, in KB.
- name: browser.cache.disk.metadata_memory_limit
  type: RelaxedAtomicUint32
#ifdef NIGHTLY_BUILD
  value: 1024   # 1 MB
#else
  value: 250    # 0.25 MB
#endif
  mirror: always

# Does the user want smart-sizing?
- name: browser.cache.disk.smart_size.enabled
  type: RelaxedAtomicBool
  value: true
  mirror: always

# Disk cache capacity in kilobytes. It's used only when
# browser.cache.disk.smart_size.enabled == false
- name: browser.cache.disk.capacity
  type: RelaxedAtomicUint32
  value: 256000
  mirror: always

# -1 = determine dynamically, 0 = none, n = memory capacity in kilobytes.
- name: browser.cache.memory.capacity
  type: RelaxedAtomicInt32
  value: -1
  mirror: always

# When smartsizing is disabled we could potentially fill all disk space by
# cache data when the disk capacity is not set correctly. To avoid that we
# check the free space every time we write some data to the cache. The free
# space is checked against two limits. Once the soft limit is reached we start
# evicting the least useful entries, when we reach the hard limit writing to
# the entry fails.
- name: browser.cache.disk.free_space_soft_limit
  type: RelaxedAtomicUint32
  value: 5 * 1024   # 5MB
  mirror: always

- name: browser.cache.disk.free_space_hard_limit
  type: RelaxedAtomicUint32
  value: 1024    # 1MB
  mirror: always

# The number of chunks we preload ahead of read. One chunk currently has
# 256kB.
- name: browser.cache.disk.preload_chunk_count
  type: RelaxedAtomicUint32
  value: 4    # 1 MB of read ahead
  mirror: always

# Max-size (in KB) for entries in disk cache. Set to -1 for no limit.
# (Note: entries bigger than 1/8 of disk-cache are never cached)
- name: browser.cache.disk.max_entry_size
  type: RelaxedAtomicUint32
  value: 50 * 1024    # 50 MB
  mirror: always

# Max-size (in KB) for entries in memory cache. Set to -1 for no limit.
# (Note: entries bigger than than 90% of the mem-cache are never cached.)
- name: browser.cache.memory.max_entry_size
  type: RelaxedAtomicInt32
  value: 5 * 1024
  mirror: always

# Memory limit (in kB) for new cache data not yet written to disk. Writes to
# the cache are buffered and written to disk on background with low priority.
# With a slow persistent storage these buffers may grow when data is coming
# fast from the network. When the amount of unwritten data is exceeded, new
# writes will simply fail. We have two buckets, one for important data
# (priority) like html, css, fonts and js, and one for other data like images,
# video, etc.
# Note: 0 means no limit.
- name: browser.cache.disk.max_chunks_memory_usage
  type: RelaxedAtomicUint32
  value: 40 * 1024
  mirror: always
- name: browser.cache.disk.max_priority_chunks_memory_usage
  type: RelaxedAtomicUint32
  value: 40 * 1024
  mirror: always


# Number of seconds the cache spends writing pending data and closing files
# after shutdown has been signalled. Past that time data is not written and
# files are left open for the OS to clean up.
- name: browser.cache.max_shutdown_io_lag
  type: RelaxedAtomicUint32
  value: 2
  mirror: always

# After the max_shutdown_io_lag has passed, we will attempt to cancel
# blocking IO (on windows). The CacheIOThread may pick up more blocking
# tasks so we want to cancel those too. The main thread will be woken
# up every shutdown_io_time_between_cancellations_ms to cancel the IO
# on the other thread.
- name: browser.cache.shutdown_io_time_between_cancellations_ms
  type: RelaxedAtomicUint32
  value: 5
  mirror: always

# A percentage limit for media content type in the disk cache. When some entries
# need to be evicted and media is over the limit, it's evicted first.
- name: browser.cache.disk.content_type_media_limit
  type: RelaxedAtomicInt32
  value: 50
  mirror: always

# How often to validate document in cache
#   0 = once-per-session,
#   1 = each-time,
#   2 = never,
#   3 = when-appropriate/automatically
- name: browser.cache.check_doc_frequency
  type: RelaxedAtomicUint32
  value: 3
  mirror: always

# Compression level for cached JavaScript bytecode
#   0 = do not compress,
#   1 = minimal compression,
#   9 = maximal compression
- name: browser.cache.jsbc_compression_level
  type: RelaxedAtomicUint32
  value: 0
  mirror: always

# Whether tooltips are enabled.
- name: browser.chrome.toolbar_tips
  type: bool
  value: true
  mirror: always

# Whether tooltips are hidden on keydown.
#  0: never
#  1: always
#  2: only on non-modifier keys
- name: browser.chrome.toolbar_tips.hide_on_keydown
  type: uint32_t
#if defined(XP_WIN)
  value: 0
#else
  value: 2
#endif
  mirror: always

# DLP agent name, for display in the browser
- name: browser.contentanalysis.agent_name
  type: String
  value: "A DLP agent"
  mirror: never

# (optional) The organization name that the DLP agent should have. If this is
# non-empty and the DLP agent is not signed with this organization name,
# Firefox will fail the connection.
- name: browser.contentanalysis.client_signature
  type: String
  value: ""
  mirror: never

# Content analysis by external applications, e.g. data-loss prevention apps
- name: browser.contentanalysis.enabled
  type: bool
  value: false
  mirror: always

# What content analysis should return if there is a problem communicating
# with the agent. (see DefaultResponse enum in ContentAnalysis.h)
# Make sure these stay in sync with the out-of-range check in Policies.sys.mjs.
#
#   0: Block all requests
#   1: Warn on all requests (which lets the user decide)
#   2: Allow all requests
- name: browser.contentanalysis.default_result
  type: uint32_t
  value: 0
  mirror: always

# Is the IPC pipe to the DLP tool specific to the user or to the system?
- name: browser.contentanalysis.is_per_user
  type: bool
  value: true
  mirror: always

# Path name of pipe used to connect to a configured DLP agent.
- name: browser.contentanalysis.pipe_path_name
  type: String
  value: "path_user"
  mirror: never

# Space-separated list of regexs that are compared to URLs of resources
# being checked by content-analysis.  Resources that match are not checked
# and are always permitted.
# By default this does not check any about: page except for about:blank
# and about:srcdoc.
- name: browser.contentanalysis.allow_url_regex_list
  type: String
  value: "^about:(?!blank|srcdoc).*"
  mirror: never

# Space-separated list of regexs that are compared to URLs of resources
# being checked by content-analysis.  Resources that match are not checked
# and are always denied.
- name: browser.contentanalysis.deny_url_regex_list
  type: String
  value: ""
  mirror: never

# Should CA ignore the system setting and use silent notifications?
- name: browser.contentanalysis.silent_notifications
  type: bool
  value: false
  mirror: always

# Time (secs) after which content analysis operations are considered timed-out
- name: browser.contentanalysis.agent_timeout
  type: uint32_t
  value: 30
  mirror: always

# Should Firefox show a notification or dialog when content analysis blocks
# access?
- name: browser.contentanalysis.show_blocked_result
  type: bool
  value: true
  mirror: always

# Should Firefox bypass content analysis for pastes and drags whose source
# is the same tab?
- name: browser.contentanalysis.bypass_for_same_tab_operations
  type: bool
  value: false
  mirror: always

# Should Firefox use content analysis for clipboard operations?
# Note that this has no effect unless browser.contentanalysis.enabled
# is true.
- name: browser.contentanalysis.interception_point.clipboard.enabled
  type: bool
  value: true
  mirror: always

# Should Firefox use content analysis for drag and drop operations?
# Note that this has no effect unless browser.contentanalysis.enabled
# is true.
- name: browser.contentanalysis.interception_point.drag_and_drop.enabled
  type: bool
  value: true
  mirror: always

# Should Firefox use content analysis for file upload operations through
# a file dialog?
# Note that this has no effect unless browser.contentanalysis.enabled
# is true.
- name: browser.contentanalysis.interception_point.file_upload.enabled
  type: bool
  value: true
  mirror: always

# Should Firefox use content analysis for print operations?
# Note that this has no effect unless browser.contentanalysis.enabled
# is true.
- name: browser.contentanalysis.interception_point.print.enabled
  type: bool
  value: true
  mirror: always

# Content blocking for Enhanced Tracking Protection
- name: browser.contentblocking.database.enabled
  type: bool
  value: false
  mirror: always

# How many recent block/unblock actions per origins we remember in the
# Content Blocking log for each top-level window.
- name: browser.contentblocking.originlog.length
  type: uint32_t
  value: 32
  mirror: always

# Min font device pixel size at which to turn on high quality.
- name: browser.display.auto_quality_min_font_size
  type: RelaxedAtomicUint32
  value: 20
  mirror: always

- name: browser.display.background_color
  type: String
  value: "#FFFFFF"
  mirror: never

- name: browser.display.background_color.dark
  type: String
  value: "#1C1B22"
  mirror: never

# This preference is a bit confusing because we use the opposite
# string value in the colors dialog to indicate to users how FF HCM
# will behave.
# With resect to document colors, these values mean:
# 0 = "default" = always, except in high contrast mode
# 1 = "always"
# 2 = "never"
#
# On windows, we set this to 0, which means FF HCM will mirror OS HCM.
# Everywhere else, we set this to 1, disabling FF HCM.
- name: browser.display.document_color_use
  type: RelaxedAtomicUint32
#if defined(XP_WIN)
  value: 0
#else
  value: 1
#endif
  mirror: always
  rust: true

# 0 = always native
# 1 = never native
# other = default
- name: browser.display.windows.non_native_menus
  type: RelaxedAtomicUint32
  value: 2
  mirror: always
  rust: true

# This pref dictates whether or not backplates and background images
# are to be drawn, when in high-contrast mode:
#   false: do not draw backplates or render background images
#   true: render background images and draw backplates
# This condition is only considered when high-contrast mode is enabled
# in Firefox, ie. when the user has:
#   (1) mUseAccessibilityMode set to true (Widows high-contrast mode is on)
#       AND browser.display.document_color_use set to 0
#       (only with high-contrast themes) OR
#   (2) browser.display.document_color_use set to 2 (always)
- name: browser.display.permit_backplate
  type: RelaxedAtomicBool
  value: true
  mirror: always
  rust: true

# Whether we should suppress the background-image of the canvas (the root
# frame) if we're in forced colors mode.
#
# This is important because some sites use background-image with a plain color
# and it causes undesirable results in high-contrast mode.
#
# See bug 1614921 for example.
- name: browser.display.suppress_canvas_background_image_on_forced_colors
  type: bool
  value: true
  mirror: always

- name: browser.display.foreground_color
  type: String
  value: "#000000"
  mirror: never

- name: browser.display.foreground_color.dark
  type: String
  value: "#FBFBFE"
  mirror: never

# Determines the behavior of OS zoom settings.
#
#   0: doesn't affect rendering at all
#   1: affects full zoom (dpi, effectively).
#   2: affects text zoom.
#
# Default is (1): Historical behavior on Linux, matches other browsers on
# Windows, and generally creates more consistent rendering.
- name: browser.display.os-zoom-behavior
  type: RelaxedAtomicInt32
  value: 1
  mirror: always
  rust: true

# Whether focus rings are always shown by default.
#
# This is the initial value of nsWindowRoot::mShowFocusRings, but it can be
# overridden by system preferences.
- name: browser.display.show_focus_rings
  type: bool
  value: false
  mirror: always

# Enable showing image placeholders while image is loading or when image is broken.
- name: browser.display.show_image_placeholders
  type: bool
  value: true
  mirror: always

# Whether we should always enable focus rings after focus was moved by keyboard.
#
# This behavior matches both historical and GTK / Windows focus behavior.
#
# :focus-visible is intended to provide better heuristics than this.
- name: browser.display.always_show_rings_after_key_focus
  type: bool
  value: false
  mirror: always

# In theory: 0 = never, 1 = quick, 2 = always, though we always just use it as
# a bool!
- name: browser.display.use_document_fonts
  type: RelaxedAtomicInt32
  value: 1
  mirror: always
  rust: true

# font-family names for which we'll override use_document_fonts=0, and always
# use the specified font.
# This is to support ligature-icon fonts, which render literal strings like
# "arrow_drop_down" with an icon, even when use_document_fonts is disabled.
# If an author provides & uses such a font, and we decline to use it, we'll end
# up rendering these literal strings where the author intended an icon, which
# can cause all sorts of overlapping/unreadable content.
- name: browser.display.use_document_fonts.icon_font_allowlist
  type: String
  value: >-
    Material Icons,
    Material Icons Extended,
    Material Icons Outlined,
    Material Icons Round,
    Material Icons Sharp,
    Material Icons Two Tone,
    Google Material Icons,
    Google Material Icons Filled,
    Material Symbols Outlined,
    Material Symbols Round,
    Material Symbols Rounded,
    Material Symbols Sharp,
    Google Symbols,
    FontAwesome
  mirror: never

- name: browser.display.use_system_colors
  type: RelaxedAtomicBool
#ifdef XP_WIN
  value: true
#else
  value: false
#endif
  mirror: always

- name: browser.dom.window.dump.enabled
  type: RelaxedAtomicBool
  value: @IS_NOT_MOZILLA_OFFICIAL@
  mirror: always

# See bug 1738574
- name: browser.download.start_downloads_in_tmp_dir
  type: bool
  value: false
  mirror: always

# See bug 1747343
- name: browser.download.always_ask_before_handling_new_types
  type: bool
  value: false
  mirror: always

# See bug 1731668
- name: browser.download.enable_spam_prevention
  type: bool
  value: false
  mirror: always

# See bug 1772569
- name: browser.download.open_pdf_attachments_inline
  type: bool
  value: false
  mirror: always

# See bug 1811830
- name: browser.download.force_save_internally_handled_attachments
  type: bool
  value: false
  mirror: always

- name: browser.download.sanitize_non_media_extensions
  type: bool
  value: true
  mirror: always

# Image document's automatic image sizing.
- name: browser.enable_automatic_image_resizing
  type: bool
  value: true
  mirror: always

# Image document's click-to-resize.
- name: browser.enable_click_image_resizing
  type: bool
  value: @IS_NOT_ANDROID@
  mirror: always

- name: browser.find.ignore_ruby_annotations
  type: bool
  value: true
  mirror: always

#if defined(XP_MACOSX)
# Whether pressing Esc will exit fullscreen.
- name: browser.fullscreen.exit_on_escape
  type: bool
  value: true
  mirror: always
#endif

# The max url length we'll store in history.
#
# The default value is mostly a guess based on various facts:
#
# * IE didn't support urls longer than 2083 chars
# * Sitemaps protocol used to support a maximum of 2048 chars
# * Various SEO guides suggest to not go over 2000 chars
# * Various apps/services are known to have issues over 2000 chars
# * RFC 2616 - HTTP/1.1 suggests being cautious about depending
#   on URI lengths above 255 bytes
#
- name: browser.history.maxUrlLength
  type: uint32_t
  value: 2000
  mirror: always

# Max size of push/replaceState data parameter
- name: browser.history.maxStateObjectSize
  type: int32_t
  value: 16777216
  mirror: always

# True to collect wireframes upon navigations / pushState
- name: browser.history.collectWireframes
  type: bool
  value: false
  mirror: always

# If false, show internal error page for HTTP responses with error
# codes (4xx, 5xx) and "Content-Length": 0 instead of blank page
# See https://bugzilla.mozilla.org/show_bug.cgi?id=1325876#c32 for why this
# is disabled on Android.
- name: browser.http.blank_page_with_error_response.enabled
  type: bool
  value: true
  mirror: always

# The minimum area for a rect to be included in a wireframe, in CSS pixels.
#
# The current value of 50 is pretty arbitrary, and will be tuned as we refine
# and test the wireframing capability.
- name: browser.history.wireframeAreaThreshold
  type: uint32_t
  value: 50
  mirror: always

#if defined(XP_WIN) || defined(XP_LINUX)
  # Notify TabUnloader or send the memory pressure if the memory resource
  # notification is signaled AND the available commit space is lower than
  # this value.
-   name: browser.low_commit_space_threshold_mb
    type: RelaxedAtomicUint32
    value: 200
    mirror: always
#endif

#ifdef XP_LINUX
  # On Linux we also check available memory in comparison to total memory,
  # and use this percent value (out of 100) to determine if we are in a
  # low memory scenario.
-   name: browser.low_commit_space_threshold_percent
    type: RelaxedAtomicUint32
    value: 5
    mirror: always
#endif

# Render animations and videos as a solid color
- name: browser.measurement.render_anims_and_video_solid
  type: RelaxedAtomicBool
  value: false
  mirror: always

- name: browser.navigation.requireUserInteraction
  type: bool
  value: true
  mirror: always

# Indicates if about:newtab shows content (enabled) or just blank.
- name: browser.newtabpage.enabled
  type: bool
  value: true
  mirror: always

# Open PDFs in Edge with the --app flag if it is the default.
- name: browser.pdf.launchDefaultEdgeAsApp
  type: bool
  value: true
  mirror: always

# Maximium delay between keystrokes that will be considered typing (milliseconds).
- name: browser.places.interactions.typing_timeout_ms
  type: RelaxedAtomicUint32
  value: 3000
  mirror: always

# Maximum delay between scroll input events that will be considered a scrolling interaction (milliseconds).
- name: browser.places.interactions.scrolling_timeout_ms
  type: RelaxedAtomicUint32
  value: 5000
  mirror: always

# Number of seconds till the sponsored session is timeout.
- name: browser.places.sponsoredSession.timeoutSecs
  type: RelaxedAtomicUint32
  value: 3600
  mirror: always

# Whether to start the private browsing mode at application startup
- name: browser.privatebrowsing.autostart
  type: bool
  value: false
  mirror: always

# Force usage of in-memory (rather than file on disk) media cache for video streaming when private browsing
- name: browser.privatebrowsing.forceMediaMemoryCache
  type: bool
  value: false
  mirror: always

# Communicates the toolbar color to platform (for e.g., prefers-color-scheme).
#
# Returns whether the toolbar is dark (0), light (1), or system (2). The
# theming code overrides it if appropriate.
- name: browser.theme.toolbar-theme
  type: RelaxedAtomicUint32
  value: 2
  mirror: always

# Communicates the preferred content theme color to platform (for e.g.,
# prefers-color-scheme).
#
# dark (0), light (1), system (2), or toolbar (3).
#
# Default to "toolbar", the theming code sets it appropriately.
- name: browser.theme.content-theme
  type: RelaxedAtomicUint32
  value: 2
  mirror: always
  rust: true

# Whether the firefox titlebar respects the
# -moz-windows-accent-color-in-titlebar setting on the tab strip.
- name: browser.theme.windows.accent-color-in-tabs.enabled
  type: RelaxedAtomicBool
  value: false
  mirror: always
  rust: true

# Blocked plugin content
- name: browser.safebrowsing.blockedURIs.enabled
  type: bool
  value: true
  mirror: always

# Malware protection
- name: browser.safebrowsing.malware.enabled
  type: bool
  value: true
  mirror: always

# Phishing protection
- name: browser.safebrowsing.phishing.enabled
  type: bool
  value: true
  mirror: always

# Maximum size for an array to store the safebrowsing prefixset.
- name: browser.safebrowsing.prefixset_max_array_size
  type: RelaxedAtomicUint32
  value: 512*1024
  mirror: always

# SessionStore prefs
# Maximum number of bytes of DOMSessionStorage data we collect per origin.
- name: browser.sessionstore.dom_storage_limit
  type: uint32_t
  value: 2048
  mirror: always

# Maximum number of characters of form field data per field we collect.
- name: browser.sessionstore.dom_form_limit
  type: uint32_t
  value: 1024*1024*2
  mirror: always

# Maximum number of characters of form data we collect per origin.
- name: browser.sessionstore.dom_form_max_limit
  type: uint32_t
  value: 1024*1024*50
  mirror: always

# Minimal interval between two save operations in milliseconds (while the user is active).
- name: browser.sessionstore.interval
  type: RelaxedAtomicUint32
  value: 15000
  mirror: always

# Disable collection of data for session store using the native collector code,
# instead use the older implementation that's not compatible with session
# history in the parent (and thus Fission).
- name: browser.sessionstore.disable_platform_collection
  type: bool
#if defined(MOZ_THUNDERBIRD)
  value: true
#else
  value: false
#endif
  mirror: once
  do_not_use_directly: true

#if defined(NIGHTLY_BUILD) || defined(MOZ_DEV_EDITION) || defined(DEBUG)
- name: browser.startup.record
  type: bool
  value: false
  mirror: always
#endif

# Causes SessionStore to ignore non-final update messages from
# browser tabs that were not caused by a flush from the parent.
# This is a testing flag and should not be used by end-users.
- name: browser.sessionstore.debug.no_auto_updates
  type: RelaxedAtomicBool
  value: false
  mirror: always

# If set, when a link is opened to a new tab, do not switch to the new tab.
#
# This pref is used when the link is opened with "Open Link in New Tab",
# middle-click, etc.
#
# See also browser.tabs.loadDivertedInBackground, which is used when the website
# diverts the link into a new tab.
- name: browser.tabs.loadInBackground
  type: bool
  value: true
  mirror: always

# Whether we should draw the tabs on top of the titlebar.
#
# no (0), yes (1), or default (2), which is true everywhere except Linux.
- name: browser.tabs.inTitlebar
  type: int32_t
  value: 2
  mirror: always

# If set, use DocumentChannel to directly initiate loads entirely
# from parent-process BrowsingContexts
- name: browser.tabs.documentchannel.parent-controlled
  type: bool
  value: false
  mirror: always

# If set, middle clicking on a link opens the link in a new tab.
- name: browser.tabs.opentabfor.middleclick
  type: bool
  value: true
  mirror: always

# Testing-only pref which makes data: URIs be loaded in a "web" content process
# instead of within a process based on the URI's loader.
- name: browser.tabs.remote.dataUriInDefaultWebProcess
  type: bool
  value: false
  mirror: always

# Testing-only pref to force system-triggered about:blank loads to not change
# content processes. This is used for performance tests which load an
# about:blank document between navigations for historical reasons to avoid
# unnecessary process switches.
- name: browser.tabs.remote.systemTriggeredAboutBlankAnywhere
  type: bool
  value: false
  mirror: always

# Testing-only pref to cause PBrowser creation for a specific BrowsingContext to
# fail, to test the errored codepath.
- name: browser.tabs.remote.testOnly.failPBrowserCreation.enabled
  type: bool
  value: false
  mirror: always

- name: browser.tabs.remote.force-paint
  type: bool
  value: true
  mirror: always

# When this pref is enabled document loads with a mismatched
# Cross-Origin-Embedder-Policy header will fail to load
- name: browser.tabs.remote.useCrossOriginEmbedderPolicy
  type: RelaxedAtomicBool
  value: true
  mirror: always

# This pref makes `credentialless` a valid value for
# Cross-Origin-Embedder-Policy header
- name: browser.tabs.remote.coep.credentialless
  type: RelaxedAtomicBool
#if defined(ANDROID)
  value: @IS_NIGHTLY_BUILD@
#else
  value: true
#endif
  mirror: always
  do_not_use_directly: true

# When this pref is enabled top level loads with a mismatched
# Cross-Origin-Opener-Policy header will be loaded in a separate process.
- name: browser.tabs.remote.useCrossOriginOpenerPolicy
  type: RelaxedAtomicBool
  value: true
  mirror: always

# When this pref is enabled then we use a separate content process for
# top-level load of file:// URIs
- name: browser.tabs.remote.separateFileUriProcess
  type: RelaxedAtomicBool
#if !defined(ANDROID)
  value: true
#else
  value: false
#endif
  mirror: always

# Pref to control whether we use a separate privileged content process
# for certain mozilla webpages (which are listed in the pref
# browser.tabs.remote.separatedMozillaDomains).
- name: browser.tabs.remote.separatePrivilegedMozillaWebContentProcess
  type: bool
  value: false
  mirror: always

# Whether or not process selection for subframes will prefer re-using an
# existing content process over creating a new one. Enabling this pref should
# reduce the number of processes allocated for non-first-party domains if
# dom.ipc.processCount.webIsolated > 1.
- name: browser.tabs.remote.subframesPreferUsed
  type: bool
  value: true
  mirror: always

# When this pref is enabled, opaque response is only allowed to enter the
# content process if it's a response for media (audio, image, video), CSS, or
# JavaScript.
- name: browser.opaqueResponseBlocking
  type: RelaxedAtomicBool
#if defined(ANDROID)
  value: false
#else
  value: true
#endif
  mirror: always

# When this pref is enabled, the JS validator will be enabled for
# ORB.
- name: browser.opaqueResponseBlocking.javascriptValidator
  type: bool
  value: true
  mirror: always

# This pref controls how filtering of opaque responses for calls to `Window.fetch`.
# (and similar) is performed in the parent process. This is intended to make sure
# that data that would be filtered in a content process never actually reaches that
# content process.
# See https://fetch.spec.whatwg.org/#concept-filtered-response-opaque
#   0) Don't filter in the parent process at all, and let content processes handle
#      opaque filtering. Regardless of if ORB is enabled or not. N.B. that if ORB
#      is enabled opaque responses will be blocked.
#   1) If ORB is enabled, in the parent process, filter the responses that ORB allows.
#      N.B. any responses ORB doesn't allow will not send data to a content process
#      since they will return a NetworkError. If the request is allowed by ORB, the
#      internal response will be intact and sent to the content process as is.
#   2) If ORB is enabled, in the parent process, filter the responses that ORB blocks,
#      when they were issued by `Window.fetch` (and similar).
#   3) Filter all responses in the parent, regardless of if ORB is enabled or not.
#      This means that opaque responses coming from `Window.fetch` won't even be
#      considered for being blocked by ORB.
- name: browser.opaqueResponseBlocking.filterFetchResponse
  type: uint32_t
  value: 2
  mirror: always
  do_not_use_directly: true

# This pref controls how exceptions to opaque response blocking for the media MIME types
# `audio/*` and `video/*` are handled. This is because step 8 in the spec that performs
# audio or video type pattern matching cannot handle certain MIME types (yet).
# See https://whatpr.org/fetch/1442.html#orb-algorithm
#   0) No exceptions
#   1) Some exceptions, explicitly hard coded in `IsOpaqueSafeListedSpecBreakingMIMEType`
#   2) Allow all MIME types beginning with `audio/*` or `video/*`.
- name: browser.opaqueResponseBlocking.mediaExceptionsStrategy
  type: uint32_t
  value: 1
  mirror: always
  do_not_use_directly: true

# When true, zooming will be enabled on all sites, even ones that declare
# user-scalable=no or use touch-action to disable pinch gestures.
- name: browser.ui.zoom.force-user-scalable
  type: RelaxedAtomicBool
  value: false
  mirror: always

- name: browser.viewport.desktopWidth
  type: RelaxedAtomicInt32
  value: 980
  mirror: always

- name: browser.visited_color
  type: String
  value: "#551A8B"
  mirror: never

# If you change this, you probably also want to change
# nsXPLookAndFeel::GenericDarkColor for MozNativevisitedhyperlinktext.
- name: browser.visited_color.dark
  type: String
  value: "#FFADFF"
  mirror: never

# When true, soft reloads (including location.reload())
# will only froce validate the top level document, subresources will
# be loaded normally as-if users normally navigated to the page.
- name: browser.soft_reload.only_force_validate_top_level_document
  type: bool
  value: true
  mirror: always

# Whether or not to save and restore zoom levels on a per-site basis.
- name: browser.zoom.siteSpecific
  type: bool
  value: @IS_NOT_ANDROID@
  mirror: always

# Whether we block opening pickers from background tabs.
- name: browser.disable_pickers_background_tabs
  type: RelaxedAtomicBool
  value: true
  mirror: always

# Whether we block opening pickers from hidden extension pages in WebExtensions.
# This includes background pages and devtools pages, but not background tabs.
- name: browser.disable_pickers_in_hidden_extension_pages
  type: RelaxedAtomicBool
  value: @IS_NIGHTLY_BUILD@
  mirror: always

#---------------------------------------------------------------------------
# Prefs starting with "channelclassifier."
#---------------------------------------------------------------------------

- name: channelclassifier.allowlist_example
  type: bool
  value: false
  mirror: always

#---------------------------------------------------------------------------
# Prefs starting with "clipboard."
#---------------------------------------------------------------------------

# Clipboard behavior.
- name: clipboard.autocopy
  type: bool
#if !defined(ANDROID) && !defined(XP_MACOSX) && defined(XP_UNIX)
  value: true
#else
  value: false
#endif
  mirror: always

#ifdef XP_WIN
  # allow to copy clipboard data to Clipboard History/Cloud
  # (used on sensitive data in about:logins and Private Browsing)
-   name: clipboard.copyPrivateDataToClipboardCloudOrHistory
    type: bool
    value: false
    mirror: always

  # Whether to put a file promise onto the clipboard when copying images on Windows
-   name: clipboard.imageAsFile.enabled
    type: bool
    value: @IS_NOT_EARLY_BETA_OR_EARLIER@
    mirror: always

  # On Windows, whether to add PNG before BMP (CF_DIB) in the list of supported
  # formats when copying an image to the clipboard.
-   name: clipboard.copy_image.as_png
    type: RelaxedAtomicBool
    value: true
    mirror: always

  # On Windows, whether we encode an image as PNG (instead of the previous
  # default of BMP) when an application to which we are copying an image
  # requests that it be provided as a temporary file (CF_HDROP).
-   name: clipboard.copy_image_file.as_png
    type: RelaxedAtomicBool
    value: true
    mirror: always
#endif

#---------------------------------------------------------------------------
# Prefs starting with "consoleservice."
#---------------------------------------------------------------------------

#if defined(ANDROID)
  # Disable sending console to logcat on release builds.
-   name: consoleservice.logcat
    type: RelaxedAtomicBool
    value: @IS_NOT_RELEASE_OR_BETA@
    mirror: always
#endif

#---------------------------------------------------------------------------
# Prefs starting with "content."
#---------------------------------------------------------------------------

- name: content.cors.disable
  type: bool
  value: false
  mirror: always

# Back off timer notification after count.
# -1 means never.
- name: content.notify.backoffcount
  type: int32_t
  value: -1
  mirror: always

# Notification interval in microseconds.
# The notification interval has a dramatic effect on how long it takes to
# initially display content for slow connections. The current value
# provides good incremental display of content without causing an increase
# in page load time. If this value is set below 1/10 of a second it starts
# to impact page load performance.
# See bugzilla bug 72138 for more info.
- name: content.notify.interval
  type: int32_t
  value: 120000
  mirror: always

# Do we notify based on time?
- name: content.notify.ontimer
  type: bool
  value: true
  mirror: always

# How many times to deflect in interactive mode.
- name: content.sink.interactive_deflect_count
  type: int32_t
  value: 0
  mirror: always

# How many times to deflect in perf mode.
- name: content.sink.perf_deflect_count
  type: int32_t
  value: 200
  mirror: always

# Parse mode for handling pending events.
# 0 = don't check for pending events
# 1 = don't deflect if there are pending events
# 2 = bail if there are pending events
- name: content.sink.pending_event_mode
  type: int32_t
#ifdef XP_WIN
  value: 1
#else
  value: 0
#endif
  mirror: always

# How often to probe for pending events. 1 = every token.
- name: content.sink.event_probe_rate
  type: int32_t
  value: 1
  mirror: always

# How long to stay off the event loop in interactive mode (microseconds).
- name: content.sink.interactive_parse_time
  type: int32_t
  value: 3000
  mirror: always

# How long to stay off the event loop in perf mode.
- name: content.sink.perf_parse_time
  type: int32_t
  value: 30000
  mirror: always

#  How long to be in interactive mode after an event.
- name: content.sink.interactive_time
  type: uint32_t
  value: 750000
  mirror: always

# How long to stay in perf mode after initial loading.
- name: content.sink.initial_perf_time
  type: uint32_t
  value: 2000000
  mirror: always

# Should we switch between perf-mode and interactive-mode?
# 0 = Switch
# 1 = Interactive mode
# 2 = Perf mode
- name: content.sink.enable_perf_mode
  type: int32_t
  value: 0
  mirror: always

#---------------------------------------------------------------------------
# Prefs starting with "converter."
#---------------------------------------------------------------------------

# Whether we include ruby annotation in the text despite whether it
# is requested. This was true because we didn't explicitly strip out
# annotations. Set false by default to provide a better behavior, but
# we want to be able to pref-off it if user doesn't like it.
- name: converter.html2txt.always_include_ruby
  type: bool
  value: false
  mirror: always

#---------------------------------------------------------------------------
# Prefs starting with "cookiebanners."
#---------------------------------------------------------------------------

# Controls the cookie banner handling mode in normal browsing.
# 0: Disables all cookie banner handling.
# 1: Reject-all if possible, otherwise do nothing.
# 2: Reject-all if possible, otherwise accept-all.
- name: cookiebanners.service.mode
  type: uint32_t
  value: 0
  mirror: always

# When set to true, cookie banners are detected and detection events are
# dispatched, but they will not be handled. Requires the service to be enabled
# for the desired mode via pref cookiebanners.service.mode*
- name: cookiebanners.service.detectOnly
  type: bool
  value: false
  mirror: always

# Controls the cookie banner handling mode in private browsing. Same mode
# options as the normal browsing pref above.
- name: cookiebanners.service.mode.privateBrowsing
  type: uint32_t
  value: 0
  mirror: always

# Enables use of global CookieBannerRules, which apply to all sites. This is
# used for click rules that can handle common Consent Management Providers
# (CMP).
# Enabling this (when the cookie handling feature is enabled) may negatively
# impact site performance since it requires us to run rule-defined query
# selectors for every page.
- name: cookiebanners.service.enableGlobalRules
  type: bool
  value: true
  mirror: always

# Whether global rules are allowed to run in sub-frames. Running query selectors
# in every sub-frame may negatively impact performance, but is required for some
# CMPs.
- name: cookiebanners.service.enableGlobalRules.subFrames
  type: bool
  value: true
  mirror: always

# Enables the cookie banner cookie injector. The cookie banner cookie injector
# depends on the `cookiebanners.service.mode` pref above.
- name: cookiebanners.cookieInjector.enabled
  type: bool
  value: true
  mirror: always

# By default, how many seconds in the future cookies should expire after they
# have been injected. Defaults to 12 months. Individual cookie rules may
# override this.
- name: cookiebanners.cookieInjector.defaultExpiryRelative
  type: uint32_t
  value: 31536000
  mirror: always

# How many times per site and site load to check for cookie banners after which
# the mechanism is considered on cooldown for the site in the current browsing
# session. If the threshold is set to zero, banner clicking won't be considered
# as being on cooldown regardless of how many times the site is loaded. The
# maximum value for the retry is 255, any value over than that will be capped.
- name: cookiebanners.bannerClicking.maxTriesPerSiteAndSession
  type: uint32_t
  value: 3
  mirror: always

#---------------------------------------------------------------------------
# Prefs starting with "datareporting."
#---------------------------------------------------------------------------

# Do note that the toggle on Fenix and Focus does NOT reflect to this pref.
- name: datareporting.healthreport.uploadEnabled
  type: RelaxedAtomicBool
  value: false
  mirror: always
  rust: true

#---------------------------------------------------------------------------
# Prefs starting with "device."
#---------------------------------------------------------------------------

# Is support for the device sensors API enabled?
- name: device.sensors.enabled
  type: bool
  value: true
  mirror: always

# KaiOS-only, see https://bugzilla.mozilla.org/show_bug.cgi?id=1699707#c10
- name: device.sensors.ambientLight.enabled
  type: bool
  value: false
  mirror: always

- name: device.sensors.motion.enabled
  type: bool
--> --------------------

--> maximum size reached

--> --------------------

[ Dauer der Verarbeitung: 0.44 Sekunden  (vorverarbeitet)  ]