зеркало из https://github.com/mozilla/gecko-dev.git
10736 строки
284 KiB
YAML
10736 строки
284 KiB
YAML
# 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
|
|
#
|
|
# - `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, or `String`. 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.font-display.enabled")`.
|
|
#
|
|
# 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
|
|
|
|
#ifdef ANDROID
|
|
#define IS_ANDROID true
|
|
#define IS_NOT_ANDROID false
|
|
#else
|
|
#define IS_ANDROID false
|
|
#define IS_NOT_ANDROID true
|
|
#endif
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "accessibility."
|
|
#---------------------------------------------------------------------------
|
|
|
|
- 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.ARIAReflection.enabled
|
|
type: bool
|
|
value: false
|
|
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
|
|
#ifdef XP_WIN
|
|
# Linux and macOS turn on system level notification as default, but Windows is
|
|
# disabled due to instability (dependencies of bug 1497425).
|
|
value: false
|
|
#else
|
|
value: true
|
|
#endif
|
|
mirror: always
|
|
|
|
|
|
#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: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: android.touch_resampling.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
#endif
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "apz."
|
|
# The apz prefs are explained in AsyncPanZoomController.cpp
|
|
#---------------------------------------------------------------------------
|
|
|
|
- name: apz.scrollbarbuttonrepeat.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
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.nonwr.activate_all_scroll_frames
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: apz.nonwr.activate_all_scroll_frames_when_fission
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
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.allow_immediate_handoff
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: apz.allow_zooming
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
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.
|
|
# 0 = FREE (No locking at all)
|
|
# 1 = STANDARD (Once locked, remain locked until scrolling ends)
|
|
# 2 = STICKY (Allow lock to be broken, with hysteresis)
|
|
- name: apz.axis_lock.mode
|
|
type: RelaxedAtomicInt32
|
|
value: 2
|
|
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.initial.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
|
|
|
|
# new scrollbar code for desktop zooming
|
|
- name: apz.force_disable_desktop_zooming_scrollbars
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
#ifdef MOZ_WIDGET_GTK
|
|
- name: apz.gtk.kinetic_scroll.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: apz.gtk.touchpad_pinch.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.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.mvm.force-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: 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.paint_skipping.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: apz.peek_messages.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Fetch displayport updates early from the message queue.
|
|
- name: apz.pinch_lock.mode
|
|
type: RelaxedAtomicInt32
|
|
value: 1
|
|
mirror: always
|
|
|
|
- name: apz.pinch_lock.scroll_lock_threshold
|
|
type: AtomicFloat
|
|
value: 1.0f / 32.0f # 1/32 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: 50 # milliseconds
|
|
mirror: once
|
|
|
|
- name: apz.popups.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
|
|
|
|
- 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_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.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
|
|
value: 250
|
|
mirror: always
|
|
|
|
- name: apz.scale_repaint_delay_ms
|
|
type: RelaxedAtomicInt32
|
|
value: 500
|
|
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
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "browser."
|
|
#---------------------------------------------------------------------------
|
|
|
|
- name: browser.active_color
|
|
type: String
|
|
value: "#EE0000"
|
|
mirror: never
|
|
|
|
- name: browser.anchor_color
|
|
type: String
|
|
value: "#0000EE"
|
|
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.offline.enable
|
|
type: bool
|
|
value: @IS_NOT_EARLY_BETA_OR_EARLIER@
|
|
mirror: always
|
|
|
|
- name: browser.cache.offline.storage.enable
|
|
type: bool
|
|
value: false
|
|
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
|
|
value: 250 # 0.25 MB
|
|
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
|
|
|
|
# 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
|
|
|
|
- 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
|
|
|
|
- name: browser.display.background_color
|
|
type: String
|
|
value: "#FFFFFF"
|
|
mirror: never
|
|
|
|
# 0 = always, except in high contrast mode
|
|
# 1 = always
|
|
# 2 = never
|
|
#
|
|
# Default to 0 on windows, 1 elsewhere.
|
|
- name: browser.display.document_color_use
|
|
type: RelaxedAtomicUint32
|
|
#ifdef XP_WIN
|
|
value: 0
|
|
#else
|
|
value: 1
|
|
#endif
|
|
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.focus_ring_on_anything
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: browser.display.focus_ring_width
|
|
type: uint32_t
|
|
value: 1
|
|
mirror: always
|
|
|
|
- name: browser.display.focus_background_color
|
|
type: String
|
|
value: "#117722"
|
|
mirror: never
|
|
|
|
# Focus ring border style.
|
|
# 0 = solid border, 1 = dotted border
|
|
- name: browser.display.focus_ring_style
|
|
type: uint32_t
|
|
value: 1
|
|
mirror: always
|
|
|
|
- name: browser.display.focus_text_color
|
|
type: String
|
|
value: "#ffffff"
|
|
mirror: never
|
|
- name: browser.display.foreground_color
|
|
type: String
|
|
value: "#000000"
|
|
mirror: never
|
|
|
|
# Whether focus rings are always shown by default.
|
|
#
|
|
# This is the initial value of nsWindowRoot::mShowFocusRings, but it can be
|
|
# overridden by system preferences. For Windows, we start with default-true,
|
|
# and by default the UISF_HIDEFOCUS message comes by and sets it to false.
|
|
- name: browser.display.show_focus_rings
|
|
type: bool
|
|
#ifndef XP_WIN
|
|
value: false
|
|
#else
|
|
value: true
|
|
#endif
|
|
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
|
|
|
|
- name: browser.display.use_focus_colors
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: browser.display.use_system_colors
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: browser.dom.window.dump.enabled
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NOT_MOZILLA_OFFICIAL@
|
|
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
|
|
|
|
# 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
|
|
|
|
# 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: false
|
|
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
|
|
|
|
# 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
|
|
|
|
# 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
|
|
|
|
# Password protection
|
|
- name: browser.safebrowsing.passwords.enabled
|
|
type: bool
|
|
value: false
|
|
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
|
|
|
|
# ContentSessionStore 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
|
|
|
|
# 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
|
|
|
|
- name: browser.tabs.remote.desktopbehavior
|
|
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
|
|
#if !defined(ANDROID)
|
|
value: true
|
|
#else
|
|
value: false # Blocked by DocumentChannel, see Bug 1589982.
|
|
#endif
|
|
mirror: always
|
|
|
|
# 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
|
|
#if !defined(ANDROID)
|
|
value: true
|
|
#else
|
|
value: false # Blocked by DocumentChannel, see Bug 1589982.
|
|
#endif
|
|
mirror: always
|
|
|
|
# When true, zooming will be enabled on all sites, even ones that declare
|
|
# user-scalable=no.
|
|
- name: browser.ui.zoom.force-user-scalable
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: browser.underline_anchors
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: browser.viewport.desktopWidth
|
|
type: RelaxedAtomicInt32
|
|
value: 980
|
|
mirror: always
|
|
|
|
- name: browser.visited_color
|
|
type: String
|
|
value: "#551A8B"
|
|
mirror: never
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "canvas."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Limit for the canvas image cache. 0 means unlimited.
|
|
- name: canvas.image.cache.limit
|
|
type: int32_t
|
|
value: 0
|
|
mirror: always
|
|
|
|
# Add support for canvas path objects
|
|
- name: canvas.path.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: canvas.capturestream.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for CanvasRenderingContext2D.filter enabled?
|
|
- name: canvas.filters.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Provide ability to turn on support for canvas focus rings.
|
|
- name: canvas.focusring.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for CanvasRenderingContext2D's hitRegion APIs enabled?
|
|
- name: canvas.hitregions.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Is support for CanvasRenderingContext2D's createConicGradient API enabled?
|
|
- name: canvas.createConicGradient.enabled
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# Provide ability to turn on support for canvas mozGetAsFile API.
|
|
- name: canvas.mozgetasfile.enabled
|
|
type: bool
|
|
value: false
|
|
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
|
|
|
|
#---------------------------------------------------------------------------
|
|
# 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.
|
|
- 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: 360000
|
|
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 "datareporting."
|
|
#---------------------------------------------------------------------------
|
|
|
|
- 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
|
|
|
|
- name: device.sensors.ambientLight.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: device.sensors.motion.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: device.sensors.orientation.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: device.sensors.proximity.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: device.sensors.test.events
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "devtools."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Tells if DevTools have been explicitely enabled by the user. This pref
|
|
# allows to disable all features related to DevTools for users that never use
|
|
# them. Until bug 1361080 lands, we always consider them enabled.
|
|
- name: devtools.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: devtools.console.stdout.chrome
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NOT_MOZILLA_OFFICIAL@
|
|
mirror: always
|
|
|
|
- name: devtools.console.stdout.content
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: devtools.toolbox.force-chrome-prefs
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "docshell."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Used to indicate whether session history listeners should be notified
|
|
# about content viewer eviction. Used only for testing.
|
|
- name: docshell.shistory.testing.bfevict
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# If true, pages with an opener won't be bfcached.
|
|
- name: docshell.shistory.bfcache.require_no_opener
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# If true, page with beforeunload or unload event listeners can be bfcached.
|
|
- name: docshell.shistory.bfcache.allow_unload_listeners
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "dom."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Whether window.mozPaintCount is exposed to the web.
|
|
- name: dom.mozPaintCount.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Allow cut/copy
|
|
- name: dom.allow_cut_copy
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: dom.allow_XUL_XBL_for_file
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Checks if offscreen animation throttling is enabled.
|
|
- name: dom.animations.offscreen-throttling
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for automatically removing replaced filling animations enabled?
|
|
- name: dom.animations-api.autoremove.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for composite operations from the Web Animations API enabled?
|
|
- name: dom.animations-api.compositing.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for the core interfaces of Web Animations API enabled?
|
|
- name: dom.animations-api.core.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for Document.getAnimations() and Element.getAnimations()
|
|
# supported?
|
|
- name: dom.animations-api.getAnimations.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for animations from the Web Animations API without 0%/100%
|
|
# keyframes enabled?
|
|
- name: dom.animations-api.implicit-keyframes.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for timelines from the Web Animations API enabled?
|
|
- name: dom.animations-api.timelines.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Synchronize transform animations with geometric animations on the
|
|
# main thread.
|
|
- name: dom.animations.mainthread-synchronization-with-geometric-animations
|
|
type: bool
|
|
value: @IS_NOT_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# Is support for AudioWorklet enabled?
|
|
- name: dom.audioworklet.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for Navigator.getBattery enabled?
|
|
- name: dom.battery.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Block multiple external protocol URLs in iframes per single event.
|
|
- name: dom.block_external_protocol_in_iframes
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Block Insecure downloads from Secure Origins
|
|
- name: dom.block_download_insecure
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# Block all downloads in iframes with the sandboxed attribute
|
|
- name: dom.block_download_in_sandboxed_iframes
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Block multiple window.open() per single event.
|
|
- name: dom.block_multiple_popups
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# The maximum number of popup that is allowed to be opened. Set to -1 for no
|
|
# limit.
|
|
- name: dom.popup_maximum
|
|
type: int32_t
|
|
value: 20
|
|
mirror: always
|
|
|
|
# Whether window.location.reload() and window.history.go(0) should be blocked
|
|
# if called directly from a window resize event handler.
|
|
#
|
|
# This used to be necessary long ago to prevent terrible UX when using stuff
|
|
# like TypeAheadFind (bug 258917), but it also causes compat issues on mobile
|
|
# (bug 1570566).
|
|
#
|
|
# So for now disable it on Android and Desktop Nightly, to see if we have any
|
|
# desktop regression before removing it completely. Note that this means that
|
|
# non-nightly RDM behaves different than Android in this case.
|
|
- name: dom.block_reload_from_resize_event_handler
|
|
type: bool
|
|
#if defined(MOZ_WIDGET_ANDROID) || defined(NIGHTLY_BUILD)
|
|
value: false
|
|
#else
|
|
value: true
|
|
#endif
|
|
mirror: always
|
|
|
|
# SW Cache API
|
|
- name: dom.caches.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: dom.caches.testing.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Disable capture attribute for input elements; only supported on GeckoView.
|
|
- name: dom.capture.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Allow control characters appear in composition string.
|
|
# When this is false, control characters except
|
|
# CHARACTER TABULATION (horizontal tab) are removed from
|
|
# both composition string and data attribute of compositionupdate
|
|
# and compositionend events.
|
|
- name: dom.compositionevent.allow_control_characters
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Is support for CSSPseudoElement enabled?
|
|
- name: dom.css_pseudo_element.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# After how many seconds we allow external protocol URLs in iframe when not in
|
|
# single events
|
|
- name: dom.delay.block_external_protocol_in_iframes
|
|
type: uint32_t
|
|
value: 10 # in seconds
|
|
mirror: always
|
|
|
|
# Whether the above pref has any effect at all.
|
|
- name: dom.delay.block_external_protocol_in_iframes.enabled
|
|
type: bool
|
|
value: @IS_NOT_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# HTML <dialog> element
|
|
- name: dom.dialog_element.enabled
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# Only propagate the open window click permission if the setTimeout() is equal
|
|
# to or less than this value.
|
|
- name: dom.disable_open_click_delay
|
|
type: int32_t
|
|
value: 1000
|
|
mirror: always
|
|
|
|
- name: dom.disable_open_during_load
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.disable_beforeunload
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.require_user_interaction_for_beforeunload
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# If set this to true, `Document.execCommand` may be performed nestedly.
|
|
# Otherwise, nested calls just return false.
|
|
- name: dom.document.exec_command.nested_calls_allowed
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.enable_window_print
|
|
type: bool
|
|
value: @IS_NOT_ANDROID@
|
|
mirror: always
|
|
|
|
- name: dom.element.transform-getters.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Is support for Performance.mozMemory enabled?
|
|
- name: dom.enable_memory_stats
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Enable Performance API
|
|
# Whether nonzero values can be returned from performance.timing.*
|
|
- name: dom.enable_performance
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Enable Performance Observer API
|
|
- name: dom.enable_performance_observer
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether resource timing will be gathered and returned by performance.GetEntries*
|
|
- name: dom.enable_resource_timing
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether event timing will be gathered and returned by performance observer*
|
|
- name: dom.enable_event_timing
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# Whether performance.GetEntries* will contain an entry for the active document
|
|
- name: dom.enable_performance_navigation_timing
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# If this is true, it's allowed to fire "cut", "copy" and "paste" events.
|
|
# Additionally, "input" events may expose clipboard content when inputType
|
|
# is "insertFromPaste" or something.
|
|
- name: dom.event.clipboardevents.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether touch event listeners are passive by default.
|
|
- name: dom.event.default_to_passive_touch_listeners
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether wheel listeners are passive by default.
|
|
- name: dom.event.default_to_passive_wheel_listeners
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether WheelEvent should return pixels instead of lines for
|
|
# WheelEvent.deltaX/Y/Z, when deltaMode hasn't been checked.
|
|
#
|
|
# Other browsers don't use line deltas and websites forget to check for it, see
|
|
# bug 1392460.
|
|
- name: dom.event.wheel-deltaMode-lines.disabled
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# Mostly for debugging. Whether we should do the same as
|
|
# dom.event.wheel-deltaMode-lines.disabled, but unconditionally rather than
|
|
# only when deltaMode hasn't been checked.
|
|
- name: dom.event.wheel-deltaMode-lines.always-disabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# When dom.event.wheel-deltaMode-lines.disabled is true, this is the lines to
|
|
# pixels multiplier that gets used.
|
|
#
|
|
# The value here is taken from PIXELS_PER_LINE_SCALE from pdf.js.
|
|
- name: dom.event.wheel-deltaMode-lines-to-pixel-scale
|
|
type: uint32_t
|
|
value: 30
|
|
mirror: always
|
|
|
|
#if defined(XP_MACOSX)
|
|
# Whether to disable treating ctrl click as right click
|
|
- name: dom.event.treat_ctrl_click_as_right_click.disabled
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
#endif
|
|
|
|
# Whether .offset{X,Y} for events targeted at SVG nodes returns bounds relative
|
|
# to the outer SVG.
|
|
- name: dom.events.offset-in-svg-relative-to-svg-root
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Enable clipboard readText() and writeText() by default
|
|
- name: dom.events.asyncClipboard
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Disable ClipboardItem and clipboard.read/write by default
|
|
- name: dom.events.asyncClipboard.clipboardItem
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Should only be enabled in tests.
|
|
# Access with Clipboard::IsTestingPrefEnabled().
|
|
- name: dom.events.testing.asyncClipboard
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
do_not_use_directly: true
|
|
|
|
# This pref controls whether or not the `protected` dataTransfer state is
|
|
# enabled. If the `protected` dataTransfer stae is disabled, then the
|
|
# DataTransfer will be read-only whenever it should be protected, and will not
|
|
# be disconnected after a drag event is completed.
|
|
- name: dom.events.dataTransfer.protected.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# User interaction timer interval, in ms
|
|
- name: dom.events.user_interaction_interval
|
|
type: uint32_t
|
|
value: 5000
|
|
mirror: always
|
|
|
|
# Whether to try to compress touchmove events on IPC layer.
|
|
- name: dom.events.compress.touchmove
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to expose test interfaces of various sorts
|
|
- name: dom.expose_test_interfaces
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.fetchObserver.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Allow the content process to create a File from a path. This is allowed just
|
|
# on parent process, on 'file' Content process, or for testing.
|
|
- name: dom.file.createInChild
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Support @autocomplete values for form autofill feature.
|
|
- name: dom.forms.autocomplete.formautofill
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Only trusted submit event could trigger form submission.
|
|
- name: dom.forms.submit.trusted_event_only
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# This pref just controls whether we format the number with grouping separator
|
|
# characters when the internal value is set or updated. It does not stop the
|
|
# user from typing in a number and using grouping separators.
|
|
- name: dom.forms.number.grouping
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether the Gamepad API is enabled
|
|
- name: dom.gamepad.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is Gamepad Extension API enabled?
|
|
- name: dom.gamepad.extensions.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is LightIndicator API enabled in Gamepad Extension API?
|
|
- name: dom.gamepad.extensions.lightindicator
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Is MultiTouch API enabled in Gamepad Extension API?
|
|
- name: dom.gamepad.extensions.multitouch
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Is Gamepad vibrate haptic feedback function enabled?
|
|
- name: dom.gamepad.haptic_feedback.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: dom.gamepad.non_standard_events.enabled
|
|
type: bool
|
|
value: @IS_NOT_RELEASE_OR_BETA@
|
|
mirror: always
|
|
|
|
- name: dom.gamepad.test.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# W3C draft ImageCapture API
|
|
- name: dom.imagecapture.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# <img loading="lazy">
|
|
#
|
|
# See https://github.com/whatwg/html/pull/3752
|
|
- name: dom.image-lazy-loading.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# The root margin for image lazy loading, defined as four (value, percentage)
|
|
# pairs.
|
|
#
|
|
# (0px, 0px, 0px, 0px) by default, for now. We could also consider an
|
|
# adaptative version of this.
|
|
- name: dom.image-lazy-loading.root-margin.top
|
|
type: float
|
|
value: 300
|
|
mirror: always
|
|
|
|
- name: dom.image-lazy-loading.root-margin.top.percentage
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.image-lazy-loading.root-margin.bottom
|
|
type: float
|
|
value: 300
|
|
mirror: always
|
|
|
|
- name: dom.image-lazy-loading.root-margin.bottom.percentage
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.image-lazy-loading.root-margin.left
|
|
type: float
|
|
value: 300
|
|
mirror: always
|
|
|
|
- name: dom.image-lazy-loading.root-margin.left.percentage
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.image-lazy-loading.root-margin.right
|
|
type: float
|
|
value: 300
|
|
mirror: always
|
|
|
|
- name: dom.image-lazy-loading.root-margin.right.percentage
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Enable passing the "storage" option to indexedDB.open.
|
|
- name: dom.indexedDB.storageOption.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Enable indexedDB in private browsing mode.
|
|
- name: dom.indexedDB.privateBrowsing.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.input_events.beforeinput.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether innerWidth / innerHeight return rounded or fractional sizes.
|
|
#
|
|
# NOTE(emilio): Fractional sizes are not web-compatible, see the regressions
|
|
# from bug 1676843, but we want to expose the fractional sizes (probably in
|
|
# another API) one way or another, see [1], so we're keeping the code for the
|
|
# time being.
|
|
#
|
|
# [1]: https://github.com/w3c/csswg-drafts/issues/5260
|
|
- name: dom.innerSize.rounded
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether we conform to Input Events Level 1 or Input Events Level 2.
|
|
# true: conforming to Level 1
|
|
# false: conforming to Level 2
|
|
- name: dom.input_events.conform_to_level_1
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether we allow BrowsingContextGroup to suspend input events
|
|
- name: dom.input_events.canSuspendInBCG.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Enable not moving the cursor to end when a text input or textarea has .value
|
|
# set to the value it already has. By default, enabled.
|
|
- name: dom.input.skip_cursor_move_for_same_value_set
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: dom.IntersectionObserver.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: dom.IntersectionObserverExplicitDocumentRoot.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: dom.ipc.cancel_content_js_when_navigating
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# How often to check for CPOW timeouts (ms). CPOWs are only timed
|
|
# out by the hang monitor.
|
|
- name: dom.ipc.cpow.timeout
|
|
type: uint32_t
|
|
value: 500
|
|
mirror: always
|
|
|
|
#ifdef MOZ_ENABLE_FORKSERVER
|
|
- name: dom.ipc.forkserver.enable
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
#endif
|
|
|
|
# Whether or not to collect a paired minidump when force-killing a
|
|
# content process.
|
|
- name: dom.ipc.tabs.createKillHardCrashReports
|
|
type: bool
|
|
value: @IS_NOT_RELEASE_OR_BETA@
|
|
mirror: once
|
|
|
|
# Allow Flash async drawing mode in 64-bit release builds.
|
|
- name: dom.ipc.plugins.asyncdrawing.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# How long we wait before unloading an idle plugin process.
|
|
- name: dom.ipc.plugins.unloadTimeoutSecs
|
|
type: RelaxedAtomicUint32
|
|
value: 30
|
|
mirror: always
|
|
|
|
- name: dom.ipc.plugins.allow_dxgi_surface
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Enable e10s hang monitoring (slow script checking and plugin hang detection).
|
|
- name: dom.ipc.processHangMonitor
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
# Whether we report such process hangs
|
|
- name: dom.ipc.reportProcessHangs
|
|
type: RelaxedAtomicBool
|
|
# Don't report hangs in DEBUG builds. They're too slow and often a
|
|
# debugger is attached.
|
|
#ifdef DEBUG
|
|
value: false
|
|
#else
|
|
value: true
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: dom.ipc.tabs.disabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Process launch delay (in milliseconds).
|
|
- name: dom.ipc.processPrelaunch.delayMs
|
|
type: uint32_t
|
|
# This number is fairly arbitrary ... the intention is to put off
|
|
# launching another app process until the last one has finished
|
|
# loading its content, to reduce CPU/memory/IO contention.
|
|
value: 1000
|
|
mirror: always
|
|
|
|
- name: dom.ipc.processPrelaunch.startupDelayMs
|
|
type: uint32_t
|
|
# delay starting content processes for a short time after browser start
|
|
# to provide time for the UI to come up
|
|
value: 1000
|
|
mirror: always
|
|
|
|
# Process preallocation cache
|
|
# Only used in fission; in e10s we use 1 always
|
|
- name: dom.ipc.processPrelaunch.fission.number
|
|
type: uint32_t
|
|
value: 3
|
|
mirror: always
|
|
|
|
- name: dom.ipc.processPriorityManager.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.ipc.processPriorityManager.testMode
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.ipc.processPriorityManager.backgroundPerceivableGracePeriodMS
|
|
type: uint32_t
|
|
value: 0
|
|
mirror: always
|
|
|
|
- name: dom.ipc.processPriorityManager.backgroundGracePeriodMS
|
|
type: uint32_t
|
|
value: 0
|
|
mirror: always
|
|
|
|
# Is support for HTMLElement.autocapitalize enabled?
|
|
- name: dom.forms.autocapitalize
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# Support for input type=month, type=week and type=datetime-local. By default,
|
|
# disabled.
|
|
- name: dom.forms.datetime.others
|
|
type: bool
|
|
value: @IS_ANDROID@
|
|
mirror: always
|
|
|
|
# Is support for HTMLElement.enterKeyHint enabled?
|
|
- name: dom.forms.enterkeyhint
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# Is support for HTMLElement.inputMode enabled?
|
|
- name: dom.forms.inputmode
|
|
type: bool
|
|
#if defined(ANDROID)
|
|
value: true
|
|
#else
|
|
value: @IS_NOT_RELEASE_OR_BETA@
|
|
#endif
|
|
mirror: always
|
|
|
|
# Enable Directory API. By default, disabled.
|
|
- name: dom.input.dirpicker
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether to allow or disallow web apps to cancel `beforeinput` events caused
|
|
# by MozEditableElement#setUserInput() which is used by autocomplete, autofill
|
|
# and password manager.
|
|
- name: dom.input_event.allow_to_cancel_set_user_input
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# How long a content process can take before closing its IPC channel
|
|
# after shutdown is initiated. If the process exceeds the timeout,
|
|
# we fear the worst and kill it.
|
|
- name: dom.ipc.tabs.shutdownTimeoutSecs
|
|
type: RelaxedAtomicUint32
|
|
#if !defined(DEBUG) && !defined(MOZ_ASAN) && !defined(MOZ_VALGRIND) && !defined(MOZ_TSAN)
|
|
value: 20
|
|
#else
|
|
value: 0
|
|
#endif
|
|
mirror: always
|
|
|
|
# Whether a native event loop should be used in the content process.
|
|
- name: dom.ipc.useNativeEventProcessing.content
|
|
type: RelaxedAtomicBool
|
|
#if defined(XP_WIN) || defined(XP_MACOSX)
|
|
value: false
|
|
#else
|
|
value: true
|
|
#endif
|
|
mirror: always
|
|
|
|
# If this is true, TextEventDispatcher dispatches keydown and keyup events
|
|
# even during composition (keypress events are never fired during composition
|
|
# even if this is true).
|
|
- name: dom.keyboardevent.dispatch_during_composition
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# If this is true, keypress events for non-printable keys are dispatched only
|
|
# for event listeners of the system event group in web content.
|
|
- name: dom.keyboardevent.keypress.dispatch_non_printable_keys_only_system_group_in_content
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# If this is true, "keypress" event's keyCode value and charCode value always
|
|
# become same if the event is not created/initialized by JS.
|
|
- name: dom.keyboardevent.keypress.set_keycode_and_charcode_to_same_value
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether the Large-Allocation header is enabled.
|
|
- name: dom.largeAllocationHeader.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: dom.largeAllocation.forceEnable
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether "W3C Web Manifest" processing is enabled
|
|
- name: dom.manifest.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Enable mapped array buffer by default.
|
|
- name: dom.mapped_arraybuffer.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# This pref is used to enable/disable the `document.autoplayPolicy` API which
|
|
# returns a enum string which presents current autoplay policy and can change
|
|
# overtime based on user session activity.
|
|
- name: dom.media.autoplay.autoplay-policy-api
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Media Session API
|
|
- name: dom.media.mediasession.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Number of seconds of very quiet or silent audio before considering the audio
|
|
# inaudible.
|
|
- name: dom.media.silence_duration_for_audibility
|
|
type: AtomicFloat
|
|
value: 2.0f
|
|
mirror: always
|
|
|
|
- name: dom.menuitem.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Enable meta-viewport support in remote APZ-enabled frames.
|
|
- name: dom.meta-viewport.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Timeout clamp in ms for timeouts we clamp.
|
|
- name: dom.min_timeout_value
|
|
type: int32_t
|
|
value: 4
|
|
mirror: always
|
|
|
|
# Timeout clamp in ms for background windows.
|
|
- name: dom.min_background_timeout_value
|
|
type: int32_t
|
|
value: 1000
|
|
mirror: always
|
|
|
|
# Timeout clamp in ms for background windows when throttling isn't enabled.
|
|
- name: dom.min_background_timeout_value_without_budget_throttling
|
|
type: int32_t
|
|
value: 1000
|
|
mirror: always
|
|
|
|
# Are missing-property use counters for certain DOM attributes enabled?
|
|
- name: dom.missing_prop_counters.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for module scripts (<script type="module">) enabled for content?
|
|
- name: dom.moduleScripts.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether we disable triggering mutation events for changes to style
|
|
# attribute via CSSOM.
|
|
# NOTE: This preference is used in unit tests. If it is removed or its default
|
|
# value changes, please update test_sharedMap_static_prefs.js accordingly.
|
|
- name: dom.mutation-events.cssom.disabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Limit of location change caused by content scripts in a time span per
|
|
# BrowsingContext. This includes calls to History and Location APIs.
|
|
- name: dom.navigation.locationChangeRateLimit.count
|
|
type: uint32_t
|
|
value: 200
|
|
mirror: always
|
|
|
|
# Time span in seconds for location change rate limit.
|
|
- name: dom.navigation.locationChangeRateLimit.timespan
|
|
type: uint32_t
|
|
value: 10
|
|
mirror: always
|
|
|
|
# Network Information API
|
|
- name: dom.netinfo.enabled
|
|
type: RelaxedAtomicBool
|
|
value: @IS_ANDROID@
|
|
mirror: always
|
|
|
|
# Whether we should open noopener links in a new process.
|
|
- name: dom.noopener.newprocess.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether we shouldn't show an error page for unknown protocols (and should
|
|
# show a console warning instead).
|
|
- name: dom.no_unknown_protocol_error.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for Window.paintWorklet enabled?
|
|
- name: dom.paintWorklet.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Enable/disable the PaymentRequest API
|
|
- name: dom.payments.request.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether a user gesture is required to call PaymentRequest.prototype.show().
|
|
- name: dom.payments.request.user_interaction_required
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Time in milliseconds for PaymentResponse to wait for
|
|
# the Web page to call complete().
|
|
- name: dom.payments.response.timeout
|
|
type: uint32_t
|
|
value: 5000
|
|
mirror: always
|
|
|
|
# Enable printing performance marks/measures to log
|
|
- name: dom.performance.enable_user_timing_logging
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.performance.children_results_ipc_timeout
|
|
type: uint32_t
|
|
value: 1000
|
|
mirror: always
|
|
|
|
# Enable notification of performance timing
|
|
- name: dom.performance.enable_notify_performance_timing
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Is support for PerformanceTiming.timeToContentfulPaint enabled?
|
|
- name: dom.performance.time_to_contentful_paint.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Is support for PerformanceTiming.timeToDOMContentFlushed enabled?
|
|
- name: dom.performance.time_to_dom_content_flushed.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Is support for PerformanceTiming.timeToFirstInteractive enabled?
|
|
- name: dom.performance.time_to_first_interactive.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Is support for PerformanceTiming.timeToNonBlankPaint enabled?
|
|
- name: dom.performance.time_to_non_blank_paint.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Is support for Permissions.revoke enabled?
|
|
- name: dom.permissions.revoke.enable
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether we should show the placeholder when the element is focused but empty.
|
|
- name: dom.placeholder.show_on_focus
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for Element.requestPointerLock enabled?
|
|
# This is added for accessibility purpose. When user has no way to exit
|
|
# pointer lock (e.g. no keyboard available), they can use this pref to
|
|
# disable the Pointer Lock API altogether.
|
|
- name: dom.pointer-lock.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# re-SAB: Whether to allow postMessage of a SharedArrayBuffer if various
|
|
# preconditions related to COOP and COEP are met
|
|
- name: dom.postMessage.sharedArrayBuffer.withCOOP_COEP
|
|
type: bool
|
|
#if !defined(ANDROID)
|
|
value: true
|
|
#else
|
|
value: false # Blocked by DocumentChannel, see Bug 1589982.
|
|
#endif
|
|
mirror: once
|
|
|
|
# Overridden in all.js on RELEASE_OR_BETA in order to add the locked attribute.
|
|
- name: dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Presentation API
|
|
- name: dom.presentation.enabled
|
|
type: bool
|
|
#if defined(ANDROID)
|
|
value: @IS_NOT_RELEASE_OR_BETA@
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: dom.presentation.controller.enabled
|
|
type: bool
|
|
#if defined(ANDROID)
|
|
value: @IS_NOT_RELEASE_OR_BETA@
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: dom.presentation.receiver.enabled
|
|
type: bool
|
|
#if defined(ANDROID)
|
|
value: @IS_NOT_RELEASE_OR_BETA@
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: dom.presentation.testing.simulate-receiver
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# This currently only affects XHTML. For XUL the cache is always allowed.
|
|
- name: dom.prototype_document_cache.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Push
|
|
- name: dom.push.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Preference that is primarily used for testing of problematic file paths.
|
|
# It can also be used for switching between different storage directories, but
|
|
# such feature is not officially supported.
|
|
- name: dom.quotaManager.storageName
|
|
type: String
|
|
value: "storage"
|
|
mirror: never
|
|
|
|
# Should we try to load origin information from the cache?
|
|
# See bug 1563023 for more details.
|
|
- name: dom.quotaManager.loadQuotaFromCache
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Preference that users can set to override temporary storage smart limit
|
|
# calculation.
|
|
- name: dom.quotaManager.temporaryStorage.fixedLimit
|
|
type: RelaxedAtomicInt32
|
|
value: -1
|
|
mirror: always
|
|
|
|
# Preference that users can set to override temporary storage smart limit
|
|
# calculation.
|
|
- name: dom.quotaManager.temporaryStorage.chunkSize
|
|
type: RelaxedAtomicUint32
|
|
value: 10 * 1024
|
|
mirror: always
|
|
|
|
# A pref that is used to enable testing features.
|
|
- name: dom.quotaManager.testing
|
|
type: SequentiallyConsistentAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
#ifdef XP_WIN
|
|
# Preference that is used to set nsILocalFileWin::useDOSDevicePathSyntax
|
|
# attribute for all local file instances created by QuotaManager and its
|
|
# clients. The value of this preference is cached so changing the preference
|
|
# during runtime has no effect.
|
|
# See bug 1626846 for setting this to false by default.
|
|
- name: dom.quotaManager.useDOSDevicePathSyntax
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
do_not_use_directly: true
|
|
|
|
# Preference that is used to enable the hack for overrriding xFullPathname in
|
|
# TelemetryVFS.
|
|
- name: dom.quotaManager.overrideXFullPathname
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
#endif
|
|
|
|
# How many times we should retry directory removal or renaming if access was
|
|
# denied?
|
|
- name: dom.quotaManager.directoryRemovalOrRenaming.maxRetries
|
|
type: RelaxedAtomicUint32
|
|
#ifdef XP_WIN
|
|
value: 10
|
|
#else
|
|
value: 0
|
|
#endif
|
|
mirror: always
|
|
|
|
# How long we should wait between retries (in milliseconds)?
|
|
- name: dom.quotaManager.directoryRemovalOrRenaming.delayMs
|
|
type: RelaxedAtomicUint32
|
|
value: 200
|
|
mirror: always
|
|
|
|
# Reporting API.
|
|
- name: dom.reporting.enabled
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
- name: dom.reporting.testing.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.reporting.featurePolicy.enabled
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
- name: dom.reporting.crash.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.reporting.header.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# In seconds. The timeout to remove not-active report-to endpoints.
|
|
- name: dom.reporting.cleanup.timeout
|
|
type: uint32_t
|
|
value: 3600
|
|
mirror: always
|
|
|
|
# Any X seconds the reports are dispatched to endpoints.
|
|
- name: dom.reporting.delivering.timeout
|
|
type: uint32_t
|
|
value: 5
|
|
mirror: always
|
|
|
|
# How many times the delivering of a report should be tried.
|
|
- name: dom.reporting.delivering.maxFailures
|
|
type: uint32_t
|
|
value: 3
|
|
mirror: always
|
|
|
|
# How many reports should be stored in the report queue before being delivered.
|
|
- name: dom.reporting.delivering.maxReports
|
|
type: uint32_t
|
|
value: 100
|
|
mirror: always
|
|
|
|
# Enable requestIdleCallback API
|
|
- name: dom.requestIdleCallback.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to enable the JavaScript start-up cache. This causes one of the first
|
|
# execution to record the bytecode of the JavaScript function used, and save it
|
|
# in the existing cache entry. On the following loads of the same script, the
|
|
# bytecode would be loaded from the cache instead of being generated once more.
|
|
- name: dom.script_loader.bytecode_cache.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Ignore the heuristics of the bytecode cache, and always record on the first
|
|
# visit. (used for testing purposes).
|
|
|
|
# Choose one strategy to use to decide when the bytecode should be encoded and
|
|
# saved. The following strategies are available right now:
|
|
# * -2 : (reader mode) The bytecode cache would be read, but it would never
|
|
# be saved.
|
|
# * -1 : (eager mode) The bytecode would be saved as soon as the script is
|
|
# seen for the first time, independently of the size or last access
|
|
# time.
|
|
# * 0 : (default) The bytecode would be saved in order to minimize the
|
|
# page-load time.
|
|
#
|
|
# Other values might lead to experimental strategies. For more details, have a
|
|
# look at: ScriptLoader::ShouldCacheBytecode function.
|
|
- name: dom.script_loader.bytecode_cache.strategy
|
|
type: int32_t
|
|
value: 0
|
|
mirror: always
|
|
|
|
# Is support for decoding external (non-inline) classic or module DOM scripts
|
|
# (i.e. anything but workers) as UTF-8, then directly compiling without
|
|
# inflating to UTF-16, enabled?
|
|
- name: dom.script_loader.external_scripts.utf8_parsing.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Enable speculative off main thread parsing of external scripts as
|
|
# soon as they are fetched.
|
|
- name: dom.script_loader.external_scripts.speculative_omt_parse.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Speculatively compile non parser inserted scripts
|
|
- name: dom.script_loader.external_scripts.speculate_non_parser_inserted.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Speculatively compile async scripts
|
|
- name: dom.script_loader.external_scripts.speculate_async.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Speculatively compile link preload scripts
|
|
- name: dom.script_loader.external_scripts.speculate_link_preload.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.securecontext.whitelist_onions
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# This pref enables Sec-Fetch-* logic and causes corresponding
|
|
# request headers to be set.
|
|
- name: dom.security.secFetch.enabled
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# This pref enables the featurePolicy header support.
|
|
- name: dom.security.featurePolicy.header.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.security.featurePolicy.experimental.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Expose the 'featurePolicy' attribute in document and HTMLIFrameElement
|
|
- name: dom.security.featurePolicy.webidl.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# For testing purposes only: Flipping this pref to true allows
|
|
# to skip the allowlist for about: pages and do not ship with a
|
|
# CSP and NS_ASSERT right away.
|
|
- name: dom.security.skip_about_page_csp_allowlist_and_assert
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# For testing purposes only: Flipping this pref to true allows
|
|
# to skip the assertion that every about page ships with a CSP.
|
|
- name: dom.security.skip_about_page_has_csp_assert
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# For testing purposes only: Flipping this pref to true allows
|
|
# to skip the assertion that HTML fragments (e.g. innerHTML) can
|
|
# not be used within chrome code or about: pages.
|
|
- name: dom.security.skip_html_fragment_assertion
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# For testing purposes only; Flipping this pref to true allows
|
|
# to skip the assertion that remote scripts can not be loaded
|
|
# in system privileged contexts.
|
|
- name: dom.security.skip_remote_script_assertion_in_system_priv_context
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# If true, all content requests will get upgraded to HTTPS://
|
|
# (some Firefox functionality requests, like OCSP will not be affected)
|
|
- name: dom.security.https_only_mode
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# If true, all content requests in Private Browsing Mode will get
|
|
# upgraded to HTTPS://. (If dom.security.https_only_mode is set
|
|
# to true then this pref has no effect)
|
|
- name: dom.security.https_only_mode_pbm
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# If true, sends http background request for top-level sites to
|
|
# counter long timeouts.
|
|
- name: dom.security.https_only_mode_send_http_background_request
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# If true and HTTPS-only mode is enabled, requests
|
|
# to local IP addresses are also upgraded
|
|
- name: dom.security.https_only_mode.upgrade_local
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# If true and HTTPS-only mode is enabled, requests
|
|
# to .onion hosts are also upgraded
|
|
- name: dom.security.https_only_mode.upgrade_onion
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# WARNING: Don't ever update that pref manually! It is only used
|
|
# for telemetry purposes and allows to reason about retention of
|
|
# the pref dom.security.https_only_mode from above.
|
|
- name: dom.security.https_only_mode_ever_enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# WARNING: Don't ever update that pref manually! It is only used
|
|
# for telemetry purposes and allows to reason about retention of
|
|
# the pref dom.security.https_only_mode_pbm from above.
|
|
- name: dom.security.https_only_mode_ever_enabled_pbm
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.security.unexpected_system_load_telemetry_enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# pref controls `Sanitizer` API being exposed
|
|
- name: dom.security.sanitizer.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Is support for selection event APIs enabled?
|
|
- name: dom.select_events.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether or not selection events on text controls are enabled.
|
|
- name: dom.select_events.textcontrols.enabled
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
- name: dom.separate_event_queue_for_post_message.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: dom.arena_allocator.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
- name: dom.serviceWorkers.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# If true. then the service worker interception and the ServiceWorkerManager
|
|
# will live in the parent process. This only takes effect on browser start.
|
|
- name: dom.serviceWorkers.parent_intercept
|
|
type: bool
|
|
value: true
|
|
mirror: never
|
|
|
|
- name: dom.serviceWorkers.testing.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.workers.serialized-sab-access
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether automatic storage access granting heuristics should be turned on.
|
|
- name: dom.storage_access.auto_grants
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: dom.storage_access.auto_grants.delayed
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Storage-access API.
|
|
- name: dom.storage_access.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# The maximum number of origins that a given third-party tracker is allowed
|
|
# to have concurrent access to before the user is presented with a storage
|
|
# access prompt. Only effective when the auto_grants pref is turned on.
|
|
- name: dom.storage_access.max_concurrent_auto_grants
|
|
type: int32_t
|
|
value: 5
|
|
mirror: always
|
|
|
|
# Enable Storage API for all platforms except Android.
|
|
- name: dom.storageManager.enabled
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NOT_ANDROID@
|
|
mirror: always
|
|
|
|
# Should we abort LocalStorage requests when a sync message from parent is
|
|
# detected?
|
|
#
|
|
# LocalStorage is a synchronous API involving sync IPC from the child to the
|
|
# parent. Accessibility interfaces currently also involve different forms of
|
|
# synchronous parent-to-child communication. (See bug 1516136 comment 11 and
|
|
# comment 15.) Although LocalStorage NextGen no longer needs to consult the
|
|
# main thread, thereby eliminating the possibility of deadlock, the browser is
|
|
# very complex and so we have retained a fail-safe mechanism that will cause
|
|
# blocking LocalStorage operations to abort on synchronous IPC from the parent
|
|
# to the child.
|
|
#
|
|
# We are disabling this fail-safe mechanism because it is fundamentally visible
|
|
# to content when activated. When we abort the synchronous LocalStorage
|
|
# operation we throw an error which has the potential to break web content.
|
|
# This is not a hypothetical. In bug 1574569 content broke due to accessibility
|
|
# path aborting the LS call, but the LS call didn't need to abort because it
|
|
# was not at risk of deadlock.
|
|
#
|
|
# But we are retaining the preference in the event that regressions occur
|
|
# anywhere in the code-base that could cause a cascade that would result in
|
|
# deadlock. (There have been logic bugs in components that resulted in
|
|
# PBackground synchronously blocking in a way that could result in deadlock.)
|
|
# This allows us to re-enable the fail-safe with only a pref flip.
|
|
- name: dom.storage.abort_on_sync_parent_to_child_messages
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# LocalStorage data limit as determined by summing up the lengths of all string
|
|
# keys and values. This is consistent with the legacy implementation and other
|
|
# browser engines. This value should really only ever change in unit testing
|
|
# where being able to lower it makes it easier for us to test certain edge
|
|
# cases. Measured in KiBs.
|
|
- name: dom.storage.default_quota
|
|
type: RelaxedAtomicUint32
|
|
# Only allow relatively small amounts of data since performance of the
|
|
# synchronous IO is very bad. We are enforcing simple per-origin quota only.
|
|
value: 5 * 1024
|
|
mirror: always
|
|
|
|
# Per-site quota for legacy LocalStorage implementation.
|
|
- name: dom.storage.default_site_quota
|
|
type: RelaxedAtomicUint32
|
|
value: 25 * 1024
|
|
mirror: always
|
|
|
|
# Whether or not LSNG (Next Generation Local Storage) is enabled.
|
|
# See bug 1517090 for enabling this on Nightly.
|
|
# See bug 1534736 for changing it to EARLY_BETA_OR_EARLIER.
|
|
# See bug 1539835 for enabling this unconditionally.
|
|
# See bug 1619948 for changing it back to EARLY_BETA_OR_EARLIER.
|
|
- name: dom.storage.next_gen
|
|
type: RelaxedAtomicBool
|
|
value: @IS_EARLY_BETA_OR_EARLIER@
|
|
mirror: always
|
|
do_not_use_directly: true
|
|
|
|
# Is support for Storage test APIs enabled?
|
|
- name: dom.storage.testing
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# For area and anchor elements with target=_blank and no rel set to
|
|
# opener/noopener.
|
|
- name: dom.targetBlankNoOpener.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for Selection.GetRangesForInterval enabled?
|
|
- name: dom.testing.selection.GetRangesForInterval
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.testing.structuredclonetester.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.testing.sync-content-blocking-notifications
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.textMetrics.actualBoundingBox.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: dom.textMetrics.baselines.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.textMetrics.emHeight.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.textMetrics.fontBoundingBox.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Time (in ms) that it takes to regenerate 1ms.
|
|
- name: dom.timeout.background_budget_regeneration_rate
|
|
type: int32_t
|
|
value: 100
|
|
mirror: always
|
|
|
|
# Time (in ms) that it takes to regenerate 1ms.
|
|
- name: dom.timeout.foreground_budget_regeneration_rate
|
|
type: int32_t
|
|
value: 1
|
|
mirror: always
|
|
|
|
# Maximum value (in ms) for the background budget. Only valid for
|
|
# values greater than 0.
|
|
- name: dom.timeout.background_throttling_max_budget
|
|
type: int32_t
|
|
value: 50
|
|
mirror: always
|
|
|
|
# Maximum value (in ms) for the foreground budget. Only valid for
|
|
# values greater than 0.
|
|
- name: dom.timeout.foreground_throttling_max_budget
|
|
type: int32_t
|
|
value: -1
|
|
mirror: always
|
|
|
|
# The maximum amount a timeout can be delayed by budget throttling.
|
|
- name: dom.timeout.budget_throttling_max_delay
|
|
type: int32_t
|
|
value: 15000
|
|
mirror: always
|
|
|
|
# Turn on budget throttling by default.
|
|
- name: dom.timeout.enable_budget_timer_throttling
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Should we defer timeouts and intervals while loading a page. Released
|
|
# on Idle or when the page is loaded.
|
|
- name: dom.timeout.defer_during_load
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Maximum amount of time in milliseconds consecutive setTimeout()/setInterval()
|
|
# callback are allowed to run before yielding the event loop.
|
|
- name: dom.timeout.max_consecutive_callbacks_ms
|
|
type: uint32_t
|
|
value: 4
|
|
mirror: always
|
|
|
|
# Maximum deferral time for setTimeout/Interval in milliseconds
|
|
- name: dom.timeout.max_idle_defer_ms
|
|
type: uint32_t
|
|
value: 10*1000
|
|
mirror: always
|
|
|
|
# Delay in ms from document load until we start throttling background timeouts.
|
|
- name: dom.timeout.throttling_delay
|
|
type: int32_t
|
|
value: 30000
|
|
mirror: always
|
|
|
|
# UDPSocket API
|
|
- name: dom.udpsocket.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Time limit, in milliseconds, for user gesture transient activation.
|
|
- name: dom.user_activation.transient.timeout
|
|
type: uint32_t
|
|
value: 5000
|
|
mirror: always
|
|
|
|
# Whether to shim a Components object on untrusted windows.
|
|
- name: dom.use_components_shim
|
|
type: bool
|
|
value: @IS_NOT_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
- name: dom.vibrator.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: dom.vibrator.max_vibrate_ms
|
|
type: uint32_t
|
|
value: 10000
|
|
mirror: always
|
|
|
|
- name: dom.vibrator.max_vibrate_list_len
|
|
type: uint32_t
|
|
value: 128
|
|
mirror: always
|
|
|
|
# Is support for Window.visualViewport enabled?
|
|
- name: dom.visualviewport.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Is support for WebVR APIs enabled?
|
|
# Enabled by default in beta and release for Windows and OS X and for all
|
|
# platforms in nightly and aurora.
|
|
- name: dom.vr.enabled
|
|
type: RelaxedAtomicBool
|
|
#if defined(XP_WIN) || defined(XP_DARWIN) || !defined(RELEASE_OR_BETA)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
# Should VR sessions always be reported as supported, without first
|
|
# checking for VR runtimes? This will prevent permission prompts
|
|
# from being suppressed on machines without VR runtimes and cause
|
|
# navigatior.xr.isSessionSupported to always report that immersive-vr
|
|
# is supported.
|
|
- name: dom.vr.always_support_vr
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Should AR sessions always be reported as supported, without first
|
|
# checking for AR runtimes? This will prevent permission prompts
|
|
# from being suppressed on machines without AR runtimes and cause
|
|
# navigatior.xr.isSessionSupported to always report that immersive-ar
|
|
# is supported.
|
|
- name: dom.vr.always_support_ar
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# It is often desirable to automatically start vr presentation when
|
|
# a user puts on the VR headset. This is done by emitting the
|
|
# Window.vrdisplayactivate event when the headset's sensors detect it
|
|
# being worn. This can result in WebVR content taking over the headset
|
|
# when the user is using it outside the browser or inadvertent start of
|
|
# presentation due to the high sensitivity of the proximity sensor in some
|
|
# headsets, so it is off by default.
|
|
- name: dom.vr.autoactivate.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Minimum number of milliseconds that the browser will wait before
|
|
# attempting to poll again for connected VR controllers. The browser
|
|
# will not attempt to poll for VR controllers until it needs to use them.
|
|
- name: dom.vr.controller.enumerate.interval
|
|
type: RelaxedAtomicInt32
|
|
value: 1000
|
|
mirror: always
|
|
|
|
# The threshold value of trigger inputs for VR controllers.
|
|
- name: dom.vr.controller_trigger_threshold
|
|
type: AtomicFloat
|
|
value: 0.1f
|
|
mirror: always
|
|
|
|
# Minimum number of milliseconds that the browser will wait before
|
|
# attempting to poll again for connected VR displays. The browser
|
|
# will not attempt to poll for VR displays until it needs to use
|
|
# them, such as when detecting a WebVR site.
|
|
- name: dom.vr.display.enumerate.interval
|
|
type: RelaxedAtomicInt32
|
|
value: 5000
|
|
mirror: always
|
|
|
|
# The number of milliseconds since last frame start before triggering a new
|
|
# frame. When content is failing to submit frames on time or the lower level
|
|
# VR platform APIs are rejecting frames, it determines the rate at which RAF
|
|
# callbacks will be called.
|
|
- name: dom.vr.display.rafMaxDuration
|
|
type: RelaxedAtomicUint32
|
|
value: 50
|
|
mirror: always
|
|
|
|
# Minimum number of milliseconds the browser will wait before attempting
|
|
# to re-start the VR service after an enumeration returned no devices.
|
|
- name: dom.vr.external.notdetected.timeout
|
|
type: RelaxedAtomicInt32
|
|
value: 60000
|
|
mirror: always
|
|
|
|
# Minimum number of milliseconds the browser will wait before attempting
|
|
# to re-start the VR service after a VR API (eg, OpenVR or Oculus)
|
|
# requests that we shutdown and unload its libraries.
|
|
# To ensure that we don't interfere with VR runtime software auto-updates,
|
|
# we will not attempt to re-load the service until this timeout has elapsed.
|
|
- name: dom.vr.external.quit.timeout
|
|
type: RelaxedAtomicInt32
|
|
value: 10000
|
|
mirror: always
|
|
|
|
# Minimum number of milliseconds that the VR session will be kept
|
|
# alive after the browser and content no longer are using the
|
|
# hardware. If a VR multitasking environment, this should be set
|
|
# very low or set to 0.
|
|
- name: dom.vr.inactive.timeout
|
|
type: RelaxedAtomicInt32
|
|
value: 5000
|
|
mirror: always
|
|
|
|
# Maximum number of milliseconds the browser will wait for content to call
|
|
# VRDisplay.requestPresent after emitting vrdisplayactivate during VR
|
|
# link traversal. This prevents a long running event handler for
|
|
# vrdisplayactivate from later calling VRDisplay.requestPresent, which would
|
|
# result in a non-responsive browser in the VR headset.
|
|
- name: dom.vr.navigation.timeout
|
|
type: RelaxedAtomicInt32
|
|
value: 5000
|
|
mirror: always
|
|
|
|
# Oculus device
|
|
- name: dom.vr.oculus.enabled
|
|
type: RelaxedAtomicBool
|
|
#if defined(HAVE_64BIT_BUILD) && !defined(ANDROID)
|
|
# We are only enabling WebVR by default on 64-bit builds (Bug 1384459).
|
|
value: true
|
|
#else
|
|
# On Android, this pref is irrelevant.
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
# When enabled, Oculus sessions may be created with the ovrInit_Invisible
|
|
# flag if a page is using tracking but not presenting. When a page
|
|
# begins presenting VR frames, the session will be re-initialized without
|
|
# the flag. This eliminates the "Firefox not responding" warnings in
|
|
# the headset, but might not be compatible with all versions of the Oculus
|
|
# runtime.
|
|
- name: dom.vr.oculus.invisible.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Minimum number of milliseconds after content has stopped VR presentation
|
|
# before the Oculus session is re-initialized to an invisible / tracking
|
|
# only mode. If this value is too high, users will need to wait longer
|
|
# after stopping WebVR presentation before automatically returning to the
|
|
# Oculus home interface. (They can immediately return to the Oculus Home
|
|
# interface through the Oculus HUD without waiting this duration)
|
|
# If this value is too low, the Oculus Home interface may be visible
|
|
# momentarily during VR link navigation.
|
|
- name: dom.vr.oculus.present.timeout
|
|
type: RelaxedAtomicInt32
|
|
value: 500
|
|
mirror: always
|
|
|
|
# OpenVR device
|
|
- name: dom.vr.openvr.enabled
|
|
type: RelaxedAtomicBool
|
|
#if !defined(HAVE_64BIT_BUILD) && !defined(ANDROID)
|
|
# We are only enabling WebVR by default on 64-bit builds (Bug 1384459).
|
|
value: false
|
|
#elif defined(XP_WIN) || defined(XP_MACOSX)
|
|
# We enable OpenVR by default for Windows and macOS.
|
|
value: true
|
|
#else
|
|
# See Bug 1310663 (Linux). On Android, this pref is irrelevant.
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
# OSVR device
|
|
- name: dom.vr.osvr.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Pose prediction reduces latency effects by returning future predicted HMD
|
|
# poses to callers of the WebVR API. This currently only has an effect for
|
|
# Oculus Rift on SDK 0.8 or greater.
|
|
- name: dom.vr.poseprediction.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Enable a separate process for VR module.
|
|
- name: dom.vr.process.enabled
|
|
type: bool
|
|
#if defined(XP_WIN)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: once
|
|
|
|
- name: dom.vr.process.startup_timeout_ms
|
|
type: int32_t
|
|
value: 5000
|
|
mirror: once
|
|
|
|
# Puppet device, used for simulating VR hardware within tests and dev tools.
|
|
- name: dom.vr.puppet.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Starting VR presentation is only allowed within a user gesture or event such
|
|
# as VRDisplayActivate triggered by the system. dom.vr.require-gesture allows
|
|
# this requirement to be disabled for special cases such as during automated
|
|
# tests or in a headless kiosk system.
|
|
- name: dom.vr.require-gesture
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for WebXR APIs enabled?
|
|
- name: dom.vr.webxr.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
#ifdef XP_WIN
|
|
# Control firing WidgetMouseEvent by handling Windows pointer messages or
|
|
# mouse messages.
|
|
- name: dom.w3c_pointer_events.dispatch_by_pointer_messages
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
#endif
|
|
|
|
# If the value is >= 0, it will be used for max touch points in child processes.
|
|
- name: dom.maxtouchpoints.testing.value
|
|
type: int32_t
|
|
value: -1
|
|
mirror: always
|
|
|
|
# W3C pointer events draft.
|
|
- name: dom.w3c_pointer_events.implicit_capture
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# Is support for Navigator.webdriver enabled?
|
|
- name: dom.webdriver.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# In case Touch API is enabled, this pref controls whether to support
|
|
# ontouch* event handlers, document.createTouch, document.createTouchList and
|
|
# document.createEvent("TouchEvent").
|
|
- name: dom.w3c_touch_events.legacy_apis.enabled
|
|
type: bool
|
|
value: @IS_ANDROID@
|
|
mirror: always
|
|
|
|
# W3C touch events
|
|
# 0 - disabled, 1 - enabled, 2 - autodetect
|
|
# Autodetection is currently only supported on Windows and GTK3 (and assumed on
|
|
# Android).
|
|
- name: dom.w3c_touch_events.enabled
|
|
type: int32_t
|
|
#if defined(XP_MACOSX)
|
|
value: 0
|
|
#else
|
|
value: 2
|
|
#endif
|
|
mirror: always
|
|
|
|
# Is support for the Web Audio API enabled?
|
|
- name: dom.webaudio.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: dom.webkitBlink.dirPicker.enabled
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NOT_ANDROID@
|
|
mirror: always
|
|
|
|
# NOTE: This preference is used in unit tests. If it is removed or its default
|
|
# value changes, please update test_sharedMap_static_prefs.js accordingly.
|
|
- name: dom.webcomponents.shadowdom.report_usage
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Is support for form-associated custom element enabled?
|
|
- name: dom.webcomponents.formAssociatedCustomElement.enabled
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# Is support for the Web GPU API enabled?
|
|
- name: dom.webgpu.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Is support for HTMLInputElement.webkitEntries enabled?
|
|
- name: dom.webkitBlink.filesystem.enabled
|
|
type: bool
|
|
value: @IS_NOT_ANDROID@
|
|
mirror: always
|
|
|
|
# Whether the WebMIDI API is enabled
|
|
- name: dom.webmidi.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.webnotifications.allowinsecure
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.webnotifications.allowcrossoriginiframe
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: dom.webnotifications.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: dom.webnotifications.requireuserinteraction
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: dom.webnotifications.requireinteraction.enabled
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
- name: dom.webnotifications.serviceworker.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for Window.event enabled?
|
|
- name: dom.window.event.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: dom.window.history.async
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Enable the "noreferrer" feature argument for window.open()
|
|
- name: dom.window.open.noreferrer.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: dom.window.content.untrusted.enabled
|
|
type: bool
|
|
value: @IS_NOT_EARLY_BETA_OR_EARLIER@
|
|
mirror: always
|
|
|
|
- name: dom.worker.canceling.timeoutMilliseconds
|
|
type: RelaxedAtomicUint32
|
|
value: 30000 # 30 seconds
|
|
mirror: always
|
|
|
|
# Is support for compiling DOM worker scripts directly from UTF-8 (without ever
|
|
# inflating to UTF-16) enabled?
|
|
- name: dom.worker.script_loader.utf8_parsing.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: dom.worker.use_medium_high_event_queue
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Enables the dispatching of console log events from worker threads to the
|
|
# main-thread.
|
|
- name: dom.worker.console.dispatch_events_to_main_thread
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: dom.worklet.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Enable content type normalization of XHR uploads via MIME Sniffing standard
|
|
- name: dom.xhr.standard_content_type_normalization
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# When this pref is set, parent documents may consider child iframes have
|
|
# loaded while they are still loading.
|
|
- name: dom.cross_origin_iframes_loaded_in_background
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# WebIDL test prefs.
|
|
- name: dom.webidl.test1
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
- name: dom.webidl.test2
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# WebShare API - exposes navigator.share()
|
|
- name: dom.webshare.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# WebShare API - allows WebShare without user interaction (for tests only).
|
|
- name: dom.webshare.requireinteraction
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# about:home and about:newtab include remote snippets that contain arbitrarily
|
|
# placed anchor tags in their content; we want sanitization to be turned off
|
|
# in order to render them correctly
|
|
- name: dom.about_newtab_sanitization.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Hide the confirm dialog when a POST request is reloaded.
|
|
- name: dom.confirm_repost.testing.always_accept
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether we should suspend inactive tabs or not
|
|
- name: dom.suspend_inactive.enabled
|
|
type: bool
|
|
value: @IS_ANDROID@
|
|
mirror: always
|
|
|
|
# The following three prefs control the maximum script run time before slow
|
|
# script warning.
|
|
|
|
# Controls the time that a content script can run before showing a
|
|
# notification.
|
|
- name: dom.max_script_run_time
|
|
type: int32_t
|
|
value: 10
|
|
mirror: always
|
|
|
|
# Controls whether we want to wait for user input before surfacing notifying
|
|
# the parent process about a long-running script.
|
|
- name: dom.max_script_run_time.require_critical_input
|
|
type: bool
|
|
# On desktop, we don't want to annoy the user with a notification if they're
|
|
# not interacting with the browser. On Android however, we automatically
|
|
# terminate long-running scripts, so we want to make sure we don't get in the
|
|
# way of that by waiting for input.
|
|
#if defined(MOZ_WIDGET_ANDROID)
|
|
value: false
|
|
#else
|
|
value: true
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: dom.max_chrome_script_run_time
|
|
type: int32_t
|
|
value: 0
|
|
mirror: always
|
|
|
|
- name: dom.max_ext_content_script_run_time
|
|
type: int32_t
|
|
value: 5
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "editor"
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Allow or disallow to delete `<hr>` element when caret is at start of
|
|
# following line of the element. If false, Backspace from start of following
|
|
# line of an `<hr>` element causes moving caret to immediatly after the `<hr>`
|
|
# element, and then, another Backspace can delete it.
|
|
- name: editor.hr_element.allow_to_delete_from_following_line
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Delay to mask last input character in password fields.
|
|
# If negative value, to use platform's default behavior.
|
|
# If 0, no delay to mask password.
|
|
# Otherwise, password fields unmask last input character(s) during specified
|
|
# time (in milliseconds).
|
|
- name: editor.password.mask_delay
|
|
type: int32_t
|
|
value: -1
|
|
mirror: always
|
|
|
|
# Set to true when you test mask_delay of password editor. If this is set
|
|
# to true, "MozLastInputMasked" is fired when last input characters are
|
|
# masked by timeout.
|
|
- name: editor.password.testing.mask_delay
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# General prefs for editor, indicating whether Gecko-specific editing UI is
|
|
# enabled by default. Those UIs are not implemented by any other browsers. So,
|
|
# only Firefox users can change some styles with them. This means that Firefox
|
|
# users may get unexpected result of some web apps if they assume that users
|
|
# cannot change such styles.
|
|
- name: editor.resizing.enabled_by_default
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
- name: editor.inline_table_editing.enabled_by_default
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
- name: editor.positioning.enabled_by_default
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether user pastes should be truncated.
|
|
- name: editor.truncate_user_pastes
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# How line breakers are treated in single line editor:
|
|
# * 0: Only remove the leading and trailing newlines.
|
|
# * 1: Remove the first newline and all characters following it.
|
|
# * 2: Replace newlines with spaces (default of Firefox).
|
|
# * 3: Remove newlines from the string.
|
|
# * 4: Replace newlines with commas (default of Thunderbird).
|
|
# * 5: Collapse newlines and surrounding white space characters and
|
|
# remove them from the string.
|
|
# Other values are treated as 1.
|
|
- name: editor.singleLine.pasteNewlines
|
|
type: int32_t
|
|
value: 2
|
|
mirror: always
|
|
|
|
# Whether enabling blink compatible white-space normalizer or keep using
|
|
# Gecko's traditional white-space normalizer.
|
|
- name: editor.white_space_normalization.blink_compatible
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "extensions."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Private browsing opt-in is only supported on Firefox desktop.
|
|
- name: extensions.allowPrivateBrowsingByDefault
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether the background.service_worker in the extension manifest.json file
|
|
# is enabled.
|
|
- name: extensions.backgroundServiceWorker.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
# Whether the extensions can register a service worker on its own.
|
|
# NOTE: WebExtensions Framework ability to register a background service worker
|
|
# is not controlled by this pref, only the extension code ability to use
|
|
# navigator.serviceWorker.register is locked behind this pref.
|
|
- name: extensions.serviceWorkerRegister.allowed
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# This pref governs whether we run webextensions in a separate process (true)
|
|
# or the parent/main process (false)
|
|
- name: extensions.webextensions.remote
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "findbar."
|
|
#---------------------------------------------------------------------------
|
|
|
|
- name: findbar.modalHighlight
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "fission."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Whether to enable Fission in new windows by default.
|
|
# IMPORTANT: This preference should *never* be checked directly, since any
|
|
# session can contain a mix of Fission and non-Fission windows. Instead,
|
|
# callers should check whether the relevant nsILoadContext has the
|
|
# `useRemoteSubframes` flag set.
|
|
# Callers which cannot use `useRemoteSubframes` must use
|
|
# `Services.appinfo.fissionAutostart` or `mozilla::FissionAutostart()` to check
|
|
# if fission is enabled by default.
|
|
- name: fission.autostart
|
|
type: bool
|
|
value: false
|
|
mirror: never
|
|
|
|
# Prefs used by normandy to orchestrate the fission experiment. For more
|
|
# details, see the comments in nsAppRunner.cpp.
|
|
- name: fission.experiment.enrollmentStatus
|
|
type: uint32_t
|
|
value: 0
|
|
mirror: never
|
|
|
|
- name: fission.experiment.startupEnrollmentStatus
|
|
type: uint32_t
|
|
value: 0
|
|
mirror: never
|
|
|
|
# This pref has no effect within fission windows, it only controls the
|
|
# behaviour within non-fission windows. If true, preserve browsing contexts
|
|
# between process swaps.
|
|
- name: fission.preserve_browsing_contexts
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Store the session history in the parent process, and access it over IPC
|
|
# from the child processes.
|
|
- name: fission.sessionHistoryInParent
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
do_not_use_directly: true
|
|
|
|
# Allow renaming of process names to the origin on nightly
|
|
# Setting this pref creates a privacy leak, but helps greatly with
|
|
# debugging
|
|
- name: fission.processOriginNames
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# If true, allow process-switching documents loaded by <object> and <embed>
|
|
# elements into a remote process.
|
|
# NOTE: This pref has no impact outside of windows with the
|
|
# `useRemoteSubframes` flag set.
|
|
- name: fission.remoteObjectEmbed
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# If true, show option for opening a non-Fission window in a menu, when Fission
|
|
# is enabled.
|
|
- name: fission.openNonFissionWindowOption
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "font."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# A value greater than zero enables font size inflation for
|
|
# pan-and-zoom UIs, so that the fonts in a block are at least the size
|
|
# that, if a block's width is scaled to match the device's width, the
|
|
# fonts in the block are big enough that at most the pref value ems of
|
|
# text fit in *the width of the device*.
|
|
#
|
|
# When both this pref and the next are set, the larger inflation is used.
|
|
- name: font.size.inflation.emPerLine
|
|
type: uint32_t
|
|
value: 0
|
|
mirror: always
|
|
|
|
# A value greater than zero enables font size inflation for
|
|
# pan-and-zoom UIs, so that if a block's width is scaled to match the
|
|
# device's width, the fonts in a block are at least the given font size.
|
|
# The value given is in twips, i.e., 1/20 of a point, or 1/1440 of an inch.
|
|
#
|
|
# When both this pref and the previous are set, the larger inflation is used.
|
|
- name: font.size.inflation.minTwips
|
|
type: uint32_t
|
|
value: 0
|
|
mirror: always
|
|
|
|
# In products with multi-mode pan-and-zoom and non-pan-and-zoom UIs,
|
|
# this pref forces font inflation to always be enabled in all modes.
|
|
# That is, any heuristics used to detect pan-and-zoom
|
|
# vs. non-pan-and-zoom modes are disabled and all content is treated
|
|
# as pan-and-zoom mode wrt font inflation.
|
|
#
|
|
# This pref has no effect if font inflation is not enabled through
|
|
# either of the prefs above. It has no meaning in single-mode UIs.
|
|
- name: font.size.inflation.forceEnabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# In products with multi-mode pan-and-zoom and non-pan-and-zoom UIs,
|
|
# this pref disables font inflation in master-process contexts where
|
|
# existing heuristics can't be used determine enabled-ness.
|
|
#
|
|
# This pref has no effect if font inflation is not enabled through
|
|
# either of the prefs above. The "forceEnabled" pref above overrides
|
|
# this pref.
|
|
- name: font.size.inflation.disabledInMasterProcess
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Defines the font size inflation mapping intercept parameter.
|
|
#
|
|
# Font size inflation computes a minimum font size, m, based on
|
|
# other preferences (see font.size.inflation.minTwips and
|
|
# font.size.inflation.emPerLine, above) and the width of the
|
|
# frame in which the text resides. Using this minimum, a specified
|
|
# font size, s, is mapped to an inflated font size, i, using an
|
|
# equation that varies depending on the value of the font size
|
|
# inflation mapping intercept parameter, P.
|
|
#
|
|
# If the intercept parameter is negative, then the following mapping
|
|
# function is used:
|
|
#
|
|
# i = m + s
|
|
#
|
|
# If the intercept parameter is non-negative, then the mapping function
|
|
# is a function such that its graph meets the graph of i = s at the
|
|
# point where both i and s are (1 + P/2) * m for values of s that are
|
|
# large enough. This means that when s=0, i is always equal to m.
|
|
- name: font.size.inflation.mappingIntercept
|
|
type: int32_t
|
|
value: 1
|
|
mirror: always
|
|
|
|
# Since the goal of font size inflation is to avoid having to
|
|
# repeatedly scroll side to side to read a block of text, and there are
|
|
# a number of page layouts where a relatively small chunk of text is
|
|
# better off not being inflated according to the same algorithm we use
|
|
# for larger chunks of text, we want a threshold for an amount of text
|
|
# that triggers font size inflation. This preference controls that
|
|
# threshold.
|
|
#
|
|
# It controls the threshold used within an *approximation* of the
|
|
# number of lines of text we use. In particular, if we assume that
|
|
# each character (collapsing collapsible whitespace) has a width the
|
|
# same as the em-size of the font (when, normally, it's actually quite
|
|
# a bit smaller on average), this preference gives the percentage of a
|
|
# number of lines of text we'd need to trigger inflation. This means
|
|
# that a percentage of 100 means that we'd need a number of characters
|
|
# (we know the font size and the width) equivalent to one line of
|
|
# square text (which is actually a lot less than a real line of text).
|
|
#
|
|
# A value of 0 means there's no character length threshold.
|
|
- name: font.size.inflation.lineThreshold
|
|
type: uint32_t
|
|
value: 400
|
|
mirror: always
|
|
|
|
# This controls the percentage that fonts will be inflated, if font
|
|
# size inflation is enabled. Essentially, if we have a specified font
|
|
# size, s, and an inflated font size, i, this specifies that the ratio
|
|
# i/s * 100 should never exceed the value of this preference. In order
|
|
# for this preference to have any effect, its value must be greater
|
|
# than 100, since font inflation can never decrease the ratio i/s.
|
|
- name: font.size.inflation.maxRatio
|
|
type: uint32_t
|
|
value: 0
|
|
mirror: always
|
|
|
|
# This setting corresponds to a global text zoom setting affecting
|
|
# all content that is not already subject to font size inflation.
|
|
# It is interpreted as a percentage value that is applied on top
|
|
# of the document's current text zoom setting.
|
|
#
|
|
# The resulting total zoom factor (text zoom * system font scale)
|
|
# will be limited by zoom.minPercent and maxPercent.
|
|
- name: font.size.systemFontScale
|
|
type: uint32_t
|
|
value: 100
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "full-screen-api."
|
|
#---------------------------------------------------------------------------
|
|
|
|
- name: full-screen-api.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: full-screen-api.allow-trusted-requests-only
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: full-screen-api.mouse-event-allow-left-button-only
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: full-screen-api.exit-on.windowOpen
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: full-screen-api.exit-on.windowRaise
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: full-screen-api.pointer-lock.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "fuzzing.". It's important that these can only be
|
|
# checked in fuzzing builds (when FUZZING is defined), otherwise you could
|
|
# enable the fuzzing stuff on your regular build which would be bad :)
|
|
#---------------------------------------------------------------------------
|
|
|
|
#ifdef FUZZING
|
|
- name: fuzzing.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: fuzzing.necko.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
#endif
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "general."
|
|
#---------------------------------------------------------------------------
|
|
|
|
- name: general.aboutConfig.enable
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Limits the depth of recursive conversion of data when opening
|
|
# a content to view. This is mostly intended to prevent infinite
|
|
# loops with faulty converters involved.
|
|
- name: general.document_open_conversion_depth_limit
|
|
type: uint32_t
|
|
value: 20
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# This pref and general.smoothScroll.stopDecelerationWeighting determine
|
|
# the timing function.
|
|
- name: general.smoothScroll.currentVelocityWeighting
|
|
type: AtomicFloat
|
|
value: 0.25
|
|
mirror: always
|
|
|
|
# To connect consecutive scroll events into a continuous flow, the animation's
|
|
# duration should be longer than scroll events intervals (or else the scroll
|
|
# will stop before the next event arrives - we're guessing the next interval
|
|
# by averaging recent intervals).
|
|
# This defines how much longer the duration is compared to the events
|
|
# interval (percentage).
|
|
- name: general.smoothScroll.durationToIntervalRatio
|
|
type: RelaxedAtomicInt32
|
|
value: 200
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.lines
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.lines.durationMaxMS
|
|
type: RelaxedAtomicInt32
|
|
value: 150
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.lines.durationMinMS
|
|
type: RelaxedAtomicInt32
|
|
value: 150
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.mouseWheel
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.mouseWheel.durationMaxMS
|
|
type: RelaxedAtomicInt32
|
|
value: 200
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.mouseWheel.durationMinMS
|
|
type: RelaxedAtomicInt32
|
|
value: 50
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.mouseWheel.migrationPercent
|
|
type: RelaxedAtomicInt32
|
|
value: 100
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.other
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.other.durationMaxMS
|
|
type: RelaxedAtomicInt32
|
|
value: 150
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.other.durationMinMS
|
|
type: RelaxedAtomicInt32
|
|
value: 150
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.pages
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.pages.durationMaxMS
|
|
type: RelaxedAtomicInt32
|
|
value: 150
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.pages.durationMinMS
|
|
type: RelaxedAtomicInt32
|
|
value: 150
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.scrollbars
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.scrollbars.durationMaxMS
|
|
type: RelaxedAtomicInt32
|
|
value: 150
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.scrollbars.durationMinMS
|
|
type: RelaxedAtomicInt32
|
|
value: 150
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.pixels
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.pixels.durationMaxMS
|
|
type: RelaxedAtomicInt32
|
|
value: 150
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.pixels.durationMinMS
|
|
type: RelaxedAtomicInt32
|
|
value: 150
|
|
mirror: always
|
|
|
|
# This pref and general.smoothScroll.currentVelocityWeighting determine
|
|
# the timing function.
|
|
- name: general.smoothScroll.stopDecelerationWeighting
|
|
type: AtomicFloat
|
|
value: 0.4f
|
|
mirror: always
|
|
|
|
# Alternative smooth scroll physics. ("MSD" = Mass-Spring-Damper)
|
|
- name: general.smoothScroll.msdPhysics.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.msdPhysics.continuousMotionMaxDeltaMS
|
|
type: RelaxedAtomicInt32
|
|
value: 120
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.msdPhysics.motionBeginSpringConstant
|
|
type: RelaxedAtomicInt32
|
|
value: 1250
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.msdPhysics.slowdownMinDeltaMS
|
|
type: RelaxedAtomicInt32
|
|
value: 12
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.msdPhysics.slowdownMinDeltaRatio
|
|
type: AtomicFloat
|
|
value: 1.3f
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.msdPhysics.slowdownSpringConstant
|
|
type: RelaxedAtomicInt32
|
|
value: 2000
|
|
mirror: always
|
|
|
|
- name: general.smoothScroll.msdPhysics.regularSpringConstant
|
|
type: RelaxedAtomicInt32
|
|
value: 1000
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "geo."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Is support for Navigator.geolocation enabled?
|
|
- name: geo.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Time, in milliseconds, to wait for the location provider to spin up.
|
|
- name: geo.timeout
|
|
type: int32_t
|
|
value: 6000
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "gfx."
|
|
#---------------------------------------------------------------------------
|
|
|
|
- name: gfx.allow-texture-direct-mapping
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
# Allow 24-bit colour when the hardware supports it.
|
|
- name: gfx.android.rgb16.force
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
- name: gfx.apitrace.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
# Nb: we ignore this pref on release and beta.
|
|
- name: gfx.blocklist.all
|
|
type: int32_t
|
|
value: 0
|
|
mirror: once
|
|
|
|
# 0x7fff is the maximum supported xlib surface size and is more than enough for canvases.
|
|
- name: gfx.canvas.max-size
|
|
type: RelaxedAtomicInt32
|
|
value: 0x7fff
|
|
mirror: always
|
|
|
|
- name: gfx.canvas.remote
|
|
type: RelaxedAtomicBool
|
|
#if defined(XP_WIN)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: gfx.color_management.force_srgb
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: gfx.color_management.enablev4
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# 0 = Off, 1 = Full, 2 = Tagged Images Only.
|
|
# See CMSMode in gfx/thebes/gfxPlatform.h.
|
|
- name: gfx.color_management.mode
|
|
type: RelaxedAtomicInt32
|
|
value: 2
|
|
mirror: always
|
|
|
|
# The zero default here should match QCMS_INTENT_DEFAULT from qcms.h
|
|
- name: gfx.color_management.rendering_intent
|
|
type: RelaxedAtomicInt32
|
|
value: 0
|
|
mirror: always
|
|
|
|
- name: gfx.compositor.clearstate
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether GL contexts can be migrated to a different GPU (to match the one the
|
|
# OS is using for composition).
|
|
#
|
|
# 0 = force disable migration
|
|
# 1 = use migration where in safe configurations (the default)
|
|
# 2 = force enable migration (for testing)
|
|
- name: gfx.compositor.gpu-migration
|
|
type: RelaxedAtomicInt32
|
|
value: 1
|
|
mirror: always
|
|
|
|
- name: gfx.core-animation.tint-opaque
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
#if defined(MOZ_WIDGET_ANDROID)
|
|
# Overrides the glClear color used when the surface origin is not (0, 0)
|
|
# Used for drawing a border around the content.
|
|
- name: gfx.compositor.override.clear-color.r
|
|
type: AtomicFloat
|
|
value: 0.0f
|
|
mirror: always
|
|
|
|
- name: gfx.compositor.override.clear-color.g
|
|
type: AtomicFloat
|
|
value: 0.0f
|
|
mirror: always
|
|
|
|
- name: gfx.compositor.override.clear-color.b
|
|
type: AtomicFloat
|
|
value: 0.0f
|
|
mirror: always
|
|
|
|
- name: gfx.compositor.override.clear-color.a
|
|
type: AtomicFloat
|
|
value: 0.0f
|
|
mirror: always
|
|
#endif # defined(MOZ_WIDGET_ANDROID)
|
|
|
|
- name: gfx.content.always-paint
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Size in megabytes
|
|
- name: gfx.content.skia-font-cache-size
|
|
type: int32_t
|
|
value: 5
|
|
mirror: once
|
|
|
|
- name: gfx.device-reset.limit
|
|
type: int32_t
|
|
value: 10
|
|
mirror: once
|
|
|
|
- name: gfx.device-reset.threshold-ms
|
|
type: int32_t
|
|
value: -1
|
|
mirror: once
|
|
|
|
|
|
# Whether to disable the automatic detection and use of direct2d.
|
|
- name: gfx.direct2d.disabled
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
# Whether to attempt to enable Direct2D regardless of automatic detection or
|
|
# blacklisting.
|
|
- name: gfx.direct2d.force-enabled
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
# Whether to defer destruction of Direct2D DrawTargets to the paint thread
|
|
# when using OMTP.
|
|
- name: gfx.direct2d.destroy-dt-on-paintthread
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: gfx.direct3d11.reuse-decoder-device
|
|
type: RelaxedAtomicInt32
|
|
value: -1
|
|
mirror: always
|
|
|
|
- name: gfx.direct3d11.allow-keyed-mutex
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: gfx.direct3d11.use-double-buffering
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: gfx.direct3d11.enable-debug-layer
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
- name: gfx.direct3d11.break-on-error
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
- name: gfx.direct3d11.sleep-on-create-device
|
|
type: int32_t
|
|
value: 0
|
|
mirror: once
|
|
|
|
# Whether to preserve color bitmap tables in fonts (bypassing OTS).
|
|
# Currently these are supported only on platforms where we use Freetype
|
|
# to render fonts (Linux/Gtk and Android).
|
|
- name: gfx.downloadable_fonts.keep_color_bitmaps
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether font sanitization is performed on the main thread or not.
|
|
- name: gfx.downloadable_fonts.sanitize_omt
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to validate OpenType variation tables in fonts.
|
|
- name: gfx.downloadable_fonts.validate_variation_tables
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether OTS validation should be applied to OpenType Layout (OTL) tables.
|
|
- name: gfx.downloadable_fonts.otl_validation
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NOT_RELEASE_OR_BETA@
|
|
mirror: always
|
|
|
|
- name: gfx.draw-color-bars
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: gfx.e10s.hide-plugins-for-scroll
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
- name: gfx.e10s.font-list.shared
|
|
type: bool
|
|
value: @IS_EARLY_BETA_OR_EARLIER@
|
|
mirror: once
|
|
|
|
# Whether to load fonts (e.g. Twemoji Mozilla) bundled with the application:
|
|
# -1 - Auto behavior based on OS version (currently, disables loading on Win8.1 or later,
|
|
# or on "low-memory" Android devices)
|
|
# 0 - Skip loading any bundled fonts
|
|
# 1 - Always load bundled fonts
|
|
- name: gfx.bundled-fonts.activate
|
|
type: int32_t
|
|
value: -1
|
|
mirror: once
|
|
|
|
- name: gfx.font_loader.delay
|
|
type: uint32_t
|
|
#if defined(XP_WIN)
|
|
value: 60000
|
|
#else
|
|
value: 8000
|
|
#endif
|
|
mirror: once
|
|
|
|
# Disable antialiasing of Ahem, for use in tests.
|
|
- name: gfx.font_rendering.ahem_antialias_none
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
#if defined(XP_MACOSX)
|
|
# Set to true to revert from HarfBuzz AAT shaping to the old Core Text
|
|
# backend.
|
|
- name: gfx.font_rendering.coretext.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
#endif
|
|
|
|
- name: gfx.font_rendering.opentype_svg.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
rust: true
|
|
|
|
- name: gfx.font_rendering.fallback.async
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to enable LayerScope tool and default listening port.
|
|
- name: gfx.layerscope.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: gfx.layerscope.port
|
|
type: RelaxedAtomicInt32
|
|
value: 23456
|
|
mirror: always
|
|
|
|
# The level of logging:
|
|
# - 0: no logging;
|
|
# - 1: adds errors;
|
|
# - 2: adds warnings;
|
|
# - 3 or 4: adds debug logging.
|
|
# If you set the value to 4, you will also need to set the environment
|
|
# variable MOZ_LOG to gfx:4. See mozilla/Logging.h for details.
|
|
- name: gfx.logging.level
|
|
type: RelaxedAtomicInt32
|
|
value: mozilla::gfx::LOG_DEFAULT
|
|
mirror: always
|
|
include: mozilla/gfx/LoggingConstants.h
|
|
|
|
- name: gfx.logging.crash.length
|
|
type: uint32_t
|
|
value: 16
|
|
mirror: once
|
|
|
|
- name: gfx.logging.painted-pixel-count.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# The maximums here are quite conservative, we can tighten them if problems show up.
|
|
- name: gfx.logging.texture-usage.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
- name: gfx.logging.peak-texture-usage.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
- name: gfx.logging.slow-frames.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
# Use gfxPlatform::MaxAllocSize instead of the pref directly.
|
|
- name: gfx.max-alloc-size
|
|
type: int32_t
|
|
value: (int32_t)500000000
|
|
mirror: once
|
|
do_not_use_directly: true
|
|
|
|
# Use gfxPlatform::MaxTextureSize instead of the pref directly.
|
|
- name: gfx.max-texture-size
|
|
type: int32_t
|
|
value: (int32_t)32767
|
|
mirror: once
|
|
do_not_use_directly: true
|
|
|
|
- name: gfx.offscreencanvas.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: gfx.omta.background-color
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: gfx.partialpresent.force
|
|
type: RelaxedAtomicInt32
|
|
value: 0
|
|
mirror: always
|
|
|
|
# Log severe performance warnings to the error console and profiles.
|
|
# This should be use to quickly find which slow paths are used by test cases.
|
|
- name: gfx.perf-warnings.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Prefer EGL over GLX if available.
|
|
- name: gfx.prefer-x11-egl
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
- name: gfx.testing.device-fail
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: gfx.testing.device-reset
|
|
type: RelaxedAtomicInt32
|
|
value: 0
|
|
mirror: always
|
|
|
|
- name: gfx.text.disable-aa
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
- name: gfx.text.subpixel-position.force-enabled
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
- name: gfx.text.subpixel-position.force-disabled
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
# Disable surface sharing due to issues with compatible FBConfigs on
|
|
# NVIDIA drivers as described in bug 1193015.
|
|
- name: gfx.use-glx-texture-from-pixmap
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: gfx.use-iosurface-textures
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
- name: gfx.use-mutex-on-present
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
- name: gfx.use-ahardwarebuffer-content
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
# Use SurfaceTextures as preferred backend for TextureClient/Host.
|
|
- name: gfx.use-surfacetexture-textures
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
- name: gfx.vsync.collect-scroll-transforms
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: gfx.vsync.compositor.unobserve-count
|
|
type: int32_t
|
|
value: 10
|
|
mirror: once
|
|
|
|
- name: gfx.vsync.force-disable-waitforvblank
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# We expose two prefs: gfx.webrender.all and gfx.webrender.enabled.
|
|
# The first enables WR+additional features, and the second just enables WR.
|
|
# For developer convenience, building with --enable-webrender=true or just
|
|
# --enable-webrender will set gfx.webrender.enabled to true by default.
|
|
#
|
|
# We also have a pref gfx.webrender.all.qualified which is not exposed via
|
|
# about:config. That pref enables WR but only on qualified hardware. This is
|
|
# the pref we'll eventually flip to deploy WebRender to the target population.
|
|
- name: gfx.webrender.all
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
- name: gfx.webrender.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
do_not_use_directly: true
|
|
|
|
#ifdef XP_WIN
|
|
- name: gfx.webrender.force-angle
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
#endif
|
|
|
|
# WebRender is not enabled when there is no GPU process on window when
|
|
# WebRender uses ANGLE. It is for avoiding that WebGL and WebRender use ANGLE
|
|
# at once. But there is a case that we want to enable WebRender for testing.
|
|
#ifdef XP_WIN
|
|
- name: gfx.webrender.enabled-no-gpu-process-with-angle-win
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
#endif
|
|
|
|
- name: gfx.webrender.blob-images
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: gfx.webrender.svg-images
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: gfx.webrender.blob.paint-flashing
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: gfx.webrender.enable-capture
|
|
type: bool
|
|
#ifdef NIGHTLY_BUILD
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: once
|
|
|
|
- name: gfx.webrender.dl.dump-parent
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: gfx.webrender.dl.dump-content
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: gfx.webrender.dl.dump-content-serialized
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Also expose a pref to allow users to force-disable WR. This is exposed
|
|
# on all channels because WR can be enabled on qualified hardware on all
|
|
# channels.
|
|
- name: gfx.webrender.force-disabled
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
- name: gfx.webrender.highlight-painted-layers
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: gfx.webrender.late-scenebuild-threshold
|
|
type: RelaxedAtomicInt32
|
|
value: 4
|
|
mirror: always
|
|
|
|
- name: gfx.webrender.max-filter-ops-per-chain
|
|
type: RelaxedAtomicUint32
|
|
value: 64
|
|
mirror: always
|
|
|
|
- name: gfx.webrender.enable-multithreading
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: gfx.webrender.batching.lookback
|
|
type: uint32_t
|
|
value: 10
|
|
mirror: always
|
|
|
|
- name: gfx.webrender.compositor
|
|
type: bool
|
|
#if defined(XP_WIN) || defined(XP_MACOSX)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: once
|
|
|
|
- name: gfx.webrender.compositor.force-enabled
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
- name: gfx.webrender.compositor.max_update_rects
|
|
type: uint32_t
|
|
#if defined(XP_WIN) || defined(XP_MACOSX)
|
|
value: 1
|
|
#else
|
|
value: 0
|
|
#endif
|
|
mirror: once
|
|
|
|
- name: gfx.webrender.compositor.surface-pool-size
|
|
type: uint32_t
|
|
value: 25
|
|
mirror: once
|
|
|
|
# Number of damage rects we can give to the compositor for a new frame with
|
|
# partial present. This controls whether partial present is used or not.
|
|
- name: gfx.webrender.max-partial-present-rects
|
|
type: uint32_t
|
|
#if defined(XP_WIN) || defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GTK)
|
|
value: 1
|
|
#else
|
|
value: 0
|
|
#endif
|
|
mirror: once
|
|
|
|
# Whether or not we can reuse the buffer contents using the GL buffer age
|
|
# extension, if supported by the platform. This requires partial present
|
|
# to be used.
|
|
- name: gfx.webrender.allow-partial-present-buffer-age
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
- name: gfx.webrender.enable-gpu-markers
|
|
type: bool
|
|
#ifdef DEBUG
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: once
|
|
|
|
- name: gfx.webrender.enable-item-cache
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
# Whether or not to fallback from WebRender/WebRender Software to Basic.
|
|
- name: gfx.webrender.fallback.basic
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
# Whether or not to fallback from WebRender to Software WebRender.
|
|
- name: gfx.webrender.fallback.software
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: once
|
|
|
|
#ifdef XP_WIN
|
|
# Whether or not to fallback from WebRender to Software WebRender + D3D11.
|
|
- name: gfx.webrender.fallback.software-d3d11
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: once
|
|
#endif
|
|
|
|
- name: gfx.webrender.use-optimized-shaders
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
- name: gfx.webrender.precache-shaders
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
# When gl debug message is a high severity message, forwward it to gfx critical
|
|
# note.
|
|
- name: gfx.webrender.gl-debug-message-critical-note
|
|
type: bool
|
|
#if defined(XP_WIN) && defined(NIGHTLY_BUILD)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: once
|
|
|
|
# Enable printing gl debug messages
|
|
- name: gfx.webrender.gl-debug-message-print
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
#ifdef NIGHTLY_BUILD
|
|
# Keep this pref hidden on non-nightly builds to avoid people accidentally
|
|
# turning it on.
|
|
- name: gfx.webrender.panic-on-gl-error
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
#endif
|
|
|
|
#ifdef NIGHTLY_BUILD
|
|
# Keep this pref hidden on non-nightly builds to avoid people accidentally
|
|
# turning it on.
|
|
- name: gfx.webrender.start-debug-server
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
#endif
|
|
|
|
#ifdef XP_WIN
|
|
# Enables display of performance debugging counters when DirectComposition
|
|
# is used.
|
|
# Performance counters are displayed on the top-right corner of the screen.
|
|
- name: gfx.webrender.debug.dcomp-counter
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
# Enables highlighting redraw regions of DCompositionVisual
|
|
- name: gfx.webrender.debug.dcomp-redraw-regions
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
#endif
|
|
|
|
- name: gfx.webrender.enable-low-priority-pool
|
|
type: RelaxedAtomicBool
|
|
#if defined(ANDROID)
|
|
value: false
|
|
#else
|
|
value: true
|
|
#endif
|
|
mirror: always
|
|
|
|
# Force subpixel anti-aliasing as much as possible, despite performance cost.
|
|
- name: gfx.webrender.quality.force-subpixel-aa-where-possible
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
#ifdef XP_MACOSX
|
|
- name: gfx.webrender.enable-client-storage
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
#endif
|
|
|
|
# Width of WebRender tile size
|
|
- name: gfx.webrender.picture-tile-width
|
|
type: RelaxedAtomicInt32
|
|
value: 1024
|
|
mirror: always
|
|
|
|
# Width of WebRender tile size
|
|
- name: gfx.webrender.picture-tile-height
|
|
type: RelaxedAtomicInt32
|
|
value: 512
|
|
mirror: always
|
|
|
|
# Whether to use EGL robustness or not.
|
|
- name: gfx.webrender.prefer-robustness
|
|
type: bool
|
|
#if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: once
|
|
|
|
# Whether to use the WebRender software backend
|
|
- name: gfx.webrender.software
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
# Whether to use the D3D11 RenderCompositor when using WebRender software backend
|
|
- name: gfx.webrender.software.d3d11
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
- name: gfx.webrender.software.d3d11.upload-mode
|
|
type: RelaxedAtomicInt32
|
|
value: 4
|
|
mirror: always
|
|
|
|
# Whether to allow widgets that don't support acceleration to use WebRender
|
|
# software backend
|
|
- name: gfx.webrender.software.unaccelerated-widget.allow
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether to force widgets that don't support acceleration to use WebRender
|
|
# software backend
|
|
- name: gfx.webrender.software.unaccelerated-widget.force
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Use vsync events generated by hardware
|
|
- name: gfx.work-around-driver-bugs
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
- name: gfx.ycbcr.accurate-conversion
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "gl." (OpenGL)
|
|
#---------------------------------------------------------------------------
|
|
|
|
- name: gl.allow-high-power
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: gl.ignore-dx-interop2-blacklist
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: gl.use-tls-is-current
|
|
type: RelaxedAtomicInt32
|
|
value: 0
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "html5."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Turn HTML:inert on or off.
|
|
- name: html5.inert.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Toggle which thread the HTML5 parser uses for stream parsing.
|
|
- name: html5.offmainthread
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Time in milliseconds between the time a network buffer is seen and the timer
|
|
# firing when the timer hasn't fired previously in this parse in the
|
|
# off-the-main-thread HTML5 parser.
|
|
- name: html5.flushtimer.initialdelay
|
|
type: RelaxedAtomicInt32
|
|
value: 16
|
|
mirror: always
|
|
|
|
# Time in milliseconds between the time a network buffer is seen and the timer
|
|
# firing when the timer has already fired previously in this parse.
|
|
- name: html5.flushtimer.subsequentdelay
|
|
type: RelaxedAtomicInt32
|
|
value: 16
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "idle_period."
|
|
#---------------------------------------------------------------------------
|
|
|
|
- name: idle_period.min
|
|
type: uint32_t
|
|
value: 3
|
|
mirror: always
|
|
|
|
- name: idle_period.during_page_load.min
|
|
type: uint32_t
|
|
value: 12
|
|
mirror: always
|
|
|
|
- name: idle_period.cross_process_scheduling
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "image."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# The maximum size (in kB) that the aggregate frames of an animation can use
|
|
# before it starts to discard already displayed frames and redecode them as
|
|
# necessary.
|
|
- name: image.animated.decode-on-demand.threshold-kb
|
|
type: RelaxedAtomicUint32
|
|
value: 20*1024
|
|
mirror: always
|
|
|
|
# The minimum number of frames we want to have buffered ahead of an
|
|
# animation's currently displayed frame.
|
|
- name: image.animated.decode-on-demand.batch-size
|
|
type: RelaxedAtomicUint32
|
|
value: 6
|
|
mirror: always
|
|
|
|
# Whether we should recycle already displayed frames instead of discarding
|
|
# them. This saves on the allocation itself, and may be able to reuse the
|
|
# contents as well. Only applies if generating full frames.
|
|
- name: image.animated.decode-on-demand.recycle
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
# Resume an animated image from the last displayed frame rather than
|
|
# advancing when out of view.
|
|
- name: image.animated.resume-from-last-displayed
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Maximum number of surfaces for an image before entering "factor of 2" mode.
|
|
# This in addition to the number of "native" sizes of an image. A native size
|
|
# is a size for which we can decode a frame without up or downscaling. Most
|
|
# images only have 1, but some (i.e. ICOs) may have multiple frames for the
|
|
# same data at different sizes.
|
|
- name: image.cache.factor2.threshold-surfaces
|
|
type: RelaxedAtomicInt32
|
|
value: 4
|
|
mirror: always
|
|
|
|
# Maximum size of a surface in KB we are willing to produce when rasterizing
|
|
# an SVG.
|
|
- name: image.cache.max-rasterized-svg-threshold-kb
|
|
type: RelaxedAtomicInt32
|
|
value: 200*1024
|
|
mirror: always
|
|
|
|
# The maximum size, in bytes, of the decoded images we cache.
|
|
- name: image.cache.size
|
|
type: int32_t
|
|
value: 5*1024*1024
|
|
mirror: once
|
|
|
|
# A weight, from 0-1000, to place on time when comparing to size.
|
|
# Size is given a weight of 1000 - timeweight.
|
|
- name: image.cache.timeweight
|
|
type: int32_t
|
|
value: 500
|
|
mirror: once
|
|
|
|
# Decode all images automatically on load, ignoring our normal heuristics.
|
|
- name: image.decode-immediately.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether we attempt to downscale images during decoding.
|
|
- name: image.downscale-during-decode.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to honor orientation metadata (such as JPEG EXIF tags) by default.
|
|
# When this pref is enabled, all images used by the platform will be correctly
|
|
# re-oriented, except for content images (HTML <img> and CSS generated content
|
|
# images) with image-orientation:none.
|
|
- name: image.honor-orientation-metadata
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Honor image orientation metadata in the naturalWidth and naturalHeight
|
|
# APIs on HTMLImageElement.
|
|
- name: image.honor_orientation_metadata.natural_size
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# The threshold for inferring that changes to an <img> element's |src|
|
|
# attribute by JavaScript represent an animation, in milliseconds. If the |src|
|
|
# attribute is changing more frequently than this value, then we enter a
|
|
# special "animation mode" which is designed to eliminate flicker. Set to 0 to
|
|
# disable.
|
|
- name: image.infer-src-animation.threshold-ms
|
|
type: RelaxedAtomicUint32
|
|
value: 2000
|
|
mirror: always
|
|
|
|
# Whether the network request priority should be adjusted according
|
|
# the layout and view frame position of each particular image.
|
|
- name: image.layout_network_priority
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Chunk size for calls to the image decoders.
|
|
- name: image.mem.decode_bytes_at_a_time
|
|
type: uint32_t
|
|
value: 16384
|
|
mirror: once
|
|
|
|
# Discards inactive image frames and re-decodes them on demand from
|
|
# compressed data.
|
|
- name: image.mem.discardable
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Discards inactive image frames of _animated_ images and re-decodes them on
|
|
# demand from compressed data. Has no effect if image.mem.discardable is false.
|
|
- name: image.mem.animated.discardable
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
# Whether the heap should be used for frames from animated images. On Android,
|
|
# volatile memory keeps file handles open for each buffer.
|
|
- name: image.mem.animated.use_heap
|
|
type: RelaxedAtomicBool
|
|
value: @IS_ANDROID@
|
|
mirror: always
|
|
|
|
# Enable extra information for debugging in the image memory reports.
|
|
- name: image.mem.debug-reporting
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Decodes images into shared memory to allow direct use in separate
|
|
# rendering processes. Only applicable with WebRender.
|
|
- name: image.mem.shared
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# How much of the data in the surface cache is discarded when we get a memory
|
|
# pressure notification, as a fraction. The discard factor is interpreted as a
|
|
# reciprocal, so a discard factor of 1 means to discard everything in the
|
|
# surface cache on memory pressure, a discard factor of 2 means to discard half
|
|
# of the data, and so forth. The default should be a good balance for desktop
|
|
# and laptop systems, where we never discard visible images.
|
|
- name: image.mem.surfacecache.discard_factor
|
|
type: uint32_t
|
|
value: 1
|
|
mirror: once
|
|
|
|
# Maximum size for the surface cache, in kilobytes.
|
|
- name: image.mem.surfacecache.max_size_kb
|
|
type: uint32_t
|
|
value: 2024 * 1024
|
|
mirror: once
|
|
|
|
# Minimum timeout for expiring unused images from the surface cache, in
|
|
# milliseconds. This controls how long we store cached temporary surfaces.
|
|
- name: image.mem.surfacecache.min_expiration_ms
|
|
type: uint32_t
|
|
value: 60*1000
|
|
mirror: once
|
|
|
|
# The surface cache's size, within the constraints of the maximum size set
|
|
# above, is determined as a fraction of main memory size. The size factor is
|
|
# interpreted as a reciprocal, so a size factor of 4 means to use no more than
|
|
# 1/4 of main memory. The default should be a good balance for most systems.
|
|
- name: image.mem.surfacecache.size_factor
|
|
type: uint32_t
|
|
value: 4
|
|
mirror: once
|
|
|
|
# Minimum buffer size in KB before using volatile memory over the heap.
|
|
- name: image.mem.volatile.min_threshold_kb
|
|
type: RelaxedAtomicInt32
|
|
#if defined(ANDROID)
|
|
# On Android, volatile memory keeps file handles open for each buffer.
|
|
value: 100
|
|
#else
|
|
value: -1
|
|
#endif
|
|
mirror: always
|
|
|
|
# How long in ms before we should start shutting down idle decoder threads.
|
|
- name: image.multithreaded_decoding.idle_timeout
|
|
type: int32_t
|
|
value: 600000
|
|
mirror: once
|
|
|
|
# How many threads we'll use for multithreaded decoding. If < 0, will be
|
|
# automatically determined based on the system's number of cores.
|
|
- name: image.multithreaded_decoding.limit
|
|
type: int32_t
|
|
value: -1
|
|
mirror: once
|
|
|
|
# Whether we attempt to decode WebP images or not.
|
|
- name: image.webp.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether we attempt to decode AVIF images or not.
|
|
- name: image.avif.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether we use dav1d (true) or libaom (false) to decode AVIF image
|
|
- name: image.avif.use-dav1d
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "intl."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Whether the new encoding detector is enabled for the .jp TLD.
|
|
- name: intl.charset.detector.ng.jp.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether the new encoding detector is enabled for the .in TLD.
|
|
- name: intl.charset.detector.ng.in.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether the new encoding detector is enabled for the .lk TLD.
|
|
- name: intl.charset.detector.ng.lk.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# If true, dispatch the keydown and keyup events on any web apps even during
|
|
# composition.
|
|
- name: intl.ime.hack.on_any_apps.fire_key_events_for_composition
|
|
type: bool
|
|
value: @IS_ANDROID@
|
|
mirror: always
|
|
|
|
# Android-specific pref to control if keydown and keyup events are fired even
|
|
# during composition. Note that those prefs are ignored if
|
|
# dom.keyboardevent.dispatch_during_composition is false.
|
|
- name: intl.ime.hack.on_ime_unaware_apps.fire_key_events_for_composition
|
|
type: bool
|
|
# If true and intl.ime.hack.on_any_apps.fire_key_events_for_composition is
|
|
# false, dispatch the keydown and keyup events only on IME-unaware web apps.
|
|
# So, this supports web apps which listen to only keydown or keyup events
|
|
# to get a change to do something at every text input.
|
|
value: @IS_ANDROID@
|
|
mirror: always
|
|
|
|
#ifdef XP_WIN
|
|
# If true, automatically extend selection to cluster boundaries when
|
|
# TSF/TIP requests to select from/by middle of a cluster.
|
|
- name: intl.tsf.hack.extend_setting_selection_range_to_cluster_boundaries
|
|
type: bool
|
|
value: @IS_NOT_EARLY_BETA_OR_EARLIER@
|
|
mirror: always
|
|
#endif
|
|
|
|
# If you use legacy Chinese IME which puts an ideographic space to composition
|
|
# string as placeholder, this pref might be useful. If this is true and when
|
|
# web contents forcibly commits composition (e.g., moving focus), the
|
|
# ideographic space will be ignored (i.e., commits with empty string).
|
|
- name: intl.ime.remove_placeholder_character_at_commit
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "javascript."
|
|
#---------------------------------------------------------------------------
|
|
|
|
- name: javascript.options.compact_on_user_inactive
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# The default amount of time to wait from the user being idle to starting a
|
|
# shrinking GC. Measured in milliseconds.
|
|
- name: javascript.options.compact_on_user_inactive_delay
|
|
type: uint32_t
|
|
#ifdef NIGHTLY_BUILD
|
|
value: 15000
|
|
#else
|
|
value: 300000
|
|
#endif
|
|
mirror: always
|
|
|
|
# Use better error message when accessing property of null or undefined.
|
|
- name: javascript.options.property_error_message_fix
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NIGHTLY_OR_DEV_EDITION@
|
|
mirror: always
|
|
|
|
# Support for weak references in JavaScript (WeakRef and FinalizationRegistry).
|
|
- name: javascript.options.weakrefs
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to expose the FinalizationRegistry.prototype.cleanupSome method.
|
|
- name: javascript.options.experimental.weakrefs.expose_cleanupSome
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
#ifdef NIGHTLY_BUILD
|
|
# Experimental support for Iterator Helpers in JavaScript.
|
|
- name: javascript.options.experimental.iterator_helpers
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Experimental support for Private Fields in JavaScript.
|
|
- name: javascript.options.experimental.private_fields
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Experimental support for Private Methods in JavaScript.
|
|
- name: javascript.options.experimental.private_methods
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Experimental support for Top-level Await in JavaScript.
|
|
- name: javascript.options.experimental.top_level_await
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
#endif
|
|
|
|
# The amount of time we wait between a request to GC (due to leaving a page) and doing the actual GC, in ms.
|
|
- name: javascript.options.gc_delay
|
|
type: uint32_t
|
|
value: 4000
|
|
mirror: always
|
|
|
|
# The amount of time we wait from the first request to GC to actually doing the first GC, in ms.
|
|
- name: javascript.options.gc_delay.first
|
|
type: uint32_t
|
|
value: 10000
|
|
mirror: always
|
|
|
|
# After doing a zonal GC, wait this much time (in ms) and then do a full GC,
|
|
# unless one is already pending.
|
|
- name: javascript.options.gc_delay.full
|
|
type: uint32_t
|
|
value: 60000
|
|
mirror: always
|
|
|
|
# Maximum amount of time that should elapse between incremental GC slices, in ms.
|
|
- name: javascript.options.gc_delay.interslice
|
|
type: uint32_t
|
|
value: 100
|
|
mirror: always
|
|
|
|
# nsJSEnvironmentObserver observes the memory-pressure notifications and
|
|
# forces a garbage collection and cycle collection when it happens, if the
|
|
# appropriate pref is set.
|
|
- name: javascript.options.gc_on_memory_pressure
|
|
type: bool
|
|
# Disable the JS engine's GC on memory pressure, since we do one in the
|
|
# mobile browser (bug 669346).
|
|
# XXX: this value possibly should be changed, or the pref removed entirely.
|
|
# See bug 1450787.
|
|
value: @IS_NOT_ANDROID@
|
|
mirror: always
|
|
|
|
- name: javascript.options.mem.log
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: javascript.options.mem.notify
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Streams API.
|
|
- name: javascript.options.streams
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Writable Streams API. (The pref above must also be set to expose this.)
|
|
#
|
|
# Writable streams are still EXTRAORDINARILY BETA and it is well-known that
|
|
# things are likely pretty broken if you poke much at all, so if you flip this
|
|
# preference, don't report bugs against it just yet.
|
|
- name: javascript.options.writable_streams
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: javascript.options.main_thread_stack_quota_cap
|
|
type: uint32_t
|
|
#if defined(MOZ_ASAN)
|
|
value: 6 * 1024 * 1024
|
|
#else
|
|
value: 2 * 1024 * 1024
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: javascript.options.wasm_optimizingjit
|
|
type: bool
|
|
#if defined(MOZ_AARCH64) && !defined(ENABLE_WASM_CRANELIFT)
|
|
value: false
|
|
#else
|
|
value: true
|
|
#endif
|
|
mirror: always
|
|
|
|
#if defined(ENABLE_WASM_SIMD)
|
|
- name: javascript.options.wasm_simd
|
|
type: bool
|
|
#if defined(NIGHTLY_BUILD)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
#endif
|
|
|
|
#if defined(ENABLE_WASM_SIMD_WORMHOLE) && defined(EARLY_BETA_OR_EARLIER)
|
|
# This is x64-only and it would break unified macOS builds if
|
|
# it were in all.js. The feature rides the trains but not the
|
|
# pref to control it; in late beta and release, it is only
|
|
# available to privileged content.
|
|
- name: javascript.options.wasm_simd_wormhole
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
#endif
|
|
|
|
- name: javascript.options.large_arraybuffers
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "layers."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Whether to disable acceleration for all widgets.
|
|
- name: layers.acceleration.disabled
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
do_not_use_directly: true
|
|
# Instead, use gfxConfig::IsEnabled(Feature::HW_COMPOSITING).
|
|
|
|
- name: layers.acceleration.draw-fps
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layers.acceleration.draw-fps.print-histogram
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layers.acceleration.draw-fps.write-to-file
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether to force acceleration on, ignoring blacklists.
|
|
|
|
# bug 838603 -- on Android, accidentally blacklisting OpenGL layers
|
|
# means a startup crash for everyone.
|
|
# Temporarily force-enable GL compositing. This is default-disabled
|
|
# deep within the bowels of the widgetry system. Remove me when GL
|
|
# compositing isn't default disabled in widget/android.
|
|
- name: layers.acceleration.force-enabled
|
|
type: bool
|
|
value: @IS_ANDROID@
|
|
mirror: once
|
|
do_not_use_directly: true
|
|
|
|
# Whether we allow AMD switchable graphics.
|
|
- name: layers.amd-switchable-gfx.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
# Whether to use async panning and zooming.
|
|
- name: layers.async-pan-zoom.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
do_not_use_directly: true
|
|
|
|
# Preference that when switched at runtime will run a series of benchmarks
|
|
# and output the result to stderr.
|
|
- name: layers.bench.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layers.bufferrotation.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
- name: layers.child-process-shutdown
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: layers.componentalpha.enabled
|
|
type: bool
|
|
#ifdef MOZ_GFX_OPTIMIZE_MOBILE
|
|
# Nb: we ignore this pref if MOZ_GFX_OPTIMIZE_MOBILE is defined, as if this
|
|
# pref was always false. But we go to the effort of setting it to false so
|
|
# that telemetry's reporting of the pref value is more likely to reflect what
|
|
# the code is doing.
|
|
value: false
|
|
#else
|
|
value: true
|
|
#endif
|
|
mirror: once
|
|
do_not_use_directly: true
|
|
|
|
- name: layers.d3d11.force-warp
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
- name: layers.d3d11.enable-blacklist
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
# Enable DEAA antialiasing for transformed layers in the compositor.
|
|
- name: layers.deaa.enabled
|
|
type: RelaxedAtomicBool
|
|
#if defined(MOZ_WIDGET_ANDROID)
|
|
value: false
|
|
#else
|
|
value: true
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: layers.draw-bigimage-borders
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layers.draw-borders
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layers.draw-tile-borders
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layers.draw-layer-info
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layers.dump
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# If we're dumping layers, also dump the texture data
|
|
- name: layers.dump-texture
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
#ifdef MOZ_DUMP_PAINTING
|
|
- name: layers.dump-decision
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
#endif
|
|
|
|
- name: layers.dump-client-layers
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layers.dump-host-layers
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layers.compositing-tiles.width
|
|
type: RelaxedAtomicInt32
|
|
value: 1024
|
|
mirror: always
|
|
|
|
- name: layers.compositing-tiles.height
|
|
type: RelaxedAtomicInt32
|
|
value: 1024
|
|
mirror: always
|
|
|
|
# 0 is "no change" for contrast, positive values increase it, negative values
|
|
# decrease it until we hit mid gray at -1 contrast, after that it gets weird.
|
|
- name: layers.effect.contrast
|
|
type: AtomicFloat
|
|
value: 0.0f
|
|
mirror: always
|
|
|
|
- name: layers.effect.grayscale
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layers.effect.invert
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layers.enable-tiles
|
|
type: bool
|
|
#if defined(XP_MACOSX) || defined (XP_OPENBSD)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: once
|
|
|
|
- name: layers.enable-tiles-if-skia-pomtp
|
|
type: bool
|
|
#if defined(XP_WIN)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: once
|
|
|
|
- name: layers.flash-borders
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Force all possible layers to be always active layers.
|
|
- name: layers.force-active
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layers.force-shmem-tiles
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
- name: layers.draw-mask-debug
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layers.force-synchronous-resize
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to enable arbitrary layer geometry for OpenGL compositor.
|
|
- name: layers.geometry.opengl.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to enable arbitrary layer geometry for Basic compositor.
|
|
- name: layers.geometry.basic.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to enable arbitrary layer geometry for DirectX compositor.
|
|
- name: layers.geometry.d3d11.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: layers.gpu-process.allow-software
|
|
type: bool
|
|
#if defined(XP_WIN)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: once
|
|
|
|
- name: layers.gpu-process.enabled
|
|
type: bool
|
|
#if defined(XP_WIN)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: once
|
|
|
|
- name: layers.gpu-process.force-enabled
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
- name: layers.gpu-process.ipc_reply_timeout_ms
|
|
type: int32_t
|
|
value: 10000
|
|
mirror: once
|
|
|
|
- name: layers.gpu-process.max_restarts
|
|
type: RelaxedAtomicInt32
|
|
#if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
|
|
#if defined(NIGHTLY_BUILD)
|
|
value: 3
|
|
#else
|
|
value: 1
|
|
#endif
|
|
#else
|
|
value: 1
|
|
#endif
|
|
mirror: always
|
|
|
|
# Note: This pref will only be used if it is less than layers.gpu-process.max_restarts.
|
|
- name: layers.gpu-process.max_restarts_with_decoder
|
|
type: RelaxedAtomicInt32
|
|
value: 0
|
|
mirror: always
|
|
|
|
- name: layers.gpu-process.startup_timeout_ms
|
|
type: int32_t
|
|
value: 5000
|
|
mirror: once
|
|
|
|
- name: layers.gpu-process.crash-also-crashes-browser
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layers.low-precision-buffer
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layers.low-precision-opacity
|
|
type: AtomicFloat
|
|
value: 1.0f
|
|
mirror: always
|
|
|
|
- name: layers.low-precision-resolution
|
|
type: AtomicFloat
|
|
value: 0.25f
|
|
mirror: always
|
|
|
|
# Max number of layers per container. See Overwrite in mobile prefs.
|
|
- name: layers.max-active
|
|
type: RelaxedAtomicInt32
|
|
value: -1
|
|
mirror: always
|
|
|
|
|
|
# Whether to animate simple opacity and transforms on the compositor.
|
|
- name: layers.offmainthreadcomposition.async-animations
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to log information about off main thread animations to stderr.
|
|
- name: layers.offmainthreadcomposition.log-animations
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layers.offmainthreadcomposition.force-disabled
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
# Compositor target frame rate. NOTE: If vsync is enabled the compositor
|
|
# frame rate will still be capped.
|
|
# -1 -> default (match layout.frame_rate or 60 FPS)
|
|
# 0 -> full-tilt mode: Recomposite even if not transaction occured.
|
|
- name: layers.offmainthreadcomposition.frame-rate
|
|
type: RelaxedAtomicInt32
|
|
value: -1
|
|
mirror: always
|
|
|
|
- name: layers.omtp.capture-limit
|
|
type: uint32_t
|
|
value: 25 * 1024 * 1024
|
|
mirror: once
|
|
|
|
- name: layers.omtp.dump-capture
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layers.omtp.paint-workers
|
|
type: int32_t
|
|
value: -1
|
|
mirror: once
|
|
|
|
- name: layers.omtp.release-capture-on-main-thread
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layers.orientation.sync.timeout
|
|
type: RelaxedAtomicUint32
|
|
value: (uint32_t)0
|
|
mirror: always
|
|
|
|
#ifdef XP_WIN
|
|
- name: layers.prefer-opengl
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
#endif
|
|
|
|
- name: layers.progressive-paint
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Copy-on-write canvas.
|
|
- name: layers.shared-buffer-provider.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: layers.single-tile.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# We allow for configurable and rectangular tile size to avoid wasting memory
|
|
# on devices whose screen size does not align nicely to the default tile size.
|
|
# Although layers can be any size, they are often the same size as the screen,
|
|
# especially for width.
|
|
- name: layers.tile-width
|
|
type: int32_t
|
|
value: 512
|
|
mirror: once
|
|
|
|
- name: layers.tile-height
|
|
type: int32_t
|
|
value: 512
|
|
mirror: once
|
|
|
|
- name: layers.tile-initial-pool-size
|
|
type: uint32_t
|
|
value: (uint32_t)50
|
|
mirror: once
|
|
|
|
- name: layers.tile-pool-unused-size
|
|
type: uint32_t
|
|
value: (uint32_t)10
|
|
mirror: once
|
|
|
|
- name: layers.tile-pool-shrink-timeout
|
|
type: uint32_t
|
|
value: (uint32_t)50
|
|
mirror: once
|
|
|
|
- name: layers.tile-pool-clear-timeout
|
|
type: uint32_t
|
|
value: (uint32_t)5000
|
|
mirror: once
|
|
|
|
# If this is set the tile size will only be treated as a suggestion.
|
|
# On B2G we will round this to the stride of the underlying allocation.
|
|
# On any platform we may later use the screen size and ignore
|
|
# tile-width/tile-height entirely. Its recommended to turn this off
|
|
# if you change the tile size.
|
|
- name: layers.tiles.adjust
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
- name: layers.tiles.edge-padding
|
|
type: bool
|
|
value: @IS_ANDROID@
|
|
mirror: once
|
|
|
|
- name: layers.tiles.fade-in.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layers.tiles.fade-in.duration-ms
|
|
type: RelaxedAtomicUint32
|
|
value: 250
|
|
mirror: always
|
|
|
|
- name: layers.tiles.retain-back-buffer
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: layers.transaction.warning-ms
|
|
type: RelaxedAtomicUint32
|
|
value: 200
|
|
mirror: always
|
|
|
|
- name: layers.uniformity-info
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
- name: layers.use-image-offscreen-surfaces
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
- name: layers.recycle-allocator-rdd
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
- name: layers.iosurfaceimage.recycle-limit
|
|
type: RelaxedAtomicUint32
|
|
value: 15
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "layout."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Debug-only pref to force enable the AccessibleCaret. If you want to
|
|
# control AccessibleCaret by mouse, you'll need to set
|
|
# "layout.accessiblecaret.hide_carets_for_mouse_input" to false.
|
|
- name: layout.accessiblecaret.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Enable the accessible caret on platforms/devices
|
|
# that we detect have touch support. Note that this pref is an
|
|
# additional way to enable the accessible carets, rather than
|
|
# overriding the layout.accessiblecaret.enabled pref.
|
|
- name: layout.accessiblecaret.enabled_on_touch
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# By default, carets become tilt only when they are overlapping.
|
|
- name: layout.accessiblecaret.always_tilt
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Show caret in cursor mode when long tapping on an empty content. This
|
|
# also changes the default update behavior in cursor mode, which is based
|
|
# on the emptiness of the content, into something more heuristic. See
|
|
# AccessibleCaretManager::UpdateCaretsForCursorMode() for the details.
|
|
- name: layout.accessiblecaret.caret_shown_when_long_tapping_on_empty_content
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# 0 = by default, always hide carets for selection changes due to JS calls.
|
|
# 1 = update any visible carets for selection changes due to JS calls,
|
|
# but don't show carets if carets are hidden.
|
|
# 2 = always show carets for selection changes due to JS calls.
|
|
- name: layout.accessiblecaret.script_change_update_mode
|
|
type: int32_t
|
|
value: 0
|
|
mirror: always
|
|
|
|
# Allow one caret to be dragged across the other caret without any limitation.
|
|
# This matches the built-in convention for all desktop platforms.
|
|
- name: layout.accessiblecaret.allow_dragging_across_other_caret
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Optionally provide haptic feedback on long-press selection events.
|
|
- name: layout.accessiblecaret.hapticfeedback
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Smart phone-number selection on long-press is not enabled by default.
|
|
- name: layout.accessiblecaret.extend_selection_for_phone_number
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Keep the accessible carets hidden when the user is using mouse input (as
|
|
# opposed to touch/pen/etc.).
|
|
- name: layout.accessiblecaret.hide_carets_for_mouse_input
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# CSS attributes (width, height, margin-left) of the AccessibleCaret in CSS
|
|
# pixels.
|
|
- name: layout.accessiblecaret.width
|
|
type: float
|
|
value: 34.0f
|
|
mirror: always
|
|
|
|
- name: layout.accessiblecaret.height
|
|
type: float
|
|
value: 36.0f
|
|
mirror: always
|
|
|
|
- name: layout.accessiblecaret.margin-left
|
|
type: float
|
|
value: -18.5f
|
|
mirror: always
|
|
|
|
- name: layout.accessiblecaret.transition-duration
|
|
type: float
|
|
value: 250.0f
|
|
mirror: always
|
|
|
|
# Simulate long tap events to select words. Mainly used in manual testing
|
|
# with mouse.
|
|
- name: layout.accessiblecaret.use_long_tap_injector
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether we should layerize all animated images (if otherwise possible).
|
|
- name: layout.animated-image-layers.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# One of several prefs affecting the maximum area to pre-render when animating
|
|
# a large element on the compositor.
|
|
# This pref enables transform (and transform like properties) animations on a
|
|
# large element run on the compositor with rendering partial area of the
|
|
# element on the main thread instead of rendering the whole area. Once the
|
|
# animation tried to composite out of the partial rendered area, the animation
|
|
# is rendered again with the latest visible partial area.
|
|
- name: layout.animation.prerender.partial
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# One of several prefs affecting the maximum area to pre-render when animating
|
|
# a large element on the compositor.
|
|
# This value is applied to both x and y axes and a perfect square contructed
|
|
# by the greater axis value which will be capped by the absolute limits is used
|
|
# for the partial pre-render area.
|
|
- name: layout.animation.prerender.viewport-ratio-limit
|
|
type: AtomicFloat
|
|
value: 1.125f
|
|
mirror: always
|
|
|
|
# One of several prefs affecting the maximum area to pre-render when animating
|
|
# a large element on the compositor.
|
|
- name: layout.animation.prerender.absolute-limit-x
|
|
type: RelaxedAtomicUint32
|
|
value: 4096
|
|
mirror: always
|
|
|
|
# One of several prefs affecting the maximum area to pre-render when animating
|
|
# a large element on the compositor.
|
|
- name: layout.animation.prerender.absolute-limit-y
|
|
type: RelaxedAtomicUint32
|
|
value: 4096
|
|
mirror: always
|
|
|
|
# Test-only pref, if this is true, partial pre-rendered transform animations
|
|
# get stuck when it reaches to the pre-rendered boundaries and the pre-render
|
|
# region is never updated.
|
|
- name: layout.animation.prerender.partial.jank
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether non-standard caption-side values are enabled
|
|
- name: layout.css.caption-side-non-standard.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Whether Constructable Stylesheets are enabled in script.
|
|
- name: layout.css.constructable-stylesheets.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Should we look for counter ancestor scopes first?
|
|
- name: layout.css.counter-ancestor-scope.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether we get notified of history queries for visited even if unvisited.
|
|
- name: layout.css.notify-of-unvisited
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether we always restyle / repaint as a result of a visited query
|
|
- name: layout.css.always-repaint-on-unvisited
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Make `zoom` a `transform` + `transform-origin` alias.
|
|
- name: layout.css.zoom-transform-hack.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Whether the `no-preference` value for `prefers-color-scheme` is parsed.
|
|
#
|
|
# It never matches regardless.
|
|
- name: layout.css.prefers-color-scheme-no-preference.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Whether the `:autofill` pseudo-class is exposed to content.
|
|
- name: layout.css.autofill.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Whether the `:-moz-submit-invalid` pseudo-class is exposed to content.
|
|
- name: layout.css.moz-submit-invalid.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Whether the `aspect-ratio` in css-sizing-4 is enabled.
|
|
- name: layout.css.aspect-ratio.enabled
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Is the codepath for using cached scrollbar styles enabled?
|
|
- name: layout.css.cached-scrollbar-styles.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is path() supported in clip-path?
|
|
- name: layout.css.clip-path-path.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Is the image-set() function enabled?
|
|
- name: layout.css.image-set.enabled
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Are implicit tracks in computed grid templates serialized?
|
|
- name: layout.css.serialize-grid-implicit-tracks
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Set the number of device pixels per CSS pixel. A value <= 0 means choose
|
|
# automatically based on user settings for the platform (e.g., "UI scale factor"
|
|
# on Mac). A positive value is used as-is. This effectively controls the size
|
|
# of a CSS "px". This is only used for windows on the screen, not for printing.
|
|
- name: layout.css.devPixelsPerPx
|
|
type: AtomicFloat
|
|
value: -1.0f
|
|
mirror: always
|
|
|
|
# Is support for CSS backdrop-filter enabled?
|
|
- name: layout.css.backdrop-filter.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Should stray control characters be rendered visibly?
|
|
- name: layout.css.control-characters.visible
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NOT_RELEASE_OR_BETA@
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Is support for GeometryUtils.convert*FromNode enabled?
|
|
- name: layout.css.convertFromNode.enabled
|
|
type: bool
|
|
value: @IS_NOT_RELEASE_OR_BETA@
|
|
mirror: always
|
|
|
|
- name: layout.css.cross-fade.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Is support for DOMMatrix enabled?
|
|
- name: layout.css.DOMMatrix.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for DOMQuad enabled?
|
|
- name: layout.css.DOMQuad.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for DOMPoint enabled?
|
|
- name: layout.css.DOMPoint.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Are we emulating -moz-{inline}-box layout using CSS flexbox?
|
|
- name: layout.css.emulate-moz-box-with-flex
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Is support for the font-display @font-face descriptor enabled?
|
|
- name: layout.css.font-display.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Is support for document.fonts enabled?
|
|
- name: layout.css.font-loading-api.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for variation fonts enabled?
|
|
- name: layout.css.font-variations.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Visibility level of font families available to CSS font-matching:
|
|
# 1 - only base system fonts
|
|
# 2 - also fonts from optional language packs
|
|
# 3 - also user-installed fonts
|
|
- name: layout.css.font-visibility.level
|
|
type: RelaxedAtomicInt32
|
|
value: 3
|
|
mirror: always
|
|
|
|
# Is support for GeometryUtils.getBoxQuads enabled?
|
|
- name: layout.css.getBoxQuads.enabled
|
|
type: bool
|
|
value: @IS_NOT_RELEASE_OR_BETA@
|
|
mirror: always
|
|
|
|
# Is support for CSS "grid-template-{columns,rows}: subgrid X" enabled?
|
|
- name: layout.css.grid-template-subgrid-value.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Is support for CSS masonry layout enabled?
|
|
- name: layout.css.grid-template-masonry-value.enabled
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Is support for CSS individual transform enabled?
|
|
- name: layout.css.individual-transform.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is the initial value for the image-orientation property 'from-image'?
|
|
- name: layout.css.image-orientation.initial-from-image
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Is support for CSS initial-letter property enabled?
|
|
- name: layout.css.initial-letter.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Pref to control whether line-height: -moz-block-height is exposed to content.
|
|
- name: layout.css.line-height-moz-block-height.content.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Is support for motion-path enabled?
|
|
- name: layout.css.motion-path.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for motion-path ray() enabled?
|
|
- name: layout.css.motion-path-ray.enabled
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Pref to control whether the ::marker property restrictions defined in [1]
|
|
# apply.
|
|
#
|
|
# [1]: https://drafts.csswg.org/css-pseudo-4/#selectordef-marker
|
|
- name: layout.css.marker.restricted
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Is support for math-style enabled?
|
|
- name: layout.css.math-style.enabled
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Is support for math-depth enabled?
|
|
# This must not be enabled until implementation is complete (see bug 1667090).
|
|
- name: layout.css.math-depth.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Pref to control whether @-moz-document rules are enabled in content pages.
|
|
- name: layout.css.moz-document.content.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Is -moz-osx-font-smoothing enabled? (Only supported in OSX builds)
|
|
- name: layout.css.osx-font-smoothing.enabled
|
|
type: bool
|
|
#if defined(XP_MACOSX)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
# Is support for CSS overflow-clip-box enabled for non-UA sheets?
|
|
- name: layout.css.overflow-clip-box.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Is support for overscroll-behavior enabled?
|
|
- name: layout.css.overscroll-behavior.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: layout.css.overflow-logical.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Dictates whether or not the prefers contrast media query will be
|
|
# usable.
|
|
# true: prefers-contrast will toggle based on OS and browser settings.
|
|
# false: prefers-contrast will only parse and toggle in the browser
|
|
# chrome and ua.
|
|
- name: layout.css.prefers-contrast.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Dictates whether or not the forced-colors media query is enabled.
|
|
- name: layout.css.forced-colors.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Is support for -moz-prefixed animation properties enabled?
|
|
- name: layout.css.prefixes.animations
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for -moz-border-image enabled?
|
|
- name: layout.css.prefixes.border-image
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for -moz-box-sizing enabled?
|
|
- name: layout.css.prefixes.box-sizing
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for -moz-prefixed multi-column properties (including column-gap) enabled?
|
|
- name: layout.css.prefixes.columns
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Is support for -moz-prefixed font feature properties enabled?
|
|
- name: layout.css.prefixes.font-features
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for -moz-prefixed transform properties enabled?
|
|
- name: layout.css.prefixes.transforms
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for -moz-prefixed transition properties enabled?
|
|
- name: layout.css.prefixes.transitions
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is CSS error reporting enabled?
|
|
- name: layout.css.report_errors
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: layout.css.resizeobserver.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Are inter-character ruby annotations enabled?
|
|
- name: layout.css.ruby.intercharacter.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layout.css.scroll-behavior.damping-ratio
|
|
type: AtomicFloat
|
|
value: 1.0f
|
|
mirror: always
|
|
|
|
- name: layout.css.supports-selector.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Is CSSOM-View scroll-behavior and its MSD smooth scrolling enabled?
|
|
- name: layout.css.scroll-behavior.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Tuning of the smooth scroll motion used by CSSOM-View scroll-behavior.
|
|
# Spring-constant controls the strength of the simulated MSD
|
|
# (Mass-Spring-Damper).
|
|
- name: layout.css.scroll-behavior.spring-constant
|
|
type: AtomicFloat
|
|
value: 250.0f
|
|
mirror: always
|
|
|
|
# When selecting the snap point for CSS scroll snapping, the velocity of the
|
|
# scroll frame is clamped to this speed, in CSS pixels / s.
|
|
- name: layout.css.scroll-snap.prediction-max-velocity
|
|
type: RelaxedAtomicInt32
|
|
value: 2000
|
|
mirror: always
|
|
|
|
# When selecting the snap point for CSS scroll snapping, the velocity of the
|
|
# scroll frame is integrated over this duration, in seconds. The snap point
|
|
# best suited for this position is selected, enabling the user to perform fling
|
|
# gestures.
|
|
- name: layout.css.scroll-snap.prediction-sensitivity
|
|
type: AtomicFloat
|
|
value: 0.750f
|
|
mirror: always
|
|
|
|
# Set the threshold distance in CSS pixels below which scrolling will snap to
|
|
# an edge, when scroll snapping is set to "proximity".
|
|
- name: layout.css.scroll-snap.proximity-threshold
|
|
type: RelaxedAtomicInt32
|
|
value: 200
|
|
mirror: always
|
|
|
|
# Is steps(jump-*) supported in easing functions?
|
|
- name: layout.css.step-position-jump.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
rust: true
|
|
|
|
# W3C touch-action css property (related to touch and pointer events)
|
|
# Note that we turn this on even on platforms/configurations where touch
|
|
# events are not supported (e.g. OS X, or Windows with e10s disabled). For
|
|
# those platforms we don't handle touch events anyway so it's conceptually
|
|
# a no-op.
|
|
- name: layout.css.touch_action.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Are counters for implemented CSS properties enabled?
|
|
- name: layout.css.use-counters.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Are counters for unimplemented CSS properties enabled?
|
|
- name: layout.css.use-counters-unimplemented.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Should the :visited selector ever match (otherwise :link matches instead)?
|
|
- name: layout.css.visited_links_enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: layout.css.xul-display-values.content.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Pref to control whether display: -moz-box and display: -moz-inline-box are
|
|
# parsed in content pages.
|
|
- name: layout.css.xul-box-display-values.content.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Whether to block large cursors intersecting UI.
|
|
- name: layout.cursor.block.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# The maximum width or height of the cursor we should allow when intersecting
|
|
# the UI, in CSS pixels.
|
|
- name: layout.cursor.block.max-size
|
|
type: uint32_t
|
|
value: 32
|
|
mirror: always
|
|
|
|
- name: layout.display-list.build-twice
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Toggle retaining display lists between paints.
|
|
- name: layout.display-list.retain
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Toggle retaining display lists between paints.
|
|
- name: layout.display-list.retain.chrome
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Set the maximum number of modified frames allowed before doing a full
|
|
# display list rebuild.
|
|
- name: layout.display-list.rebuild-frame-limit
|
|
type: RelaxedAtomicUint32
|
|
value: 500
|
|
mirror: always
|
|
|
|
# Pref to dump the display list to the log. Useful for debugging drawing.
|
|
- name: layout.display-list.dump
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Pref to dump the display list to the log. Useful for debugging drawing.
|
|
- name: layout.display-list.dump-content
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Pref to dump the display list to the log. Useful for debugging drawing.
|
|
- name: layout.display-list.dump-parent
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layout.display-list.show-rebuild-area
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layout.display-list.flatten-transform
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: layout.display-list.improve-fragmentation
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Are dynamic reflow roots enabled?
|
|
- name: layout.dynamic-reflow-roots.enabled
|
|
type: bool
|
|
value: @IS_EARLY_BETA_OR_EARLIER@
|
|
mirror: always
|
|
|
|
# Enables the <input type=search> custom layout frame with a clear icon.
|
|
# Still needs tests and a web-exposed way to remove that icon, see bug 1654288.
|
|
- name: layout.forms.input-type-search.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Pref to control browser frame rate, in Hz. A value <= 0 means choose
|
|
# automatically based on knowledge of the platform (or 60Hz if no platform-
|
|
# specific information is available).
|
|
- name: layout.frame_rate
|
|
type: RelaxedAtomicInt32
|
|
value: -1
|
|
mirror: always
|
|
|
|
# The time in number of frames that we estimate for a refresh driver
|
|
# to be quiescent.
|
|
- name: layout.idle_period.required_quiescent_frames
|
|
type: uint32_t
|
|
value: 2
|
|
mirror: always
|
|
|
|
# The amount of time (milliseconds) needed between an idle period's
|
|
# end and the start of the next tick to avoid jank.
|
|
- name: layout.idle_period.time_limit
|
|
type: uint32_t
|
|
value: 1
|
|
mirror: always
|
|
|
|
# Enable/disable interruptible reflow, which allows reflows to stop
|
|
# before completion (and display the partial results) when user events
|
|
# are pending.
|
|
- name: layout.interruptible-reflow.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: layout.min-active-layer-size
|
|
type: int32_t
|
|
value: 64
|
|
mirror: always
|
|
|
|
- name: layout.paint_rects_separately
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
# On Android, don't synth mouse move events after scrolling, as they cause
|
|
# unexpected user-visible behaviour. Can remove this after bug 1633450 is
|
|
# satisfactorily resolved.
|
|
- name: layout.reflow.synthMouseMove
|
|
type: bool
|
|
value: @IS_NOT_ANDROID@
|
|
mirror: always
|
|
|
|
# This pref is to be set by test code only.
|
|
- name: layout.scrollbars.always-layerize-track
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Controls caret style and word-delete during text selection.
|
|
# 0: Use platform default
|
|
# 1: Caret moves and blinks as when there is no selection; word
|
|
# delete deselects the selection and then deletes word.
|
|
# 2: Caret moves to selection edge and is not visible during selection;
|
|
# word delete deletes the selection (Mac and Linux default).
|
|
# 3: Caret moves and blinks as when there is no selection; word delete
|
|
# deletes the selection.
|
|
# Windows default is 1 for word delete behavior, the rest as for 2.
|
|
- name: layout.selection.caret_style
|
|
type: int32_t
|
|
value: 0
|
|
mirror: always
|
|
|
|
# If layout.show_previous_page is true then during loading of a new page we
|
|
# will draw the previous page if the new page has painting suppressed.
|
|
- name: layout.show_previous_page
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: layout.smaller-painted-layers
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Pref to stop overlay scrollbars from fading out, for testing purposes.
|
|
- name: layout.testing.overlay-scrollbars.always-visible
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: layout.lower_priority_refresh_driver_during_load
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is layout of CSS outline-style:auto enabled?
|
|
- name: layout.css.outline-style-auto.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether outline should follow the border radius.
|
|
- name: layout.css.outline-follows-border-radius.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Pref to control enabling scroll anchoring.
|
|
- name: layout.css.scroll-anchoring.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Pref to control how many consecutive scroll-anchoring adjustments (since the
|
|
# most recent user scroll) we'll average, before we consider whether to
|
|
# automatically turn off scroll anchoring. When we hit this threshold, the
|
|
# actual decision to disable also depends on the
|
|
# min-average-adjustment-threshold pref, see below for more details.
|
|
#
|
|
# Zero disables the heuristic.
|
|
- name: layout.css.scroll-anchoring.max-consecutive-adjustments
|
|
type: uint32_t
|
|
value: 10
|
|
mirror: always
|
|
|
|
# Pref to control whether we should disable scroll anchoring on a scroller
|
|
# where at least max-consecutive-adjustments have happened, and which the
|
|
# average adjustment ends up being less than this number, in CSS pixels.
|
|
#
|
|
# So, for example, given max-consecutive-adjustments=10 and
|
|
# min-average-adjustment-treshold=3, we'll block scroll anchoring if there have
|
|
# been 10 consecutive adjustments without a user scroll or more, and the
|
|
# average offset difference between them amount to less than 3 CSS pixels.
|
|
- name: layout.css.scroll-anchoring.min-average-adjustment-threshold
|
|
type: uint32_t
|
|
value: 3
|
|
mirror: always
|
|
|
|
# Pref to control disabling scroll anchoring suppression triggers, see
|
|
#
|
|
# https://drafts.csswg.org/css-scroll-anchoring/#suppression-triggers
|
|
#
|
|
# Those triggers should be unnecessary after bug 1561450.
|
|
- name: layout.css.scroll-anchoring.suppressions.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: layout.css.scroll-anchoring.highlight
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Are shared memory User Agent style sheets enabled?
|
|
- name: layout.css.shared-memory-ua-sheets.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for -webkit-line-clamp enabled?
|
|
- name: layout.css.webkit-line-clamp.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether the computed value of line-height: normal returns the `normal`
|
|
# keyword rather than a pixel value based on the first available font.
|
|
#
|
|
# Only enabled on Nightly and early beta, at least for now.
|
|
#
|
|
# It'd be nice to make numbers compute also to themselves, but it looks like
|
|
# everybody agrees on turning them into pixels, see the discussion starting
|
|
# from [1].
|
|
#
|
|
# [1]: https://github.com/w3c/csswg-drafts/issues/3749#issuecomment-477287453
|
|
- name: layout.css.line-height.normal-as-resolved-value.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Are the width and height attributes on image-like elements mapped to the
|
|
# internal-for-now aspect-ratio property?
|
|
- name: layout.css.width-and-height-map-to-aspect-ratio.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether :is() and :where() ignore errors inside their selector lists
|
|
# internally, rather than failing to parse altogether.
|
|
#
|
|
# See https://github.com/w3c/csswg-drafts/issues/3264
|
|
- name: layout.css.is-and-where-better-error-recovery.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
rust: true
|
|
|
|
# Whether frame visibility tracking is enabled globally.
|
|
- name: layout.framevisibility.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# The fraction of the scrollport we allow to horizontally scroll by before we
|
|
# schedule an update of frame visibility.
|
|
- name: layout.framevisibility.amountscrollbeforeupdatehorizontal
|
|
type: int32_t
|
|
value: 2
|
|
mirror: always
|
|
|
|
# The fraction of the scrollport we allow to vertically scroll by before we
|
|
# schedule an update of frame visibility.
|
|
- name: layout.framevisibility.amountscrollbeforeupdatevertical
|
|
type: int32_t
|
|
value: 2
|
|
mirror: always
|
|
|
|
# The number of scrollports wide to expand when tracking frame visibility.
|
|
- name: layout.framevisibility.numscrollportwidths
|
|
type: uint32_t
|
|
#ifdef ANDROID
|
|
value: 1
|
|
#else
|
|
value: 0
|
|
#endif
|
|
mirror: always
|
|
|
|
# The number of scrollports high to expand when tracking frame visibility.
|
|
- name: layout.framevisibility.numscrollportheights
|
|
type: uint32_t
|
|
value: 1
|
|
mirror: always
|
|
|
|
# Test only.
|
|
- name: layout.dynamic-toolbar-max-height
|
|
type: RelaxedAtomicInt32
|
|
value: 0
|
|
mirror: always
|
|
|
|
# Controls double click and Alt+Arrow word selection behavior.
|
|
- name: layout.word_select.eat_space_to_next_word
|
|
type: bool
|
|
#ifdef XP_WIN
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: layout.word_select.stop_at_punctuation
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether underscore should be treated as a word-breaking character for
|
|
# word selection/arrow-key movement purposes.
|
|
- name: layout.word_select.stop_at_underscore
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "mathml."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Whether to disable deprecated style attributes background, color, fontfamily,
|
|
# fontsize, fontstyle and fontweight.
|
|
- name: mathml.deprecated_style_attributes.disabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to disable deprecated "radical" notation for the menclose element.
|
|
- name: mathml.deprecated_menclose_notation_radical.disabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to disable legacy names "small", "normal" and "big" for the
|
|
# mathsize attribute.
|
|
- name: mathml.mathsize_names.disabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to disable legacy names "thickmathspace", "mediummathspace",
|
|
# "thickmathspace" etc for length attributes.
|
|
- name: mathml.mathspace_names.disabled
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# Whether to disable the mfrac bevelled attribute.
|
|
- name: mathml.mfrac_bevelled_attribute.disabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to disable legacy names "thin", "thick" and "medium" for the
|
|
# linethickness attribute of the mfrac element.
|
|
- name: mathml.mfrac_linethickness_names.disabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to disable deprecated numalign/denomalign/align attributes
|
|
- name: mathml.deprecated_alignment_attributes.disabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to disable subscriptshift and superscriptshift attributes.
|
|
- name: mathml.script_shift_attributes.disabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to disable the scriptminsize attribute.
|
|
# Note that this only disables parsing, not the default effect when no attribute
|
|
# is unspecified.
|
|
- name: mathml.scriptminsize_attribute.disabled
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# Whether to disable the scriptsizemultiplier attribute.
|
|
- name: mathml.scriptsizemultiplier_attribute.disabled
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# Whether to disable support for XLink on MathML elements.
|
|
- name: mathml.xlink.disabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to disable support for stretching operators with STIXGeneral fonts.
|
|
# macos still has the deprecated STIXGeneral font pre-installed.
|
|
- name: mathml.stixgeneral_operator_stretching.disabled
|
|
type: bool
|
|
#if defined(XP_MACOSX)
|
|
value: @IS_NIGHTLY_BUILD@
|
|
#else
|
|
value: true
|
|
#endif
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "media."
|
|
#---------------------------------------------------------------------------
|
|
|
|
|
|
# This pref defines what the blocking policy would be used in blocking autoplay.
|
|
# 0 : use sticky activation (default)
|
|
# https://html.spec.whatwg.org/multipage/interaction.html#sticky-activation
|
|
# 1 : use transient activation (the transient activation duration can be
|
|
# adjusted by the pref `dom.user_activation.transient.timeout`)
|
|
# https://html.spec.whatwg.org/multipage/interaction.html#transient-activation
|
|
# 2 : user input depth (allow autoplay when the play is trigged by user input
|
|
# which is determined by the user input depth)
|
|
- name: media.autoplay.blocking_policy
|
|
type: uint32_t
|
|
value: 0
|
|
mirror: always
|
|
|
|
# File-backed MediaCache size.
|
|
- name: media.cache_size
|
|
type: RelaxedAtomicUint32
|
|
value: 512000 # Measured in KiB
|
|
mirror: always
|
|
|
|
# Size of file backed MediaCache while on a connection which is cellular (3G,
|
|
# etc), and thus assumed to be "expensive".
|
|
- name: media.cache_size.cellular
|
|
type: RelaxedAtomicUint32
|
|
value: 32768 # Measured in KiB
|
|
mirror: always
|
|
|
|
# Whether cubeb is sandboxed
|
|
- name: media.cubeb.sandbox
|
|
type: bool
|
|
mirror: always
|
|
#if defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID)
|
|
value: true
|
|
#elif defined(XP_WIN) && !defined(_ARM64_)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
|
|
# Whether or not to pass AUDCLNT_STREAMOPTIONS_RAW when initializing audio
|
|
# streams when using WASAPI.
|
|
# 0 - don't use RAW streams
|
|
# 1 - use RAW streams for input streams only
|
|
# 2 - use RAW streams for output streams only
|
|
# 3 - use RAW streams for input and output streams
|
|
#if defined (XP_WIN)
|
|
- name: media.cubeb.wasapi-raw
|
|
type: RelaxedAtomicUint32
|
|
mirror: always
|
|
value: 0
|
|
#endif // XP_WIN
|
|
|
|
# ClockDrift desired buffering in milliseconds
|
|
- name: media.clockdrift.buffering
|
|
type: int32_t
|
|
mirror: always
|
|
value: 50
|
|
|
|
# If a resource is known to be smaller than this size (in kilobytes), a
|
|
# memory-backed MediaCache may be used; otherwise the (single shared global)
|
|
# file-backed MediaCache is used.
|
|
- name: media.memory_cache_max_size
|
|
type: uint32_t
|
|
value: 8192 # Measured in KiB
|
|
mirror: always
|
|
|
|
# Don't create more memory-backed MediaCaches if their combined size would go
|
|
# above this absolute size limit.
|
|
- name: media.memory_caches_combined_limit_kb
|
|
type: uint32_t
|
|
value: 524288
|
|
mirror: always
|
|
|
|
# Don't create more memory-backed MediaCaches if their combined size would go
|
|
# above this relative size limit (a percentage of physical memory).
|
|
- name: media.memory_caches_combined_limit_pc_sysmem
|
|
type: uint32_t
|
|
value: 5 # A percentage
|
|
mirror: always
|
|
|
|
# When a network connection is suspended, don't resume it until the amount of
|
|
# buffered data falls below this threshold (in seconds).
|
|
- name: media.cache_resume_threshold
|
|
type: RelaxedAtomicUint32
|
|
value: 30
|
|
mirror: always
|
|
- name: media.cache_resume_threshold.cellular
|
|
type: RelaxedAtomicUint32
|
|
value: 10
|
|
mirror: always
|
|
|
|
# Stop reading ahead when our buffered data is this many seconds ahead of the
|
|
# current playback position. This limit can stop us from using arbitrary
|
|
# amounts of network bandwidth prefetching huge videos.
|
|
- name: media.cache_readahead_limit
|
|
type: RelaxedAtomicUint32
|
|
value: 60
|
|
mirror: always
|
|
- name: media.cache_readahead_limit.cellular
|
|
type: RelaxedAtomicUint32
|
|
value: 30
|
|
mirror: always
|
|
|
|
# MediaCapabilities
|
|
- name: media.mediacapabilities.drop-threshold
|
|
type: RelaxedAtomicInt32
|
|
value: 95
|
|
mirror: always
|
|
|
|
- name: media.mediacapabilities.from-database
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# AudioSink
|
|
- name: media.resampling.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# libcubeb backend implements .get_preferred_channel_layout
|
|
- name: media.forcestereo.enabled
|
|
type: RelaxedAtomicBool
|
|
#if defined(XP_WIN) || defined(XP_DARWIN) || defined(MOZ_PULSEAUDIO)
|
|
value: false
|
|
#else
|
|
value: true
|
|
#endif
|
|
mirror: always
|
|
|
|
# MediaSource
|
|
|
|
# Whether to enable MediaSource support.
|
|
- name: media.mediasource.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: media.mediasource.mp4.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: media.mediasource.webm.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Check if vp9 is enabled by default in mediasource. False on Android.
|
|
# If disabled, vp9 will only be enabled under some conditions:
|
|
# - h264 HW decoding is not supported
|
|
# - mp4 is not enabled
|
|
# - Device was deemed fast enough to decode VP9 via the VP9Benchmark utility
|
|
# - A VP9 HW decoder is present.
|
|
- name: media.mediasource.vp9.enabled
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NOT_ANDROID@
|
|
mirror: always
|
|
|
|
- name: media.mediasource.webm.audio.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to enable MediaSource v2 support.
|
|
- name: media.mediasource.experimental.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# VideoSink
|
|
- name: media.ruin-av-sync.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Encrypted Media Extensions
|
|
- name: media.eme.enabled
|
|
type: bool
|
|
#if defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID)
|
|
# On Linux EME is visible but disabled by default. This is so that the "Play
|
|
# DRM content" checkbox in the Firefox UI is unchecked by default. DRM
|
|
# requires downloading and installing proprietary binaries, which users on an
|
|
# open source operating systems didn't opt into. The first time a site using
|
|
# EME is encountered, the user will be prompted to enable DRM, whereupon the
|
|
# EME plugin binaries will be downloaded if permission is granted.
|
|
value: false
|
|
#else
|
|
value: true
|
|
#endif
|
|
mirror: always
|
|
|
|
# Whether we expose the functionality proposed in
|
|
# https://github.com/WICG/encrypted-media-encryption-scheme/blob/master/explainer.md
|
|
# I.e. if true, apps calling navigator.requestMediaKeySystemAccess() can pass
|
|
# an optional encryption scheme as part of MediaKeySystemMediaCapability
|
|
# objects. If a scheme is present when we check for support, we must ensure we
|
|
# support that scheme in order to provide key system access.
|
|
- name: media.eme.encrypted-media-encryption-scheme.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Do we need explicit approval from the application to allow access to EME?
|
|
# If true, Gecko will ask for permission before allowing MediaKeySystemAccess.
|
|
# At time of writing this is aimed at GeckoView, and setting this to true
|
|
# outside of GeckoView or test environments will likely break EME.
|
|
- name: media.eme.require-app-approval
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: media.eme.audio.blank
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: media.eme.video.blank
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: media.eme.chromium-api.video-shmems
|
|
type: RelaxedAtomicUint32
|
|
value: 6
|
|
mirror: always
|
|
|
|
# Is support for MediaKeys.getStatusForPolicy enabled?
|
|
- name: media.eme.hdcp-policy-check.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: media.clearkey.persistent-license.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: media.cloneElementVisually.testing
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
#if defined(XP_LINUX) && defined(MOZ_SANDBOX)
|
|
# Whether to allow, on a Linux system that doesn't support the necessary
|
|
# sandboxing features, loading Gecko Media Plugins unsandboxed. However, EME
|
|
# CDMs will not be loaded without sandboxing even if this pref is changed.
|
|
- name: media.gmp.insecure.allow
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
#endif
|
|
|
|
#ifdef XP_MACOSX
|
|
# These prefs control whether or not a universal build running on
|
|
# an Apple Silicon machine will attempt to use an x64 Widevine or
|
|
# OpenH264 plugin. This requires launching the GMP child process
|
|
# executable in x64 mode. We expect to allow this for Widevine until
|
|
# an arm64 version of Widevine is made available. We don't expect
|
|
# to need to allow this for OpenH264.
|
|
#
|
|
# Allow a Widevine GMP x64 process to be executed on ARM builds.
|
|
- name: media.gmp-widevinecdm.allow-x64-plugin-on-arm64
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Don't allow an OpenH264 GMP x64 process to be executed on ARM builds.
|
|
- name: media.gmp-gmpopenh264.allow-x64-plugin-on-arm64
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
#endif
|
|
|
|
# Specifies whether the PDMFactory can create a test decoder that just outputs
|
|
# blank frames/audio instead of actually decoding. The blank decoder works on
|
|
# all platforms.
|
|
- name: media.use-blank-decoder
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: media.gpu-process-decoder
|
|
type: RelaxedAtomicBool
|
|
#if defined(XP_WIN)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: media.rdd-process.enabled
|
|
type: RelaxedAtomicBool
|
|
#if defined(XP_WIN)
|
|
value: true
|
|
#elif defined(XP_MACOSX)
|
|
value: true
|
|
#elif defined(XP_LINUX) && !defined(ANDROID)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: media.rdd-retryonfailure.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: media.rdd-process.startup_timeout_ms
|
|
type: RelaxedAtomicInt32
|
|
value: 5000
|
|
mirror: always
|
|
|
|
#ifdef MOZ_FFMPEG
|
|
- name: media.rdd-ffmpeg.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
#endif
|
|
|
|
#ifdef MOZ_FFVPX
|
|
- name: media.rdd-ffvpx.enabled
|
|
type: RelaxedAtomicBool
|
|
#if defined(XP_WIN)
|
|
value: true
|
|
#elif defined(XP_MACOSX)
|
|
value: true
|
|
#elif defined(XP_LINUX) && !defined(ANDROID)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
#endif
|
|
|
|
#ifdef MOZ_WMF
|
|
- name: media.rdd-wmf.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
#endif
|
|
|
|
#ifdef MOZ_APPLEMEDIA
|
|
- name: media.rdd-applemedia.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
#endif
|
|
|
|
- name: media.rdd-theora.enabled
|
|
type: RelaxedAtomicBool
|
|
#if defined(XP_WIN)
|
|
value: true
|
|
#elif defined(XP_MACOSX)
|
|
value: true
|
|
#elif defined(XP_LINUX) && !defined(ANDROID)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: media.rdd-vorbis.enabled
|
|
type: RelaxedAtomicBool
|
|
#if defined(XP_WIN)
|
|
value: true
|
|
#elif defined(XP_MACOSX)
|
|
value: true
|
|
#elif defined(XP_LINUX) && !defined(ANDROID)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: media.rdd-vpx.enabled
|
|
type: RelaxedAtomicBool
|
|
#if defined(XP_WIN)
|
|
value: true
|
|
#elif defined(XP_MACOSX)
|
|
value: true
|
|
#elif defined(XP_LINUX) && !defined(ANDROID)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: media.rdd-wav.enabled
|
|
type: RelaxedAtomicBool
|
|
#if defined(XP_WIN)
|
|
value: true
|
|
#elif defined(XP_MACOSX)
|
|
value: true
|
|
#elif defined(XP_LINUX) && !defined(ANDROID)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: media.rdd-opus.enabled
|
|
type: RelaxedAtomicBool
|
|
#if defined(XP_WIN)
|
|
value: true
|
|
#elif defined(XP_MACOSX)
|
|
value: true
|
|
#elif defined(XP_LINUX) && !defined(ANDROID)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: media.rdd-webaudio.batch.size
|
|
type: RelaxedAtomicInt32
|
|
value: 100
|
|
mirror: always
|
|
|
|
#ifdef ANDROID
|
|
# Enable the MediaCodec PlatformDecoderModule by default.
|
|
- name: media.android-media-codec.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: media.android-media-codec.preferred
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
#endif # ANDROID
|
|
|
|
#ifdef MOZ_OMX
|
|
- name: media.omx.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
#endif
|
|
|
|
#ifdef MOZ_FFMPEG
|
|
- name: media.ffmpeg.enabled
|
|
type: RelaxedAtomicBool
|
|
#if defined(XP_MACOSX)
|
|
value: false
|
|
#else
|
|
value: true
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: media.libavcodec.allow-obsolete
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
#ifdef MOZ_WAYLAND
|
|
# Disable DMABuf for ffmpeg video textures on Linux
|
|
- name: media.ffmpeg.dmabuf-textures.disabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Use VA-API for ffmpeg video playback on Linux
|
|
- name: media.ffmpeg.vaapi.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Use DRM display for VA-API ffmpeg video decoding on Linux
|
|
- name: media.ffmpeg.vaapi-drm-display.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
#endif # MOZ_WAYLAND
|
|
#endif # MOZ_FFMPEG
|
|
|
|
- name: media.ffvpx.enabled
|
|
type: RelaxedAtomicBool
|
|
#ifdef MOZ_FFVPX
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: media.ffvpx.mp3.enabled
|
|
type: RelaxedAtomicBool
|
|
#ifdef MOZ_FFVPX
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
# Set to true in marionette tests to disable the sanity test
|
|
# which would lead to unnecessary start of the RDD process.
|
|
- name: media.sanity-test.disabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
#ifdef MOZ_WMF
|
|
|
|
- name: media.wmf.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether DD should consider WMF-disabled a WMF failure, useful for testing.
|
|
- name: media.decoder-doctor.wmf-disabled-is-failure
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: media.wmf.dxva.d3d11.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: media.wmf.dxva.max-videos
|
|
type: RelaxedAtomicUint32
|
|
value: 8
|
|
mirror: always
|
|
|
|
- name: media.wmf.use-nv12-format
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: media.wmf.force.allow-p010-format
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: media.wmf.use-sync-texture
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
- name: media.wmf.low-latency.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: media.wmf.low-latency.force-disabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: media.wmf.skip-blacklist
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: media.wmf.amd.highres.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: media.wmf.allow-unsupported-resolutions
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: media.wmf.vp9.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: once
|
|
|
|
#endif # MOZ_WMF
|
|
|
|
- name: media.decoder-doctor.testing
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: media.hardware-video-decoding.force-enabled
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
|
|
# Whether to check the decoder supports recycling.
|
|
- name: media.decoder.recycle.enabled
|
|
type: RelaxedAtomicBool
|
|
value: @IS_ANDROID@
|
|
mirror: always
|
|
|
|
# Should MFR try to skip to the next key frame?
|
|
- name: media.decoder.skip-to-next-key-frame.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: media.gmp.decoder.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether to suspend decoding of videos in background tabs.
|
|
- name: media.suspend-bkgnd-video.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Delay, in ms, from time window goes to background to suspending
|
|
# video decoders. Defaults to 10 seconds.
|
|
- name: media.suspend-bkgnd-video.delay-ms
|
|
type: RelaxedAtomicUint32
|
|
value: 10000
|
|
mirror: always
|
|
|
|
- name: media.dormant-on-pause-timeout-ms
|
|
type: RelaxedAtomicInt32
|
|
value: 5000
|
|
mirror: always
|
|
|
|
# AudioTrack and VideoTrack support
|
|
- name: media.track.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# This pref disables the reception of RTCP. It is used for testing.
|
|
- name: media.webrtc.net.force_disable_rtcp_reception
|
|
type: ReleaseAcquireAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# TextTrack WebVTT Region extension support.
|
|
- name: media.webvtt.regions.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# This pref controls whether dispatch testing-only events.
|
|
- name: media.webvtt.testing.events
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: media.webspeech.synth.force_global_queue
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: media.webspeech.test.enable
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: media.webspeech.test.fake_fsm_events
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: media.webspeech.test.fake_recognition_service
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
#ifdef MOZ_WEBSPEECH
|
|
- name: media.webspeech.recognition.enable
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
#endif
|
|
|
|
- name: media.webspeech.recognition.force_enable
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
#ifdef MOZ_WEBSPEECH
|
|
- name: media.webspeech.synth.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
#endif # MOZ_WEBSPEECH
|
|
|
|
- name: media.encoder.webm.enabled
|
|
type: RelaxedAtomicBool
|
|
#if defined(MOZ_WEBM_ENCODER)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: media.audio-max-decode-error
|
|
type: uint32_t
|
|
#if defined(RELEASE_OR_BETA)
|
|
value: 3
|
|
#else
|
|
# Zero tolerance in pre-release builds to detect any decoder regression.
|
|
value: 0
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: media.video-max-decode-error
|
|
type: uint32_t
|
|
#if defined(RELEASE_OR_BETA)
|
|
value: 2
|
|
#else
|
|
# Zero tolerance in pre-release builds to detect any decoder regression.
|
|
value: 0
|
|
#endif
|
|
mirror: always
|
|
|
|
# Are video stats enabled? (Disabling can help prevent fingerprinting.)
|
|
- name: media.video_stats.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Opus
|
|
- name: media.opus.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Wave
|
|
- name: media.wave.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Ogg
|
|
- name: media.ogg.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# WebM
|
|
- name: media.webm.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# AV1
|
|
- name: media.av1.enabled
|
|
type: RelaxedAtomicBool
|
|
#if defined(XP_WIN) && !defined(_ARM64_)
|
|
value: true
|
|
#elif defined(XP_MACOSX)
|
|
value: true
|
|
#elif defined(MOZ_WIDGET_ANDROID)
|
|
value: @IS_EARLY_BETA_OR_EARLIER@
|
|
#elif defined(XP_UNIX)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: media.av1.use-dav1d
|
|
type: RelaxedAtomicBool
|
|
#if defined(XP_WIN) && !defined(_ARM64_)
|
|
value: true
|
|
#elif defined(XP_MACOSX)
|
|
value: true
|
|
#elif defined(XP_UNIX)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: media.flac.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Hls
|
|
- name: media.hls.enabled
|
|
type: RelaxedAtomicBool
|
|
value: @IS_ANDROID@
|
|
mirror: always
|
|
|
|
# Max number of HLS players that can be created concurrently. Used only on
|
|
# Android and when "media.hls.enabled" is true.
|
|
#ifdef ANDROID
|
|
- name: media.hls.max-allocations
|
|
type: uint32_t
|
|
value: 20
|
|
mirror: always
|
|
#endif
|
|
|
|
- name: media.mp4.enabled
|
|
type: RelaxedAtomicBool
|
|
#ifdef MOZ_FMP4
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
# Error/warning handling, Decoder Doctor.
|
|
#
|
|
# Set to true to force demux/decode warnings to be treated as errors.
|
|
- name: media.playback.warnings-as-errors
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Resume video decoding when the cursor is hovering on a background tab to
|
|
# reduce the resume latency and improve the user experience.
|
|
- name: media.resume-bkgnd-video-on-tabhover
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: media.videocontrols.lock-video-orientation
|
|
type: bool
|
|
value: @IS_ANDROID@
|
|
mirror: always
|
|
|
|
# Media Seamless Looping
|
|
- name: media.seamless-looping
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: media.autoplay.block-event.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: media.media-capabilities.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: media.media-capabilities.screen.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: media.benchmark.vp9.fps
|
|
type: RelaxedAtomicUint32
|
|
value: 0
|
|
mirror: always
|
|
|
|
- name: media.benchmark.vp9.threshold
|
|
type: RelaxedAtomicUint32
|
|
value: 150
|
|
mirror: always
|
|
|
|
- name: media.benchmark.vp9.versioncheck
|
|
type: RelaxedAtomicUint32
|
|
value: 0
|
|
mirror: always
|
|
|
|
- name: media.benchmark.frames
|
|
type: RelaxedAtomicUint32
|
|
value: 300
|
|
mirror: always
|
|
|
|
- name: media.benchmark.timeout
|
|
type: RelaxedAtomicUint32
|
|
value: 1000
|
|
mirror: always
|
|
|
|
- name: media.test.video-suspend
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# MediaCapture prefs follow
|
|
|
|
# Enables navigator.mediaDevices and getUserMedia() support. See also
|
|
# media.peerconnection.enabled
|
|
- name: media.navigator.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# This pref turns off [SecureContext] on the navigator.mediaDevices object, for
|
|
# more compatible legacy behavior.
|
|
- name: media.devices.insecure.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# If the above pref is also enabled, this pref enabled getUserMedia() support
|
|
# in http, bypassing the instant NotAllowedError you get otherwise.
|
|
- name: media.getusermedia.insecure.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Enable tab sharing
|
|
- name: media.getusermedia.browser.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# The getDisplayMedia method is always SecureContext regardless of the above two
|
|
# prefs. But it is not implemented on android, and can be turned off elsewhere.
|
|
- name: media.getdisplaymedia.enabled
|
|
type: bool
|
|
value: @IS_NOT_ANDROID@
|
|
mirror: always
|
|
|
|
# Turn off any cameras (but not mics) while in the background. This is desirable
|
|
# on mobile.
|
|
- name: media.getusermedia.camera.background.mute.enabled
|
|
type: bool
|
|
value: @IS_ANDROID@
|
|
mirror: always
|
|
|
|
# WebRTC prefs follow
|
|
|
|
# Enables RTCPeerConnection support. Note that, when true, this pref enables
|
|
# navigator.mediaDevices and getUserMedia() support as well.
|
|
# See also media.navigator.enabled
|
|
- name: media.peerconnection.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: media.peerconnection.dtmf.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: media.peerconnection.identity.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: media.peerconnection.rtpsourcesapi.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
#ifdef MOZ_WEBRTC
|
|
#ifdef ANDROID
|
|
- name: media.navigator.hardware.vp8_encode.acceleration_remote_enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: media.navigator.hardware.vp8_encode.acceleration_enabled
|
|
type: bool
|
|
value: true
|
|
mirror: never
|
|
|
|
- name: media.navigator.hardware.vp8_decode.acceleration_enabled
|
|
type: bool
|
|
value: false
|
|
mirror: never
|
|
#endif # ANDROID
|
|
|
|
# Use MediaDataDecoder API for VP8/VP9 in WebRTC. This includes hardware
|
|
# acceleration for decoding.
|
|
- name: media.navigator.mediadatadecoder_vpx_enabled
|
|
type: RelaxedAtomicBool
|
|
#if defined(NIGHTLY_BUILD)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
# Use MediaDataDecoder API for H264 in WebRTC. This includes hardware
|
|
# acceleration for decoding.
|
|
- name: media.navigator.mediadatadecoder_h264_enabled
|
|
type: RelaxedAtomicBool
|
|
#if defined(_ARM64_) && defined(XP_WIN)
|
|
value: false
|
|
#else
|
|
value: true
|
|
#endif
|
|
mirror: always
|
|
|
|
#endif # MOZ_WEBRTC
|
|
|
|
# HTMLMediaElement.allowedToPlay should be exposed to web content when
|
|
# block autoplay rides the trains to release. Until then, Nightly only.
|
|
- name: media.allowed-to-play.enabled
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# Is support for MediaDevices.ondevicechange enabled?
|
|
- name: media.ondevicechange.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for HTMLMediaElement.seekToNextFrame enabled?
|
|
- name: media.seekToNextFrame.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# setSinkId will be enabled in bug 1498512. Till then the
|
|
# implementation will remain hidden behind this pref (Bug 1152401, Bug 934425).
|
|
- name: media.setsinkid.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Turn on this pref can enable test-only events for media element.
|
|
- name: media.testing-only-events
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: media.useAudioChannelService.testing
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: media.audioFocus.management
|
|
type: bool
|
|
#if defined(MOZ_WIDGET_ANDROID)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: media.hardwaremediakeys.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# If this pref is on, then `media.mediacontrol.stopcontrol.timer.ms` would take
|
|
# effect and determine the timing to stop controlling media.
|
|
- name: media.mediacontrol.stopcontrol.timer
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# If media is being paused after a certain period, then we would think that
|
|
# media doesn't need to be controlled anymore. Therefore, that media would stop
|
|
# listening to the media control key events. The value of this pref is how long
|
|
# media would stop listening to the event after it's paused.
|
|
- name: media.mediacontrol.stopcontrol.timer.ms
|
|
type: RelaxedAtomicUint32
|
|
value: 60000
|
|
mirror: always
|
|
|
|
# If this pref is on, we would stop controlling media after it reaches to the
|
|
# end.
|
|
- name: media.mediacontrol.stopcontrol.aftermediaends
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# We would only use media control to control media which duration is longer
|
|
# than this value.
|
|
- name: media.mediacontrol.eligible.media.duration.s
|
|
type: AtomicFloat
|
|
value: 3.0f
|
|
mirror: always
|
|
|
|
- name: media.webrtc.platformencoder
|
|
type: bool
|
|
#if defined(MOZ_WIDGET_ANDROID)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: media.block-autoplay-until-in-foreground
|
|
type: bool
|
|
#if !defined(MOZ_WIDGET_ANDROID)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: media.webrtc.hw.h264.enabled
|
|
type: bool
|
|
#if defined(MOZ_WIDGET_ANDROID)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
# If true, then we require explicit approval from the embedding app (ex. Fenix)
|
|
# on GeckoView to know if we can allow audible, inaudible media or both kinds
|
|
# of media to autoplay.
|
|
- name: media.geckoview.autoplay.request
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# This is used in testing only, in order to skip the prompting process. This
|
|
# pref works only when enabling the pref `media.geckoview.autoplay.request`.
|
|
# 0=prompt as normal, 1=allow all, 2=deny all, 3=allow audible request,
|
|
# 4=deny audible request, 5=allow inaudible request, 6=deny inaudible request.
|
|
# 7=leave all requests pending.
|
|
- name: media.geckoview.autoplay.request.testing
|
|
type: uint32_t
|
|
value: 0
|
|
mirror: always
|
|
|
|
- name: media.mediacontrol.testingevents.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
#if defined(XP_MACOSX)
|
|
- name: media.macos.screenrecording.oscheck.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
#endif
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "mousewheel."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# This affects how line scrolls from wheel events will be accelerated.
|
|
# Factor to be multiplied for constant acceleration.
|
|
- name: mousewheel.acceleration.factor
|
|
type: RelaxedAtomicInt32
|
|
value: 10
|
|
mirror: always
|
|
|
|
# This affects how line scrolls from wheel events will be accelerated.
|
|
# Number of mousewheel clicks when acceleration starts.
|
|
# Acceleration can be turned off if pref is set to -1.
|
|
- name: mousewheel.acceleration.start
|
|
type: RelaxedAtomicInt32
|
|
value: -1
|
|
mirror: always
|
|
|
|
# Auto-dir is a feature which treats any single-wheel scroll as a scroll in the
|
|
# only one scrollable direction if the target has only one scrollable
|
|
# direction. For example, if the user scrolls a vertical wheel inside a target
|
|
# which is horizontally scrollable but vertical unscrollable, then the vertical
|
|
# scroll is converted to a horizontal scroll for that target.
|
|
# Note that auto-dir only takes effect for |mousewheel.*.action|s and
|
|
# |mousewheel.*.action.override_x|s whose values are 1.
|
|
- name: mousewheel.autodir.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# When a wheel scroll is converted due to auto-dir, which side the converted
|
|
# scroll goes towards is decided by one thing called "honoured target". If the
|
|
# content of the honoured target horizontally starts from right to left, then
|
|
# an upward scroll maps to a rightward scroll and a downward scroll maps to a
|
|
# leftward scroll; otherwise, an upward scroll maps to a leftward scroll and a
|
|
# downward scroll maps to a rightward scroll.
|
|
# If this pref is set to false, then consider the scrolling target as the
|
|
# honoured target.
|
|
# If set to true, then consider the root element in the document where the
|
|
# scrolling target is as the honoured target. But note that there's one
|
|
# exception: for targets in an HTML document, the real root element(I.e. the
|
|
# <html> element) is typically not considered as a root element, but the <body>
|
|
# element is typically considered as a root element. If there is no <body>
|
|
# element, then consider the <html> element instead.
|
|
- name: mousewheel.autodir.honourroot
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: mousewheel.system_scroll_override_on_root_content.enabled
|
|
type: RelaxedAtomicBool
|
|
#ifdef XP_WIN
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
# Prefs for overriding the system mouse wheel scrolling speed on
|
|
# content of the web pages. When
|
|
# "mousewheel.system_scroll_override_on_root_content.enabled" is true and the
|
|
# system scrolling speed isn't customized by the user, the content scrolling
|
|
# speed is multiplied by the following factors. The value will be used as
|
|
# 1/100. E.g., 200 means 2.00.
|
|
# NOTE: Even if "mousewheel.system_scroll_override_on_root_content.enabled" is
|
|
# true, when Gecko detects the user customized the system scrolling speed
|
|
# settings, the override isn't executed.
|
|
- name: mousewheel.system_scroll_override_on_root_content.horizontal.factor
|
|
type: RelaxedAtomicInt32
|
|
value: 200
|
|
mirror: always
|
|
- name: mousewheel.system_scroll_override_on_root_content.vertical.factor
|
|
type: RelaxedAtomicInt32
|
|
value: 200
|
|
mirror: always
|
|
|
|
# Mouse wheel scroll transaction is held even if the mouse cursor is moved.
|
|
- name: mousewheel.transaction.ignoremovedelay
|
|
type: RelaxedAtomicInt32
|
|
value: 100
|
|
mirror: always
|
|
|
|
# Mouse wheel scroll transaction period of time (in milliseconds).
|
|
- name: mousewheel.transaction.timeout
|
|
type: RelaxedAtomicInt32
|
|
value: 1500
|
|
mirror: always
|
|
|
|
# Mouse wheel scroll position is determined by GetMessagePos rather than
|
|
# LPARAM msg value
|
|
- name: mousewheel.ignore_cursor_position_in_lparam
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# If line-height is lower than this value (in device pixels), 1 line scroll
|
|
# scrolls this height.
|
|
- name: mousewheel.min_line_scroll_amount
|
|
type: int32_t
|
|
value: 5
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "network."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Force less-secure NTLMv1 when needed (NTLMv2 is the default).
|
|
- name: network.auth.force-generic-ntlm-v1
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Sub-resources HTTP-authentication:
|
|
# 0 - don't allow sub-resources to open HTTP authentication credentials
|
|
# dialogs
|
|
# 1 - allow sub-resources to open HTTP authentication credentials dialogs,
|
|
# but don't allow it for cross-origin sub-resources
|
|
# 2 - allow the cross-origin authentication as well.
|
|
- name: network.auth.subresource-http-auth-allow
|
|
type: uint32_t
|
|
value: 2
|
|
mirror: always
|
|
|
|
# Sub-resources HTTP-authentication for cross-origin images:
|
|
# - true: It is allowed to present http auth. dialog for cross-origin images.
|
|
# - false: It is not allowed.
|
|
# If network.auth.subresource-http-auth-allow has values 0 or 1 this pref does
|
|
# not have any effect.
|
|
- name: network.auth.subresource-img-cross-origin-http-auth-allow
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Resources that are triggered by some non-web-content:
|
|
# - true: They are allow to present http auth. dialog
|
|
# - false: They are not allow to present http auth. dialog.
|
|
- name: network.auth.non-web-content-triggered-resources-http-auth-allow
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether to show anti-spoof confirmation prompts when navigating to a url
|
|
# with userinfo
|
|
- name: network.auth.confirmAuth.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# See the full list of values in nsICookieService.idl.
|
|
- name: network.cookie.cookieBehavior
|
|
type: RelaxedAtomicInt32
|
|
value: 0 # accept all cookies
|
|
mirror: always
|
|
|
|
# See the full list of values in nsICookieService.idl.
|
|
- name: network.cookie.rejectForeignWithExceptions.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Stale threshold for cookies in seconds.
|
|
- name: network.cookie.staleThreshold
|
|
type: uint32_t
|
|
value: 60
|
|
mirror: always
|
|
|
|
# Cookie lifetime policy. Possible values:
|
|
# 0 - accept all cookies
|
|
# 1 - deprecated. don't use it.
|
|
# 2 - accept as session cookies
|
|
# 3 - deprecated. don't use it.
|
|
- name: network.cookie.lifetimePolicy
|
|
type: RelaxedAtomicInt32
|
|
value: 0
|
|
mirror: always
|
|
|
|
- name: network.cookie.sameSite.laxByDefault
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# lax-by-default 2 minutes tollerance for unsafe methods. The value is in seconds.
|
|
- name: network.cookie.sameSite.laxPlusPOST.timeout
|
|
type: uint32_t
|
|
value: 120
|
|
mirror: always
|
|
|
|
- name: network.cookie.sameSite.noneRequiresSecure
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
- name: network.cookie.sameSite.schemeful
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
- name: network.cookie.thirdparty.sessionOnly
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: network.cookie.thirdparty.nonsecureSessionOnly
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: network.data.max-uri-length-mobile
|
|
type: RelaxedAtomicUint32
|
|
value: 2 * 1024 * 1024
|
|
mirror: always
|
|
|
|
# If we should attempt to race the cache and network.
|
|
- name: network.http.rcwn.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: network.http.rcwn.cache_queue_normal_threshold
|
|
type: uint32_t
|
|
value: 8
|
|
mirror: always
|
|
|
|
- name: network.http.rcwn.cache_queue_priority_threshold
|
|
type: uint32_t
|
|
value: 2
|
|
mirror: always
|
|
|
|
# We might attempt to race the cache with the network only if a resource
|
|
# is smaller than this size.
|
|
- name: network.http.rcwn.small_resource_size_kb
|
|
type: uint32_t
|
|
value: 256
|
|
mirror: always
|
|
|
|
- name: network.http.rcwn.min_wait_before_racing_ms
|
|
type: uint32_t
|
|
value: 0
|
|
mirror: always
|
|
|
|
- name: network.http.rcwn.max_wait_before_racing_ms
|
|
type: uint32_t
|
|
value: 500
|
|
mirror: always
|
|
|
|
# false=real referer, true=spoof referer (use target URI as referer).
|
|
- name: network.http.referer.spoofSource
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Check whether we need to hide referrer when leaving a .onion domain.
|
|
# false=allow onion referer, true=hide onion referer (use empty referer).
|
|
- name: network.http.referer.hideOnionSource
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Include an origin header on non-GET and non-HEAD requests regardless of CORS.
|
|
# 0=never send, 1=send when same-origin only, 2=always send.
|
|
- name: network.http.sendOriginHeader
|
|
type: uint32_t
|
|
value: 2
|
|
mirror: always
|
|
|
|
# Prefs allowing granular control of referers.
|
|
# 0=don't send any, 1=send only on clicks, 2=send on image requests as well
|
|
- name: network.http.sendRefererHeader
|
|
type: uint32_t
|
|
value: 2
|
|
mirror: always
|
|
do_not_use_directly: true
|
|
|
|
# The maximum allowed length for a referrer header - 4096 default.
|
|
# 0 means no limit.
|
|
- name: network.http.referer.referrerLengthLimit
|
|
type: uint32_t
|
|
value: 4096
|
|
mirror: always
|
|
|
|
# 0=always send, 1=send iff base domains match, 2=send iff hosts match.
|
|
- name: network.http.referer.XOriginPolicy
|
|
type: uint32_t
|
|
value: 0
|
|
mirror: always
|
|
do_not_use_directly: true
|
|
|
|
# 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port.
|
|
- name: network.http.referer.trimmingPolicy
|
|
type: uint32_t
|
|
value: 0
|
|
mirror: always
|
|
do_not_use_directly: true
|
|
|
|
# 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port.
|
|
- name: network.http.referer.XOriginTrimmingPolicy
|
|
type: uint32_t
|
|
value: 0
|
|
mirror: always
|
|
do_not_use_directly: true
|
|
|
|
# Set the default Referrer Policy; to be used unless overriden by the site.
|
|
# 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
|
|
# 3=no-referrer-when-downgrade.
|
|
- name: network.http.referer.defaultPolicy
|
|
type: uint32_t
|
|
value: 2
|
|
mirror: always
|
|
|
|
# Set the default Referrer Policy applied to third-party trackers when the
|
|
# default cookie policy is set to reject third-party trackers, to be used
|
|
# unless overriden by the site.
|
|
# 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
|
|
# 3=no-referrer-when-downgrade.
|
|
# Trim referrers from trackers to origins by default.
|
|
- name: network.http.referer.defaultPolicy.trackers
|
|
type: uint32_t
|
|
value: 2
|
|
mirror: always
|
|
|
|
# Set the Private Browsing Default Referrer Policy, to be used
|
|
# unless overriden by the site.
|
|
# 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
|
|
# 3=no-referrer-when-downgrade.
|
|
- name: network.http.referer.defaultPolicy.pbmode
|
|
type: uint32_t
|
|
value: 2
|
|
mirror: always
|
|
|
|
# Set the Private Browsing Default Referrer Policy applied to third-party
|
|
# trackers when the default cookie policy is set to reject third-party
|
|
# trackers, to be used unless overriden by the site.
|
|
# 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
|
|
# 3=no-referrer-when-downgrade.
|
|
# No need to change this pref for trimming referrers from trackers since in
|
|
# private windows we already trim all referrers to origin only.
|
|
- name: network.http.referer.defaultPolicy.trackers.pbmode
|
|
type: uint32_t
|
|
value: 2
|
|
mirror: always
|
|
|
|
# Whether certain http header values should be censored out in logs.
|
|
# Specifically filters out "authorization" and "proxy-authorization".
|
|
- name: network.http.sanitize-headers-in-logs
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# If set to true, IOService.offline depends on IOService.connectivity.
|
|
- name: network.offline-mirrors-connectivity
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Enables the predictive service.
|
|
- name: network.predictor.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Set true to allow resolving proxy for localhost
|
|
- name: network.proxy.allow_hijacking_localhost
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Allow CookieJarSettings to be unblocked for channels without a document.
|
|
# This is for testing only.
|
|
- name: network.cookieJarSettings.unblocked_for_testing
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: network.predictor.enable-hover-on-ssl
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: network.predictor.enable-prefetch
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: network.predictor.page-degradation.day
|
|
type: int32_t
|
|
value: 0
|
|
mirror: always
|
|
- name: network.predictor.page-degradation.week
|
|
type: int32_t
|
|
value: 5
|
|
mirror: always
|
|
- name: network.predictor.page-degradation.month
|
|
type: int32_t
|
|
value: 10
|
|
mirror: always
|
|
- name: network.predictor.page-degradation.year
|
|
type: int32_t
|
|
value: 25
|
|
mirror: always
|
|
- name: network.predictor.page-degradation.max
|
|
type: int32_t
|
|
value: 50
|
|
mirror: always
|
|
|
|
- name: network.predictor.subresource-degradation.day
|
|
type: int32_t
|
|
value: 1
|
|
mirror: always
|
|
- name: network.predictor.subresource-degradation.week
|
|
type: int32_t
|
|
value: 10
|
|
mirror: always
|
|
- name: network.predictor.subresource-degradation.month
|
|
type: int32_t
|
|
value: 25
|
|
mirror: always
|
|
- name: network.predictor.subresource-degradation.year
|
|
type: int32_t
|
|
value: 50
|
|
mirror: always
|
|
- name: network.predictor.subresource-degradation.max
|
|
type: int32_t
|
|
value: 100
|
|
mirror: always
|
|
|
|
- name: network.predictor.prefetch-rolling-load-count
|
|
type: int32_t
|
|
value: 10
|
|
mirror: always
|
|
|
|
- name: network.predictor.prefetch-min-confidence
|
|
type: int32_t
|
|
value: 100
|
|
mirror: always
|
|
- name: network.predictor.preconnect-min-confidence
|
|
type: int32_t
|
|
value: 90
|
|
mirror: always
|
|
- name: network.predictor.preresolve-min-confidence
|
|
type: int32_t
|
|
value: 60
|
|
mirror: always
|
|
|
|
- name: network.predictor.prefetch-force-valid-for
|
|
type: int32_t
|
|
value: 10
|
|
mirror: always
|
|
|
|
- name: network.predictor.max-resources-per-entry
|
|
type: int32_t
|
|
value: 100
|
|
mirror: always
|
|
|
|
# This is selected in concert with max-resources-per-entry to keep memory
|
|
# usage low-ish. The default of the combo of the two is ~50k.
|
|
- name: network.predictor.max-uri-length
|
|
type: uint32_t
|
|
value: 500
|
|
mirror: always
|
|
|
|
# A testing flag.
|
|
- name: network.predictor.doing-tests
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Enables `<link rel="preload">` tag and `Link: rel=preload` response header handling.
|
|
- name: network.preload
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to use the network process or not
|
|
# Start a separate socket process. Performing networking on the socket process
|
|
# is control by a sepparate pref
|
|
# ("network.http.network_access_on_socket_process.enabled").
|
|
# Changing these prefs requires a restart.
|
|
- name: network.process.enabled
|
|
type: RelaxedAtomicBool
|
|
mirror: always
|
|
#if defined(ANDROID) || defined(MOZ_THUNDERBIRD)
|
|
value: false # see bug 1641427
|
|
#else
|
|
value: @IS_EARLY_BETA_OR_EARLIER@
|
|
#endif
|
|
|
|
# Whether we can send OnDataAvailable to content process directly.
|
|
- name: network.send_ODA_to_content_directly
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Perform all network access on the socket process.
|
|
# The pref requires "network.process.enabled" to be true.
|
|
# Changing these prefs requires a restart.
|
|
- name: network.http.network_access_on_socket_process.enabled
|
|
type: RelaxedAtomicBool
|
|
mirror: always
|
|
value: false
|
|
|
|
# Telemetry of traffic categories. Whether or not to enable HttpTrafficAnalyzer.
|
|
- name: network.traffic_analyzer.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether DNS resolution is limited to literals and cached entries.
|
|
- name: network.dns.disabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether DNS resolution is limited to literals and cached entries.
|
|
- name: network.dns.skipTRR-when-parental-control-enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: network.dns.disablePrefetchFromHTTPS
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Max time to shutdown the resolver threads
|
|
- name: network.dns.resolver_shutdown_timeout_ms
|
|
type: uint32_t
|
|
value: 2000
|
|
mirror: always
|
|
|
|
# When true on Windows DNS resolutions for single label domains
|
|
# (domains that don't contain a dot) will be resolved using the DnsQuery
|
|
# API instead of PR_GetAddrInfoByName
|
|
- name: network.dns.dns_query_single_label
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# When this pref is true we enforce a 253 character limit on domains we try to
|
|
# resolve. See bug 1264117. If it doesn't cause any web-compat issues we can
|
|
# remove it in a few releases
|
|
- name: network.dns.limit_253_chars
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# The proxy type. See nsIProtocolProxyService.idl
|
|
# PROXYCONFIG_DIRECT = 0
|
|
# PROXYCONFIG_MANUAL = 1
|
|
# PROXYCONFIG_PAC = 2
|
|
# PROXYCONFIG_WPAD = 4
|
|
# PROXYCONFIG_SYSTEM = 5
|
|
- name: network.proxy.type
|
|
type: RelaxedAtomicUint32
|
|
value: 5
|
|
mirror: always
|
|
|
|
# Whether the SOCKS proxy should be in charge of DNS resolution.
|
|
- name: network.proxy.socks_remote_dns
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# When receiving a network change event, the time (in ms) we wait to reload the
|
|
# PAC url.
|
|
- name: network.proxy.reload_pac_delay
|
|
type: RelaxedAtomicUint32
|
|
value: 2000
|
|
mirror: always
|
|
|
|
# Some requests during a page load are marked as "tail", mainly trackers, but not only.
|
|
# This pref controls whether such requests are put to the tail, behind other requests
|
|
# emerging during page loading process.
|
|
- name: network.http.tailing.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to run proxy checks when processing Alt-Svc headers.
|
|
- name: network.http.altsvc.proxy_checks
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: network.http.stale_while_revalidate.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to cache SSL resumption tokens in necko.
|
|
- name: network.ssl_tokens_cache_enabled
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# Capacity of the above cache, in kilobytes.
|
|
- name: network.ssl_tokens_cache_capacity
|
|
type: RelaxedAtomicUint32
|
|
value: 2048
|
|
mirror: always
|
|
|
|
# The maximum allowed length for a URL - 1MB default.
|
|
- name: network.standard-url.max-length
|
|
type: RelaxedAtomicUint32
|
|
value: 1048576
|
|
mirror: always
|
|
|
|
# Single TRR request timeout, in milliseconds
|
|
- name: network.trr.request_timeout_ms
|
|
type: RelaxedAtomicUint32
|
|
value: 1500
|
|
mirror: always
|
|
|
|
# Single TRR request timeout, in milliseconds for mode 3
|
|
- name: network.trr.request_timeout_mode_trronly_ms
|
|
type: RelaxedAtomicUint32
|
|
value: 30000
|
|
mirror: always
|
|
|
|
# The timeout of the TRR confirmation request
|
|
- name: network.trr.confirmation_timeout_ms
|
|
type: RelaxedAtomicUint32
|
|
value: 6000
|
|
mirror: always
|
|
|
|
# The timeout of the TRR confirmation request
|
|
- name: network.trr.confirmation_telemetry_enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to send the Accept-Language header for TRR requests
|
|
- name: network.trr.send_accept-language_headers
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether to send an empty Accept-Encoding header for TRR requests
|
|
- name: network.trr.send_empty_accept-encoding_headers
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to send the User-Agent header for TRR requests
|
|
- name: network.trr.send_user-agent_headers
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# This pref controls whether to use TRRServiceChannel off main thread.
|
|
- name: network.trr.fetch_off_main_thread
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# If this pref is false, a task will be dispatched to remove the file from the
|
|
# disk and the pref will be set to true.
|
|
# It can probably be removed after a few releases.
|
|
- name: network.trr.blocklist_cleanup_done
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# If we should wait for captive portal confirmation before enabling TRR
|
|
- name: network.trr.wait-for-portal
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# If we should wait for TRR service confirmation to complete before enabling
|
|
# TRR for lookups when fallback is enabled. Confirmation is always skipped when
|
|
# global mode is TRR-only (no fallback).
|
|
- name: network.trr.wait-for-confirmation
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Use GET (rather than POST)
|
|
- name: network.trr.useGET
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Allow RFC1918 address in responses?
|
|
- name: network.trr.allow-rfc1918
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# When true, it only sends AAAA when the system has IPv6 connectivity
|
|
- name: network.trr.skip-AAAA-when-not-supported
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to apply split horizon mitigations when using TRR.
|
|
# These include adding the DNS suffix to the excluded domains
|
|
- name: network.trr.split_horizon_mitigations
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Explicitly disable ECS (EDNS Client Subnet, RFC 7871)
|
|
- name: network.trr.disable-ECS
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# When true, the DNS+TRR cache will be cleared when a relevant TRR pref
|
|
# changes. (uri, bootstrapAddress, excluded-domains)
|
|
- name: network.trr.clear-cache-on-pref-change
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# After this many failed TRR requests in a row, consider TRR borked
|
|
- name: network.trr.max-fails
|
|
type: RelaxedAtomicUint32
|
|
value: 15
|
|
mirror: always
|
|
|
|
# When the TRR confirmation is set to CONFIRM_FAILED due to many failures in
|
|
# a row, we set a timer to retry. This has an exponential backoff up to
|
|
# 64 seconds.
|
|
- name: network.trr.retry-timeout-ms
|
|
type: RelaxedAtomicUint32
|
|
value: 125
|
|
mirror: always
|
|
|
|
# Retry with no TRR when the response contained only 0.0.0.0 or ::
|
|
- name: network.trr.fallback-on-zero-response
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# If true we parse the /etc/hosts file and exclude any host names from TRR.
|
|
# Reading the file is only done once, when TRR is first enabled - this could be
|
|
# soon after startup or when the pref is flipped.
|
|
- name: network.trr.exclude-etc-hosts
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to enable odoh.
|
|
- name: network.trr.odoh.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# The uri of Oblivious Proxy.
|
|
- name: network.trr.odoh.proxy_uri
|
|
type: String
|
|
value: ""
|
|
mirror: never
|
|
|
|
# The host name of Oblivious Target.
|
|
- name: network.trr.odoh.target_host
|
|
type: String
|
|
value: ""
|
|
mirror: never
|
|
|
|
# The uri path of the odoh uri.
|
|
- name: network.trr.odoh.target_path
|
|
type: String
|
|
value: ""
|
|
mirror: never
|
|
|
|
# The minimum ttl of the DNS record that contains ODoHConfigs.
|
|
- name: network.trr.odoh.min_ttl
|
|
type: RelaxedAtomicUint32
|
|
value: 60
|
|
mirror: always
|
|
|
|
# Allow the network changed event to get sent when a network topology or setup
|
|
# change is noticed while running.
|
|
- name: network.notify.changed
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Allow network detection of IPv6 related changes (bug 1245059)
|
|
- name: network.notify.IPv6
|
|
type: RelaxedAtomicBool
|
|
# ifdef XP_WIN
|
|
value: false
|
|
# else
|
|
value: true
|
|
# endif
|
|
mirror: always
|
|
|
|
# Whether to check the dnsSuffix on network changes
|
|
- name: network.notify.dnsSuffixList
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to check the registry for proxies on network changes that indicate
|
|
# that TRR should not be used.
|
|
- name: network.notify.checkForProxies
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to check the registry for NRPT rules on network changes that
|
|
# indicate that TRR should not be used.
|
|
- name: network.notify.checkForNRPT
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether NotifyIpInterfaceChange should be called immediately after
|
|
# registration in order to record the initial state of the network adapters.
|
|
- name: network.notify.initial_call
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to use the rust implemented DefaultURI for unknown scheme types
|
|
- name: network.url.useDefaultURI
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Force remapping of remote port numbers to allow reaching local testing
|
|
# servers or port forwarders listening on non-standard ports. Note that
|
|
# this is not changing the origin URL in the addressbar, only internally
|
|
# the port number used. This is intended to be used along with the
|
|
# `network.dns.forceResolve` preference.
|
|
#
|
|
# The form is:
|
|
# "80,443,808-888=8080; 563=8081"
|
|
# this will remap ports for HTTP, HTTPS and the range of 808-888 included
|
|
# to use port 8080, and port 563 to go to 8081.
|
|
- name: network.socket.forcePort
|
|
type: String
|
|
value: ""
|
|
mirror: never
|
|
|
|
# Receive buffer size of QUIC socket
|
|
- name: network.http.http3.recvBufferSize
|
|
type: RelaxedAtomicInt32
|
|
value: 1048576
|
|
mirror: always
|
|
|
|
- name: network.http.http3.enable_qlog
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: network.http.http3.enable_0rtt
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# When a h3 transaction is inserted in the pending queue, the time (ms) we wait
|
|
# to create a TCP backup connection.
|
|
- name: network.http.http3.backup_timer_delay
|
|
type: RelaxedAtomicUint32
|
|
value: 100
|
|
mirror: always
|
|
|
|
# When true, a http request will be upgraded to https when HTTPS RR is
|
|
# available.
|
|
- name: network.dns.upgrade_with_https_rr
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# Whether to use HTTPS RR as AltSvc
|
|
- name: network.dns.use_https_rr_as_altsvc
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether to check for NAT64 using the system resolver
|
|
- name: network.connectivity-service.nat64-check
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Manually enter the NAT64 prefix that will be used if IPv4 is unavailable.
|
|
# The value is formatted as IPv6 with the least significant bits to be dropped.
|
|
# For example, 64:ff9b:: is a common prefix. This will not disable
|
|
# the NAT64 check, although the value of this pref will be prioritized.
|
|
- name: network.connectivity-service.nat64-prefix
|
|
type: String
|
|
value: ""
|
|
mirror: never
|
|
|
|
# Whether to enable echconfig.
|
|
- name: network.dns.echconfig.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# This pref needs to be worked together with network.dns.echconfig.enabled
|
|
# being true and there is no record without ECHConfig.
|
|
# When we try all records with ECHConfig in HTTPS RRs and still can't connect,
|
|
# this pref indicate whether we can fallback to the origin server.
|
|
- name: network.dns.echconfig.fallback_to_origin_when_all_failed
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# When true, reset the exclusion list when all records are excluded.
|
|
- name: network.dns.httpssvc.reset_exclustion_list
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# If the http3 connection cannot be ready after the timeout value here, the
|
|
# transaction will start another non-http3 conneciton.
|
|
# Setting this value to 0 indicates this feature is disabled.
|
|
- name: network.dns.httpssvc.http3_fast_fallback_timeout
|
|
type: RelaxedAtomicUint32
|
|
value: 50
|
|
mirror: always
|
|
|
|
# Whether to use https rr for speculative connections.
|
|
- name: network.dns.use_https_rr_for_speculative_connection
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: network.cache.frecency_array_check_enabled
|
|
type: RelaxedAtomicBool
|
|
value: @IS_EARLY_BETA_OR_EARLIER@
|
|
mirror: always
|
|
|
|
# This is used for a temporary workaround for a web-compat issue. If pref is
|
|
# true CORS preflight requests are allowed to send client certificates.
|
|
- name: network.cors_preflight.allow_client_cert
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "nglayout."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Enable/disable display list invalidation logging --- useful for debugging.
|
|
- name: nglayout.debug.invalidation
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Enable/disable widget update area flashing --- only supported with
|
|
# BasicLayers (other layer managers always update the entire widget area).
|
|
- name: nglayout.debug.widget_update_flashing
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "page_load."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Time in milliseconds during which certain tasks are deprioritized during
|
|
# page load.
|
|
- name: page_load.deprioritization_period
|
|
type: RelaxedAtomicUint32
|
|
value: 5000
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "permissions."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# 1-Accept, 2-Deny, Any other value: Accept
|
|
- name: permissions.default.image
|
|
type: RelaxedAtomicUint32
|
|
value: 1
|
|
mirror: always
|
|
|
|
- name: permissions.delegation.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: permissions.isolateBy.userContext
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: permissions.isolateBy.privateBrowsing
|
|
type: RelaxedAtomicBool
|
|
value: @IS_EARLY_BETA_OR_EARLIER@
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "plain_text."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# When false, text in plaintext documents does not wrap long lines.
|
|
- name: plain_text.wrap_long_lines
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "plugin."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Whether sending WM_MOUSEWHEEL and WM_MOUSEHWHEEL to plugins on Windows.
|
|
- name: plugin.mousewheel.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: plugin.state.flash
|
|
type: uint32_t
|
|
# Flash is Click-to-Activate by default on all channels. Disabled for ARM builds.
|
|
#if defined(_ARM64_) && defined(XP_WIN)
|
|
value: 0
|
|
#else
|
|
value: 1
|
|
#endif
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "plugins."
|
|
#---------------------------------------------------------------------------
|
|
|
|
- name: plugins.flashBlock.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: plugins.http_https_only
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "preferences."
|
|
#---------------------------------------------------------------------------
|
|
|
|
- name: preferences.allow.omt-write
|
|
type: bool
|
|
value: true
|
|
mirror: never
|
|
|
|
#ifdef DEBUG
|
|
# If set to true, setting a Preference matched to a `Once` StaticPref will
|
|
# assert that the value matches. Such assertion being broken is a clear flag
|
|
# that the Once policy shouldn't be used.
|
|
- name: preferences.check.once.policy
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# If set to true, StaticPrefs Once policy check will be skipped during
|
|
# automation regression test. Use with care. This pref must be set back to
|
|
# false as soon as specific test has completed.
|
|
- name: preferences.force-disable.check.once.policy
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
#endif
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "print."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Variation fonts can't always be embedded in certain output formats
|
|
# such as PDF. To work around this, draw the variation fonts using
|
|
# paths instead of using font embedding.
|
|
- name: print.font-variations-as-paths
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether we always print silently (without a print dialog).
|
|
- name: print.always_print_silent
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether tab_modal print UI is enabled.
|
|
#
|
|
# The tab modal print dialog is currently only for early beta or nightly.
|
|
- name: print.tab_modal.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether the pages per sheet print setting is enabled.
|
|
- name: print.pages_per_sheet.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether we allow the print progress dialog to show up.
|
|
- name: print.show_print_progress
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# The default DPI for printing.
|
|
#
|
|
# For PDF-based output, DPI should ideally be irrelevant, but in fact it is not
|
|
# for multiple reasons:
|
|
#
|
|
# * Layout code that tries to respect device pixels (e.g. for snapping glyph
|
|
# positions and baselines, and especially for the "GDI Classic"
|
|
# rendering-mode threshold for certain fonts).
|
|
#
|
|
# * The limitations of the PDF format mean that we can't natively represent
|
|
# certain effects, such as filters, in PDF output, so we need to rasterize
|
|
# the parts of the document with these applied.
|
|
#
|
|
# * Other rasterized things like images and such are also affected by DPI
|
|
# (both in the output, and the images we select via srcset, for example).
|
|
#
|
|
# Therefore, using a high DPI is preferable. For now, we use 144dpi to match
|
|
# physical printer output on Windows, but higher (e.g. 300dpi) might be better
|
|
# if it does not lead to issues such as excessive memory use.
|
|
- name: print.default_dpi
|
|
type: float
|
|
value: 144.0f
|
|
mirror: always
|
|
|
|
# Whether support for monochrome printing is enabled for CUPS.
|
|
- name: print.cups.monochrome.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "privacy."
|
|
#---------------------------------------------------------------------------
|
|
|
|
- name: privacy.file_unique_origin
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: privacy.fuzzyfox.clockgrainus
|
|
type: RelaxedAtomicUint32
|
|
value: 100
|
|
mirror: always
|
|
|
|
# Annotate trackers using the strict list. If set to false, the basic list will
|
|
# be used instead.
|
|
- name: privacy.annotate_channels.strict_list.enabled
|
|
type: bool
|
|
value: @IS_EARLY_BETA_OR_EARLIER@
|
|
mirror: always
|
|
|
|
# First Party Isolation (double keying), disabled by default.
|
|
- name: privacy.firstparty.isolate
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# If false, two windows in the same domain with different first party domains
|
|
# (top level URLs) can access resources through window.opener. This pref is
|
|
# effective only when "privacy.firstparty.isolate" is true.
|
|
- name: privacy.firstparty.isolate.restrict_opener_access
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: privacy.firstparty.isolate.block_post_message
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: privacy.firstparty.isolate.use_site
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Enforce tracking protection in all modes.
|
|
- name: privacy.trackingprotection.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Enforce tracking protection in Private Browsing mode.
|
|
- name: privacy.trackingprotection.pbmode.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Annotate channels based on the tracking protection list in all modes
|
|
- name: privacy.trackingprotection.annotate_channels
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Block 3rd party fingerprinting resources.
|
|
- name: privacy.trackingprotection.fingerprinting.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Block 3rd party cryptomining resources.
|
|
- name: privacy.trackingprotection.cryptomining.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Block 3rd party socialtracking resources.
|
|
- name: privacy.trackingprotection.socialtracking.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Consider socialtracking annotation as trackers (see ETP).
|
|
- name: privacy.socialtracking.block_cookies.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether Origin Telemetry should be enabled.
|
|
# NOTE: if telemetry.origin_telemetry_test_mode.enabled is enabled, this pref
|
|
# won't have any effect.
|
|
- name: privacy.trackingprotection.origin_telemetry.enabled
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
- name: privacy.trackingprotection.testing.report_blocked_node
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether to spoof user locale to English (used as part of Resist
|
|
# Fingerprinting).
|
|
# 0 - will prompt
|
|
# 1 - don't spoof
|
|
# 2 - spoof
|
|
- name: privacy.spoof_english
|
|
type: RelaxedAtomicUint32
|
|
value: 0
|
|
mirror: always
|
|
|
|
# Send "do not track" HTTP header, disabled by default.
|
|
- name: privacy.donottrackheader.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Lower the priority of network loads for resources on the tracking protection
|
|
# list. Note that this requires the
|
|
# privacy.trackingprotection.annotate_channels pref to be on in order to have
|
|
# any effect.
|
|
- name: privacy.trackingprotection.lower_network_priority
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# A subset of Resist Fingerprinting protections focused specifically on timers.
|
|
# This affects the Animation API, the performance APIs, Date.getTime,
|
|
# Event.timestamp, File.lastModified, audioContext.currentTime,
|
|
# canvas.captureStream.currentTime.
|
|
- name: privacy.reduceTimerPrecision
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# If privacy.reduceTimerPrecision is false, this pref controls whether or not
|
|
# to clamp all timers at a fixed 20 microsconds. It should always be enabled,
|
|
# and is only specified as a pref to enable an emergency disabling in the event
|
|
# of catastrophic failure.
|
|
- name: privacy.reduceTimerPrecision.unconditional
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# The resistFingerprinting variables are marked with 'Relaxed' memory ordering.
|
|
# We don't particurally care that threads have a percently consistent view of
|
|
# the values of these prefs. They are not expected to change often, and having
|
|
# an outdated view is not particurally harmful. They will eventually become
|
|
# consistent.
|
|
#
|
|
# The variables will, however, be read often (specifically .microseconds on
|
|
# each timer rounding) so performance is important.
|
|
|
|
- name: privacy.resistFingerprinting
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# We automatically decline canvas permission requests if they are not initiated
|
|
# from user input. Just in case that breaks something, we allow the user to
|
|
# revert this behavior with this obscure pref. We do not intend to support this
|
|
# long term. If you do set it, to work around some broken website, please file
|
|
# a bug with information so we can understand why it is needed.
|
|
- name: privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether canvas extraction should result in random data. If false, canvas
|
|
# extraction results in all-white, opaque pixel data.
|
|
- name: privacy.resistFingerprinting.randomDataOnCanvasExtract
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# The log level for browser console messages logged in RFPHelper.jsm. Change to
|
|
# 'All' and restart to see the messages.
|
|
- name: privacy.resistFingerprinting.jsmloglevel
|
|
type: String
|
|
value: "Warn"
|
|
mirror: never
|
|
|
|
# Enable jittering the clock one precision value forward.
|
|
- name: privacy.resistFingerprinting.reduceTimerPrecision.jitter
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Dynamically tune the resolution of the timer reduction for
|
|
# `privacy.reduceTimerPrecision` and `privacy.resistFingerprinting`.
|
|
- name: privacy.resistFingerprinting.reduceTimerPrecision.microseconds
|
|
type: RelaxedAtomicUint32
|
|
value: 1000
|
|
mirror: always
|
|
|
|
- name: privacy.resistFingerprinting.target_video_res
|
|
type: uint32_t
|
|
value: 480
|
|
mirror: always
|
|
|
|
# Anti-tracking permission expiration.
|
|
- name: privacy.restrict3rdpartystorage.expiration
|
|
type: uint32_t
|
|
value: 2592000 # 30 days (in seconds)
|
|
mirror: always
|
|
|
|
# Report Anti-tracking warnings to console lazily
|
|
- name: privacy.restrict3rdpartystorage.console.lazy
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Enable the heuristic to allow storage access for windows opened using window.open() after user interaction
|
|
- name: privacy.restrict3rdpartystorage.heuristic.opened_window_after_interaction
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Enable the heuristic to allow storage access for windows opened using window.open()
|
|
- name: privacy.restrict3rdpartystorage.heuristic.window_open
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Enable the heuristic to allow storage access for windows opened using window.open()
|
|
- name: privacy.restrict3rdpartystorage.heuristic.redirect
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Anti-tracking permission expiration.
|
|
- name: privacy.restrict3rdpartystorage.expiration_redirect
|
|
type: uint32_t
|
|
value: 900 # 15 minutes
|
|
mirror: always
|
|
|
|
# Anti-tracking user-interaction expiration.
|
|
- name: privacy.userInteraction.expiration
|
|
type: uint32_t
|
|
value: 3888000 # 45 days (in seconds)
|
|
mirror: always
|
|
|
|
# Anti-tracking user-interaction document interval.
|
|
- name: privacy.userInteraction.document.interval
|
|
type: uint32_t
|
|
value: 1800 # 30 minutes (in seconds)
|
|
mirror: always
|
|
|
|
# Enable Anti-tracking testing. When it enables, it will notify the observers
|
|
# when user-interaction permission or storage access permission is added. This
|
|
# is for testing only.
|
|
- name: privacy.antitracking.testing
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Enable the heuristic to allow storage access for recent visited pages
|
|
- name: privacy.restrict3rdpartystorage.heuristic.recently_visited
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Valid time gap since last visit
|
|
- name: privacy.restrict3rdpartystorage.heuristic.recently_visited_time
|
|
type: uint32_t
|
|
value: 600 # 10 minutes
|
|
mirror: always
|
|
|
|
# Recent visited pages redirection permission expiration.
|
|
- name: privacy.restrict3rdpartystorage.expiration_visited
|
|
type: uint32_t
|
|
value: 2592000 # 30 days (in seconds)
|
|
mirror: always
|
|
|
|
# Maximum client-side cookie life-time cap. Measured in seconds, set to 0 to
|
|
# disable.
|
|
- name: privacy.documentCookies.maxage
|
|
type: uint32_t
|
|
value: 0
|
|
mirror: always
|
|
|
|
- name: privacy.storagePrincipal.enabledForTrackers
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: privacy.window.maxInnerWidth
|
|
type: int32_t
|
|
value: 1000
|
|
mirror: always
|
|
|
|
- name: privacy.window.maxInnerHeight
|
|
type: int32_t
|
|
value: 1000
|
|
mirror: always
|
|
|
|
- name: privacy.sanitize.sanitizeOnShutdown
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: privacy.clearOnShutdown.cache
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: privacy.dynamic_firstparty.limitForeign
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: privacy.dynamic_firstparty.use_site
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: privacy.partition.network_state
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: privacy.partition.bloburl_per_agent_cluster
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
- name: privacy.window.name.update.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# By default, the network state isolation is not active when there is a proxy
|
|
# setting. This pref forces the network isolation even in these scenarios.
|
|
- name: privacy.partition.network_state.connection_with_proxy
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "prompts."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Prompt modal type prefs
|
|
# See nsIPromptService::MODAL_TYPE fields for possible values.
|
|
|
|
# Insecure form submit warning.
|
|
- name: prompts.modalType.insecureFormSubmit
|
|
type: int32_t
|
|
value: 2
|
|
mirror: always
|
|
|
|
# nsHttpChannelAuthProvider#ConfirmAuth anti-phishing prompts.
|
|
- name: prompts.modalType.confirmAuth
|
|
type: int32_t
|
|
value: 2
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "security."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Mochitests that need to load resource:// URIs not declared content-accessible
|
|
# in manifests should set this pref.
|
|
- name: security.all_resource_uri_content_accessible
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: security.bad_cert_domain_error.url_fix_enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: security.csp.enable
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: security.csp.reporting.script-sample.max-length
|
|
type: int32_t
|
|
value: 40
|
|
mirror: always
|
|
|
|
- name: security.csp.truncate_blocked_uri_for_frame_navigations
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Allows loading ui resources in CheckLoadURIFlags
|
|
# TODO Bug 1654488: Remove pref in CheckLoadURIFlags
|
|
# which allows all UI resources to load
|
|
- name: security.caps.allow_uri_is_ui_resource_in_checkloaduriflags
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# If true, all toplevel data: URI navigations will be blocked.
|
|
# Please note that manually entering a data: URI in the
|
|
# URL-Bar will not be blocked when flipping this pref.
|
|
- name: security.data_uri.block_toplevel_data_uri_navigations
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether window A is allowed to navigate cross-origin window B (that is not
|
|
# a descendant frame of A) to a URI that loads externally.
|
|
- name: security.allow_disjointed_external_uri_loads
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but
|
|
# not allowed for Firefox Desktop in firefox.js
|
|
- name: security.allow_parent_unrestricted_js_loads
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but
|
|
# not allowed for Firefox Desktop in firefox.js
|
|
- name: security.allow_eval_with_system_principal
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but
|
|
# not allowed for Firefox Desktop in firefox.js
|
|
- name: security.allow_eval_in_parent_process
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Disallowed by default, ensure not disallowed content is loaded in the parent
|
|
# process.
|
|
- name: security.allow_unsafe_parent_loads
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Pref to block mixed scripts (fonts, plugin content, scripts, stylesheets,
|
|
# iframes, websockets, XHR).
|
|
- name: security.mixed_content.block_active_content
|
|
type: bool
|
|
value: @IS_ANDROID@
|
|
mirror: always
|
|
|
|
# Pref to block sub requests that happen within an object.
|
|
- name: security.mixed_content.block_object_subrequest
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Pref for mixed display content blocking (images, audio, video).
|
|
- name: security.mixed_content.block_display_content
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Pref for mixed display content upgrading (images, audio, video).
|
|
- name: security.mixed_content.upgrade_display_content
|
|
type: bool
|
|
value: @IS_NIGHTLY_BUILD@
|
|
mirror: always
|
|
|
|
# Whether strict file origin policy is in effect. "False" is traditional.
|
|
- name: security.fileuri.strict_origin_policy
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
|
|
# The level to which we sandbox the content process. firefox.js sets the
|
|
# default to different values on a per-OS basis, and has documentation
|
|
# on what the defaults are and what the numbers mean.
|
|
- name: security.sandbox.content.level
|
|
type: int32_t
|
|
value: 0
|
|
mirror: always
|
|
do_not_use_directly: true # Consumers should use SandboxSettings to ask.
|
|
|
|
- name: security.sandbox.socket.process.level
|
|
type: int32_t
|
|
value: 0
|
|
mirror: always
|
|
do_not_use_directly: true # Consumers should use SandboxSettings to ask.
|
|
|
|
#if defined(XP_WIN) && defined(MOZ_SANDBOX)
|
|
# Whether win32k is disabled for content processes.
|
|
# true means win32k system calls are not permitted.
|
|
- name: security.sandbox.content.win32k-disable
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Note: win32k is currently _not_ disabled for GMP due to intermittent test
|
|
# failures, where the GMP process fails very early. See bug 1449348.
|
|
- name: security.sandbox.gmp.win32k-disable
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether win32k is disabled for socket processes.
|
|
# true means win32k system calls are not permitted.
|
|
- name: security.sandbox.socket.win32k-disable
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether CET Shadow Stacks Strict mode is enabled for the content processes.
|
|
- name: security.sandbox.content.shadow-stacks-strict
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether CET Shadow Stacks Strict mode is enabled for the RDD processes.
|
|
- name: security.sandbox.rdd.shadow-stacks-strict
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether CET Shadow Stacks Strict mode is enabled for the socket processes.
|
|
- name: security.sandbox.socket.shadow-stacks-strict
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether CET Shadow Stacks Strict mode is enabled for the GPU processes.
|
|
- name: security.sandbox.gpu.shadow-stacks-strict
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether CET Shadow Stacks Strict mode is enabled for the GMP processes.
|
|
- name: security.sandbox.gmp.shadow-stacks-strict
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# This controls the depth of stack trace that is logged when Windows sandbox
|
|
# logging is turned on. This is only currently available for the content
|
|
# process because the only other sandbox (for GMP) has too strict a policy to
|
|
# allow stack tracing. This does not require a restart to take effect.
|
|
- name: security.sandbox.windows.log.stackTraceDepth
|
|
type: RelaxedAtomicUint32
|
|
value: 0
|
|
mirror: always
|
|
#endif
|
|
|
|
#if defined(XP_LINUX) && defined(MOZ_SANDBOX)
|
|
# Run content processes in headless mode and disallow connections to
|
|
# the X server. Experimental; breaks WebGL and Flash, and requires
|
|
# `widget.non-native-theme.enabled` and `widget.remote-look-and-feel`.
|
|
# Changing it requires a restart because sandbox policy information dependent
|
|
# on it is cached. See bug 1640345 for details.
|
|
- name: security.sandbox.content.headless
|
|
type: bool
|
|
value: false
|
|
mirror: once
|
|
#endif
|
|
|
|
# Pref to show warning when submitting from secure to insecure.
|
|
- name: security.warn_submit_secure_to_insecure
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Hardware Origin-bound Second Factor Support
|
|
- name: security.webauth.webauthn
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Navigate-to CSP 3 directive
|
|
- name: security.csp.enableNavigateTo
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# No way to enable on Android, Bug 1552602
|
|
- name: security.webauth.u2f
|
|
type: bool
|
|
value: @IS_NOT_ANDROID@
|
|
mirror: always
|
|
|
|
# Block Worker/SharedWorker scripts with wrong MIME type.
|
|
- name: security.block_Worker_with_wrong_mime
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Cancel outgoing requests from SystemPrincipal
|
|
- name: security.cancel_non_local_loads_triggered_by_systemprincipal
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "slider."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Scrollbar snapping region.
|
|
# - 0: off
|
|
# - 1 and higher: slider thickness multiple
|
|
- name: slider.snapMultiplier
|
|
type: int32_t
|
|
#ifdef XP_WIN
|
|
value: 6
|
|
#else
|
|
value: 0
|
|
#endif
|
|
mirror: once
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "storage."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Whether to use a non-exclusive VFS.
|
|
# By default we use the unix-excl VFS, for the following reasons:
|
|
# 1. It improves compatibility with NFS shares, whose implementation
|
|
# is incompatible with SQLite's locking requirements (reliable fcntl), and
|
|
# in particular with WAL journaling.
|
|
# Bug 433129 attempted to automatically identify such file-systems,
|
|
# but a reliable way was not found and the fallback locking is slower than
|
|
# POSIX locking, so we do not want to do it by default.
|
|
# 2. It allows wal mode to avoid the memory mapped -shm file, reducing the
|
|
# likelihood of SIGBUS failures when disk space is exhausted.
|
|
# 3. It provides some protection from third party database tampering while a
|
|
# connection is open.
|
|
# Note there's no win32-excl VFS, so this has no effect on Windows.
|
|
- name: storage.sqlite.exclusiveLock.enabled
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NOT_ANDROID@
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "svg."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# This pref controls whether the 'context-fill' and 'context-stroke' keywords
|
|
# can be used in SVG-as-an-image in the content processes to use the fill/
|
|
# stroke specified on the element that embeds the image. (These keywords are
|
|
# always enabled in the chrome process, regardless of this pref.) Also, these
|
|
# keywords are currently not part of any spec, which is partly why we disable
|
|
# them for web content.
|
|
- name: svg.context-properties.content.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Enable the use of display-lists for SVG hit-testing.
|
|
- name: svg.display-lists.hit-testing.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Enable the use of display-lists for SVG painting.
|
|
- name: svg.display-lists.painting.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Is support for the new getBBox method from SVG 2 enabled?
|
|
# See https://svgwg.org/svg2-draft/single-page.html#types-SVGBoundingBoxOptions
|
|
- name: svg.new-getBBox.enabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Is support for letter-spacing and word-spacing in SVG text enabled?
|
|
- name: svg.text-spacing.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "telemetry."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Enable origin telemetry test mode or not
|
|
# NOTE: turning this on will override the
|
|
# privacy.trackingprotection.origin_telemetry.enabled pref.
|
|
- name: telemetry.origin_telemetry_test_mode.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: telemetry.number_of_site_origin.min_interval
|
|
type: uint32_t
|
|
value: 300000
|
|
mirror: always
|
|
|
|
- name: telemetry.fog.test.localhost_port
|
|
type: RelaxedAtomicInt32
|
|
value: 0
|
|
mirror: always
|
|
rust: true
|
|
|
|
- name: telemetry.fog.test.activity_limit
|
|
type: RelaxedAtomicUint32
|
|
value: 120
|
|
mirror: always
|
|
rust: true
|
|
|
|
- name: telemetry.fog.test.inactivity_limit
|
|
type: RelaxedAtomicUint32
|
|
value: 1200
|
|
mirror: always
|
|
rust: true
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "test."
|
|
#---------------------------------------------------------------------------
|
|
|
|
- name: test.events.async.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: test.mousescroll
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "thread."
|
|
#---------------------------------------------------------------------------
|
|
|
|
- name: threads.medium_high_event_queue.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "timer."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Since our timestamp on macOS does not increment while the system is asleep, we
|
|
# should ignore sleep/wake notifications to make timer thread process timers.
|
|
- name: timer.ignore_sleep_wake_notifications
|
|
type: RelaxedAtomicBool
|
|
#ifdef XP_MACOSX
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "toolkit."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Returns true if BHR is disabled.
|
|
- name: toolkit.content-background-hang-monitor.disabled
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: toolkit.scrollbox.horizontalScrollDistance
|
|
type: RelaxedAtomicInt32
|
|
value: 5
|
|
mirror: always
|
|
|
|
- name: toolkit.scrollbox.verticalScrollDistance
|
|
type: RelaxedAtomicInt32
|
|
value: 3
|
|
mirror: always
|
|
|
|
# The lateWriteChecksStage and fastShutdownStage below represent the stage
|
|
# of shutdown after which we (for lateWriteChecksStage) crash / gather
|
|
# telemetry data on file writes, or (for fastShutdownStage) we call _exit(0).
|
|
# Higher values are earlier during shutdown, and the full enumeration can
|
|
# be found in AppShutdown.h in the AppShutdownPhase enum.
|
|
- name: toolkit.shutdown.lateWriteChecksStage
|
|
type: int32_t
|
|
#ifdef MOZ_CODE_COVERAGE
|
|
value: 0
|
|
#else
|
|
value: 3
|
|
#endif
|
|
mirror: always
|
|
|
|
# See the comment above toolkit.shutdown.lateWriteChecksStage. A higher value
|
|
# for this pref means we call _exit(0) earlier during shutdown.
|
|
- name: toolkit.shutdown.fastShutdownStage
|
|
type: int32_t
|
|
#if !defined(DEBUG) && !defined(MOZ_ASAN) && !defined(MOZ_TSAN) && !defined(MOZ_CODE_COVERAGE) && !defined(MOZ_VALGRIND) && !defined(MOZ_PROFILE_GENERATE) && !defined(JS_STRUCTURED_SPEW)
|
|
#ifdef NIGHTLY_BUILD
|
|
value: 3
|
|
#else
|
|
value: 1
|
|
#endif
|
|
#else
|
|
value: 0
|
|
#endif
|
|
mirror: always
|
|
|
|
# Sending each remote accumulation immediately places undue strain on the IPC
|
|
# subsystem. Batch the remote accumulations for a period of time before sending
|
|
# them all at once. This value was chosen as a balance between data timeliness
|
|
# and performance (see bug 1218576).
|
|
- name: toolkit.telemetry.ipcBatchTimeout
|
|
type: uint32_t
|
|
value: 2000
|
|
mirror: always
|
|
|
|
- name: toolkit.telemetry.geckoview.batchDurationMS
|
|
type: RelaxedAtomicUint32
|
|
value: 5000
|
|
mirror: always
|
|
|
|
- name: toolkit.telemetry.geckoview.maxBatchStalenessMS
|
|
type: RelaxedAtomicUint32
|
|
value: 60000
|
|
mirror: always
|
|
|
|
- name: toolkit.telemetry.geckoview.streaming
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: toolkit.telemetry.testing.overrideProductsCheck
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "ui."
|
|
#---------------------------------------------------------------------------
|
|
|
|
- name: ui.key.generalAccessKey
|
|
type: int32_t
|
|
value: -1
|
|
mirror: always
|
|
|
|
# Only used if generalAccessKey is -1.
|
|
- name: ui.key.chromeAccess
|
|
type: int32_t
|
|
#ifdef XP_MACOSX
|
|
# 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 3 = ctrl+shift, 8 = Meta
|
|
value: 2
|
|
#else
|
|
# 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 5 = Alt+Shift,
|
|
# 8 = Meta, 16 = Win
|
|
value: 4
|
|
#endif
|
|
mirror: always
|
|
|
|
# Only used if generalAccessKey is -1.
|
|
- name: ui.key.contentAccess
|
|
type: int32_t
|
|
#ifdef XP_MACOSX
|
|
# 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 3 = ctrl+shift, 8 = Meta
|
|
value: 6
|
|
#else
|
|
# 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 5 = Alt+Shift,
|
|
# 8 = Meta, 16 = Win
|
|
value: 5
|
|
#endif
|
|
mirror: always
|
|
|
|
# Does the access key by itself focus the menu bar?
|
|
- name: ui.key.menuAccessKeyFocuses
|
|
type: bool
|
|
#if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
|
|
# On Windows and Linux, we now default to showing the menu bar only when alt
|
|
# is pressed.
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
# Duration of timeout of incremental search in menus (ms). 0 means infinite.
|
|
- name: ui.menu.incremental_search.timeout
|
|
type: uint32_t
|
|
value: 1000
|
|
mirror: always
|
|
|
|
# If true, all popups won't hide automatically on blur
|
|
- name: ui.popup.disable_autohide
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Negate scroll, true will make the mouse scroll wheel move the screen the
|
|
# same direction as with most desktops or laptops.
|
|
- name: ui.scrolling.negate_wheel_scroll
|
|
type: RelaxedAtomicBool
|
|
value: @IS_ANDROID@
|
|
mirror: always
|
|
|
|
# If the user puts a finger down on an element and we think the user might be
|
|
# executing a pan gesture, how long do we wait before tentatively deciding the
|
|
# gesture is actually a tap and activating the target element?
|
|
- name: ui.touch_activation.delay_ms
|
|
type: int32_t
|
|
value: 100
|
|
mirror: always
|
|
|
|
# If the user has clicked an element, how long do we keep the :active state
|
|
# before it is cleared by the mouse sequences fired after a
|
|
# touchstart/touchend.
|
|
- name: ui.touch_activation.duration_ms
|
|
type: int32_t
|
|
value: 10
|
|
mirror: always
|
|
|
|
# Prevent system colors from being exposed to CSS or canvas.
|
|
- name: ui.use_standins_for_native_colors
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Disable page loading activity cursor by default.
|
|
- name: ui.use_activity_cursor
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether context menus should only appear on mouseup instead of mousedown,
|
|
# on OSes where they normally appear on mousedown (macOS, *nix).
|
|
# Note: ignored on Windows (context menus always use mouseup).
|
|
- name: ui.context_menus.after_mouseup
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether click-hold context menus are enabled.
|
|
- name: ui.click_hold_context_menus
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# How long to wait for a drag gesture before displaying click-hold context menu,
|
|
# in milliseconds.
|
|
- name: ui.click_hold_context_menus.delay
|
|
type: RelaxedAtomicInt32
|
|
value: 500
|
|
mirror: always
|
|
|
|
# When enabled, the touch.radius and mouse.radius prefs allow events to be
|
|
# dispatched to nearby elements that are sensitive to the event. See
|
|
# PositionedEventTargeting.cpp. The 'mm' prefs define a rectangle around the
|
|
# nominal event target point within which we will search for suitable elements.
|
|
# 'visitedWeight' is a percentage weight; a value > 100 makes a visited link be
|
|
# treated as further away from the event target than it really is, while a
|
|
# value < 100 makes a visited link be treated as closer to the event target
|
|
# than it really is.
|
|
|
|
- name: ui.touch.radius.enabled
|
|
type: bool
|
|
value: @IS_ANDROID@
|
|
mirror: always
|
|
|
|
- name: ui.touch.radius.topmm
|
|
type: uint32_t
|
|
#ifdef ANDROID
|
|
value: 5
|
|
#else
|
|
value: 12
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: ui.touch.radius.rightmm
|
|
type: uint32_t
|
|
#ifdef ANDROID
|
|
value: 3
|
|
#else
|
|
value: 8
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: ui.touch.radius.bottommm
|
|
type: uint32_t
|
|
#ifdef ANDROID
|
|
value: 2
|
|
#else
|
|
value: 4
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: ui.touch.radius.leftmm
|
|
type: uint32_t
|
|
#ifdef ANDROID
|
|
value: 3
|
|
#else
|
|
value: 8
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: ui.touch.radius.visitedWeight
|
|
type: uint32_t
|
|
value: 120
|
|
mirror: always
|
|
|
|
- name: ui.mouse.radius.enabled
|
|
type: bool
|
|
value: @IS_ANDROID@
|
|
mirror: always
|
|
|
|
- name: ui.mouse.radius.topmm
|
|
type: uint32_t
|
|
#ifdef ANDROID
|
|
value: 5
|
|
#else
|
|
value: 12
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: ui.mouse.radius.rightmm
|
|
type: uint32_t
|
|
#ifdef ANDROID
|
|
value: 3
|
|
#else
|
|
value: 8
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: ui.mouse.radius.bottommm
|
|
type: uint32_t
|
|
#ifdef ANDROID
|
|
value: 2
|
|
#else
|
|
value: 4
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: ui.mouse.radius.leftmm
|
|
type: uint32_t
|
|
#ifdef ANDROID
|
|
value: 3
|
|
#else
|
|
value: 8
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: ui.mouse.radius.visitedWeight
|
|
type: uint32_t
|
|
value: 120
|
|
mirror: always
|
|
|
|
- name: ui.mouse.radius.reposition
|
|
type: bool
|
|
value: @IS_ANDROID@
|
|
mirror: always
|
|
|
|
# When true, the ui.mouse.radius.* prefs will only affect simulated mouse
|
|
# events generated by touch input. When false, the prefs will be used for all
|
|
# mouse events.
|
|
- name: ui.mouse.radius.inputSource.touchOnly
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "urlclassifier."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Update server response timeout for Safe Browsing.
|
|
- name: urlclassifier.update.response_timeout_ms
|
|
type: uint32_t
|
|
value: 30000
|
|
mirror: always
|
|
|
|
# Download update timeout for Safe Browsing.
|
|
- name: urlclassifier.update.timeout_ms
|
|
type: uint32_t
|
|
value: 90000
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "view_source."
|
|
#---------------------------------------------------------------------------
|
|
|
|
- name: view_source.editor.external
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: view_source.wrap_long_lines
|
|
type: bool
|
|
value: @IS_ANDROID@
|
|
mirror: always
|
|
|
|
- name: view_source.syntax_highlight
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: view_source.tab_size
|
|
type: int32_t
|
|
value: 4
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "webgl." (for pref access from Worker threads)
|
|
#---------------------------------------------------------------------------
|
|
|
|
- name: webgl.1.allow-core-profiles
|
|
type: RelaxedAtomicBool
|
|
#ifdef XP_MACOSX
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: webgl.all-angle-options
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: webgl.angle.force-d3d11
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: webgl.angle.try-d3d11
|
|
type: RelaxedAtomicBool
|
|
#ifdef XP_WIN
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: webgl.angle.force-warp
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: webgl.can-lose-context-in-foreground
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: webgl.cgl.multithreaded
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: webgl.debug.incomplete-tex-color
|
|
type: RelaxedAtomicUint32
|
|
value: 0
|
|
mirror: always
|
|
|
|
- name: webgl.default-antialias
|
|
type: RelaxedAtomicBool
|
|
value: @IS_NOT_ANDROID@
|
|
mirror: always
|
|
|
|
- name: webgl.default-no-alpha
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: webgl.disable-angle
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: webgl.disable-wgl
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: webgl.dxgl.enabled
|
|
type: RelaxedAtomicBool
|
|
#ifdef XP_WIN
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: webgl.dxgl.needs-finish
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: webgl.disable-fail-if-major-performance-caveat
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: webgl.disable-DOM-blit-uploads
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: webgl.disabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: webgl.enable-debug-renderer-info
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: webgl.enable-draft-extensions
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: webgl.enable-privileged-extensions
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: webgl.enable-surface-texture
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: webgl.enable-ahardwarebuffer
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: webgl.enable-webgl2
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
- name: webgl.force-enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: webgl.force-layers-readback
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: webgl.force-index-validation
|
|
type: RelaxedAtomicInt32
|
|
value: 0
|
|
mirror: always
|
|
|
|
- name: webgl.lose-context-on-memory-pressure
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: webgl.max-contexts
|
|
type: RelaxedAtomicUint32
|
|
value: 1000
|
|
mirror: always
|
|
|
|
- name: webgl.max-contexts-per-principal
|
|
type: RelaxedAtomicUint32
|
|
value: 300
|
|
mirror: always
|
|
|
|
- name: webgl.max-warnings-per-context
|
|
type: RelaxedAtomicUint32
|
|
value: 32
|
|
mirror: always
|
|
|
|
- name: webgl.min_capability_mode
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: webgl.msaa-force
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: webgl.msaa-samples
|
|
type: RelaxedAtomicUint32
|
|
value: 4
|
|
mirror: always
|
|
|
|
- name: webgl.out-of-process
|
|
type: RelaxedAtomicBool
|
|
#if defined(XP_MACOSX) || defined(XP_WIN)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: webgl.out-of-process.force
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: webgl.out-of-process.shmem-size
|
|
type: RelaxedAtomicUint32
|
|
value: 100000 # 100KB
|
|
mirror: always
|
|
|
|
- name: webgl.power-preference-override
|
|
type: RelaxedAtomicInt32
|
|
value: 0
|
|
mirror: always
|
|
|
|
- name: webgl.prefer-16bpp
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: webgl.allow-immediate-queries
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: webgl.allow-fb-invalidation
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
|
|
- name: webgl.perf.max-warnings
|
|
type: RelaxedAtomicInt32
|
|
value: 0
|
|
mirror: always
|
|
|
|
- name: webgl.perf.max-acceptable-fb-status-invals
|
|
type: RelaxedAtomicInt32
|
|
value: 0
|
|
mirror: always
|
|
|
|
- name: webgl.perf.spew-frame-allocs
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "widget."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Global user preference for disabling native theme in content processes.
|
|
#
|
|
# NOTE(emilio): When changing this make sure to update the non_native_theme
|
|
# entry in python/mozbuild/mozbuild/mozinfo.py
|
|
- name: widget.non-native-theme.enabled
|
|
type: RelaxedAtomicBool
|
|
#if defined(XP_LINUX) && defined(NIGHTLY_BUILD) && !defined(ANDROID)
|
|
value: true
|
|
#elif defined(XP_MACOSX) && defined(NIGHTLY_BUILD)
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
# The size in CSS pixels at full zoom of the minimum scrollbar width.
|
|
- name: widget.non-native-theme.gtk.scrollbar.normal-size
|
|
type: uint32_t
|
|
value: 12
|
|
mirror: always
|
|
|
|
# The size in CSS pixels at full zoom of the "thin" scrollbars.
|
|
- name: widget.non-native-theme.gtk.scrollbar.thin-size
|
|
type: uint32_t
|
|
value: 6
|
|
mirror: always
|
|
|
|
# The amount of space that the thumb should fill the scrollbar, from zero to
|
|
# one.
|
|
- name: widget.non-native-theme.gtk.scrollbar.thumb-size
|
|
type: float
|
|
value: 0.75
|
|
mirror: always
|
|
|
|
# The minimum size of the scroll thumb, in the scrollbar direction.
|
|
- name: widget.non-native-theme.gtk.scrollbar.thumb-cross-size
|
|
type: uint32_t
|
|
value: 40
|
|
mirror: always
|
|
|
|
# Whether the thumb should be rounded for the non-native scrollbars.
|
|
- name: widget.non-native-theme.gtk.scrollbar.round-thumb
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether buttons shouldn't be suppressed for non-native scrollbars.
|
|
- name: widget.non-native-theme.gtk.scrollbar.allow-buttons
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether we should use the default accent color or the theme-provided one.
|
|
#
|
|
# TODO(emilio): This should probably do the right thing in most other
|
|
# platforms, but stick to the standard colors on those.
|
|
- name: widget.non-native-theme.use-theme-accent
|
|
type: bool
|
|
#ifdef MOZ_WIDGET_GTK
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: always
|
|
|
|
# Whether we should try to use WebRender to render widgets.
|
|
- name: widget.non-native-theme.webrender
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Preference to disable dark scrollbar implementation.
|
|
# This is mainly for testing because dark scrollbars have to be semi-
|
|
# transparent, but many reftests expect scrollbars to look identical
|
|
# among different backgrounds.
|
|
# However, some users may want to disable this as well.
|
|
- name: widget.disable-dark-scrollbar
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
- name: widget.window-transforms.disabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether to allow gtk dark themes in content.
|
|
- name: widget.content.allow-gtk-dark-theme
|
|
type: bool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Whether to use gtk high contrast themes to disable content styling like on
|
|
# windows high contrast mode.
|
|
- name: widget.content.gtk-high-contrast.enabled
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Whether to pause the compositor when a native window is minimized.
|
|
- name: widget.pause-compositor-when-minimized
|
|
type: bool
|
|
value: true
|
|
mirror: always
|
|
|
|
#ifdef MOZ_WAYLAND
|
|
#ifdef NIGHTLY_BUILD
|
|
# Keep those pref hidden on non-nightly builds to avoid people accidentally
|
|
# turning it on.
|
|
|
|
# Use DMABuf for content textures.
|
|
# For testing purposes only.
|
|
- name: widget.dmabuf-textures.enabled
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
#endif
|
|
|
|
# Use smooth rendering for Wayland basic compositor.
|
|
- name: widget.wayland-smooth-rendering
|
|
type: RelaxedAtomicBool
|
|
value: false
|
|
mirror: always
|
|
|
|
# Use DMABuf backend for WebGL.
|
|
- name: widget.dmabuf-webgl.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
|
|
# Use opaque region for MozContainer wl_surface
|
|
- name: widget.wayland.opaque-region.enabled
|
|
type: RelaxedAtomicBool
|
|
value: true
|
|
mirror: always
|
|
#endif
|
|
|
|
# Enable the RemoteLookAndFeel in content processes, which will cause all
|
|
# LookAndFeel values to be queried in the parent process and sent to content
|
|
# processes using IPC. This is required for widgets to paint and behave
|
|
# correctly when `security.sandbox.content.headless` is enabled.
|
|
- name: widget.remote-look-and-feel
|
|
type: bool
|
|
#ifdef MOZ_WIDGET_GTK
|
|
value: true
|
|
#else
|
|
value: false
|
|
#endif
|
|
mirror: once
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "xul."
|
|
#---------------------------------------------------------------------------
|
|
|
|
# Pref to control whether arrow-panel animations are enabled or not.
|
|
# Transitions are currently disabled on Linux due to rendering issues on
|
|
# certain configurations.
|
|
- name: xul.panel-animations.enabled
|
|
type: bool
|
|
#ifdef MOZ_WIDGET_GTK
|
|
value: false
|
|
#else
|
|
value: true
|
|
#endif
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# Prefs starting with "zoom."
|
|
#---------------------------------------------------------------------------
|
|
|
|
- name: zoom.maxPercent
|
|
type: uint32_t
|
|
#ifdef ANDROID
|
|
value: 400
|
|
#else
|
|
value: 500
|
|
#endif
|
|
mirror: always
|
|
|
|
- name: zoom.minPercent
|
|
type: uint32_t
|
|
#ifdef ANDROID
|
|
value: 20
|
|
#else
|
|
value: 30
|
|
#endif
|
|
mirror: always
|
|
|
|
#---------------------------------------------------------------------------
|
|
# End of prefs
|
|
#---------------------------------------------------------------------------
|