# This Source Code Form is subject to the terms of the Mozilla Public# License, v. 2.0. If a copy of the MPL was not distributed with this# file, You can obtain one at http://mozilla.org/MPL/2.0/. */# This file defines static prefs, i.e. those that are defined at startup and# used entirely or mostly from C++ and/or Rust code.## The file is separated into sections, where each section contains a group of# prefs that all share the same first segment of their name -- all the "gfx.*"# prefs are together, all the "network.*" prefs are together, etc. Sections# must be kept in alphabetical order, but prefs within sections need not be.## Basics# ------# Any pref defined in one of the files included here should *not* be defined# in a data file such as all.js; that would just be useless duplication.## (Except under unusual circumstances where the value defined here must be# overridden, e.g. for some Thunderbird prefs. In those cases the default# value from the data file will override the static default value defined# here.)## Please follow the existing prefs naming convention when considering adding a# new pref, and don't create a new pref group unless it's appropriate and there# are likely to be multiple prefs within that group. (If you do, you'll need to# update the `pref_groups` variable in modules/libpref/moz.build.)## Definitions# -----------# A pref definition looks like this:## - name: <pref-name> # mandatory# type: <cpp-type> # mandatory# value: <default-value> # mandatory# mirror: <never | once | always> # mandatory# do_not_use_directly: <true | false> # optional# include: <header-file> # optional# rust: <true | false> # optional# set_spidermonkey_pref: <false | startup | always> # optional## - `name` is the name of the pref, without double-quotes, as it appears# in about:config. It is used in most libpref API functions (from both C++# and JS code).## - `type` is one of `bool`, `int32_t`, `uint32_t`, `float`, an atomic version# of one of those, `String` or `DataMutexString`. Note that float prefs are# stored internally as strings. The C++ preprocessor doesn't like template# syntax in a macro argument, so use the typedefs defined in# StaticPrefsBase.h; for example, use `RelaxedAtomicBool` instead of# `Atomic<bool, Relaxed>`.## - `value` is the default value. Its type should be appropriate for# <cpp-type>, otherwise the generated code will fail to compile. A complex# C++ numeric expressions like `60 * 60` (which the YAML parser cannot treat# as an integer or float) is treated as a string and passed through without# change, which is useful.## - `mirror` indicates how the pref value is mirrored into a C++ variable.## * `never`: There is no C++ mirror variable. The pref value can only be# accessed via the standard libpref API functions.## * `once`: The pref value is mirrored into a variable at startup; the# mirror variable is left unchanged after that. (The exact point at which# all `once` mirror variables are set is when the first `once` mirror# variable is accessed, via its getter function.) This is mostly useful for# graphics prefs where we often don't want a new pref value to apply until# restart. Otherwise, this update policy is best avoided because its# behaviour can cause confusion and bugs.## * `always`: The mirror variable is always kept in sync with the pref value.# This is the most common choice.## When a mirror variable is present, a getter will be created that can access# it. Using the getter function to read the pref's value has the two# following advantages over the normal API functions.## * A direct variable access is faster than a hash table lookup.## * A mirror variable can be accessed off the main thread. If a pref *is*# accessed off the main thread, it should have an atomic type. Assertions# enforce this.## Note that Rust code must access the mirror variable directly, rather than# via the getter function.## - `do_not_use_directly` indicates if `_DoNotUseDirectly` should be appended to# the name of the getter function. This is simply a naming convention# indicating that there is some other wrapper getter function that should be# used in preference to the normal static pref getter. Defaults to `false` if# not present. Cannot be used with a `never` mirror value, because there is# no getter function in that case.## - `include` names a header file that must be included for the pref value to# compile correctly, e.g. because it refers to a code constant. System# headers should be surrounded with angle brackets, e.g. `<cmath>`.## - `rust` indicates if the mirror variable is used by Rust code. If so, it# will be usable via the `static_prefs::pref!` macro, e.g.# `static_prefs::pref!("layout.css.cross-fade.enabled")`.## - `set_spidermonkey_pref` indicates whether SpiderMonkey boilerplate code# should be generated for this pref. If this is set to 'startup', the# pref on the SpiderMonkey side is only set during process startup. If set to# 'always', the SpiderMonkey pref value is also updated when this pref is# changed at runtime.# This option is only valid for javascript.options.* prefs.## The getter function's base name is the same as the pref's name, but with# '.' or '-' chars converted to '_', to make a valid identifier. For example,# the getter for `foo.bar_baz` is `foo_bar_baz()`. This is ugly but clear,# and you can search for both the pref name and the getter using the regexp# /foo.bar.baz/. Suffixes are added as follows:## - If the `mirror` value is `once`, `_AtStartup` is appended, to indicate the# value was obtained at startup.## - If the `do_not_use_directly` value is true, `_DoNotUseDirectly` is# appended.## Preprocessor# ------------# Note finally that this file is preprocessed by preprocessor.py, not the C++# preprocessor. As a result, the following things may be surprising.## - YAML comments start with a '#', so putting a comment on the same line as a# preprocessor directive is dubious. E.g. avoid lines like `#define X 3 ## three` because the ` # three` will be part of `X`.## - '@' use is required for substitutions to occur. E.g. with `#define FOO 1`,# `FOO` won't be replaced with `1` unless it has '@' chars around it.## - Spaces aren't permitted between the leading '#' and the name of a# directive, e.g. `#ifdef XYZ` works but `# ifdef XYZ` does not.## Please indent all prefs defined within #ifdef/#ifndef conditions. This# improves readability, particular for conditional blocks that exceed a single# screen. But note that the leading '-' in a definition must remain in the# first column for it to be valid YAML.#ifdef RELEASE_OR_BETA#define IS_NOT_RELEASE_OR_BETA false#else#define IS_NOT_RELEASE_OR_BETA true#endif#ifdef NIGHTLY_BUILD#define IS_NIGHTLY_BUILD true#define IS_NOT_NIGHTLY_BUILD false#else#define IS_NIGHTLY_BUILD false#define IS_NOT_NIGHTLY_BUILD true#endif#if defined(NIGHTLY_BUILD) || defined(MOZ_DEV_EDITION)#define IS_NIGHTLY_OR_DEV_EDITION true#else#define IS_NIGHTLY_OR_DEV_EDITION false#endif#ifdef MOZILLA_OFFICIAL#define IS_NOT_MOZILLA_OFFICIAL false#else#define IS_NOT_MOZILLA_OFFICIAL true#endif#ifdef EARLY_BETA_OR_EARLIER#define IS_EARLY_BETA_OR_EARLIER true#define IS_NOT_EARLY_BETA_OR_EARLIER false#else#define IS_EARLY_BETA_OR_EARLIER false#define IS_NOT_EARLY_BETA_OR_EARLIER true#endif#if defined(MOZ_DEV_EDITION) || defined(EARLY_BETA_OR_EARLIER)#define IS_DEV_EDITION_OR_EARLY_BETA_OR_EARLIER true#else#define IS_DEV_EDITION_OR_EARLY_BETA_OR_EARLIER false#endif#ifdef ANDROID#define IS_ANDROID true#define IS_NOT_ANDROID false#else#define IS_ANDROID false#define IS_NOT_ANDROID true#endif#ifdef XP_WIN#define IS_XP_WIN true#define IS_NOT_XP_WIN false#else#define IS_XP_WIN false#define IS_NOT_XP_WIN true#endif#ifdef XP_MACOSX#define IS_XP_MACOSX true#define IS_NOT_XP_MACOSX false#else#define IS_XP_MACOSX false#define IS_NOT_XP_MACOSX true#endif#ifdef XP_IOS#define IS_IOS true#define IS_NOT_IOS false#else#define IS_IOS false#define IS_NOT_IOS true#endif#if defined(ANDROID) || defined(XP_IOS)#define IS_MOBILE true#define IS_NOT_MOBILE false#else#define IS_MOBILE false#define IS_NOT_MOBILE true#endif#---------------------------------------------------------------------------# Prefs starting with "accessibility."#---------------------------------------------------------------------------# Tab focus model bit field:# 1 focuses text controls, 2 focuses other form elements, 4 adds links.# Most users will want 1, 3, or 7. On macOS we expose a checkbox to alter# between 7 and 3.-name:accessibility.tabfocustype:int32_tvalue:7mirror:always# Only on mac tabfocus is expected to handle UI widgets as well as web content.# FIXME(emilio): This is weird now that we have a lot of HTML in our pages.-name:accessibility.tabfocus_applies_to_xultype:boolvalue:@IS_XP_MACOSX@mirror:always-name:accessibility.accesskeycausesactivationtype:boolvalue:truemirror:always-name:accessibility.monoaudio.enabletype:RelaxedAtomicBoolvalue:falsemirror:always-name:accessibility.browsewithcarettype:RelaxedAtomicBoolvalue:falsemirror:always-name:accessibility.AOM.enabledtype:boolvalue:falsemirror:always-name:accessibility.ARIAElementReflection.enabledtype:boolvalue:truemirror:always# Whether to enable all accessibility cache domains on startup.# * false: enable domains as needed# * true: enable all domains regardless of need (cache everything)-name:accessibility.enable_all_cache_domainstype:boolvalue:falsemirror:once# Whether form controls and images should be focusable with mouse, in content# documents.## This matches historical macOS / Safari behavior.## * 0: never# * 1: always# * 2: on content documents-name:accessibility.mouse_focuses_formcontroltype:int32_t#ifdef XP_MACOSXvalue:2#elsevalue:1#endifmirror:always# Whether to enable support for the UI Automation API on Windows. Values:# * 0: Never.# * 1: Always.# * 2: Enable unless incompatible accessibility clients are detected.-name:accessibility.uia.enabletype:uint32_t#ifdef NIGHTLY_BUILDvalue:2#elsevalue:0#endifmirror:alwaysdo_not_use_directly:true# Whether to avoid accessibility activation on Windows shortly after clipboard# copy.## Possible values are:# * 0: never# * 1: always# * 2 (or others): when needed-name:accessibility.windows.suppress-after-clipboard-copytype:uint32_tvalue:2mirror:always# Whether to avoid accessibility activation on Windows shortly after max button# hit-test for the "snap layout" feature.## Possible values are:# * 0: never# * 1: always# * 2 (or others): when needed-name:accessibility.windows.suppress-for-snap-layouttype:uint32_tvalue:2mirror: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.useSystemBackendtype:boolvalue:truemirror:always#if defined(XP_WIN)# On Windows, a COM Surrogate notification server receives notification events# and can relaunch the application after it has been closed.-name:alerts.useSystemBackend.windows.notificationserver.enabledtype:boolvalue:truemirror:never#endif#ifdef ANDROID#---------------------------------------------------------------------------# Prefs starting with "android."#---------------------------------------------------------------------------# On Android, we want an opaque background to be visible under the page,# so layout should not force a default background.-name:android.widget_paints_backgroundtype:RelaxedAtomicBoolvalue:truemirror:always-name:android.touch_resampling.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always#endif#---------------------------------------------------------------------------# Prefs starting with "apz."# The apz prefs are explained in AsyncPanZoomController.cpp#---------------------------------------------------------------------------# amount we zoom in for a double tap gesture if we couldn't find any content# based rect to zoom to-name:apz.doubletapzoom.defaultzoomintype:AtomicFloatvalue:1.2fmirror:always-name:apz.scrollbarbuttonrepeat.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# After a user has executed a pan gesture, we may receive momentum phase pan# gestures from the OS. This specifies how long we should wait following the# pan end gesture for possible momentum phase pan gestures before sending the# TransformEnd notification.-name:apz.scrollend-event.content.delay_mstype:RelaxedAtomicInt32value:100mirror:always-name:apz.wr.activate_all_scroll_framestype:RelaxedAtomicBoolvalue:falsemirror:always-name:apz.wr.activate_all_scroll_frames_when_fissiontype:RelaxedAtomicBoolvalue:truemirror:always-name:apz.prefer_jank_minimal_displayportstype:RelaxedAtomicBoolvalue:truemirror:always-name:apz.allow_double_tap_zoomingtype:RelaxedAtomicBoolvalue:truemirror:always-name:apz.mac.enable_double_tap_zoom_touchpad_gesturetype:RelaxedAtomicBoolvalue:truemirror:always-name:apz.allow_immediate_handofftype:RelaxedAtomicBoolvalue:falsemirror:always-name:apz.allow_zoomingtype:RelaxedAtomicBoolvalue:truemirror:always-name:apz.max_zoomtype:AtomicFloatvalue:10.0fmirror:always-name:apz.min_zoomtype:AtomicFloatvalue:0.25fmirror:always-name:apz.allow_zooming_outtype:RelaxedAtomicBoolvalue:falsemirror:always-name:apz.android.chrome_fling_physics.frictiontype:AtomicFloatvalue:0.015fmirror:always-name:apz.android.chrome_fling_physics.inflexiontype:AtomicFloatvalue:0.35fmirror:always-name:apz.android.chrome_fling_physics.stop_thresholdtype:AtomicFloatvalue:0.1fmirror:always-name:apz.autoscroll.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:apz.axis_lock.breakout_angletype:AtomicFloatvalue:float(M_PI / 8.0)# 22.5 degreesmirror:alwaysinclude:<cmath>-name:apz.axis_lock.breakout_thresholdtype:AtomicFloatvalue:1.0f / 32.0fmirror:always-name:apz.axis_lock.direct_pan_angletype:AtomicFloatvalue:float(M_PI / 3.0)# 60 degreesmirror:alwaysinclude:<cmath>-name:apz.axis_lock.lock_angletype:AtomicFloatvalue:float(M_PI / 6.0)# 30 degreesmirror:alwaysinclude:<cmath># Whether to lock touch scrolling to one axis at a time. When a new# axis lock mode is added, the APZCAxisLockCompatTester GTest shoud# be updated to include the lock mode value.# 0 = FREE (No locking at all)# 1 = STANDARD (Once locked, remain locked until scrolling ends)# 2 = STICKY (Allow lock to be broken, with hysteresis)# 3 = DOMINANT_AXIS (Only allow movement on one axis at a time, only# applies to touchpad scrolling)-name:apz.axis_lock.modetype:RelaxedAtomicInt32#if defined(XP_MACOSX)value:3#elsevalue:2#endifmirror:always-name:apz.content_response_timeouttype:RelaxedAtomicInt32value:400mirror:always-name:apz.danger_zone_xtype:RelaxedAtomicInt32value:50mirror:always-name:apz.danger_zone_ytype:RelaxedAtomicInt32value:100mirror:always-name:apz.disable_for_scroll_linked_effectstype:RelaxedAtomicBoolvalue:falsemirror:always-name:apz.displayport_expiry_mstype:RelaxedAtomicUint32value:15000mirror:always-name:apz.drag.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:apz.drag.touch.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:apz.enlarge_displayport_when_clippedtype:RelaxedAtomicBoolvalue:@IS_ANDROID@mirror:always# Test only.-name:apz.fixed-margin-override.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Test only.-name:apz.fixed-margin-override.bottomtype:RelaxedAtomicInt32value:0mirror:always# Test only.-name:apz.fixed-margin-override.toptype:RelaxedAtomicInt32value:0mirror:always-name:apz.fling_accel_base_multtype:AtomicFloatvalue:1.0fmirror:always-name:apz.fling_accel_supplemental_multtype:AtomicFloatvalue:1.0fmirror:always-name:apz.fling_accel_min_fling_velocitytype:AtomicFloatvalue:1.5fmirror:always-name:apz.fling_accel_min_pan_velocitytype:AtomicFloatvalue:0.8fmirror:always-name:apz.fling_accel_max_pause_interval_mstype:RelaxedAtomicInt32value:50mirror:always-name:apz.fling_curve_function_x1type:floatvalue:0.0fmirror:once-name:apz.fling_curve_function_x2type:floatvalue:1.0fmirror:once-name:apz.fling_curve_function_y1type:floatvalue:0.0fmirror:once-name:apz.fling_curve_function_y2type:floatvalue:1.0fmirror:once-name:apz.fling_curve_threshold_inches_per_mstype:AtomicFloatvalue:-1.0fmirror:always-name:apz.fling_frictiontype:AtomicFloatvalue:0.002fmirror:always-name:apz.fling_min_velocity_thresholdtype:AtomicFloatvalue:0.5fmirror:always-name:apz.fling_stop_on_tap_thresholdtype:AtomicFloatvalue:0.05fmirror:always-name:apz.fling_stopped_thresholdtype:AtomicFloatvalue:0.01fmirror:always-name:apz.touch_acceleration_factor_xtype:floatvalue:1.0fmirror:always-name:apz.touch_acceleration_factor_ytype:floatvalue:1.0fmirror:always#ifdef MOZ_WIDGET_GTK-name:apz.gtk.kinetic_scroll.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:apz.gtk.pangesture.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Mode to use when receiving pan gesture input.## * 0: Auto mode (uses the default behavior, subject to change).# * 1: Page mode: Uses gtk deltas as a percentage of the page size to scroll. This mode matches:## https://gitlab.gnome.org/GNOME/gtk/blob/c734c7e9188b56f56c3a504abee05fa40c5475ac/gtk/gtkrange.c#L3063-3074## * 2: Pixel mode: Uses gtk deltas as a fixed pixel multiplier. This mode matches e.g. GNOME web.## https://webkit-search.igalia.com/webkit/rev/215039ef09d6bfd6e088175bfe30788d95b9705d/Source/WebKit/Shared/gtk/WebEventFactory.cpp#265-296# (multiplied then by pixelsPerLineStep which in GNOME-web is 40).-name:apz.gtk.pangesture.delta_modetype:uint32_tvalue:0mirror:always-name:apz.gtk.pangesture.page_delta_mode_multipliertype:floatvalue:1.0fmirror:always-name:apz.gtk.pangesture.pixel_delta_mode_multipliertype:floatvalue:40.0fmirror:always-name:apz.gtk.touchpad_pinch.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:apz.gtk.touchpad_pinch.three_fingers.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always-name:apz.gtk.touchpad_hold.enabledtype:RelaxedAtomicBoolvalue:truemirror:always#endif-name:apz.keyboard.enabledtype:boolvalue:@IS_NOT_MOBILE@mirror:once-name:apz.keyboard.passive-listenerstype:RelaxedAtomicBoolvalue:@IS_NOT_MOBILE@mirror:always-name:apz.keyboard.focus-optimizationtype:boolvalue:falsemirror:always-name:apz.max_tap_timetype:RelaxedAtomicInt32value:300mirror:always-name:apz.max_velocity_inches_per_mstype:AtomicFloatvalue:-1.0fmirror:always-name:apz.max_velocity_queue_sizetype:uint32_tvalue:5mirror:once-name:apz.min_skate_speedtype:AtomicFloatvalue:1.0fmirror:always-name:apz.minimap.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always-name:apz.mousemove_hittest_optimization.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:apz.one_touch_pinch.enabledtype:RelaxedAtomicBoolvalue:@IS_ANDROID@mirror:always-name:apz.overscroll.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# The "test async scroll offset" (used via reftest-async-scroll# or nsIDOMWindowUtils.setAsyncScrollOffset()) can be used to# trigger overscroll. Used for tests only.-name:apz.overscroll.test_async_scroll_offset.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always-name:apz.overscroll.min_pan_distance_ratiotype:AtomicFloatvalue:1.0fmirror:always-name:apz.overscroll.stop_distance_thresholdtype:AtomicFloatvalue:5.0fmirror:always-name:apz.overscroll.spring_stiffnesstype:AtomicFloatvalue:200mirror:always-name:apz.overscroll.dampingtype:AtomicFloatvalue:1.1mirror:always-name:apz.overscroll.max_velocitytype:AtomicFloatvalue:10mirror:always-name:apz.paint_skipping.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Fetch displayport updates early from the message queue.-name:apz.pinch_lock.modetype:RelaxedAtomicInt32value:2mirror:always-name:apz.pinch_lock.scroll_lock_thresholdtype:AtomicFloatvalue:1.0f / 16.0f# 1/16 inchesmirror:always-name:apz.pinch_lock.span_breakout_thresholdtype:AtomicFloatvalue:1.0f / 32.0f# 1/32 inchesmirror:always-name:apz.pinch_lock.span_lock_thresholdtype:AtomicFloatvalue:1.0f / 32.0f# 1/32 inchesmirror:always-name:apz.pinch_lock.buffer_max_agetype:int32_tvalue:80# millisecondsmirror:once-name:apz.popups.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:apz.popups_without_remote.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Whether to print the APZC tree for debugging.-name:apz.printtreetype:RelaxedAtomicBoolvalue:falsemirror:always-name:apz.record_checkerboardingtype:RelaxedAtomicBoolvalue:@IS_NIGHTLY_BUILD@mirror:always-name:apz.second_tap_tolerancetype:AtomicFloatvalue:0.5fmirror:always# If this is true, APZ fully recalculates the scroll thumb size and# position in the compositor. This leads to the size and position# being more accurate in scenarios such as async zooming.-name:apz.scrollthumb.recalctype:RelaxedAtomicBoolvalue:truemirror:always-name:apz.test.fails_with_native_injectiontype:RelaxedAtomicBoolvalue:falsemirror:always-name:apz.test.logging_enabledtype:RelaxedAtomicBoolvalue:falsemirror:always-name:apz.touch_move_tolerancetype:AtomicFloatvalue:0.1fmirror:always-name:apz.touch_scroll.buffer_max_agetype:int32_tvalue:200# millisecondsmirror:once-name:apz.touch_start_tolerancetype:AtomicFloatvalue:0.1fmirror:always-name:apz.velocity_biastype:AtomicFloatvalue:0.0fmirror:always-name:apz.velocity_relevance_time_mstype:RelaxedAtomicUint32value:100mirror:always-name:apz.windows.force_disable_direct_manipulationtype:RelaxedAtomicBoolvalue:falsemirror:always-name:apz.windows.use_direct_manipulationtype:RelaxedAtomicBoolvalue:truemirror:always-name:apz.windows.check_for_pan_gesture_conversiontype:RelaxedAtomicBoolvalue:truemirror:always-name:apz.x_skate_highmem_adjusttype:AtomicFloatvalue:0.0fmirror:always-name:apz.x_skate_size_multipliertype:AtomicFloatvalue:1.25fmirror:always-name:apz.x_stationary_size_multipliertype:AtomicFloatvalue:1.5fmirror:always-name:apz.y_skate_highmem_adjusttype:AtomicFloatvalue:0.0fmirror:always-name:apz.y_skate_size_multipliertype:AtomicFloat#if defined(MOZ_WIDGET_ANDROID)value:1.5f#elsevalue:3.5f#endifmirror:always-name:apz.y_stationary_size_multipliertype:AtomicFloat#if defined(MOZ_WIDGET_ANDROID)value:1.5f#elsevalue:3.5f#endifmirror:always-name:apz.zoom_animation_duration_mstype:RelaxedAtomicInt32#if defined(MOZ_WIDGET_ANDROID)value:250#elsevalue:350#endifmirror:always-name:apz.scale_repaint_delay_mstype:RelaxedAtomicInt32value:500mirror:always# Whether to use rounded external scroll offsets.-name:apz.rounded_external_scroll_offsettype:boolvalue:falsemirror:always#---------------------------------------------------------------------------# Prefs starting with "beacon."#---------------------------------------------------------------------------# Is support for Navigator.sendBeacon enabled?-name:beacon.enabledtype:boolvalue:truemirror: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_immediatelytype:boolvalue:truemirror:always# Bidi caret movement style:# 0 = logical# 1 = visual# 2 = visual, but logical during selection-name:bidi.edit.caret_movement_styletype:int32_t#if !defined(XP_LINUX) && defined(NIGHTLY_BUILD)value:1#elsevalue:2# See Bug 1638240#endifmirror:always# Bidi numeral style:# 0 = nominalnumeralBidi *# 1 = regularcontextnumeralBidi# 2 = hindicontextnumeralBidi# 3 = arabicnumeralBidi# 4 = hindinumeralBidi# 5 = persiancontextnumeralBidi# 6 = persiannumeralBidi-name:bidi.numeraltype:RelaxedAtomicUint32value:0mirror:always# Bidi text type# 1 = charsettexttypeBidi *# 2 = logicaltexttypeBidi# 3 = visualtexttypeBidi-name:bidi.texttypetype:RelaxedAtomicUint32value:1mirror:always# Bidi direction# 1 = directionLTRBidi *# 2 = directionRTLBidi-name:bidi.directiontype:RelaxedAtomicUint32value:1mirror:always# Setting this pref to |true| forces Bidi UI menu items and keyboard shortcuts# to be exposed, and enables the directional caret hook. By default, only# expose it for bidi-associated system locales.-name:bidi.browser.uitype:boolvalue:falsemirror:always#---------------------------------------------------------------------------# Prefs starting with "browser."#----------------------------------------------------------------------------name:browser.active_colortype:Stringvalue:"#EE0000"mirror:never-name:browser.active_color.darktype:Stringvalue:"#FF6666"mirror:never-name:browser.anchor_colortype:Stringvalue:"#0000EE"mirror:never# If you change this, you probably also want to change# nsXPLookAndFeel::GenericDarkColor for Linktext.-name:browser.anchor_color.darktype:Stringvalue:"#8C8CFF"mirror:never# See http://dev.w3.org/html5/spec/forms.html#attr-fe-autofocus-name:browser.autofocustype:boolvalue:truemirror:always-name:browser.cache.disk.enabletype:RelaxedAtomicBoolvalue:truemirror:always-name:browser.cache.memory.enabletype:RelaxedAtomicBoolvalue:truemirror:always# Limit of recent metadata we keep in memory for faster access, in KB.-name:browser.cache.disk.metadata_memory_limittype:RelaxedAtomicUint32value:1024# 1 MBmirror:always# Does the user want smart-sizing?-name:browser.cache.disk.smart_size.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Disk cache capacity in kilobytes. It's used only when# browser.cache.disk.smart_size.enabled == false-name:browser.cache.disk.capacitytype:RelaxedAtomicUint32value:256000mirror:always# -1 = determine dynamically, 0 = none, n = memory capacity in kilobytes.-name:browser.cache.memory.capacitytype:RelaxedAtomicInt32value:-1mirror: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_limittype:RelaxedAtomicUint32value:5 * 1024# 5MBmirror:always-name:browser.cache.disk.free_space_hard_limittype:RelaxedAtomicUint32value:1024# 1MBmirror:always# The number of chunks we preload ahead of read. One chunk currently has# 256kB.-name:browser.cache.disk.preload_chunk_counttype:RelaxedAtomicUint32value:4# 1 MB of read aheadmirror: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_sizetype:RelaxedAtomicUint32value:50 * 1024# 50 MBmirror: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_sizetype:RelaxedAtomicInt32value:5 * 1024mirror: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_usagetype:RelaxedAtomicUint32value:40 * 1024mirror:always-name:browser.cache.disk.max_priority_chunks_memory_usagetype:RelaxedAtomicUint32value:40 * 1024mirror: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_lagtype:RelaxedAtomicUint32value:2mirror:always# After the max_shutdown_io_lag has passed, we will attempt to cancel# blocking IO (on windows). The CacheIOThread may pick up more blocking# tasks so we want to cancel those too. The main thread will be woken# up every shutdown_io_time_between_cancellations_ms to cancel the IO# on the other thread.-name:browser.cache.shutdown_io_time_between_cancellations_mstype:RelaxedAtomicUint32value:5mirror: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_limittype:RelaxedAtomicInt32value:50mirror: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_frequencytype:RelaxedAtomicUint32value:3mirror:always# Compression level for cached JavaScript bytecode# 0 = do not compress,# 1 = minimal compression,# 9 = maximal compression-name:browser.cache.jsbc_compression_leveltype:RelaxedAtomicUint32value:0mirror:always# Whether tooltips are enabled.-name:browser.chrome.toolbar_tipstype:boolvalue:truemirror:always# Whether tooltips are hidden on keydown.# 0: never# 1: always# 2: only on non-modifier keys-name:browser.chrome.toolbar_tips.hide_on_keydowntype:uint32_t#if defined(XP_WIN)value:0#elsevalue:2#endifmirror:always# DLP agent name, for display in the browser-name:browser.contentanalysis.agent_nametype:Stringvalue:"ADLPagent"mirror:never# (optional) The organization name that the DLP agent should have. If this is# non-empty and the DLP agent is not signed with this organization name,# Firefox will fail the connection.-name:browser.contentanalysis.client_signaturetype:Stringvalue:""mirror:never# Content analysis by external applications, e.g. data-loss prevention apps-name:browser.contentanalysis.enabledtype:boolvalue:falsemirror:always# What content analysis should return if there is a problem communicating# with the agent. (see DefaultResponse enum in ContentAnalysis.h)# Make sure these stay in sync with the out-of-range check in Policies.sys.mjs.## 0: Block all requests# 1: Warn on all requests (which lets the user decide)# 2: Allow all requests-name:browser.contentanalysis.default_resulttype:uint32_tvalue:0mirror:always# What content analysis should return if the agent takes too long to respond# to a request. (see DefaultResponse enum in ContentAnalysis.h)# Make sure these stay in sync with the out-of-range check in Policies.sys.mjs.## 0: Block all requests# 1: Warn on all requests (which lets the user decide)# 2: Allow all requests-name:browser.contentanalysis.timeout_resulttype:uint32_tvalue:0mirror:always# Is the IPC pipe to the DLP tool specific to the user or to the system?-name:browser.contentanalysis.is_per_usertype:boolvalue:truemirror:always# Path name of pipe used to connect to a configured DLP agent.-name:browser.contentanalysis.pipe_path_nametype:Stringvalue:"path_user"mirror:never# Space-separated list of regexs that are compared to URLs of resources# being checked by content-analysis. Resources that match are not checked# and are always permitted.# By default this does not check any about: page except for about:blank# and about:srcdoc.-name:browser.contentanalysis.allow_url_regex_listtype:Stringvalue:"^about:(?!blank|srcdoc).*"mirror:never# Space-separated list of regexs that are compared to URLs of resources# being checked by content-analysis. Resources that match are not checked# and are always denied.-name:browser.contentanalysis.deny_url_regex_listtype:Stringvalue:""mirror:never# Should CA ignore the system setting and use silent notifications?-name:browser.contentanalysis.silent_notificationstype:boolvalue:falsemirror:always# Time (secs) after which content analysis operations are considered timed-out# A non-positive value indicates a timeout of 25ms, which is used for testing.-name:browser.contentanalysis.agent_timeouttype:int32_tvalue:300mirror:always# Should Firefox show a notification or dialog when content analysis blocks# access?-name:browser.contentanalysis.show_blocked_resulttype:boolvalue:truemirror:always# Should Firefox bypass content analysis for pastes and drags whose source# is the same tab?-name:browser.contentanalysis.bypass_for_same_tab_operationstype:boolvalue:falsemirror:always# Max number of concurrent connections to the DLP agent. For stability# reasons, values exceeding 256 will be ignored.-name:browser.contentanalysis.max_connectionstype:uint32_tvalue:32mirror:always# Should Firefox use content analysis for clipboard operations?# Note that this has no effect unless browser.contentanalysis.enabled# is true.-name:browser.contentanalysis.interception_point.clipboard.enabledtype:boolvalue:truemirror:always# Should Firefox only analyze plain text contents of the clipboard?# If this is false, all formats on the clipboard will be analyzed.# Note that regardless of this setting, files on the clipboard# will be analyzed.-name:browser.contentanalysis.interception_point.clipboard.plain_text_onlytype:boolvalue:truemirror:always# Should Firefox use content analysis for download operations?# Note that this has no effect unless browser.contentanalysis.enabled# is true.# This defaults to false so as to not break existing content analysis# configurations.-name:browser.contentanalysis.interception_point.download.enabledtype:boolvalue:falsemirror:always# Should Firefox use content analysis for drag and drop operations?# Note that this has no effect unless browser.contentanalysis.enabled# is true.-name:browser.contentanalysis.interception_point.drag_and_drop.enabledtype:boolvalue:truemirror:always# Should Firefox only analyze plain text contents for drag and drop# operations?# If this is false, all formats that are part of the drag and drop# operation will be analyzed.# Note that regardless of this setting, files that are dragged and dropped# will be analyzed.-name:browser.contentanalysis.interception_point.drag_and_drop.plain_text_onlytype:boolvalue:truemirror:always# Should Firefox use content analysis for file upload operations through# a file dialog?# Note that this has no effect unless browser.contentanalysis.enabled# is true.-name:browser.contentanalysis.interception_point.file_upload.enabledtype:boolvalue:truemirror:always# Should Firefox use content analysis for print operations?# Note that this has no effect unless browser.contentanalysis.enabled# is true.-name:browser.contentanalysis.interception_point.print.enabledtype:boolvalue:truemirror:always# Content blocking for Enhanced Tracking Protection-name:browser.contentblocking.database.enabledtype:boolvalue:falsemirror: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.lengthtype:uint32_tvalue:32mirror:always# Whether memorytesting is enabled when crash reporter client is launched-name:browser.crashReporter.memtesttype:RelaxedAtomicBoolvalue:truemirror:always# Space-separated list of prioritized memory test kinds-name:browser.crashReporter.memtestKindstype:DataMutexStringvalue:""mirror:always# Control whether we enable the feature of crash pull at all# Disabled by default for now until further notice-name:browser.crashReports.crashPulltype:boolvalue:falsemirror:always# Should we prompt the user to send targetted crash report requested by devs?-name:browser.crashReports.requestedNeverShowAgaintype:boolvalue:falsemirror:always# Do not show crash pull prompt before this unix epoch time to avoid spamming user-name:browser.crashReports.dontShowBeforetype:uint32_tvalue:0mirror:always# Min font device pixel size at which to turn on high quality.-name:browser.display.auto_quality_min_font_sizetype:RelaxedAtomicUint32value:20mirror:always-name:browser.display.background_colortype:Stringvalue:"#FFFFFF"mirror:never-name:browser.display.background_color.darktype:Stringvalue:"#1C1B22"mirror:never# This preference is a bit confusing because we use the opposite# string value in the colors dialog to indicate to users how FF HCM# will behave.# With resect to document colors, these values mean:# 0 = "default" = always, except in high contrast mode# 1 = "always"# 2 = "never"## On windows, we set this to 0, which means FF HCM will mirror OS HCM.# Everywhere else, we set this to 1, disabling FF HCM.-name:browser.display.document_color_usetype:RelaxedAtomicUint32#if defined(XP_WIN)value:0#elsevalue:1#endifmirror:alwaysrust:true# 0 = always native# 1 = never native# other = default-name:browser.display.windows.non_native_menustype:RelaxedAtomicUint32value:2mirror:alwaysrust: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_backplatetype:RelaxedAtomicBoolvalue:truemirror:alwaysrust: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_colorstype:boolvalue:truemirror:always-name:browser.display.foreground_colortype:Stringvalue:"#000000"mirror:never-name:browser.display.foreground_color.darktype:Stringvalue:"#FBFBFE"mirror:never# Determines the behavior of OS zoom settings.## 0: doesn't affect rendering at all# 1: affects full zoom (dpi, effectively).# 2: affects text zoom.## Default is (1): Historical behavior on Linux, matches other browsers on# Windows, and generally creates more consistent rendering.-name:browser.display.os-zoom-behaviortype:RelaxedAtomicInt32value:1mirror:alwaysrust:true# Whether focus rings are always shown by default.## This is the initial value of nsWindowRoot::mShowFocusRings, but it can be# overridden by system preferences.-name:browser.display.show_focus_ringstype:boolvalue:falsemirror:always# Enable showing image placeholders while image is loading or when image is broken.-name:browser.display.show_image_placeholderstype:boolvalue:truemirror: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_focustype:boolvalue:falsemirror:always# In theory: 0 = never, 1 = quick, 2 = always, though we always just use it as# a bool!-name:browser.display.use_document_fontstype:RelaxedAtomicInt32value:1mirror:alwaysrust:true# font-family names for which we'll override use_document_fonts=0, and always# use the specified font.# This is to support ligature-icon fonts, which render literal strings like# "arrow_drop_down" with an icon, even when use_document_fonts is disabled.# If an author provides & uses such a font, and we decline to use it, we'll end# up rendering these literal strings where the author intended an icon, which# can cause all sorts of overlapping/unreadable content.-name:browser.display.use_document_fonts.icon_font_allowlisttype:Stringvalue:>-Material Icons,Material Icons Extended,Material Icons Outlined,Material Icons Round,Material Icons Sharp,Material Icons Two Tone,Google Material Icons,Google Material Icons Filled,Material Symbols Outlined,Material Symbols Round,Material Symbols Rounded,Material Symbols Sharp,Google Symbols,FontAwesomemirror:never-name:browser.display.use_system_colorstype:RelaxedAtomicBool#ifdef XP_WINvalue:true#elsevalue:false#endifmirror:always-name:browser.dom.window.dump.enabledtype:RelaxedAtomicBoolvalue:@IS_NOT_MOZILLA_OFFICIAL@mirror:always# See bug 1738574-name:browser.download.start_downloads_in_tmp_dirtype:boolvalue:falsemirror:always# See bug 1747343-name:browser.download.always_ask_before_handling_new_typestype:boolvalue:falsemirror:always# See bug 1790641-name:browser.download.enableDeletePrivatetype:boolvalue:falsemirror:always-name:browser.download.deletePrivatetype:boolvalue:falsemirror:always-name:browser.download.deletePrivateChosentype:boolvalue:falsemirror:always# See bug 1731668-name:browser.download.enable_spam_preventiontype:boolvalue:falsemirror:always# See bug 1772569-name:browser.download.open_pdf_attachments_inlinetype:boolvalue:falsemirror:always# See bug 1811830-name:browser.download.force_save_internally_handled_attachmentstype:boolvalue:falsemirror:always-name:browser.download.sanitize_non_media_extensionstype:boolvalue:truemirror:always# Image document's automatic image sizing.-name:browser.enable_automatic_image_resizingtype:boolvalue:truemirror:always# Image document's click-to-resize.-name:browser.enable_click_image_resizingtype:boolvalue:@IS_NOT_MOBILE@mirror:always-name:browser.find.ignore_ruby_annotationstype:boolvalue:truemirror:always#if defined(XP_MACOSX)# Whether pressing Esc will exit fullscreen.-name:browser.fullscreen.exit_on_escapetype:boolvalue:truemirror:always#endif# The max url length we'll store in history.## The default value is mostly a guess based on various facts:## * IE didn't support urls longer than 2083 chars# * Sitemaps protocol used to support a maximum of 2048 chars# * Various SEO guides suggest to not go over 2000 chars# * Various apps/services are known to have issues over 2000 chars# * RFC 2616 - HTTP/1.1 suggests being cautious about depending# on URI lengths above 255 bytes#-name:browser.history.maxUrlLengthtype:uint32_tvalue:2000mirror:always# Max size of push/replaceState data parameter-name:browser.history.maxStateObjectSizetype:int32_tvalue:16777216mirror:always# True to collect wireframes upon navigations / pushState-name:browser.history.collectWireframestype:boolvalue:falsemirror:always# If false, show internal error page for HTTP responses with error# codes (4xx, 5xx) and "Content-Length": 0 instead of blank page# See https://bugzilla.mozilla.org/show_bug.cgi?id=1325876#c32 for why this# is disabled on Android.-name:browser.http.blank_page_with_error_response.enabledtype:bool#if !defined(ANDROID)value:false#elsevalue:true#endifmirror:always# The minimum area for a rect to be included in a wireframe, in CSS pixels.## The current value of 50 is pretty arbitrary, and will be tuned as we refine# and test the wireframing capability.-name:browser.history.wireframeAreaThresholdtype:uint32_tvalue:50mirror:always#if defined(XP_WIN) || defined(XP_LINUX)# Notify TabUnloader or send the memory pressure if the memory resource# notification is signaled AND the available commit space is lower than# this value.-name:browser.low_commit_space_threshold_mbtype:RelaxedAtomicUint32value:200mirror:always#endif#ifdef XP_LINUX# On Linux we also check available memory in comparison to total memory,# and use this percent value (out of 100) to determine if we are in a# low memory scenario.-name:browser.low_commit_space_threshold_percenttype:RelaxedAtomicUint32value:5mirror:always#endif# Render animations and videos as a solid color-name:browser.measurement.render_anims_and_video_solidtype:RelaxedAtomicBoolvalue:falsemirror:always-name:browser.navigation.requireUserInteractiontype:boolvalue:truemirror:always# Indicates if about:newtab shows content (enabled) or just blank.-name:browser.newtabpage.enabledtype:boolvalue:truemirror:always# Open PDFs in Edge with the --app flag if it is the default.-name:browser.pdf.launchDefaultEdgeAsApptype:boolvalue:truemirror:always# Maximium delay between keystrokes that will be considered typing (milliseconds).-name:browser.places.interactions.typing_timeout_mstype:RelaxedAtomicUint32value:3000mirror:always# Maximum delay between scroll input events that will be considered a scrolling interaction (milliseconds).-name:browser.places.interactions.scrolling_timeout_mstype:RelaxedAtomicUint32value:5000mirror:always# Number of seconds till the sponsored session is timeout.-name:browser.places.sponsoredSession.timeoutSecstype:RelaxedAtomicUint32value:3600mirror:always# Whether to start the private browsing mode at application startup-name:browser.privatebrowsing.autostarttype:boolvalue:falsemirror:always# Force usage of in-memory (rather than file on disk) media cache for video streaming when private browsing-name:browser.privatebrowsing.forceMediaMemoryCachetype:boolvalue:falsemirror:always# Disable state restoration, allowing the kiosk desktop environment to manage state and position.-name:browser.restoreWindowState.disabledtype:boolvalue:falsemirror:always# Communicates the toolbar color to platform (for e.g., prefers-color-scheme).## Returns whether the toolbar is dark (0), light (1), or system (2). The# theming code overrides it if appropriate.-name:browser.theme.toolbar-themetype:RelaxedAtomicUint32value:2mirror:always# Communicates the preferred content theme color to platform (for e.g.,# prefers-color-scheme).## dark (0), light (1), system (2), or toolbar (3).## Default to "toolbar", the theming code sets it appropriately.-name:browser.theme.content-themetype:RelaxedAtomicUint32value:2mirror:alwaysrust:true# Whether the firefox titlebar respects the# -moz-windows-accent-color-in-titlebar setting on the tab strip.-name:browser.theme.windows.accent-color-in-tabs.enabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Blocked plugin content-name:browser.safebrowsing.blockedURIs.enabledtype:boolvalue:truemirror:always# Malware protection-name:browser.safebrowsing.malware.enabledtype:boolvalue:truemirror:always# Phishing protection-name:browser.safebrowsing.phishing.enabledtype:boolvalue:truemirror:always# Maximum size for an array to store the safebrowsing prefixset.-name:browser.safebrowsing.prefixset_max_array_sizetype:RelaxedAtomicUint32value:512*1024mirror:always# Whether to only classify top-level channels for safe browsing.-name:browser.safebrowsing.only_top_leveltype:boolvalue:truemirror:always# SessionStore prefs# Maximum number of bytes of DOMSessionStorage data we collect per origin.-name:browser.sessionstore.dom_storage_limittype:uint32_tvalue:2048mirror:always# Maximum number of characters of form field data per field we collect.-name:browser.sessionstore.dom_form_limittype:uint32_tvalue:1024*1024*2mirror:always# Maximum number of characters of form data we collect per origin.-name:browser.sessionstore.dom_form_max_limittype:uint32_tvalue:1024*1024*50mirror:always# Minimal interval between two save operations in milliseconds (while the user is active).-name:browser.sessionstore.intervaltype:RelaxedAtomicUint32value:15000mirror:always# Disable collection of data for session store using the native collector code,# instead use the older implementation that's not compatible with session# history in the parent (and thus Fission).-name:browser.sessionstore.disable_platform_collectiontype:bool#if defined(MOZ_THUNDERBIRD)value:true#elsevalue:false#endifmirror:oncedo_not_use_directly:true#if defined(NIGHTLY_BUILD) || defined(MOZ_DEV_EDITION) || defined(DEBUG)-name:browser.startup.recordtype:boolvalue:falsemirror:always#endif# Causes SessionStore to ignore non-final update messages from# browser tabs that were not caused by a flush from the parent.# This is a testing flag and should not be used by end-users.-name:browser.sessionstore.debug.no_auto_updatestype:RelaxedAtomicBoolvalue:falsemirror:always# If set, when a link is opened to a new tab, do not switch to the new tab.## This pref is used when the link is opened with "Open Link in New Tab",# middle-click, etc.## See also browser.tabs.loadDivertedInBackground, which is used when the website# diverts the link into a new tab.-name:browser.tabs.loadInBackgroundtype:boolvalue:truemirror:always# Whether we should draw the tabs on top of the titlebar.## no (0), yes (1), or default (2), which is true everywhere except Linux.-name:browser.tabs.inTitlebartype:int32_tvalue:2mirror:always# If set, use DocumentChannel to directly initiate loads entirely# from parent-process BrowsingContexts-name:browser.tabs.documentchannel.parent-controlledtype:boolvalue:falsemirror:always# If set, middle clicking on a link opens the link in a new tab.-name:browser.tabs.opentabfor.middleclicktype:boolvalue:truemirror:always# Testing-only pref which makes data: URIs be loaded in a "web" content process# instead of within a process based on the URI's loader.-name:browser.tabs.remote.dataUriInDefaultWebProcesstype:boolvalue:falsemirror:always# Testing-only pref to force system-triggered about:blank loads to not change# content processes. This is used for performance tests which load an# about:blank document between navigations for historical reasons to avoid# unnecessary process switches.-name:browser.tabs.remote.systemTriggeredAboutBlankAnywheretype:boolvalue:falsemirror:always# Testing-only pref to cause PBrowser creation for a specific BrowsingContext to# fail, to test the errored codepath.-name:browser.tabs.remote.testOnly.failPBrowserCreation.enabledtype:boolvalue:falsemirror:always-name:browser.tabs.remote.force-painttype:boolvalue:truemirror:always# When this pref is enabled document loads with a mismatched# Cross-Origin-Embedder-Policy header will fail to load-name:browser.tabs.remote.useCrossOriginEmbedderPolicytype:RelaxedAtomicBoolvalue:truemirror:always# This pref makes `credentialless` a valid value for# Cross-Origin-Embedder-Policy header-name:browser.tabs.remote.coep.credentiallesstype:RelaxedAtomicBool#if defined(ANDROID)value:@IS_NIGHTLY_BUILD@#elsevalue:true#endifmirror:alwaysdo_not_use_directly:true# When this pref is enabled top level loads with a mismatched# Cross-Origin-Opener-Policy header will be loaded in a separate process.-name:browser.tabs.remote.useCrossOriginOpenerPolicytype:RelaxedAtomicBoolvalue:truemirror:always# When this pref is enabled then we use a separate content process for# top-level load of file:// URIs-name:browser.tabs.remote.separateFileUriProcesstype:RelaxedAtomicBool#if !defined(ANDROID)value:true#elsevalue:false#endifmirror:always# Pref to control whether we use a separate privileged content process# for certain mozilla webpages (which are listed in the pref# browser.tabs.remote.separatedMozillaDomains).-name:browser.tabs.remote.separatePrivilegedMozillaWebContentProcesstype:boolvalue:falsemirror:always# Whether or not process selection for subframes will prefer re-using an# existing content process over creating a new one. Enabling this pref should# reduce the number of processes allocated for non-first-party domains if# dom.ipc.processCount.webIsolated > 1.-name:browser.tabs.remote.subframesPreferUsedtype:boolvalue:truemirror:always# When this pref is enabled, opaque response is only allowed to enter the# content process if it's a response for media (audio, image, video), CSS, or# JavaScript.-name:browser.opaqueResponseBlockingtype:RelaxedAtomicBool#if defined(ANDROID)value:false#elsevalue:true#endifmirror:always# When this pref is enabled, the JS validator will be enabled for# ORB.-name:browser.opaqueResponseBlocking.javascriptValidatortype:boolvalue:truemirror:always# This pref controls how filtering of opaque responses for calls to `Window.fetch`.# (and similar) is performed in the parent process. This is intended to make sure# that data that would be filtered in a content process never actually reaches that# content process.# See https://fetch.spec.whatwg.org/#concept-filtered-response-opaque# 0) Don't filter in the parent process at all, and let content processes handle# opaque filtering. Regardless of if ORB is enabled or not. N.B. that if ORB# is enabled opaque responses will be blocked.# 1) If ORB is enabled, in the parent process, filter the responses that ORB allows.# N.B. any responses ORB doesn't allow will not send data to a content process# since they will return a NetworkError. If the request is allowed by ORB, the# internal response will be intact and sent to the content process as is.# 2) If ORB is enabled, in the parent process, filter the responses that ORB blocks,# when they were issued by `Window.fetch` (and similar).# 3) Filter all responses in the parent, regardless of if ORB is enabled or not.# This means that opaque responses coming from `Window.fetch` won't even be# considered for being blocked by ORB.-name:browser.opaqueResponseBlocking.filterFetchResponsetype:uint32_tvalue:2mirror:alwaysdo_not_use_directly:true# This pref controls how exceptions to opaque response blocking for the media MIME types# `audio/*` and `video/*` are handled. This is because step 8 in the spec that performs# audio or video type pattern matching cannot handle certain MIME types (yet).# See https://whatpr.org/fetch/1442.html#orb-algorithm# 0) No exceptions# 1) Some exceptions, explicitly hard coded in `IsOpaqueSafeListedSpecBreakingMIMEType`# 2) Allow all MIME types beginning with `audio/*` or `video/*`.-name:browser.opaqueResponseBlocking.mediaExceptionsStrategytype:uint32_tvalue:1mirror:alwaysdo_not_use_directly:true# When true, zooming will be enabled on all sites, even ones that declare# user-scalable=no or use touch-action to disable pinch gestures.-name:browser.ui.zoom.force-user-scalabletype:RelaxedAtomicBoolvalue:falsemirror:always-name:browser.viewport.desktopWidthtype:RelaxedAtomicInt32value:980mirror:always-name:browser.visited_colortype:Stringvalue:"#551A8B"mirror:never# If you change this, you probably also want to change# nsXPLookAndFeel::GenericDarkColor for Visitedtext.-name:browser.visited_color.darktype:Stringvalue:"#FFADFF"mirror:never# When true, soft reloads (including location.reload())# will only froce validate the top level document, subresources will# be loaded normally as-if users normally navigated to the page.-name:browser.soft_reload.only_force_validate_top_level_documenttype:boolvalue:truemirror:always# Whether or not to save and restore zoom levels on a per-site basis.-name:browser.zoom.siteSpecifictype:boolvalue:@IS_NOT_ANDROID@mirror:always# Whether we block opening pickers from background tabs.-name:browser.disable_pickers_background_tabstype:RelaxedAtomicBoolvalue:truemirror:always# Whether we block opening pickers from hidden extension pages in WebExtensions.# This includes background pages and devtools pages, but not background tabs.-name:browser.disable_pickers_in_hidden_extension_pagestype:RelaxedAtomicBoolvalue:@IS_NIGHTLY_BUILD@mirror:always#---------------------------------------------------------------------------# Prefs starting with "channelclassifier."#----------------------------------------------------------------------------name:channelclassifier.allowlist_exampletype:boolvalue:falsemirror:always#---------------------------------------------------------------------------# Prefs starting with "clipboard."#---------------------------------------------------------------------------# Clipboard behavior.-name:clipboard.autocopytype:bool#if !defined(ANDROID) && !defined(XP_MACOSX) && defined(XP_UNIX)value:true#elsevalue:false#endifmirror:always#ifdef XP_WIN# allow to copy clipboard data to Clipboard History/Cloud# (used on sensitive data in about:logins and Private Browsing)-name:clipboard.copyPrivateDataToClipboardCloudOrHistorytype:boolvalue:falsemirror:always# Whether to put a file promise onto the clipboard when copying images on Windows-name:clipboard.imageAsFile.enabledtype:boolvalue:@IS_NOT_EARLY_BETA_OR_EARLIER@mirror:always# On Windows, whether to add PNG before BMP (CF_DIB) in the list of supported# formats when copying an image to the clipboard.-name:clipboard.copy_image.as_pngtype:RelaxedAtomicBoolvalue:truemirror:always# On Windows, whether we encode an image as PNG (instead of the previous# default of BMP) when an application to which we are copying an image# requests that it be provided as a temporary file (CF_HDROP).-name:clipboard.copy_image_file.as_pngtype:RelaxedAtomicBoolvalue:truemirror:always#endif#---------------------------------------------------------------------------# Prefs starting with "consoleservice."#---------------------------------------------------------------------------#if defined(ANDROID)# Disable sending console to logcat on release builds.-name:consoleservice.logcattype:RelaxedAtomicBoolvalue:@IS_NOT_RELEASE_OR_BETA@mirror:always#endif#---------------------------------------------------------------------------# Prefs starting with "content."#----------------------------------------------------------------------------name:content.cors.disabletype:boolvalue:falsemirror:always# Back off timer notification after count.# -1 means never.-name:content.notify.backoffcounttype:int32_tvalue:-1mirror: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.intervaltype:int32_tvalue:120000mirror:always# Do we notify based on time?-name:content.notify.ontimertype:boolvalue:truemirror:always# How many times to deflect in interactive mode.-name:content.sink.interactive_deflect_counttype:int32_tvalue:0mirror:always# How many times to deflect in perf mode.-name:content.sink.perf_deflect_counttype:int32_tvalue:200mirror: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_modetype:int32_t#ifdef XP_WINvalue:1#elsevalue:0#endifmirror:always# How often to probe for pending events. 1 = every token.-name:content.sink.event_probe_ratetype:int32_tvalue:1mirror:always# How long to stay off the event loop in interactive mode (microseconds).-name:content.sink.interactive_parse_timetype:int32_tvalue:3000mirror:always# How long to stay off the event loop in perf mode.-name:content.sink.perf_parse_timetype:int32_tvalue:30000mirror:always# How long to be in interactive mode after an event.-name:content.sink.interactive_timetype:uint32_tvalue:750000mirror:always# How long to stay in perf mode after initial loading.-name:content.sink.initial_perf_timetype:uint32_tvalue:2000000mirror:always# Should we switch between perf-mode and interactive-mode?# 0 = Switch# 1 = Interactive mode# 2 = Perf mode-name:content.sink.enable_perf_modetype:int32_tvalue:0mirror: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_rubytype:boolvalue:falsemirror:always#---------------------------------------------------------------------------# Prefs starting with "cookiebanners."#---------------------------------------------------------------------------# Controls the cookie banner handling mode in normal browsing.# 0: Disables all cookie banner handling.# 1: Reject-all if possible, otherwise do nothing.# 2: Reject-all if possible, otherwise accept-all.-name:cookiebanners.service.modetype:uint32_tvalue:0mirror:always# When set to true, cookie banners are detected and detection events are# dispatched, but they will not be handled. Requires the service to be enabled# for the desired mode via pref cookiebanners.service.mode*-name:cookiebanners.service.detectOnlytype:boolvalue:falsemirror:always# Controls the cookie banner handling mode in private browsing. Same mode# options as the normal browsing pref above.-name:cookiebanners.service.mode.privateBrowsingtype:uint32_tvalue:0mirror:always# Enables use of global CookieBannerRules, which apply to all sites. This is# used for click rules that can handle common Consent Management Providers# (CMP).# Enabling this (when the cookie handling feature is enabled) may negatively# impact site performance since it requires us to run rule-defined query# selectors for every page.-name:cookiebanners.service.enableGlobalRulestype:boolvalue:truemirror:always# Whether global rules are allowed to run in sub-frames. Running query selectors# in every sub-frame may negatively impact performance, but is required for some# CMPs.-name:cookiebanners.service.enableGlobalRules.subFramestype:boolvalue:truemirror:always# Enables the cookie banner cookie injector. The cookie banner cookie injector# depends on the `cookiebanners.service.mode` pref above.-name:cookiebanners.cookieInjector.enabledtype:boolvalue:truemirror:always# By default, how many seconds in the future cookies should expire after they# have been injected. Defaults to 12 months. Individual cookie rules may# override this.-name:cookiebanners.cookieInjector.defaultExpiryRelativetype:uint32_tvalue:31536000mirror:always# How many times per site and site load to check for cookie banners after which# the mechanism is considered on cooldown for the site in the current browsing# session. If the threshold is set to zero, banner clicking won't be considered# as being on cooldown regardless of how many times the site is loaded. The# maximum value for the retry is 255, any value over than that will be capped.-name:cookiebanners.bannerClicking.maxTriesPerSiteAndSessiontype:uint32_tvalue:3mirror:always#---------------------------------------------------------------------------# Prefs starting with "datareporting."#---------------------------------------------------------------------------# Do note that the toggle on Fenix and Focus does NOT reflect to this pref.-name:datareporting.healthreport.uploadEnabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true#---------------------------------------------------------------------------# Prefs starting with "device."#---------------------------------------------------------------------------# Is support for the device sensors API enabled?-name:device.sensors.enabledtype:boolvalue:truemirror:always# KaiOS-only, see https://bugzilla.mozilla.org/show_bug.cgi?id=1699707#c10-name:device.sensors.ambientLight.enabledtype:boolvalue:falsemirror:always-name:device.sensors.motion.enabledtype:boolvalue:truemirror:always-name:device.sensors.orientation.enabledtype:boolvalue:truemirror:always# KaiOS-only, see https://bugzilla.mozilla.org/show_bug.cgi?id=1699707#c10-name:device.sensors.proximity.enabledtype:boolvalue:falsemirror:always-name:device.sensors.test.eventstype:boolvalue:falsemirror:always#---------------------------------------------------------------------------# Prefs starting with "devtools."#----------------------------------------------------------------------------name:devtools.console.stdout.chrometype:RelaxedAtomicBoolvalue:@IS_NOT_MOZILLA_OFFICIAL@mirror:always-name:devtools.console.stdout.contenttype:RelaxedAtomicBoolvalue:falsemirror: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.bfevicttype:boolvalue:falsemirror:always# If true, pages with an opener won't be bfcached.-name:docshell.shistory.bfcache.require_no_openertype:boolvalue:@IS_ANDROID@mirror:always# If true, page with beforeunload or unload event listeners can be bfcached.-name:docshell.shistory.bfcache.allow_unload_listenerstype:boolvalue:@IS_ANDROID@mirror:always# If true, page with beforeunload event listeners can be bfcached.# This only works when sessionHistoryInParent is enabled.-name:docshell.shistory.bfcache.ship_allow_beforeunload_listenerstype:boolvalue:truemirror:always-name:docshell.shistory.sameDocumentNavigationOverridesLoadTypetype:boolvalue:@IS_NOT_NIGHTLY_BUILD@mirror:always-name:docshell.shistory.sameDocumentNavigationOverridesLoadType.forceDisabletype:Stringvalue:""mirror:never#---------------------------------------------------------------------------# Prefs starting with "dom."#---------------------------------------------------------------------------# Allow cut/copy-name:dom.allow_cut_copytype:boolvalue:truemirror:always# Checks if offscreen animation throttling is enabled.-name:dom.animations.offscreen-throttlingtype:boolvalue:truemirror:always# Should CommitStyles use the end-point inclusive timing?-name:dom.animations.commit-styles-endpoint-inclusivetype:boolvalue:truemirror:always# Is support for Navigator.getBattery enabled?-name:dom.battery.enabledtype:boolvalue:truemirror:always# Block multiple external protocol URLs in iframes per single event.-name:dom.block_external_protocol_in_iframestype:boolvalue:truemirror:always# Block sandboxed BrowsingContexts from navigating to external protocols.-name:dom.block_external_protocol_navigation_from_sandboxtype:boolvalue:truemirror:always# Block Insecure downloads from Secure Origins-name:dom.block_download_insecuretype:boolvalue:truemirror:always# The maximum number of popup that is allowed to be opened. Set to -1 for no# limit.-name:dom.popup_maximumtype:int32_tvalue:-1mirror:always# Enable CacheAPI in private browsing mode with encryption-name:dom.cache.privateBrowsing.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Exposes window.caches and skips SecureContext check.# dom.serviceWorkers.testing.enabled also includes the same effect.-name:dom.caches.testing.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# A pref that is used to slow down database initialization for testing purposes.-name:dom.cache.databaseInitialization.pauseOnIOThreadMstype:RelaxedAtomicUint32value:0mirror:always# Disable capture attribute for input elements; only supported on GeckoView.-name:dom.capture.enabledtype:boolvalue:falsemirror:always# HTML specification says the level should be 5# https://html.spec.whatwg.org/#timer-initialisation-steps-name:dom.clamp.timeout.nesting.leveltype:RelaxedAtomicUint32value:5mirror:always# Skip the security checks for document.cookie.-name:dom.cookie.testing.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# https://whatpr.org/html/10168/interaction.html#closewatcher-name:dom.closewatcher.enabledtype:bool#if defined(ANDROID)value:false#elsevalue:@IS_NIGHTLY_BUILD@#endifmirror:always# https://github.com/whatwg/html/pull/10737-name:dom.dialog.light-dismiss.enabledtype:boolvalue:truemirror:always# Disable custom highlight API; implementation pending.-name:dom.customHighlightAPI.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# 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_characterstype:boolvalue:falsemirror:always# Compression Streams (zstd) (CompressionStream/DecompressionStream)# Whether or not "zstd" is a supported format for these streams.-name:dom.compression_streams.zstd.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Disable cookie-store API-name:dom.cookieStore.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Disable cookie-store manager API-name:dom.cookieStore.manager.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Disable extra cookie-store properties-name:dom.cookieStore.extra.enabledtype:RelaxedAtomicBoolvalue:@IS_NIGHTLY_BUILD@mirror:always# Is support for CSSPseudoElement enabled?-name:dom.css_pseudo_element.enabledtype:boolvalue:falsemirror:always# After how many seconds we allow external protocol URLs in iframe when not in# single events-name:dom.delay.block_external_protocol_in_iframestype:uint32_tvalue:10# in secondsmirror:always# Whether the above pref has any effect at all.# Make sure cases like bug 1795380 work before trying to turn this off. See# bug 1680721 for some other context that might be relevant.-name:dom.delay.block_external_protocol_in_iframes.enabledtype:boolvalue:truemirror:always-name:dom.details_group.enabledtype:boolvalue:truemirror:always# Only propagate the open window click permission if the setTimeout() is equal# to or less than this value.-name:dom.disable_open_click_delaytype:int32_tvalue:1000mirror:always-name:dom.disable_open_during_loadtype:boolvalue:falsemirror:always-name:dom.disable_beforeunloadtype:boolvalue:falsemirror:always-name:dom.require_user_interaction_for_beforeunloadtype:boolvalue:truemirror:always# Enable/disable Gecko specific edit commands-name:dom.document.edit_command.contentReadOnly.enabledtype:boolvalue:@IS_NOT_EARLY_BETA_OR_EARLIER@mirror:always-name:dom.document.edit_command.insertBrOnReturn.enabledtype:boolvalue:@IS_NOT_EARLY_BETA_OR_EARLIER@mirror:always# Only intended for fuzzing purposes, this will break mozPrintCallback, etc.-name:dom.window_print.fuzzing.block_while_printingtype:boolvalue:falsemirror:always# HTMLDialogElement.prototype.requestClose# See https://html.spec.whatwg.org/#dom-dialog-requestclose-name:dom.element.dialog.request_close.enabledtype:boolvalue:truemirror:always-name:dom.element.transform-getters.enabledtype:boolvalue:falsemirror:always# Whether the blocking attribute implementation is enabled,# see https://html.spec.whatwg.org/#blocking-attributes-name:dom.element.blocking.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Whether the commandfor attribute implementation is enabled-name:dom.element.commandfor.enabledtype:boolvalue:falsemirror:always# Whether the commandfor "toggle" and "open" details commands are enabled-name:dom.element.commandfor.on_details.enabledtype:boolvalue:falsemirror:always-name:dom.mouse_capture.enabledtype:boolvalue:truemirror:always# Is support for Performance.mozMemory enabled?-name:dom.enable_memory_statstype:boolvalue:falsemirror:always# Enable Performance API# Whether nonzero values can be returned from performance.timing.*-name:dom.enable_performancetype:RelaxedAtomicBoolvalue:truemirror:always# Enable Performance Observer API-name:dom.enable_performance_observertype:RelaxedAtomicBoolvalue:truemirror:always# Whether resource timing will be gathered and returned by performance.GetEntries*-name:dom.enable_resource_timingtype:boolvalue:truemirror:always# Whether event timing will be gathered and returned by performance observer*-name:dom.enable_event_timingtype:RelaxedAtomicBoolvalue:truemirror:always# Whether the LargestContentfulPaint API will be gathered and returned by performance observer*-name:dom.enable_largest_contentful_painttype:RelaxedAtomicBoolvalue:truemirror:always-name:dom.performance.largest_contentful_paint.coarsened_rendertime_enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Whether performance.GetEntries* will contain an entry for the active document-name:dom.enable_performance_navigation_timingtype:boolvalue:truemirror:always# Whether the scheduler interface will be exposed-name:dom.enable_web_task_schedulingtype:RelaxedAtomicBoolvalue:truemirror: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.enabledtype:boolvalue:truemirror:always# Whether Shift+Right click force-opens the context menu-name:dom.event.contextmenu.shift_suppresses_eventtype:boolvalue:truemirror:always-name:dom.event.dragexit.enabledtype:boolvalue:@IS_NOT_NIGHTLY_BUILD@mirror:always# If this pref is set to true, typing a surrogate pair causes one `keypress`# event whose `charCode` stores the unicode code point over 0xFFFF. This is# compatible with Safari and Chrome in non-Windows platforms.# Otherwise, typing a surrogate pair causes two `keypress` events. This is# compatible with legacy web apps which does# `String.fromCharCode(event.charCode)`.-name:dom.event.keypress.dispatch_once_per_surrogate_pairtype:boolvalue:falsemirror:always# This is meaningful only when `dispatch_once_per_surrogate_pair` is false.# If this pref is set to true, `.key` of the first `keypress` is set to the# high-surrogate and `.key` of the other is set to the low-surrogate.# Therefore, setting this exposing ill-formed UTF-16 string with `.key`.# (And also `InputEvent.data` if pressed in an editable element.)# Otherwise, `.key` of the first `keypress` is set to the surrogate pair, and# `.key` of the second `keypress` is set to the empty string.-name:dom.event.keypress.key.allow_lone_surrogatetype:boolvalue:@IS_NOT_EARLY_BETA_OR_EARLIER@mirror:always# Make EventStateManager restore the last "mouseover" target when it's# reconnected immediately. The behavior is similar to Safari and old Chrome.-name:dom.event.mouse.boundary.restore_last_over_target_from_temporary_removaltype:boolvalue:falsemirror:always# Whether the result of screenX, screenY, clientX, clientY, offsetX, offsetY,# x and y of trusted MouseEvent and subclasses may be fractional values.# Enabling this may cause backward compatibility issues.# Note that this pref is referred only when# `dom.event.pointer.fractional_coordinates.enabled` is `true`.-name:dom.event.mouse.fractional_coordinates.trusted.enabledtype:boolvalue:falsemirror:always# Whether the result of screenX, screenY, clientX, clientY, offsetX, offsetY,# x and y of untrusted MouseEvent and subclasses may be fractional values.# I.e., this allows web apps to use fractional values with their own DOM events# which have MouseEvent interface. However, this might cause backward# compatibility issues if web apps initializes untrusted events with quotients.# Note that this pref is referred only when# `dom.event.pointer.fractional_coordinates.enabled` is `true`.-name:dom.event.mouse.fractional_coordinates.untrusted.enabledtype:boolvalue:falsemirror:always# Whether pointer boundary events should be dispatched after the element is# changed by a layout change or something without pointer move.-name:dom.event.pointer.boundary.dispatch_when_layout_changetype:boolvalue:truemirror:always# Whether the result of screenX, screenY, clientX, clientY, offsetX, offsetY,# x and y of PointerEvent may be fractional values (except `click`, `auxclick`# and `contextmenu`)-name:dom.event.pointer.fractional_coordinates.enabledtype:boolvalue:truemirror:always# Whether pointerrawupdate event is enabled or disabled.-name:dom.event.pointer.rawupdate.enabledtype:boolvalue:truemirror:always# Whether wheel event target's should be grouped. When enabled, all wheel# events that occur in a given wheel transaction have the same event target.-name:dom.event.wheel-event-groups.enabledtype:RelaxedAtomicBoolvalue:truemirror: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.disabledtype:boolvalue:truemirror: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-disabledtype:boolvalue:falsemirror:always# A blocklist (list of domains) for the# dom.event.wheel-deltaMode-lines.disabled behavior, in case potential# unforeseen problems with it arrive.-name:dom.event.wheel-deltaMode-lines.always-enabledtype:Stringvalue:""mirror:never#if defined(XP_MACOSX)# Whether to disable treating ctrl click as right click-name:dom.event.treat_ctrl_click_as_right_click.disabledtype:boolvalue:@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-roottype:boolvalue:truemirror:always# Control whether clipboard.read(), clipboard.write() and ClipboardItem are exposed# to content.-name:dom.events.asyncClipboard.clipboardItemtype:boolvalue:truemirror:always# Skips checking permission and user activation when accessing the clipboard.# Should only be enabled in tests.# Access with Clipboard::IsTestingPrefEnabled().-name:dom.events.testing.asyncClipboardtype:boolvalue:falsemirror:alwaysdo_not_use_directly:true# Control whether `navigator.clipboard.readText()` is exposed to content.-name:dom.events.asyncClipboard.readTexttype:boolvalue:truemirror:alwaysdo_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.enabledtype:boolvalue:falsemirror:always# Whether to hide normal files (i.e. non-images) in dataTransfer inside# the content process.-name:dom.events.dataTransfer.mozFile.enabledtype:boolvalue:truemirror:always-name:dom.events.dataTransfer.imageAsFile.enabledtype:boolvalue:falsemirror:always# User interaction timer interval, in ms-name:dom.events.user_interaction_intervaltype:uint32_tvalue:5000mirror:always# Whether to try to compress touchmove events on IPC layer.-name:dom.events.compress.touchmovetype:boolvalue:truemirror:always# In addition to the above IPC layer compresison, allow touchmove# events to be further coalesced in the child side after they# are sent.-name:dom.events.coalesce.touchmovetype:boolvalue:truemirror:always# Allow mousemove events to be coalesced in the child side after they are sent.-name:dom.events.coalesce.mousemovetype:boolvalue:truemirror:always# Expose Window.TextEvent and make the builtin editors dispatch `textInput`# event as a default action of `beforeinput`.-name:dom.events.textevent.enabledtype:boolvalue:truemirror:always# Whether to dispatch `beforescriptexecute` and `afterscriptexecute` event.-name:dom.events.script_execute.enabledtype:boolvalue:@IS_NOT_EARLY_BETA_OR_EARLIER@mirror:always# Whether to expose test interfaces of various sorts-name:dom.expose_test_interfacestype:boolvalue:falsemirror:always-name:dom.fetchKeepalive.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# The maximum number of pending fetch keepalive requests per browser instance-name:dom.fetchKeepalive.total_request_limittype:RelaxedAtomicUint32value:2048mirror:always# The maximum number of pending fetch keepalive requests per origin-name:dom.fetchKeepalive.request_limit_per_origintype:RelaxedAtomicUint32value:256mirror:always-name:dom.fetchObserver.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Whether to set the incremental flag on the top level document's# priority header-name:dom.document_priority.incrementaltype:RelaxedAtomicBoolvalue:truemirror: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.createInChildtype:RelaxedAtomicBoolvalue:falsemirror:always# Support @autocomplete values for form autofill feature.-name:dom.forms.autocomplete.formautofilltype:boolvalue:falsemirror:always# Is support for HTMLElement.autocorrect enabled?-name:dom.forms.autocorrecttype:boolvalue:truemirror:always# Only trusted submit event could trigger form submission.-name:dom.forms.submit.trusted_event_onlytype:boolvalue:falsemirror: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.groupingtype:boolvalue:falsemirror:always# This pref controls whether <input type=search> clears its value on Esc# keydown.-name:dom.forms.search.esctype:boolvalue:truemirror:always# The interval in milliseconds between two Escape key events where the second# key event will exit fullscreen, even if it is consumed.-name:dom.fullscreen.force_exit_on_multiple_escape_intervaltype:uint32_tvalue:500mirror:always# Whether the Gamepad API is enabled-name:dom.gamepad.enabledtype:boolvalue:truemirror:always# Is Gamepad Extension API enabled?-name:dom.gamepad.extensions.enabledtype:boolvalue:truemirror:always# Is LightIndicator API enabled in Gamepad Extension API?-name:dom.gamepad.extensions.lightindicatortype:boolvalue:falsemirror:always# Is MultiTouch API enabled in Gamepad Extension API?-name:dom.gamepad.extensions.multitouchtype:boolvalue:falsemirror:always# Is Gamepad vibrate haptic feedback function enabled?-name:dom.gamepad.haptic_feedback.enabledtype:boolvalue:truemirror:always-name:dom.gamepad.non_standard_events.enabledtype:boolvalue:@IS_NOT_RELEASE_OR_BETA@mirror:always-name:dom.gamepad.test.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# W3C draft ImageCapture API-name:dom.imagecapture.enabledtype:boolvalue:falsemirror:always# The root margin for image lazy loading, defined as four (value, percentage)# pairs.-name:dom.image-lazy-loading.root-margin.toptype:floatvalue:600mirror:always-name:dom.image-lazy-loading.root-margin.top.percentagetype:boolvalue:falsemirror:always-name:dom.image-lazy-loading.root-margin.bottomtype:floatvalue:600mirror:always-name:dom.image-lazy-loading.root-margin.bottom.percentagetype:boolvalue:falsemirror:always-name:dom.image-lazy-loading.root-margin.lefttype:floatvalue:600mirror:always-name:dom.image-lazy-loading.root-margin.left.percentagetype:boolvalue:falsemirror:always-name:dom.image-lazy-loading.root-margin.righttype:floatvalue:600mirror:always-name:dom.image-lazy-loading.root-margin.right.percentagetype:boolvalue:falsemirror:always# Enable indexedDB in private browsing mode with encryption-name:dom.indexedDB.privateBrowsing.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# A pref that is used to slow down connection idle maintenance for testing# purposes.-name:dom.indexedDB.connectionIdleMaintenance.pauseOnConnectionThreadMstype:RelaxedAtomicUint32value:0mirror:always# Whether or not indexedDB test mode is enabled.-name:dom.indexedDB.testingtype:RelaxedAtomicBoolvalue:falsemirror:always# Whether or not indexedDB experimental features are enabled.-name:dom.indexedDB.experimentaltype:RelaxedAtomicBoolvalue:falsemirror:always# Whether or not indexedDB preprocessing is enabled.-name:dom.indexedDB.preprocessingtype:RelaxedAtomicBoolvalue:falsemirror:always# A pref that is used to slow down database initialization for testing purposes.-name:dom.indexedDB.databaseInitialization.pauseOnIOThreadMstype:RelaxedAtomicUint32value:0mirror:always# How innerWidth / innerHeight return rounded or fractional sizes.## 0 or others: Do not round at all.# 1: Round.# 2: Truncate.## 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.roundingtype:uint32_tvalue:1mirror: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_1type:boolvalue:truemirror:always# Whether we allow BrowsingContextGroup to suspend input events-name:dom.input_events.canSuspendInBCG.enabledtype:boolvalue:falsemirror:always# Whether dispatch a redundant `input` event before `compositionend`.# Its `.isComposing` is `true`, but it might be useful to store the latest# composition string before `compositionend` event listeners (although,# `.data` of `compositionend` event contains the value.-name:dom.input_events.dispatch_before_compositionendtype:boolvalue:truemirror:always# The minimum number of ticks after page navigation# that need to occur before user input events are allowed to be handled.-name:dom.input_events.security.minNumTickstype:uint32_tvalue:3mirror:always# The minimum elapsed time (in milliseconds) after page navigation# for user input events are allowed to be handled.-name:dom.input_events.security.minTimeElapsedInMStype:uint32_tvalue:100mirror:always# By default user input handling delay is disabled (mostly) for testing ,# this is used for forcefully enable it for certain tests.-name:dom.input_events.security.isUserInputHandlingDelayTesttype:boolvalue:falsemirror:always# The maximum time (milliseconds) we reserve for handling input events in each# frame.-name:dom.input_event_queue.duration.maxtype:uint32_tvalue:8mirror:always-name:dom.interactive_widget_default_resizes_visualtype:RelaxedAtomicBoolvalue:truemirror:always-name:dom.intersection_observer.scroll_margin.enabledtype:boolvalue:truemirror:always# How often to check for CPOW timeouts (ms). CPOWs are only timed# out by the hang monitor.-name:dom.ipc.cpow.timeouttype:uint32_tvalue:500mirror:always#ifdef MOZ_ENABLE_FORKSERVER-name:dom.ipc.forkserver.enabletype:bool#if defined(MOZ_CODE_COVERAGE) || defined(MOZ_ASAN) || defined(MOZ_TSAN) || defined(MOZ_MSAN) || defined(MOZ_UBSAN)value:false#elsevalue:true#endifmirror:once#endif#ifdef MOZ_WIDGET_GTK## Avoid the use of GTK in content processes if possible, by running# them in headless mode, to conserve resources (e.g., connections to# the X server). See the usage in `ContentParent.cpp` for the full# definition of "if possible".## This does not affect sandbox policies; content processes may still# dynamically connect to the display server for, e.g., WebGL.-name:dom.ipc.avoid-gtktype:boolvalue:truemirror:always#endif# Whether or not to collect a paired minidump when force-killing a# content process.-name:dom.ipc.tabs.createKillHardCrashReportstype:boolvalue:@IS_NOT_RELEASE_OR_BETA@mirror:once# Enable e10s hang monitoring (slow script checking and plugin hang detection).-name:dom.ipc.processHangMonitortype:boolvalue:truemirror:once# Whether we report such process hangs-name:dom.ipc.reportProcessHangstype:RelaxedAtomicBool# Don't report hangs in DEBUG builds. They're too slow and often a# debugger is attached.#ifdef DEBUGvalue:false#elsevalue:true#endifmirror:always# If true, disables non-required re-use of content processes. This can be used# in tests to force a new process to be used whenever a process selection# decision is made. Setting this pref can cause dom.ipc.processCount limits to# be exceeded.# WARNING: This will exceed even process limits for the extension or# privilegedAbout remote types, which may lead to unexpected breakage!# Should only be used for testing.-name:dom.ipc.disableContentProcessReusetype:boolvalue:falsemirror:always# If non-zero, a grace delay (in milliseconds) during which unused content# processes are kept available for re-use to avoid unnecessary process churn.-name:dom.ipc.processReuse.unusedGraceMstype:uint32_tvalue:0mirror:always# Process launch delay (in milliseconds).-name:dom.ipc.processPrelaunch.delayMstype: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:1000mirror:always-name:dom.ipc.processPrelaunch.startupDelayMstype:uint32_t# delay starting content processes for a short time after browser start# to provide time for the UI to come upvalue:1000mirror:always# Process preallocation cache# Only used in fission; in e10s we use 1 always-name:dom.ipc.processPrelaunch.fission.numbertype:uint32_tvalue:3mirror:always# Limit preallocated processes below this memory size (in MB)-name:dom.ipc.processPrelaunch.lowmem_mbtype:uint32_tvalue:4096mirror:always-name:dom.ipc.processPriorityManager.enabledtype:boolvalue:truemirror:always-name:dom.ipc.processPriorityManager.testModetype:boolvalue:falsemirror:always-name:dom.ipc.processPriorityManager.backgroundPerceivableGracePeriodMStype:uint32_t#if defined(MOZ_WIDGET_ANDROID)value:3000#elsevalue:0#endifmirror:always-name:dom.ipc.processPriorityManager.backgroundGracePeriodMStype:uint32_t#if defined(MOZ_WIDGET_ANDROID)value:3000#elsevalue:0#endifmirror:always#ifdef XP_WIN-name:dom.ipc.processPriorityManager.backgroundUsesEcoQoStype:boolvalue:falsemirror:always#endif# Support for input type=month, type=week. By default, disabled.-name:dom.forms.datetime.otherstype:boolvalue:@IS_ANDROID@mirror:always-name:dom.forms.always_allow_pointer_events.enabledtype:boolvalue:truemirror:always# Is support for key events and focus events on disabled elements enabled?-name:dom.forms.always_allow_key_and_focus_events.enabledtype:boolvalue:truemirror:always# Whether to disable only the descendants or the parent fieldset element too# Note that this still allows it to be selected by `:disable`.-name:dom.forms.fieldset_disable_only_descendants.enabledtype:boolvalue:truemirror:always# Does mousewheel-scrolling over a focused <input type="number"> or# <input type="range"> field cause the value to increase/decrease (rather# than scrolling the page)?-name:dom.input.number_and_range_modified_by_mousewheeltype:RelaxedAtomicBoolvalue:falsemirror: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_inputtype:boolvalue:falsemirror: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.shutdownTimeoutSecstype:RelaxedAtomicUint32#if !defined(DEBUG) && !defined(MOZ_ASAN) && !defined(MOZ_VALGRIND) && !defined(MOZ_TSAN)value:20#elsevalue:0#endifmirror:always# Whether a native event loop should be used in the content process.-name:dom.ipc.useNativeEventProcessing.contenttype:RelaxedAtomicBool#if defined(XP_WIN) || defined(XP_DARWIN)value:false#elsevalue:true#endifmirror: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_compositiontype:boolvalue:truemirror:always# Enable/disable KeyboardEvent.initKeyEvent function-name:dom.keyboardevent.init_key_event.enabledtype:boolvalue:falsemirror:always# Enable/disable KeyboardEvent.initKeyEvent function in addons even if it's# disabled.-name:dom.keyboardevent.init_key_event.enabled_in_addonstype:boolvalue:@IS_NOT_NIGHTLY_BUILD@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_contenttype:boolvalue:truemirror: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_valuetype:boolvalue:truemirror:always# Whether "W3C Web Manifest" processing is enabled-name:dom.manifest.enabledtype:boolvalue:truemirror:always# Enable mapped array buffer by default.-name:dom.mapped_arraybuffer.enabledtype:boolvalue:truemirror:always# Autoplay Policy Detection https://w3c.github.io/autoplay/-name:dom.media.autoplay-policy-detection.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# WebCodecs API-name:dom.media.webcodecs.enabledtype:RelaxedAtomicBool#if defined(MOZ_WIDGET_ANDROID)value:@IS_NIGHTLY_BUILD@#elsevalue:true#endifmirror:always# WebCodecs API - Image decoder-name:dom.media.webcodecs.image-decoder.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# WebCodecs API - H265-name:dom.media.webcodecs.h265.enabledtype:RelaxedAtomicBoolvalue:@IS_NIGHTLY_BUILD@mirror:always# Number of seconds of very quiet or silent audio before considering the audio# inaudible.-name:dom.media.silence_duration_for_audibilitytype:AtomicFloatvalue:2.0fmirror:always# Inform mozjemalloc that the foreground content processes can keep more dirty# pages in memory.-name:dom.memory.foreground_content_processes_have_larger_page_cachetype:boolvalue:truemirror:always# 0 no-op# 1 free dirty mozjemalloc pages# 2 trigger memory-pressure/heap-minimize# 3 trigger memory-pressure/low-memory-name:dom.memory.memory_pressure_on_backgroundtype:uint32_tvalue:0mirror:always# Enable meta-viewport support in remote APZ-enabled frames.-name:dom.meta-viewport.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Timeout clamp in ms for timeouts we clamp.-name:dom.min_timeout_valuetype:RelaxedAtomicInt32value:4mirror:always# Timeout clamp in ms for background windows.-name:dom.min_background_timeout_valuetype:RelaxedAtomicInt32value:1000mirror:always# Timeout clamp in ms for background windows when throttling isn't enabled.-name:dom.min_background_timeout_value_without_budget_throttlingtype:RelaxedAtomicInt32value:1000mirror:always# Are missing-property use counters for certain DOM attributes enabled?-name:dom.missing_prop_counters.enabledtype:boolvalue:truemirror:always# Whether to dispatch mutation events.-name:dom.mutation_events.enabledtype:boolvalue:falsemirror: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.navigationRateLimit.counttype:uint32_tvalue:200mirror:always# Time span in seconds for location change rate limit.-name:dom.navigation.navigationRateLimit.timespantype:uint32_tvalue:10mirror:always# Whether to allow <object> and <embed> element loads to be retargeted to an# external application or download.-name:dom.navigation.object_embed.allow_retargetingtype:boolvalue:falsemirror:always# Whether the navigation API will be exposed.-name:dom.navigation.webidl.enabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysdo_not_use_directly:true# Network Information API# This feature is not available on Firefox desktop. It exposes too much# user information. Let's be consistent and disable it on Android.# But let's keep it around in case it becomes necessary for webcompat# reasons# https://bugzilla.mozilla.org/show_bug.cgi?id=1637922-name:dom.netinfo.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Whether we should open noopener links in a new process.-name:dom.noopener.newprocess.enabledtype:boolvalue:truemirror:always# Whether the codebase attribute in an <object> is used as the base URI.-name:dom.object_embed.codebase.enabledtype:boolvalue:falsemirror:always# Whether origin trials are enabled.-name:dom.origin-trials.enabledtype:boolvalue:truemirror:always# Whether we use the test key to verify tokens.-name:dom.origin-trials.test-key.enabledtype:boolvalue:falsemirror:always# Origin trial state for "TestTrial".# 0: normal, 1: always-enabled, 2: always-disabled-name:dom.origin-trials.test-trial.statetype:RelaxedAtomicInt32value:0mirror:always# Origin trial state for COEP: Credentialless.# 0: normal, 1: always-enabled, 2: always-disabled-name:dom.origin-trials.coep-credentialless.statetype:RelaxedAtomicInt32value:0mirror:always# Origin trial state for Private Attribution# 0: normal, 1: always-enabled, 2: always-disabled-name:dom.origin-trials.private-attribution.statetype:RelaxedAtomicInt32#ifdef ANDROIDvalue:2#elsevalue:0#endifmirror:always# Origin trial state for MLS# 0: normal, 1: always-enabled, 2: always-disabled-name:dom.origin-trials.mls.statetype:RelaxedAtomicInt32value:0mirror:always# User pref to control whether Private Attribution# information should be collected / submitted.-name:dom.private-attribution.submission.enabledtype:boolvalue:@IS_NOT_ANDROID@mirror:always# Is support for Window.paintWorklet enabled?-name:dom.paintWorklet.enabledtype:boolvalue:falsemirror:always# Enable/disable the PaymentRequest API-name:dom.payments.request.enabledtype:boolvalue:falsemirror:always# Whether a user gesture is required to call PaymentRequest.prototype.show().-name:dom.payments.request.user_interaction_requiredtype:boolvalue:truemirror:always# Time in milliseconds for PaymentResponse to wait for# the Web page to call complete().-name:dom.payments.response.timeouttype:uint32_tvalue:5000mirror:always# Enable printing performance marks/measures to log-name:dom.performance.enable_user_timing_loggingtype:RelaxedAtomicBoolvalue:falsemirror:always# Enable notification of performance timing-name:dom.performance.enable_notify_performance_timingtype:boolvalue:falsemirror:always# Is support for PerformanceTiming.timeToContentfulPaint enabled?-name:dom.performance.time_to_contentful_paint.enabledtype:boolvalue:falsemirror:always# Is support for PerformanceTiming.timeToFirstInteractive enabled?-name:dom.performance.time_to_first_interactive.enabledtype:boolvalue:falsemirror:always# Is support for PerformanceTiming.timeToNonBlankPaint enabled?-name:dom.performance.time_to_non_blank_paint.enabledtype:boolvalue:falsemirror:always# Whether the interactionId will be computed and returned by performance observer*-name:dom.performance.event_timing.enable_interactionidtype:RelaxedAtomicBoolvalue:@IS_NIGHTLY_BUILD@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.enabledtype:boolvalue:truemirror: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_COEPtype:boolvalue:truemirror:once# Overridden in all.js on RELEASE_OR_BETA in order to add the locked attribute.-name:dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Should we speculatively prefetch dns for anchor elements on http documents-name:dom.prefetch_dns_for_anchor_http_documenttype:boolvalue:truemirror:always# Should we speculatively prefetch dns for anchor elements on https documents-name:dom.prefetch_dns_for_anchor_https_documenttype:boolvalue:falsemirror:always# This currently only affects XHTML. For XUL the cache is always allowed.-name:dom.prototype_document_cache.enabledtype:boolvalue:truemirror:always# Push-name:dom.push.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Indicate the deprecated aesgcm support in PushManager.supportedContentEncodings.## This does not affect actual aesgcm support, any new and existing subscriptions# can still use aesgcm regardless of this pref.-name:dom.push.indicate_aesgcm_support.enabledtype:RelaxedAtomicBoolvalue:falsemirror: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.storageNametype:Stringvalue:"storage"mirror:never# An upper limit for the "age" of an origin. Any origin which is older than the# threshold is considered as unaccessed. That doesn't necessarily mean that# such origins will be immediatelly archived. They will be archived only when# dom.quotaManager.checkQuotaInfoLoadTime is true and loading of quota info# takes a long time (dom.quotaManager.longQuotaInfoLoadTimeThresholdMs is used# to decide what is a long quota info load time).-name:dom.quotaManager.unaccessedForLongTimeThresholdSectype:RelaxedAtomicUint32value:33696000# 13 monthsmirror:always# Should we try to load origin information from the cache?# See bug 1563023 for more details.-name:dom.quotaManager.loadQuotaFromCachetype:RelaxedAtomicBoolvalue:truemirror:always# Should we try to load origin information from the secondary cache?## When enabled, quota information may be initialized from metadata files# instead of scanning origin directories, if the cached data is considered# valid.## For the L2 quota info cache to work effectively, the following pref must also# be enabled:# dom.quotaManager.originInitialization.updateOriginMetadata## That pref ensures that cached metadata is written back to disk after full# origin initialization. Without it, usable cached info may become outdated or# missing, and this pref alone will have limited effect.## Expected behavior for various combinations of the two prefs:## update: false, load: false# -> No L2 cache write or read. Full scan is always used.## update: true, load: false# -> Metadata is updated, but not used. Sets up infrastructure without# activating the performance optimization.## update: false, load: true# -> Cache read is enabled, but metadata files are not continuously# updated, reducing cache effectiveness. Useful only for incremental# rollout and testing purposes.## update: true, load: true# -> Full L2 quota info cache functionality is active. Metadata is# maintained and used for optimized quota initialization.## See bug 1953860 for background and additional details.-name:dom.quotaManager.loadQuotaFromSecondaryCachetype:RelaxedAtomicBool#if defined(NIGHTLY_BUILD) && !defined(ANDROID)value:true#elsevalue:false#endifmirror:always# Should we check build ID as part of the cache validation?# When enabled, the cache is invalidated on any upgrade (or downgrade),# ensuring that changes in how quota usage is calculated can't cause# inconsistencies at the cost of a slower initialization. Currently, this# should only be set to false in tests using a packaged profile that inherently# includes a build id different from the building running the tests. In the# future this may be set to false if we are confident that we have sufficiently# thorough schema versioning.-name:dom.quotaManager.caching.checkBuildIdtype:RelaxedAtomicBoolvalue:truemirror:always# Should we check quota info load time and eventually archive some unaccessed# origins if loading of quota info takes a long time ?-name:dom.quotaManager.checkQuotaInfoLoadTimetype:RelaxedAtomicBoolvalue:truemirror:always# An upper limit for quota info load time, anything which takes longer than the# threshold is considered as long quota info load time.-name:dom.quotaManager.longQuotaInfoLoadTimeThresholdMstype:RelaxedAtomicUint32value:21000# 21 secondsmirror:always# Preference that users can set to override temporary storage smart limit# calculation.-name:dom.quotaManager.temporaryStorage.fixedLimittype:RelaxedAtomicInt32value:-1mirror:always# Controls whether the quota manager updates the last access time for origins# in temporary storage. When enabled, the access time is updated only when an# origin is accessed by a quota client for the first time during a session or# when the last quota client stops accessing the origin. This allows eviction# based on the LRU policy. When disabled, the access time is stored only once# when the corresponding origin directory is created for the first time.## This setting is currently intended for manual testing purposes only.-name:dom.quotaManager.temporaryStorage.updateOriginAccessTimetype:RelaxedAtomicBoolvalue:truemirror:always# Should we do lazy initialization of origins ?# When enabled, origins for temporary storage are not initialized during# temporary storage initialization, they are initialized lazily instead.# If there are other origins in the group, they are initialized all together.# This feature is currently still in development and experimental, not# recommended for normal use yet.## Note: If dom.quotaManager.temporaryStorage.incrementalOriginInitialization# is set to true, this preference will be overridden, and the individual# setting will no longer take effect, regardless of its value.-name:dom.quotaManager.temporaryStorage.lazyOriginInitializationtype:RelaxedAtomicBoolvalue:falsemirror:alwaysdo_not_use_directly:true# Should we trigger initialization of all temporary origins in the background?# When enabled, temporary origins collected during temporary storage# initialization are initialized in the background. The background# initialization of temporary origins is always done for entire groups of# origins to preserve consistency of quota checks related to the group limit.# This feature is currently still in development and experimental, not# recommended for normal use yet.## Note: If dom.quotaManager.temporaryStorage.incrementalOriginInitialization# is set to true, this preference will be overridden, and the individual# setting will no longer take effect, regardless of its value.-name:dom.quotaManager.temporaryStorage.triggerOriginInitializationInBackgroundtype:RelaxedAtomicBoolvalue:falsemirror:alwaysdo_not_use_directly:true# Should we enable incremental initialization of origins? (also known as# asynchronous temporary storage initialization)# When enabled, this preference acts as an override for the following# preferences:# - dom.quotaManager.temporaryStorage.lazyOriginInitialization# - dom.quotaManager.temporaryStorage.triggerOriginInitializationInBackground## Enabling this preference ensures that:# 1. Origins for temporary storage are not initialized during temporary storage# initialization but are instead initialized incrementally, either lazily or# in the background, depending on which occurs first.# 2. Background initialization of temporary origins is triggered after the# temporary storage initialization. The process is carried out in steps,# with each step being responsible for initializing a group of origins.## See also the documentation for those two preferences for more details on# their individual behaviors.## This feature is currently in development and experimental, not recommended# for normal use yet.-name:dom.quotaManager.temporaryStorage.incrementalOriginInitializationtype:RelaxedAtomicBoolvalue:falsemirror:alwaysdo_not_use_directly:true# A pref that is used to slow down origin operations for testing purposes.-name:dom.quotaManager.originOperations.pauseOnIOThreadMstype:RelaxedAtomicUint32value:0mirror:always# A pref that is used to slow down storage initialization for testing purposes.-name:dom.quotaManager.storageInitialization.pauseOnIOThreadMstype:RelaxedAtomicUint32value:0mirror:always# A pref that is used to slow down group initialization for testing purposes.-name:dom.quotaManager.groupInitialization.pauseOnIOThreadMstype:RelaxedAtomicUint32value:0mirror:always# Should we update the origin metadata file after full origin initialization?# When enabled, the origin metadata file will be updated after origin# initialization to ensure it reflects the most recent state.# This feature is essential for the functionality of the L2 quota info cache.# The preference may be later removed after a successful full rollout of the# L2 cache to all users on all platforms in the release channel.-name:dom.quotaManager.originInitialization.updateOriginMetadatatype:RelaxedAtomicBool#if defined(NIGHTLY_BUILD) && !defined(ANDROID)value:true#elsevalue:false#endifmirror:always# A pref that is used to slow down origin initialization for testing purposes.-name:dom.quotaManager.originInitialization.pauseOnIOThreadMstype:RelaxedAtomicUint32value:0mirror:always# A pref that is used to enable testing features.-name:dom.quotaManager.testingtype:SequentiallyConsistentAtomicBoolvalue:falsemirror:always#if defined(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.useDOSDevicePathSyntaxtype:RelaxedAtomicBoolvalue:truemirror:alwaysdo_not_use_directly:true# Preference that is used to enable the hack for overrriding xFullPathname in# QuotaVFS.-name:dom.quotaManager.overrideXFullPathnametype:RelaxedAtomicBoolvalue:truemirror:always#elif defined(XP_UNIX)# Preference that is used to enable the overriding of Unix xFullPathname# implementation in QuotaVFS.-name:dom.quotaManager.overrideXFullPathnameUnixtype:RelaxedAtomicBoolvalue:truemirror:always#endif# How many times we should retry directory removal or renaming if access was# denied?-name:dom.quotaManager.directoryRemovalOrRenaming.maxRetriestype:RelaxedAtomicUint32#ifdef XP_WINvalue:10#elsevalue:0#endifmirror:always# How long we should wait between retries (in milliseconds)?-name:dom.quotaManager.directoryRemovalOrRenaming.delayMstype:RelaxedAtomicUint32value:200mirror:always#ifdef MOZ_BACKGROUNDTASKS# Use a Background Task to delete files at shutdown.-name:dom.quotaManager.backgroundTask.enabledtype:bool#ifdef XP_MACOSX# Needs to figure out how to prevent bug 1827486.value:false#elsevalue:true#endifmirror:never#endif# A pref that specifies one or more failure categories to trigger artificial# failures for testing purposes. Multiple categories can be combined using# bitwise OR to represent various failure points within the code.-name:dom.quotaManager.artificialFailure.categoriestype:RelaxedAtomicUint32value:0mirror:always# A probability (0-100) used to determine the likelihood of triggering an# artificial failure for testing purposes. This value is applied when the# specified failure categories match to decide if the failure should occur.-name:dom.quotaManager.artificialFailure.probabilitytype:RelaxedAtomicUint32value:0mirror:always# An error code used to trigger an artificial failure for testing purposes.# This code is returned when the specified failure categories match and the# failure is triggered based on the configured probability.-name:dom.quotaManager.artificialFailure.errorCodetype:RelaxedAtomicUint32value:0mirror:always# Use to control to dump CheckedUnsafePtr creation stack and assignment stacks.-name:dom.checkedUnsafePtr.dumpStacks.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# A pref that is used to slow down database initialization for testing purposes.-name:dom.simpledb.databaseInitialization.pauseOnIOThreadMstype:RelaxedAtomicUint32value:0mirror:always# Determines within what distance of a tick mark, in pixels, dragging an input# range range will snap the range's value to that tick mark. By default, this is# half the default width of the range thumb.-name:dom.range_element.magnet_effect_thresholdtype:floatvalue:10.0fmirror:always# Reporting API.-name:dom.reporting.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always-name:dom.reporting.testing.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always-name:dom.reporting.featurePolicy.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always-name:dom.reporting.crash.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always-name:dom.reporting.header.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# In seconds. The timeout to remove not-active report-to endpoints.-name:dom.reporting.cleanup.timeouttype:uint32_tvalue:3600mirror:always# Any X seconds the reports are dispatched to endpoints.-name:dom.reporting.delivering.timeouttype:uint32_tvalue:5mirror:always# How many times the delivering of a report should be tried.-name:dom.reporting.delivering.maxFailurestype:uint32_tvalue:3mirror:always# How many reports should be stored in the report queue before being delivered.-name:dom.reporting.delivering.maxReportstype:uint32_tvalue:100mirror:always# Enable Screen Orientation lock-name:dom.screenorientation.allow-locktype:boolvalue:@IS_NIGHTLY_BUILD@mirror:always# Enable Screen Wake Lock API-name:dom.screenwakelock.enabledtype:boolvalue:truemirror: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.enabledtype:boolvalue:truemirror: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.strategytype:int32_tvalue:0mirror:always# Select which parse/delazification strategy should be used while parsing# scripts off-main-thread. (see CompileOptions.h, DelazificationOption enum)## 0: On-demand only. Delazification will be triggered only on the main thread# before the execution of the function.## 1: Compare on-demand delazification (= 0) with concurrent depth-first# delazification (= 2).## 2: Depth-first. Delazify all functions off-thread in the order of appearance# in the source.## 3: Large-first. Delazify all functions off-thread starting with the largest# functions first, and the smallest as the last one to be delazified, where# the size of function is measured in bytes between the start to the end of# the function.## 255: Parse everything eagerly, from the first parse. All functions are parsed# at the same time as the top-level of a file.-name:dom.script_loader.delazification.strategytype:uint32_tvalue:255mirror:always# Maximum total size after which the delazification strategy, specified by# `dom.script_loader.delazification.strategy`, is no longer applied, and the# on-demand strategy is used by default.## -1 disable the threshold, and delazification strategy is applied to all# scripts.## Default value is 10MB for utf8 scripts.-name:dom.script_loader.delazification.max_sizetype:int32_tvalue:10485760mirror:always# Minimum memory, in GB, required to enable delazification strategy, specified# by `dom.script_loader.delazification.strategy`. Otherwise, the on-demand# delazification strategy is used.-name:dom.script_loader.delazification.min_memtype:int32_tvalue:2mirror: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.enabledtype:boolvalue:truemirror:always# Speculatively compile non parser inserted scripts-name:dom.script_loader.external_scripts.speculate_non_parser_inserted.enabledtype:boolvalue:falsemirror:always# Speculatively compile async scripts-name:dom.script_loader.external_scripts.speculate_async.enabledtype:boolvalue:falsemirror:always# Speculatively compile link preload scripts-name:dom.script_loader.external_scripts.speculate_link_preload.enabledtype:boolvalue:falsemirror:always# Cache stencil across navigation-name:dom.script_loader.navigation_cachetype:boolvalue:falsemirror:always-name:dom.securecontext.allowlist_onionstype:boolvalue:falsemirror:always# This pref enables the featurePolicy header support.-name:dom.security.featurePolicy.header.enabledtype:boolvalue:falsemirror:always-name:dom.security.featurePolicy.experimental.enabledtype:boolvalue:falsemirror:always# Expose the 'featurePolicy' attribute in document and HTMLIFrameElement-name:dom.security.featurePolicy.webidl.enabledtype:boolvalue:falsemirror: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_asserttype:RelaxedAtomicBoolvalue:falsemirror: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_asserttype:RelaxedAtomicBoolvalue:falsemirror: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_assertiontype:RelaxedAtomicBoolvalue:falsemirror:always# Serialize < as < and > as > in attribute values for getHTML, innerHTML etc.-name:dom.security.html_serialization_escape_lt_gttype:RelaxedAtomicBoolvalue:truemirror: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_contexttype:RelaxedAtomicBoolvalue:falsemirror:always# If and only if true, support for Trusted Types# (https://w3c.github.io/trusted-types/dist/spec/) is enabled.-name:dom.security.trusted_types.enabledtype:RelaxedAtomicBoolvalue:Falsemirror: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_modetype:RelaxedAtomicBoolvalue:falsemirror: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_pbmtype:RelaxedAtomicBoolvalue:falsemirror:always# If true, sends http background request for top-level sites to# counter long timeouts.-name:dom.security.https_only_mode_send_http_background_requesttype:RelaxedAtomicBoolvalue:truemirror:always# Time limit, in milliseconds, before sending the http background# request for HTTPS-Only and HTTPS-First-name:dom.security.https_only_fire_http_request_background_timer_mstype:RelaxedAtomicUint32value:2200mirror:always# If true, tries to break upgrade downgrade cycles where https-only tries# to upgrad ethe connection, but the website tries to downgrade again.-name:dom.security.https_only_mode_break_upgrade_downgrade_endless_looptype:RelaxedAtomicBoolvalue:truemirror:always# If true and HTTPS-only mode is enabled, requests# to local IP addresses are also upgraded-name:dom.security.https_only_mode.upgrade_localtype:RelaxedAtomicBoolvalue:falsemirror:always# If true and HTTPS-only mode is enabled, requests# to .onion hosts are also upgraded-name:dom.security.https_only_mode.upgrade_oniontype:RelaxedAtomicBoolvalue:falsemirror: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_enabledtype:RelaxedAtomicBoolvalue:falsemirror: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_pbmtype:RelaxedAtomicBoolvalue:falsemirror:always# If true checks for secure www connections when https fails# and gives the user suggestions on the error page-name:dom.security.https_only_mode_error_page_user_suggestionstype:RelaxedAtomicBoolvalue:falsemirror:always# If true, top-level request will get upgraded to HTTPS and# downgraded again if the request failed.-name:dom.security.https_firsttype:RelaxedAtomicBoolvalue:truemirror:always# If true, HTTPS-First will upgrade non-default ports-name:dom.security.https_first_for_custom_portstype:RelaxedAtomicBoolvalue:falsemirror:always# If true, HTTPS-First will upgrade local addresses-name:dom.security.https_first_for_local_addressestype:RelaxedAtomicBoolvalue:falsemirror:always# If true, HTTPS-First will upgrade unknown suffixes-name:dom.security.https_first_for_unknown_suffixestype:RelaxedAtomicBoolvalue:falsemirror:always# If true, top-level requests in Private Browsing Mode will get# upgraded to HTTPS. (If dom.security.https_first# is set to true then this pref has no effect)-name:dom.security.https_first_pbmtype:RelaxedAtomicBoolvalue:truemirror:always# If true, top-level requests that are initiated from the address# bar and with an empty scheme get upgraded to HTTPS# with a fallback-name:dom.security.https_first_schemelesstype:RelaxedAtomicBoolvalue:truemirror:always# If true, will add a special temporary HTTPS-First exception for a site when a# HTTPS-First upgrade fails.-name:dom.security.https_first_add_exception_on_failuretype:RelaxedAtomicBoolvalue:truemirror:always-name:dom.security.https_first_exception_lifetimetype:uint32_tvalue:7*24*60*60*1000# 7 days in millisecondsmirror:always-name:dom.security.unexpected_system_load_telemetry_enabledtype:boolvalue:@IS_EARLY_BETA_OR_EARLIER@mirror:always# pref controls `Sanitizer` API being exposed# https://wicg.github.io/sanitizer-api/-name:dom.security.sanitizer.enabledtype:boolvalue:falsemirror:always# Logs elements and attributes removed by the Sanitizer API to the console.-name:dom.security.sanitizer.loggingtype:boolvalue:falsemirror:always# pref controls credential chooser UI for testing. When true, UI is not shown and# either a credential with ID `wpt-pick-me` is selected, or none.-name:dom.security.credentialmanagement.chooser.testing.enabledtype:boolvalue:falsemirror:always# pref controls `identity` credentials being exposed-name:dom.security.credentialmanagement.identity.enabledtype:boolvalue:falsemirror:always# pref controls "heavyweight" network discoverable `identity` credentials being exposed-name:dom.security.credentialmanagement.identity.heavyweight.enabledtype:boolvalue:falsemirror:always# pref controls storable "lightweight" `identity` credentials being exposed-name:dom.security.credentialmanagement.identity.lightweight.enabledtype:boolvalue:falsemirror:always# pref controls `identity` credential UI for testing. When true, UI is not shown and# the first option in the account and provider lists are chosen-name:dom.security.credentialmanagement.identity.select_first_in_ui_liststype:boolvalue:falsemirror:always# pref controls `identity` credential platform behavior for testing. When true,# the .well-known file check is not performed.-name:dom.security.credentialmanagement.identity.test_ignore_well_knowntype:boolvalue:falsemirror:always# pref controls whether we should delay identity credential rejections at all-name:dom.security.credentialmanagement.identity.reject_delay.enabledtype:boolvalue:truemirror:always# pref controls how long we should delay identity credential rejections if enabled-name:dom.security.credentialmanagement.identity.reject_delay.duration_mstype:uint32_tvalue:120000mirror:always# Whether or not selection events on text controls are enabled.-name:dom.select_events.textcontrols.selectionchange.enabledtype:boolvalue:truemirror:always-name:dom.select_events.textcontrols.selectstart.enabledtype:boolvalue:falsemirror:always-name:dom.select.showPicker.enabledtype:boolvalue:truemirror:always-name:dom.send_after_paint_to_contenttype:boolvalue:falsemirror:always-name:dom.separate_event_queue_for_post_message.enabledtype:boolvalue:truemirror:always-name:dom.arena_allocator.enabledtype:boolvalue:truemirror:once-name:dom.serviceWorkers.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:dom.serviceWorkers.navigationPreload.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Mitigates ServiceWorker navigation faults by bypassing the ServiceWorker on# navigation faults. This is more extensive than just resetting interception# because we also mark the page as uncontrolled so that subresources will not# go to the ServiceWorker either.-name:dom.serviceWorkers.mitigations.bypass_on_faulttype:boolvalue:truemirror:always# Additional ServiceWorker navigation mitigation control to unregister the# ServiceWorker after multiple faults are encountered. The mitigation is# disabled when this is set to zero, otherwise this is the number of faults that# need to occur for a specific ServiceWorker before it will be unregistered.-name:dom.serviceWorkers.mitigations.navigation_fault_thresholdtype:uint32_tvalue:3mirror:always# This is the group usage head room for service workers.# The quota usage mitigation algorithm uses this preference to determine if the# origin or also group data should be cleared or not.# The default value is 400 MiB.-name:dom.serviceWorkers.mitigations.group_usage_headroom_kbtype:uint32_tvalue:400 * 1024mirror:always# Enable ServiceWorkers in Private Browsing Mode (PBM). This requires# dom.cache.privateBrowsing.enabled to be enabled as well. Registrations are# not persisted to disk; installed scripts are stored in Cache API storage which# is encrypted in PBM.-name:dom.serviceWorkers.privateBrowsing.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:dom.serviceWorkers.testing.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Whether ServiceWorkerManager should persist the service worker# registered by temporary installed extension (only meant to be used# for testing purpose, to make it easier to test some particular scenario# with a temporary installed addon, which doesn't need to be signed to be# installed on release channel builds).-name:dom.serviceWorkers.testing.persistTemporarilyInstalledAddonstype:RelaxedAtomicBoolvalue:falsemirror:always-name:dom.storage.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:dom.urlpattern.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:dom.workers.pFetch.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:dom.workers.importScripts.enforceStrictMimeTypetype:RelaxedAtomicBoolvalue:truemirror:always-name:dom.workers.throttling.enabledtype:boolvalue:@IS_NIGHTLY_BUILD@mirror:once-name:dom.workers.serialized-sab-accesstype:RelaxedAtomicBoolvalue:falsemirror:always# Enable stronger diagnostics on worker shutdown.# If this is true, we will potentially run an extra GCCC when a worker should# exit its DoRunLoop but holds any WorkerRef and we will MOZ_DIAGNOSTIC_ASSERT# when during that extra GCCC such a WorkerRef is freed.-name:dom.workers.GCCC_on_potentially_last_eventtype:RelaxedAtomicBool#if defined(FUZZING) || defined(DEBUG)value:true#elsevalue:false#endifmirror:always-name:dom.sitepermsaddon-provider.enabledtype:boolvalue:@IS_NOT_ANDROID@mirror:always# Server-Sent Events# Equal to the DEFAULT_RECONNECTION_TIME_VALUE value in nsEventSource.cpp-name:dom.serverEvents.defaultReconnectionTimetype:RelaxedAtomicUint32value:5000# in millisecondsmirror:always# Whether automatic storage access granting heuristics should be turned on.-name:dom.storage_access.auto_grantstype:boolvalue:truemirror:always-name:dom.storage_access.auto_grants.delayedtype:boolvalue:truemirror:always# Whether to exclude third-party trackers from Storage Access API auto grants.-name:dom.storage_access.auto_grants.exclude_third_party_trackerstype:boolvalue:truemirror:always# Storage-access API.-name:dom.storage_access.enabledtype:boolvalue:truemirror:always# Forward-Declared Storage-access API.-name:dom.storage_access.forward_declared.enabledtype:boolvalue:falsemirror:always# How long the Forward-Declared Storage-access API allows between pair requests# in seconds-name:dom.storage_access.forward_declared.lifetimetype:uint32_tvalue:15 * 60mirror: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_grantstype:int32_tvalue:5mirror:always-name:dom.storage_access.frame_onlytype:boolvalue:truemirror:always# Only grant storage access to secure contexts.-name:dom.storage_access.dont_grant_insecure_contextstype:RelaxedAtomicBoolvalue:truemirror:always# Whether the File System API is enabled-name:dom.fs.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Whether the WritableFileStream is enabled or disabled.-name:dom.fs.writable_file_stream.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# A pref that is used to enable testing features.-name:dom.fs.testingtype:SequentiallyConsistentAtomicBoolvalue:falsemirror:always# A pref that is used to slow down database initialization for testing purposes.-name:dom.fs.databaseInitialization.pauseOnIOThreadMstype:RelaxedAtomicUint32value:0mirror: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_quotatype: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 * 1024mirror:always# Per-site quota for legacy LocalStorage implementation.-name:dom.storage.default_site_quotatype:RelaxedAtomicUint32value:25 * 1024mirror:always# Whether or not the unsupported legacy implemenation should be enabled. Please# don't advertise this pref as a way for disabling LSNG. This pref is intended# for internal testing only and will be removed in near future. Accidental# disabling of LSNG can lead to a data loss in a combination with disabled# shadow writes. Disabling of shadow writes is the initial step towards# removing legacy implementation and will be done soon.-name:dom.storage.enable_unsupported_legacy_implementationtype:RelaxedAtomicBoolvalue:falsemirror:alwaysdo_not_use_directly:true# Whether the migration from unsupported legacy implementation is enabled.-name:dom.storage.enable_migration_from_unsupported_legacy_implementationtype:RelaxedAtomicBoolvalue:falsemirror:always# The amount of snapshot peak usage which is attempted to be pre-incremented# during snapshot creation.-name:dom.storage.snapshot_peak_usage.initial_preincrementtype:RelaxedAtomicUint32value:16384mirror:always# The amount of snapshot peak usage which is attempted to be pre-incremented# during snapshot creation if the LocalStorage usage was already close to the# limit (a fallback for dom.storage.snapshot_peak_usage.initial_preincrement).-name:dom.storage.snapshot_peak_usage.reduced_initial_preincrementtype:RelaxedAtomicUint32value:4096mirror:always# The amount of snapshot peak usage which is attempted to be pre-incremented# beyond the specific values which are subsequently requested after snapshot# creation.-name:dom.storage.snapshot_peak_usage.gradual_preincrementtype:RelaxedAtomicUint32value:4096mirror:always# The amount of snapshot peak usage which is attempted to be pre-incremented# beyond the specific values which are subsequently requested after snapshot# creation if the LocalStorage total usage was already close to the limit# (a fallback for dom.storage.snapshot_peak_usage.gradual_preincrement).-name:dom.storage.snapshot_peak_usage.reduced_gradual_preincrementtype:RelaxedAtomicUint32value:1024mirror:always# How long between a snapshot becomes idle and when we actually finish the# snapshot. This preference is only used when "dom.storage.snapshot_reusing"# is true.-name:dom.storage.snapshot_idle_timeout_mstype:uint32_tvalue:5000mirror:always# Is support for Storage test APIs enabled?-name:dom.storage.testingtype:SequentiallyConsistentAtomicBoolvalue:falsemirror:always# A pref that is used to slow down database initialization for testing purposes.-name:dom.storage.databaseInitialization.pauseOnIOThreadMstype:RelaxedAtomicUint32value:0mirror:always# A pref that is used to slow down request finalization for testing purposes.-name:dom.storage.requestFinalization.pauseOnDOMFileThreadMstype:RelaxedAtomicUint32value:0mirror:always# This enables the SVGPathSegment APIs-name:dom.svg.pathSegment.enabledtype:boolvalue:truemirror:always# For area and anchor elements with target=_blank and no rel set to# opener/noopener.-name:dom.targetBlankNoOpener.enabledtype:boolvalue:truemirror:always# Is support for Selection.GetRangesForInterval enabled?-name:dom.testing.selection.GetRangesForIntervaltype:boolvalue:falsemirror:always-name:dom.testing.structuredclonetester.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# To enable TestUtils interface on WPT-name:dom.testing.testutils.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always-name:dom.hidden_until_found.enabledtype:boolvalue:truemirror:always-name:dom.text_fragments.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true-name:dom.text_fragments.create_text_fragment.enabledtype:boolvalue:@IS_NIGHTLY_BUILD@mirror:always-name:dom.text_fragments.create_text_fragment.timeout_secondstype:uint32_tvalue:5mirror:always-name:dom.text_fragments.create_text_fragment.exact_match_max_lengthtype:uint32_tvalue:200mirror:always-name:dom.textMetrics.actualBoundingBox.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:dom.textMetrics.baselines.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:dom.textMetrics.emHeight.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:dom.textMetrics.fontBoundingBox.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Time (in ms) that it takes to regenerate 1ms.-name:dom.timeout.background_budget_regeneration_ratetype:RelaxedAtomicInt32value:100mirror:always# Time (in ms) that it takes to regenerate 1ms.-name:dom.timeout.foreground_budget_regeneration_ratetype:RelaxedAtomicInt32value:1mirror:always# Maximum value (in ms) for the background budget. Only valid for# values greater than 0.-name:dom.timeout.background_throttling_max_budgettype:RelaxedAtomicInt32value:50mirror:always# Maximum value (in ms) for the foreground budget. Only valid for# values greater than 0.-name:dom.timeout.foreground_throttling_max_budgettype:RelaxedAtomicInt32value:-1mirror:always# The maximum amount a timeout can be delayed by budget throttling.-name:dom.timeout.budget_throttling_max_delaytype:RelaxedAtomicInt32value:15000mirror:always# Turn on budget throttling by default.-name:dom.timeout.enable_budget_timer_throttlingtype:RelaxedAtomicBoolvalue:truemirror:always# Should we defer timeouts and intervals while loading a page. Released# on Idle or when the page is loaded.# A URI list in dom.timeout.defer_during_load.force-disable can override this# and disable this optimization for a site.-name:dom.timeout.defer_during_loadtype:boolvalue:truemirror:always# Sites we shouldn't defer timeouts and intervals while loading a page.# comma-separated list, see IsURIInPrefList() for format details-name:dom.timeout.defer_during_load.force-disabletype:Stringvalue:>-*.usps.com,*.nvidia.com,*.fedex.com,*.msci.com,*.the-saleroom.commirror:never# 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_mstype:RelaxedAtomicUint32value:4mirror:always# Maximum deferral time for setTimeout/Interval in milliseconds-name:dom.timeout.max_idle_defer_mstype:uint32_tvalue:10*1000mirror:always# Delay in ms from document load until we start throttling background timeouts.-name:dom.timeout.throttling_delaytype:RelaxedAtomicInt32value:30000mirror:always# UDPSocket API-name:dom.udpsocket.enabledtype:boolvalue:falsemirror:always# Whether to dump worker use counters-name:dom.use_counters.dump.workertype:RelaxedAtomicBoolvalue:falsemirror:always# Whether to dump document use counters-name:dom.use_counters.dump.documenttype:boolvalue:falsemirror:always# Whether to dump page use counters-name:dom.use_counters.dump.pagetype:boolvalue:falsemirror:always# Time limit, in milliseconds, for user gesture transient activation.-name:dom.user_activation.transient.timeouttype:uint32_tvalue:5000mirror:always# Whether to treat the clicks on scrollbars as user interaction with web content.-name:dom.user_activation.ignore_scrollbarstype:boolvalue:truemirror:always# Whether to shim a Components object on untrusted windows.-name:dom.use_components_shimtype:boolvalue:@IS_NOT_NIGHTLY_BUILD@mirror:always-name:dom.vibrator.enabledtype:boolvalue:falsemirror:always-name:dom.vibrator.max_vibrate_mstype:RelaxedAtomicUint32value:10000mirror:always-name:dom.vibrator.max_vibrate_list_lentype:RelaxedAtomicUint32value:128mirror:always# Is support for View Transitions Level 1 enabled?-name:dom.viewTransitions.enabledtype:RelaxedAtomicBoolvalue:@IS_NIGHTLY_BUILD@mirror:alwaysrust:true# Timeout for view transitions.# TODO(emilio): Figure out the right time-out, Blink uses between 4 and 15# seconds.-name:dom.viewTransitions.timeout-mstype:uint32_tvalue:10000mirror:always# Whether view transitions remain active indefinitely. Useful for debugging.-name:dom.viewTransitions.remain-activetype:boolvalue:falsemirror:always# Is support for WebVR APIs enabled?# Disabled everywhere, but not removed.-name:dom.vr.enabledtype:RelaxedAtomicBoolvalue:falsemirror: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# navigator.xr.isSessionSupported to always report that immersive-vr# is supported.-name:dom.vr.always_support_vrtype:RelaxedAtomicBoolvalue:falsemirror: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# navigator.xr.isSessionSupported to always report that immersive-ar# is supported.-name:dom.vr.always_support_artype:RelaxedAtomicBoolvalue:falsemirror: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.enabledtype:RelaxedAtomicBoolvalue:falsemirror: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.intervaltype:RelaxedAtomicInt32value:1000mirror:always# The threshold value of trigger inputs for VR controllers.-name:dom.vr.controller_trigger_thresholdtype:AtomicFloatvalue:0.1fmirror: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.intervaltype:RelaxedAtomicInt32value:5000mirror: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.rafMaxDurationtype:RelaxedAtomicUint32value:50mirror: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.timeouttype:RelaxedAtomicInt32value:60000mirror: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.timeouttype:RelaxedAtomicInt32value:10000mirror: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.timeouttype:RelaxedAtomicInt32value:5000mirror: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.timeouttype:RelaxedAtomicInt32value:5000mirror:always# Oculus device-name:dom.vr.oculus.enabledtype: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#endifmirror: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.enabledtype:RelaxedAtomicBoolvalue:truemirror: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.timeouttype:RelaxedAtomicInt32value:500mirror:always# OpenVR device-name:dom.vr.openvr.enabledtype: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#endifmirror:always# OSVR device-name:dom.vr.osvr.enabledtype:RelaxedAtomicBoolvalue:falsemirror: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.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Enable a separate process for VR module.-name:dom.vr.process.enabledtype:bool#if defined(XP_WIN)value:true#elsevalue:false#endifmirror:once-name:dom.vr.process.startup_timeout_mstype:int32_tvalue:5000mirror:once# Puppet device, used for simulating VR hardware within tests and dev tools.-name:dom.vr.puppet.enabledtype:RelaxedAtomicBoolvalue:falsemirror: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-gesturetype:RelaxedAtomicBoolvalue:truemirror:always# Is support for WebXR APIs enabled?-name:dom.vr.webxr.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Points in the native bounds geometry are required to be quantized# sufficiently to prevent fingerprinting. The WebXR spec suggests# quantizing to the nearest 5 centimeters.-name:dom.vr.webxr.quantizationtype:AtomicFloatvalue:0.05fmirror:always#ifdef XP_WIN# Control firing WidgetMouseEvent by handling Windows pointer messages or# mouse messages.-name:dom.w3c_pointer_events.dispatch_by_pointer_messagestype:boolvalue:truemirror:always# Control consuming WM_POINTER for touch pointers instead of WM_TOUCH-name:dom.w3c_pointer_events.dispatch_by_pointer_messages.touchtype:boolvalue:falsemirror:always# Control whether to fire WidgetTouchEvent from pen pointers for APZ to handle scrolling.-name:dom.w3c_pointer_events.scroll_by_pen.enabledtype:boolvalue:truemirror:always#endif# If the value is >= 0, it will be used for max touch points in child processes.-name:dom.maxtouchpoints.testing.valuetype:int32_tvalue:-1mirror:always# Maximum value of navigator.hardwareConcurrency.-name:dom.maxHardwareConcurrencytype:RelaxedAtomicUint32value:128mirror:always# W3C pointer events draft.-name:dom.w3c_pointer_events.implicit_capturetype:boolvalue:truemirror:always-name:dom.w3c_pointer_events.getcoalescedevents_only_in_securecontexttype:boolvalue:@IS_NIGHTLY_BUILD@mirror:always# `click` event target is defined as overridden by pointer capture target in# Pointer Events. Set this to true if we should conform to it. Otherwise,# consider the target from the pointer position, set this to false.-name:dom.w3c_pointer_events.dispatch_click_on_pointer_capturing_elementtype:boolvalue:truemirror:always# If `click` event is caused by a tap, the target should not be the target of# the preceding `pointerup`. This is compatible with Chrome 136.-name:dom.w3c_pointer_events.dispatch_click_on_pointer_capturing_element.except_touchtype:boolvalue:truemirror: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.enabledtype:boolvalue:@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.enabledtype:int32_t#if defined(XP_MACOSX)value:0#elsevalue:2#endifmirror:always# Is support for the Web Audio API enabled?-name:dom.webaudio.enabledtype:boolvalue:truemirror:always-name:dom.webkitBlink.dirPicker.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Whether allowing selection across the boundary# between shadow DOM and light DOM.# This is based on https://github.com/mfreed7/shadow-dom-selection-name:dom.shadowdom.selection_across_boundary.enabledtype:boolvalue:truemirror:always# Mimic Chrome's window.getSelection().toString() behaviour-name:dom.selection.mimic_chrome_tostring.enabledtype:boolvalue:truemirror:always# When this pref is enabled:# - Shadow DOM is not pierced by default anymore# - The method accepts optional CaretPositionFromPointOptions to allow piercing# certain ShadowRoots## https://drafts.csswg.org/cssom-view/#dom-document-caretpositionfrompoint-name:dom.shadowdom.new_caretPositionFromPoint_behavior.enabledtype:boolvalue:@IS_NIGHTLY_BUILD@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_usagetype:boolvalue:falsemirror:always# Is the constructed flag error check disabled during adoptedStyleSheets setter?# https://github.com/w3c/csswg-drafts/issues/10013-name:dom.webcomponents.lift-adoptedstylesheets-restriction.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Is support for the Web GPU API enabled?-name:dom.webgpu.enabledtype:RelaxedAtomicBool#ifdef XP_WINvalue:true#elsevalue:@IS_EARLY_BETA_OR_EARLIER@#endifmirror:always# Is support for the Web GPU API enabled on service workers?-name:dom.webgpu.service-workers.enabledtype:RelaxedAtomicBoolvalue:@IS_EARLY_BETA_OR_EARLIER@mirror:always# Comma-separated list of wgpu backend names to permit in WebGPU adapters.## If non-empty, this is parsed by `wgpu_core::instance::parse_backends_from_comma_list` to# produce a `wgpu_types::Backends` bitset used to create a `wgpu_core::hub::Global`. As of# 2023-3-22, recognized names are:## "vulkan" | "vk" => Backends::VULKAN,# "dx12" | "d3d12" => Backends::DX12,# "dx11" | "d3d11" => Backends::DX11,# "metal" | "mtl" => Backends::METAL,# "opengl" | "gles" | "gl" => Backends::GL,# "webgpu" => Backends::BROWSER_WEBGPU,-name:dom.webgpu.wgpu-backendtype:DataMutexStringvalue:""mirror:alwaysrust:true-name:dom.webgpu.allow-present-without-readbacktype:RelaxedAtomicBool#if defined(XP_WIN) || defined(XP_MACOSX) || defined(XP_LINUX) && !defined(ANDROID)value:true#elsevalue:false#endifmirror:always# For testing purposes, crash if we don't get a hardware adapter.-name:dom.webgpu.testing.assert-hardware-adaptertype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Whether to pass labels to the hardware abstraction layer. This is only useful when# inspecting a WebGPU workload in a GPU debugging tool like renderdoc. Enabling it# exposes poorly tested driver API surfaces so it should not be enabled by default.-name:dom.webgpu.hal-labelstype:boolvalue:falsemirror:oncerust:true# Is support for HTMLInputElement.webkitEntries enabled?-name:dom.webkitBlink.filesystem.enabledtype:boolvalue:truemirror:always# Whether the WebMIDI API is enabled-name:dom.webmidi.enabledtype:boolvalue:@IS_NOT_MOBILE@mirror:always# midi permission is addon-gated-name:dom.webmidi.gatedtype:boolvalue:truemirror:always-name:dom.webnotifications.allowcrossoriginiframetype:RelaxedAtomicBoolvalue:falsemirror:always-name:dom.webnotifications.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:dom.webnotifications.privateBrowsing.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:dom.webnotifications.requireuserinteractiontype:RelaxedAtomicBoolvalue:truemirror:always-name:dom.webnotifications.requireinteraction.enabledtype:RelaxedAtomicBool#if defined(XP_WIN) || defined(XP_LINUX)value:true#elsevalue:@IS_NIGHTLY_BUILD@#endifmirror:always-name:dom.webnotifications.silent.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:dom.webnotifications.vibrate.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always-name:dom.webnotifications.actions.enabledtype:RelaxedAtomicBoolvalue:@IS_NIGHTLY_BUILD@mirror:always# Setting log level for notification modules.# The value follows the enum ConsoleLogLevel in ConsoleInstance.webidl.-name:dom.webnotifications.logleveltype:Stringvalue:Errormirror:never# Allow notificationclick to open window only during the limited timeframe.-name:dom.webnotifications.disable_open_click_delaytype:RelaxedAtomicUint32#if defined(ANDROID)# Allow service workers to open windows for a longer period after a notification# click on mobile. This is to account for some devices being quite slow (bug 1409761)value:5000#elsevalue:1000#endifmirror:always# Always treat icon URLs as UTF8 instead of document charset-name:dom.webnotifications.icon_encoding_utf8.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Forcing all notification requests do storage cleanup.-name:dom.webnotifications.testing.force_storage_cleanup.enabledtype:boolvalue:falsemirror:always-name:dom.worker.canceling.timeoutMillisecondstype:RelaxedAtomicUint32value:30000# 30 secondsmirror:always# Enables the dispatching of console log events from worker threads to the# main-thread.-name:dom.worker.console.dispatch_events_to_main_threadtype:RelaxedAtomicBoolvalue:truemirror:always-name:dom.workers.testing.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# WebIDL test prefs.-name:dom.webidl.test1type:boolvalue:truemirror:always-name:dom.webidl.test2type:boolvalue:truemirror:always# WebShare API - exposes navigator.share()-name:dom.webshare.enabledtype:bool#ifdef XP_WINvalue:@IS_EARLY_BETA_OR_EARLIER@#elsevalue:false#endifmirror:always# WebShare API - allows WebShare without user interaction (for tests only).-name:dom.webshare.requireinteractiontype:boolvalue:truemirror:always# Hide the confirm dialog when a POST request is reloaded.-name:dom.confirm_repost.testing.always_accepttype:boolvalue:falsemirror:always# Whether we should suspend inactive tabs or not-name:dom.suspend_inactive.enabledtype:boolvalue:@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_timetype:int32_tvalue:10mirror: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_inputtype: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#elsevalue:true#endifmirror:always# Controls if a content script will be aborted on child process shutdown.-name:dom.abort_script_on_child_shutdowntype:boolvalue:truemirror:always-name:dom.max_chrome_script_run_timetype:int32_tvalue:0mirror:always-name:dom.max_ext_content_script_run_timetype:int32_tvalue:5mirror:always# Let Resize Observer report the size of all fragments, and not just the# first one, as per CSSWG resolution:# https://github.com/w3c/csswg-drafts/issues/3673#issuecomment-467221565-name:dom.resize_observer.support_fragmentstype:boolvalue:falsemirror:always# Whether allowing using <tab> to move focus to root elements-name:dom.disable_tab_focus_to_root_elementtype:boolvalue:truemirror:always# Whether or not the `Origin-Agent-Cluster` HTTP header is enabled.-name:dom.origin_agent_cluster.enabledtype:boolvalue:truemirror:always# Whether or not agent clusters are origin-keyed by default, blocking the use of# `document.domain`.-name:dom.origin_agent_cluster.defaulttype:boolvalue:falsemirror:always# Whether to make the document name getter follow the spec.-name:dom.document.name_getter_follow_spec.enabledtype:boolvalue:truemirror:always# Whether to block the shadowing of known document properties.-name:dom.document.name_getter_prevent_shadowing.enabledtype:boolvalue:@IS_NIGHTLY_BUILD@mirror:always#---------------------------------------------------------------------------# Prefs starting with "editor"#---------------------------------------------------------------------------# Default background color of HTML editor. This is referred only when# "editor.use_custom_colors" is set to `true`.-name:editor.background_colortype:Stringvalue:"#FFFFFF"mirror:never# 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_delaytype:int32_tvalue:-1mirror: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_delaytype:boolvalue:falsemirror: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.pasteNewlinestype:int32_tvalue:2mirror:always# Whether user pastes should be truncated.-name:editor.truncate_user_pastestype:boolvalue:truemirror:always# When this is set to `true`, "editor.background_color" must be set, then,# the value is treated as default background color of the HTML editor.# If `false` and "browser.display.use_system_colors" is set to `true`,# "browser.display.background_color" is used instead.# Otherwise, no color is used as default background color.# This pref is for Thunderbird and SeaMonkey.-name:editor.use_custom_colorstype:boolvalue:falsemirror:always# If this is set to `true`, CSS mode of style editor is enabled by default# unless it's a mail editor.# This pref is for Thunderbird and SeaMonkey.-name:editor.use_csstype:boolvalue:falsemirror: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_defaulttype:boolvalue:falsemirror:always-name:editor.inline_table_editing.enabled_by_defaulttype:boolvalue:falsemirror:always-name:editor.positioning.enabled_by_defaulttype:boolvalue:falsemirror:always# Controls if a double click word selection also deletes one adjacent whitespace# (if feasible). This mimics native behaviour on MacOS.-name:editor.word_select.delete_space_after_doubleclick_selectiontype:bool#ifdef XP_MACOSXvalue:true#elsevalue:false#endifmirror:always#---------------------------------------------------------------------------# Prefs starting with "extensions."#---------------------------------------------------------------------------# Pref that enforces the use of web_accessible_resources for content loads.# This behavior is default for MV3. The pref controls this for MV2.-name:extensions.content_web_accessible.enabledtype:boolvalue:falsemirror:always# Whether the InstallTrigger implementation should be enabled (or hidden and# none of its methods available).-name:extensions.InstallTriggerImpl.enabledtype:boolvalue:falsemirror:always# Whether the InstallTrigger implementation should be enabled (or completely# hidden), separate from InstallTriggerImpl because InstallTrigger is improperly# used also for UA detection.-name:extensions.InstallTrigger.enabledtype:boolvalue:truemirror:always# Whether the background.service_worker in the extension manifest.json file# is enabled.# all.js locks the pref to false when MOZ_WEBEXT_WEBIDL_ENABLED is false.-name:extensions.backgroundServiceWorker.enabledtype:boolvalue:falsemirror:once# Maximum number of misspelled words in a text.-name:extensions.spellcheck.inline.max-misspellingstype:int32_tvalue:500mirror:always# 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.allowedtype:RelaxedAtomicBoolvalue:falsemirror:always# When true, content scripts of MV2 extensions can run in blob:-documents without# requiring match_origin_as_fallback to be set, to revert bug 1897113.# TODO bug 1899134: Remove this pref.-name:extensions.script_blob_without_match_origin_as_fallbacktype:boolvalue:falsemirror:always# Legacy behavior on filterResponse calls on intercepted sw script requests.-name:extensions.filterResponseServiceWorkerScript.disabledtype:boolvalue:falsemirror:always# This pref governs whether we run webextensions in a separate process (true)# or the parent/main process (false)-name:extensions.webextensions.remotetype:RelaxedAtomicBoolvalue:falsemirror:always# Whether to expose the MockExtensionAPI test interface in tests.# The interface MockExtensionAPI doesn't represent a real extension API,# it is only available in test and does include a series of cases useful# to test the API request handling without tying the unit test to a# specific WebExtensions API.-name:extensions.webidl-api.expose_mock_interfacetype:RelaxedAtomicBoolvalue:falsemirror:always# Whether to allow acccess to AddonManager to developer sites for testing# NOTE: We'd like this to be a "hidden" pref once StaticPrefs supports it.-name:extensions.webapi.testingtype:RelaxedAtomicBoolvalue:falsemirror:always# Automation-only pref to allow AddonManager over insecure protocols.# NOTE: We'd like this to be a "hidden" pref once StaticPrefs supports it.-name:extensions.webapi.testing.httptype:RelaxedAtomicBoolvalue:falsemirror:always# Whether to expose the AddonManager web API.-name:extensions.webapi.enabledtype:RelaxedAtomicBoolvalue:@IS_NOT_ANDROID@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# whether fission is enabled by default.-name:fission.autostarttype:boolvalue:@IS_NOT_MOBILE@mirror:never# Disable storing the session history in the parent process, and accessing it# over IPC from the child processes.-name:fission.disableSessionHistoryInParenttype:bool#if defined(MOZ_WIDGET_ANDROID) && !defined(NIGHTLY_BUILD)value:true#elsevalue:false#endifmirror:oncedo_not_use_directly:true# If session history is stored in the parent process, enable bfcache for it.-name:fission.bfcacheInParenttype:boolvalue:truemirror:alwaysdo_not_use_directly:true# Allow renaming of processes from Private Windows to the eTLD+1 on nightly# Setting this pref creates a privacy leak, but helps greatly with# debugging.-name:fission.processPrivateWindowSiteNamestype:boolvalue:falsemirror:always# Allow renaming of process names to the eTLD+1 on all versions, NOT# including processes from Private Windows# Setting this pref creates a privacy leak, but helps greatly with# debugging-name:fission.processSiteNamestype:boolvalue:falsemirror:always# Allow showing of current profile along with process names, NOT# including processes from Private Windows# Setting this pref creates a privacy leak, but helps greatly with# debugging-name:fission.processProfileNametype:boolvalue:falsemirror:always# The strategy used to control how sites are isolated into separate processes# when Fisison is enabled. This pref has no effect if Fission is disabled.# See the `WebContentIsolationStrategy` enum in `ProcessIsolation.cpp`.-name:fission.webContentIsolationStrategytype:uint32_tvalue:1mirror:always# Time in seconds before a site loaded with the Cross-Origin-Opener-Policy# header is no longer considered high-value and isolated in the "highValueCOOP"# configuration.-name:fission.highValue.coop.expirationtype:uint32_tvalue:2592000# 30 days (in seconds)mirror:always# Time in seconds before a site are considered high-value by the login detection# service is no longer considered high-value and isolated in the "highValueHasSavedLogin"# or "highValueIsLoggedIn" configuration.-name:fission.highValue.login.expirationtype:uint32_tvalue:2592000# 30 days (in seconds)mirror:always# If true, capture login attemp, and add "highValueIsLoggedIn" permission to# the permission manager no matter whether fission is enabled and# WebContentIsolationStrateg is set to IsolateHighvalue.-name:fission.highValue.login.monitortype:boolvalue:@IS_ANDROID@mirror:always# If true, do not send blocklisted preference values to the subprocess-name:fission.omitBlocklistedPrefsInSubprocessestype:RelaxedAtomicBoolvalue:truemirror:always# If true, crash when a blocklisted preference is accessed in a subprocess-name:fission.enforceBlocklistedPrefsInSubprocessestype:RelaxedAtomicBool#ifdef DEBUGvalue:true#elsevalue:false#endifmirror: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.emPerLinetype:uint32_tvalue:0mirror: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.minTwipstype:uint32_tvalue:0mirror: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.forceEnabledtype:boolvalue:falsemirror: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.disabledInMasterProcesstype:boolvalue:falsemirror: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.mappingIntercepttype:int32_tvalue:1mirror: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.lineThresholdtype:uint32_tvalue:400mirror: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.maxRatiotype:uint32_tvalue:0mirror:always#---------------------------------------------------------------------------# Prefs starting with "full-screen-api."#----------------------------------------------------------------------------name:full-screen-api.enabledtype:boolvalue:truemirror:always-name:full-screen-api.allow-trusted-requests-onlytype:boolvalue:truemirror:always-name:full-screen-api.mouse-event-allow-left-button-onlytype:boolvalue:truemirror:always-name:full-screen-api.exit-on.windowOpentype:boolvalue:truemirror:always-name:full-screen-api.exit-on.windowRaisetype:boolvalue:truemirror:always-name:full-screen-api.pointer-lock.enabledtype:boolvalue:truemirror:always# whether to prevent the top level widget from going fullscreen-name:full-screen-api.ignore-widgetstype:boolvalue:falsemirror: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.enabledtype:bool#ifdef FUZZING_SNAPSHOTvalue:true#elsevalue:false#endifmirror:always-name:fuzzing.necko.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always-name:fuzzing.necko.http3type:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true#ifdef FUZZING_SNAPSHOT-name:fuzzing.snapshot.enabledtype:RelaxedAtomicBoolvalue:truemirror:always#endif# This configures a virtual authenticator for WebAuthn. The value encodes the# arguments to the WebDriver "Add Virtual Authenticator" extension command.# Bits 0, 1, 2, and 3 encode "is_user_verified", "is_user_consenting",# "has_user_verification", and "has_resident_key" in that order. Bit 5 encodes# the transport, either "usb" (0) or "internal" (1). Bits 6 and 7 encode the# protocol, either "ctap1/u2f" (1), "ctap2" (2), or "ctap2_1" (3). Note that# the valid protocol values are non-zero---an authenticator will not be# configured if this pref is set to zero. Changing this pref requires# a restart.-name:fuzzing.webauthn.authenticator_configtype:RelaxedAtomicUint32value:0mirror:alwaysrust:true#endif#---------------------------------------------------------------------------# Prefs starting with "general."#----------------------------------------------------------------------------name:general.aboutConfig.enabletype:boolvalue:truemirror: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_limittype:uint32_tvalue:20mirror:always-name:general.smoothScrolltype:RelaxedAtomicBoolvalue:truemirror:always# This pref and general.smoothScroll.stopDecelerationWeighting determine# the timing function.-name:general.smoothScroll.currentVelocityWeightingtype:AtomicFloatvalue:0.25mirror: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.durationToIntervalRatiotype:RelaxedAtomicInt32value:200mirror:always-name:general.smoothScroll.linestype:RelaxedAtomicBoolvalue:truemirror:always-name:general.smoothScroll.lines.durationMaxMStype:RelaxedAtomicInt32value:150mirror:always-name:general.smoothScroll.lines.durationMinMStype:RelaxedAtomicInt32value:150mirror:always-name:general.smoothScroll.mouseWheeltype:RelaxedAtomicBoolvalue:truemirror:always-name:general.smoothScroll.mouseWheel.durationMaxMStype:RelaxedAtomicInt32value:200mirror:always-name:general.smoothScroll.mouseWheel.durationMinMStype:RelaxedAtomicInt32value:50mirror:always-name:general.smoothScroll.othertype:RelaxedAtomicBoolvalue:truemirror:always-name:general.smoothScroll.other.durationMaxMStype:RelaxedAtomicInt32value:150mirror:always-name:general.smoothScroll.other.durationMinMStype:RelaxedAtomicInt32value:150mirror:always-name:general.smoothScroll.pagestype:RelaxedAtomicBoolvalue:truemirror:always-name:general.smoothScroll.pages.durationMaxMStype:RelaxedAtomicInt32value:150mirror:always-name:general.smoothScroll.pages.durationMinMStype:RelaxedAtomicInt32value:150mirror:always-name:general.smoothScroll.scrollbarstype:RelaxedAtomicBoolvalue:truemirror:always-name:general.smoothScroll.scrollbars.durationMaxMStype:RelaxedAtomicInt32value:150mirror:always-name:general.smoothScroll.scrollbars.durationMinMStype:RelaxedAtomicInt32value:150mirror:always-name:general.smoothScroll.pixelstype:RelaxedAtomicBoolvalue:truemirror:always-name:general.smoothScroll.pixels.durationMaxMStype:RelaxedAtomicInt32value:150mirror:always-name:general.smoothScroll.pixels.durationMinMStype:RelaxedAtomicInt32value:150mirror:always# This pref and general.smoothScroll.currentVelocityWeighting determine# the timing function.-name:general.smoothScroll.stopDecelerationWeightingtype:AtomicFloatvalue:0.4fmirror:always# Alternative smooth scroll physics. ("MSD" = Mass-Spring-Damper)-name:general.smoothScroll.msdPhysics.enabledtype:RelaxedAtomicBoolvalue:@IS_NIGHTLY_BUILD@mirror:always-name:general.smoothScroll.msdPhysics.continuousMotionMaxDeltaMStype:RelaxedAtomicInt32value:120mirror:always-name:general.smoothScroll.msdPhysics.motionBeginSpringConstanttype:RelaxedAtomicInt32value:1250mirror:always-name:general.smoothScroll.msdPhysics.slowdownMinDeltaMStype:RelaxedAtomicInt32value:12mirror:always-name:general.smoothScroll.msdPhysics.slowdownMinDeltaRatiotype:AtomicFloatvalue:1.3fmirror:always-name:general.smoothScroll.msdPhysics.slowdownSpringConstanttype:RelaxedAtomicInt32value:2000mirror:always-name:general.smoothScroll.msdPhysics.regularSpringConstanttype:RelaxedAtomicInt32value:1000mirror:always#---------------------------------------------------------------------------# Prefs starting with "geo."#---------------------------------------------------------------------------# Is support for Navigator.geolocation enabled?-name:geo.enabledtype:boolvalue:truemirror:always# Time, in milliseconds, to wait for the location provider to spin up.-name:geo.timeouttype:int32_tvalue:6000mirror:always#ifdef MOZ_ENABLE_DBUS# Whether to use Geoclue location provider (if available on the system).-name:geo.provider.use_geocluetype:boolvalue:truemirror:always# Whether to always provide high location accuracy, even if site# doesn't actually request this level of accuracy.# Almost no site correctly requests high accuracy so force it by default# for compatibility with other geolocation providers.-name:geo.provider.geoclue.always_high_accuracytype:boolvalue:truemirror:always# Time in milliseconds after which geoclue will try to fallback to MLS if no# location is received after successful start.-name:geo.provider.geoclue.mls_fallback_timeout_mstype:uint32_tvalue:5000mirror:always#endif# If true, open system preferences for the user when geolocation is requested# by the user but OS geolocation permission is not available.-name:geo.prompt.open_system_prefstype:boolvalue:truemirror:always#---------------------------------------------------------------------------# Prefs starting with "gfx."#---------------------------------------------------------------------------# Allow 24-bit colour when the hardware supports it.-name:gfx.android.rgb16.forcetype:boolvalue:falsemirror:once-name:gfx.apitrace.enabledtype:boolvalue:falsemirror:once-name:gfx.blithelper.precisiontype:RelaxedAtomicUint32value:2# { 0: lowp, 1: mediump, 2: highp }mirror:always-name:gfx.blithelper.lut-size.rgb.btype:RelaxedAtomicUint32value:15mirror:always-name:gfx.blithelper.lut-size.rgb.gtype:RelaxedAtomicUint32value:31mirror:always-name:gfx.blithelper.lut-size.rgb.rtype:RelaxedAtomicUint32value:31mirror:always-name:gfx.blithelper.lut-size.ycbcr.cbtype:RelaxedAtomicUint32value:15mirror:always-name:gfx.blithelper.lut-size.ycbcr.crtype:RelaxedAtomicUint32value:31mirror:always-name:gfx.blithelper.lut-size.ycbcr.ytype:RelaxedAtomicUint32value:31mirror:always# Nb: we ignore this pref on release and beta.-name:gfx.blocklist.alltype:int32_tvalue:0mirror:once#if defined(XP_DARWIN)-name:gfx.cairo_quartz_cg_layer.enabledtype:boolvalue:truemirror:always#endif-name:gfx.canvas.acceleratedtype:bool#if defined(XP_MACOSX) || defined(XP_LINUX) && !defined(ANDROID)value:true#elif defined(MOZ_WIDGET_ANDROID)value:true#elif defined(XP_WIN)value:true#elsevalue:false#endifmirror:always# Whether to attempt to enable Accelerated Canvas2D regardless of blocklisting.-name:gfx.canvas.accelerated.force-enabledtype:boolvalue:falsemirror:always-name:gfx.canvas.accelerated.async-presenttype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.canvas.accelerated.cache-itemstype:RelaxedAtomicUint32value:8192mirror:always-name:gfx.canvas.accelerated.cache-sizetype:RelaxedAtomicUint32value:256mirror:always-name:gfx.canvas.accelerated.reserve-empty-cachetype:RelaxedAtomicUint32value:36mirror:always-name:gfx.canvas.accelerated.max-draw-target-counttype:RelaxedAtomicUint32value:200mirror:always-name:gfx.canvas.accelerated.max-sizetype:RelaxedAtomicInt32value:8192mirror:always-name:gfx.canvas.accelerated.min-sizetype:RelaxedAtomicInt32value:128mirror:always-name:gfx.canvas.accelerated.max-surface-sizetype:RelaxedAtomicUint32value:5280mirror:always-name:gfx.canvas.accelerated.shared-page-sizetype:RelaxedAtomicUint32value:1024mirror:always# The minimum number of frames before acting on performance profile info-name:gfx.canvas.accelerated.profile-framestype:RelaxedAtomicUint32value:10mirror:always# The ratio of failed frames to total frames when to fall back from acceleration-name:gfx.canvas.accelerated.profile-fallback-ratiotype:AtomicFloatvalue:0.3mirror:always# The ratio of cache misses at which to fail a profile frame-name:gfx.canvas.accelerated.profile-cache-miss-ratiotype:AtomicFloatvalue:0.66mirror:always# The maximum size of the GPU path cache in MB.-name:gfx.canvas.accelerated.gpu-path-sizetype:RelaxedAtomicUint32value:4mirror:always# The maximum allowed complexity of a GPU path.-name:gfx.canvas.accelerated.gpu-path-complexitytype:RelaxedAtomicUint32value:4000mirror:always# Whether to accelerate stroked paths by converting them to fill paths.-name:gfx.canvas.accelerated.stroke-to-fill-pathtype:RelaxedAtomicBoolvalue:falsemirror:always# Whether to use aa-stroke to accelerate stroked paths.-name:gfx.canvas.accelerated.aa-stroke.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Draws an indicator if acceleration is used.-name:gfx.canvas.accelerated.debugtype:RelaxedAtomicBoolvalue:falsemirror:always# 0x7fff is the maximum supported xlib surface size and is more than enough for canvases.-name:gfx.canvas.max-sizetype:RelaxedAtomicInt32value:0x7fffmirror:always-name:gfx.canvas.remotetype:bool#if defined(XP_WIN)value:true#elsevalue:false#endifmirror:once-name:gfx.canvas.remote.allow-in-parenttype:boolvalue:falsemirror:once# Whether OffscreenCanvas can use remote canvas-name:gfx.canvas.remote.allow-offscreentype:RelaxedAtomicBoolvalue:truemirror:always# How many worker threads spawned for remote canvas# -1 - Calculate based on processor cores# 0 - No worker threads spawned, will do work on CanvasRenderThread# >0 - Create worker thread pool with given size-name:gfx.canvas.remote.worker-threadstype:int32_t#if defined(XP_WIN)value:-1#elsevalue:0#endifmirror:once# Default size of the shmem buffers used for recording-name:gfx.canvas.remote.default-buffer-sizetype:RelaxedAtomicUint32value:32 * 1024mirror:always# Maximum number of Default size shmem buffers to use-name:gfx.canvas.remote.max_default_bufferstype:RelaxedAtomicUint32value:256mirror:always# How many times to spin before waiting in remote canvas-name:gfx.canvas.remote.max-spin-counttype:RelaxedAtomicUint32value:500mirror:always# How long to wait in milliseconds for the next event while in a transaction-name:gfx.canvas.remote.event-timeout-mstype:RelaxedAtomicUint32value:2mirror:always# How many times we have a spare buffer before we drop one-name:gfx.canvas.remote.drop-buffer-limittype:RelaxedAtomicUint32value:100mirror:always# Delay in milliseconds to drop buffers when there have been no non-empty transactions-name:gfx.canvas.remote.drop-buffer-millisecondstype:RelaxedAtomicUint32value:10000mirror:always-name:gfx.canvas.remote.use-draw-image-fast-pathtype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.canvas.remote.use-draw-image-fast-path-d3dtype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.canvas.remote.recycle-used-data-surfacetype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.canvas.remote.use-canvas-translator-eventtype:boolvalue:truemirror:once-name:gfx.color_management.display_profiletype:DataMutexStringvalue:""mirror:always# But be warned: We cache the result.-name:gfx.color_management.force_srgbtype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.color_management.native_srgbtype:RelaxedAtomicBool#if defined(XP_MACOSX)value:true#elsevalue:false#endifmirror:always-name:gfx.color_management.enablev4type:RelaxedAtomicBoolvalue:truemirror:always# 0 = Off, 1 = Full, 2 = Tagged Images Only.# See CMSMode in gfx/thebes/gfxPlatform.h.-name:gfx.color_management.modetype:RelaxedAtomicInt32value:2mirror:always# The zero default here should match QCMS_INTENT_DEFAULT from qcms.h-name:gfx.color_management.rendering_intenttype:RelaxedAtomicInt32value:0mirror:always-name:gfx.color_management.rec709_gamma_as_srgbtype:RelaxedAtomicBoolvalue:true# Tragic backwards compat.mirror:always-name:gfx.color_management.rec2020_gamma_as_rec709type:RelaxedAtomicBoolvalue:true# Match naive behavior, but hopefully we can stop soon!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-migrationtype:RelaxedAtomicInt32value:1mirror:always-name:gfx.core-animation.tint-opaquetype:RelaxedAtomicBoolvalue:falsemirror:always#ifdef XP_DARWIN# Create specialized video-only layers for video content in# fullscreen windows. Consistently works well on Apple Silicon,# some issues remain on Intel hardware.-name:gfx.core-animation.specialize-videotype:RelaxedAtomicBool#if defined(MOZ_AARCH64) && defined(XP_MACOSX)value:true#elsevalue:false#endifmirror:always#endif#if defined(XP_DARWIN) && defined(NIGHTLY_BUILD)# Spoof the timing of the video sample instead of marking the untimed# sample to be displayed immediately.-name:gfx.core-animation.specialize-video.spoof-timingtype:RelaxedAtomicBoolvalue:falsemirror:always# Check that the sample has a color space and if it doesn't, log that# and supply the default color space from the main display.-name:gfx.core-animation.specialize-video.check-color-spacetype:RelaxedAtomicBoolvalue:falsemirror:always# Log properties of the video surface, buffer, and format.-name:gfx.core-animation.specialize-video.logtype:RelaxedAtomicBoolvalue:falsemirror:always#endif#ifdef XP_DARWIN-name:gfx.core-animation.low-power-telemetry-framestype:int32_tvalue:600mirror:once#endif#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.rtype:AtomicFloatvalue:0.0fmirror:always-name:gfx.compositor.override.clear-color.gtype:AtomicFloatvalue:0.0fmirror:always-name:gfx.compositor.override.clear-color.btype:AtomicFloatvalue:0.0fmirror:always-name:gfx.compositor.override.clear-color.atype:AtomicFloatvalue:0.0fmirror:always#endif # defined(MOZ_WIDGET_ANDROID)-name:gfx.content.always-painttype:RelaxedAtomicBoolvalue:falsemirror:always# Size in megabytes-name:gfx.content.skia-font-cache-sizetype:int32_tvalue:5mirror:once-name:gfx.device-reset.limittype:int32_tvalue:10mirror:once-name:gfx.device-reset.threshold-mstype:int32_tvalue:-1mirror:once# Whether to disable the automatic detection and use of direct2d.-name:gfx.direct2d.disabledtype:boolvalue:truemirror:once# Whether to attempt to enable Direct2D regardless of automatic detection or# blacklisting.-name:gfx.direct2d.force-enabledtype:boolvalue:falsemirror:once-name:gfx.direct2d.target-independent-rasterization.disabledtype:boolvalue:falsemirror:once-name:gfx.direct3d11.reuse-decoder-devicetype:boolvalue:truemirror:once# Enable reuse decoder device even when it is blocked.-name:gfx.direct3d11.reuse-decoder-device-force-enabledtype:boolvalue:falsemirror:once-name:gfx.direct3d11.allow-keyed-mutextype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.direct3d11.use-double-bufferingtype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.direct3d11.enable-debug-layertype:boolvalue:falsemirror:once-name:gfx.direct3d11.break-on-errortype:boolvalue:falsemirror:once-name:gfx.direct3d11.sleep-on-create-devicetype:int32_tvalue:0mirror:once# Rate by which the frame rate is divided. I.e. at a number higher than 1 we# will only refresh every <x> frames.-name:gfx.display.frame-rate-divisortype:RelaxedAtomicInt32value:1mirror:always-name:gfx.display.max-frame-ratetype:RelaxedAtomicInt32value:0mirror:always# Whether to disable downloadable font cache so that behavior is consistently# the uncached load behavior across pages (useful for testing reflow problems)-name:gfx.downloadable_fonts.disable_cachetype:RelaxedAtomicBoolvalue:falsemirror:always# 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_bitmapstype:RelaxedAtomicBoolvalue:falsemirror:always# Whether to validate OpenType variation tables in fonts.-name:gfx.downloadable_fonts.validate_variation_tablestype:RelaxedAtomicBoolvalue:truemirror:always# Whether OTS validation should be applied to OpenType Layout (OTL) tables.# 0 - no validation# 1 - validate (logging errors to console) but drop table without rejecting# font resource if errors are found# 2 (or other) - validate, and reject font if errors are found-name:gfx.downloadable_fonts.otl_validationtype:RelaxedAtomicUint32#if defined(RELEASE_OR_BETA)value:0#elsevalue:1#endifmirror:always-name:gfx.e10s.font-list.sharedtype:boolvalue:truemirror:once# Do we fire a notification about missing fonts, so the front-end can decide# whether to try and do something about it (e.g. download additional fonts)?-name:gfx.missing_fonts.notifytype:RelaxedAtomicBoolvalue:falsemirror:always#if !defined(MOZ_WIDGET_ANDROID)-name:gfx.egl.prefer-gles.enabledtype:bool#if defined(MOZ_WIDGET_GTK) && defined(MOZ_AARCH64)value:true#elsevalue:false#endifmirror:once#endif# [Windows] Whether registry FontSubstitutes entries are used unconditionally,# or only if the original font is not available.#if defined(XP_WIN)-name:gfx.windows-font-substitutes.alwaystype:boolvalue:falsemirror:once#endif-name:gfx.font-list-omt.enabledtype:bool#if defined(XP_MACOSX)value:true#elsevalue:false#endifmirror:once# [Android] OPPO, realme and OnePlus device seem to crash when using Font# Match API. We turn off this feature on these devices. Set true if you want to# turn on it at force.#if defined(MOZ_WIDGET_ANDROID)-name:gfx.font-list.use_font_match_api.force-enabledtype:boolvalue:falsemirror:once#endif# Whether to load fonts (e.g. Twemoji Mozilla) bundled with the application:# -1 - Auto behavior based on OS version (currently, disables loading on# "low-memory" Android devices)# 0 - Skip loading any bundled fonts# 1 - Always load bundled fonts-name:gfx.bundled-fonts.activatetype:int32_tvalue:-1mirror:once-name:gfx.font_loader.delaytype:RelaxedAtomicUint32#if defined(XP_WIN)value:60000#elsevalue:8000#endifmirror:always# Disable antialiasing of Ahem, for use in tests.-name:gfx.font_rendering.ahem_antialias_nonetype:RelaxedAtomicBoolvalue:falsemirror:always#if defined(XP_DARWIN)# Set to true to revert from HarfBuzz AAT shaping to the old Core Text# backend.-name:gfx.font_rendering.coretext.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always#endif-name:gfx.font_rendering.colr_v1.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.font_rendering.opentype_svg.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true-name:gfx.font_rendering.fallback.asynctype:RelaxedAtomicBoolvalue:truemirror:always# whether to always search all font cmaps during system font fallback-name:gfx.font_rendering.fallback.always_use_cmapstype:RelaxedAtomicBoolvalue:falsemirror:always# whether to do font fallback for codepoints with General Category = Unassigned-name:gfx.font_rendering.fallback.unassigned_charstype:RelaxedAtomicBoolvalue:falsemirror:always#ifdef MOZ_WIDGET_GTK-name:gfx.font_rendering.fontconfig.max_generic_substitutionstype:RelaxedAtomicUint32value:3mirror:always#endif#if defined(XP_WIN)# Whether the DirectWrite bold simulation should be used when a bold font-weight# is requested but no bold face available in the family. This renders poorly with# some third-party fonts, so by default we disable it for webfonts and allow it# only with locally-installed fonts.# Values:# 0 - never use DWrite bold simulation; always multi-strike instead# 1 - use DWrite bold for installed fonts, multi-strike for webfont resources# 2 - use DWrite bold for all fonts-name:gfx.font_rendering.directwrite.bold_simulationtype:RelaxedAtomicUint32value:1mirror:always#endif-name:gfx.font_rendering.graphite.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Cache shaped word results-name:gfx.font_rendering.wordcache.charlimittype:RelaxedAtomicUint32value:32mirror:always# Cache shaped word results-name:gfx.font_rendering.wordcache.maxentriestype:RelaxedAtomicUint32value:10000mirror: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.leveltype:RelaxedAtomicInt32value:mozilla::gfx::LOG_DEFAULTmirror:alwaysinclude:mozilla/gfx/LoggingConstants.h-name:gfx.logging.crash.lengthtype:uint32_tvalue:16mirror:once# The maximums here are quite conservative, we can tighten them if problems show up.-name:gfx.logging.texture-usage.enabledtype:boolvalue:falsemirror:once-name:gfx.logging.peak-texture-usage.enabledtype:boolvalue:falsemirror:once-name:gfx.logging.slow-frames.enabledtype:boolvalue:falsemirror:once# Use gfxPlatform::MaxAllocSize instead of the pref directly.-name:gfx.max-alloc-sizetype:int32_tvalue:(int32_t)0x7FFFFFFFmirror:oncedo_not_use_directly:true# Use gfxPlatform::MaxTextureSize instead of the pref directly.-name:gfx.max-texture-sizetype:int32_tvalue:(int32_t)32767mirror:oncedo_not_use_directly:true-name:gfx.offscreencanvas.shared-providertype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.offscreencanvas.snapshot-timeout-mstype:int32_tvalue:10000mirror:always-name:gfx.omta.background-colortype:boolvalue:truemirror:always-name:gfx.partialpresent.forcetype:RelaxedAtomicInt32value:0mirror:always# SwapInterval-name:gfx.swap-interval.glxtype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.swap-interval.egltype:RelaxedAtomicBoolmirror:always#ifdef MOZ_WIDGET_ANDROIDvalue:true#elsevalue:false#endif# 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.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always#ifdef MOZ_X11# Whether to force using GLX over EGL.-name:gfx.x11-egl.force-disabledtype:boolvalue:falsemirror:once# Whether to force using EGL over GLX.-name:gfx.x11-egl.force-enabledtype:boolvalue:falsemirror:once-name:gfx.x11.glx_sgi_video_synctype:boolvalue:falsemirror:once#endif-name:gfx.testing.device-failtype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.testing.device-resettype:RelaxedAtomicInt32value:0mirror:always# Meant to be used for tests only. If greater than 0 then we assert that the# number of active render textures increases by this amount or less.#ifdef DEBUG-name:gfx.testing.assert-render-textures-increasetype:RelaxedAtomicInt32value:0mirror:always#endif-name:gfx.text.disable-aatype:boolvalue:falsemirror:once-name:gfx.text.subpixel-position.force-enabledtype:boolvalue:falsemirror:once-name:gfx.text.subpixel-position.force-disabledtype:boolvalue:falsemirror:once-name:gfx.use-iosurface-texturestype:boolvalue:falsemirror:once-name:gfx.use-mutex-on-presenttype:boolvalue:falsemirror:once# Use SurfaceTextures as preferred backend for TextureClient/Host.-name:gfx.use-surfacetexture-texturestype:boolvalue:falsemirror:once-name:gfx.vsync.compositor.unobserve-counttype:int32_tvalue:10mirror:once-name:gfx.vsync.force-disable-waitforvblanktype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.will-change.ignore-opacitytype:RelaxedAtomicBoolvalue:truemirror:always# Should we override the blocklist to enable WebGPU?-name:gfx.webgpu.ignore-blocklisttype:boolvalue:falsemirror:once# Whether to use the WebRender hardware backend-name:gfx.webrender.alltype:boolvalue:falsemirror:once#ifdef XP_WIN-name:gfx.webrender.force-angletype:boolvalue:truemirror: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-wintype:boolvalue:truemirror:once#endif-name:gfx.webrender.svg-filter-effectstype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.webrender.svg-filter-effects.also-convert-css-filterstype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.webrender.svg-filter-effects.also-use-for-docshell-fecolormatrixtype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.webrender.svg-filter-effects.opacitytype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.webrender.svg-filter-effects.toalphatype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.webrender.svg-filter-effects.feblendtype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.webrender.svg-filter-effects.fecolormatrixtype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.webrender.svg-filter-effects.fecomponenttransfertype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.webrender.svg-filter-effects.fecompositetype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.webrender.svg-filter-effects.feconvolvematrixtype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.webrender.svg-filter-effects.fediffuselightingtype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.webrender.svg-filter-effects.fedisplacementmaptype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.webrender.svg-filter-effects.fedropshadowtype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.webrender.svg-filter-effects.fefloodtype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.webrender.svg-filter-effects.fegaussianblurtype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.webrender.svg-filter-effects.feimagetype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.webrender.svg-filter-effects.femergetype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.webrender.svg-filter-effects.femorphologytype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.webrender.svg-filter-effects.feoffsettype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.webrender.svg-filter-effects.fespecularlightingtype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.webrender.svg-filter-effects.fetiletype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.webrender.svg-filter-effects.feturbulencetype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.webrender.svg-imagestype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.webrender.svg-shapestype:RelaxedAtomicBoolvalue:truemirror:always-name:gfx.webrender.debug.blob.paint-flashingtype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.webrender.debug.enable-capturetype:boolvalue:falsemirror:once-name:gfx.webrender.debug.dl.dump-parenttype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.webrender.debug.dl.dump-contenttype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.webrender.debug.dl.dump-content-serializedtype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.webrender.debug.highlight-backdrop-filterstype:RelaxedAtomicBoolvalue:falsemirror:always# When true, we output warning messages when rejecting surface promotion# when it has been requested. This is important for color correctness of# wide color videos, as well as for GPU performance for all videos.-name:gfx.webrender.debug.surface-promotion-loggingtype:RelaxedAtomicBoolvalue:falsemirror:always# When true, missing stacking context snapshots will crash the GPU or Parent# process.-name:gfx.webrender.debug.missing-snapshot-panictype:RelaxedAtomicBoolvalue:falsemirror:always# When true, missing stacking context snapshots will render as an opaque# pink image.-name:gfx.webrender.debug.missing-snapshot-pinktype:RelaxedAtomicBoolvalue:falsemirror:always#ifdef MOZ_WIDGET_GTK-name:gfx.webrender.reject-software-drivertype:boolvalue:truemirror:once#endif-name:gfx.webrender.debug.highlight-painted-layerstype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.webrender.debug.slow-cpu-frame-thresholdtype:AtomicFloatvalue:10.0mirror:always-name:gfx.webrender.late-scenebuild-thresholdtype:RelaxedAtomicInt32value:4mirror:always-name:gfx.webrender.max-filter-ops-per-chaintype:RelaxedAtomicUint32value:64mirror:always-name:gfx.webrender.batching.lookbacktype:uint32_tvalue:10mirror:always-name:gfx.webrender.blob-tile-sizetype:uint32_tvalue:256mirror:always-name:gfx.webrender.batched-upload-thresholdtype:int32_t#if defined(MOZ_WIDGET_ANDROID)value:262144#elsevalue:65536#endifmirror:always-name:gfx.webrender.compositortype:bool#if defined(XP_WIN) || defined(XP_DARWIN)value:true#elsevalue:false#endifmirror:once-name:gfx.webrender.layer-compositortype:boolvalue:falsemirror:once#ifdef XP_WIN-name:gfx.webrender.layer-compositor-force-composition-surfacetype:boolvalue:falsemirror:once#endif-name:gfx.webrender.scissored-cache-clears.enabledtype:boolvalue:truemirror:once-name:gfx.webrender.scissored-cache-clears.force-enabledtype:boolvalue:falsemirror:once-name:gfx.webrender.compositor.force-enabledtype:boolvalue:falsemirror:once-name:gfx.webrender.compositor.max_update_rectstype:uint32_tvalue:1mirror:once-name:gfx.webrender.compositor.surface-pool-sizetype:uint32_tvalue:25mirror: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-rectstype:uint32_t#if defined(XP_WIN) || defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GTK)value:1#elsevalue:0#endifmirror: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-agetype:boolvalue:truemirror:once# Whether or not we should force partial present on.-name:gfx.webrender.force-partial-presenttype:boolvalue:falsemirror:once-name:gfx.webrender.enable-gpu-markerstype:bool#ifdef DEBUGvalue:true#elsevalue:false#endifmirror:once-name:gfx.webrender.enable-item-cachetype:boolvalue:truemirror:once# Whether or not to fallback from WebRender to Software WebRender.-name:gfx.webrender.fallback.softwaretype:boolvalue:truemirror:once#ifdef XP_WIN# Use IDCompositionFilterEffect to color manage dcomp surfaces.-name:gfx.webrender.dcomp.color-manage-with-filterstype:RelaxedAtomicBoolvalue:falsemirror:always# Whether to use an overlay of hardware decoded video with DirectComposition-name:gfx.webrender.dcomp-video-hw-overlay-wintype:boolvalue:truemirror:once# Enable hardware decoded video overlay even when it is blocked.-name:gfx.webrender.dcomp-video-hw-overlay-win-force-enabledtype:boolvalue:falsemirror:once# Whether to use a yuv video overlay layers with DirectComposition-name:gfx.webrender.dcomp-video-yuv-overlay-wintype:boolvalue:falsemirror:once-name:gfx.webrender.dcomp-video-vp-scaling-wintype:boolvalue:truemirror:once# Whether to use virtual surfaces, as opposed to each tile owning a surface.-name:gfx.webrender.dcomp-use-virtual-surfacestype:boolvalue:truemirror:once# Whether to use an overlay of software decoded video with DirectComposition-name:gfx.webrender.dcomp-video-sw-overlay-wintype:boolvalue:truemirror:once# Enable software decoded video overlay even when it is blocked.-name:gfx.webrender.dcomp-video-sw-overlay-win-force-enabledtype:boolvalue:falsemirror:once-name:gfx.webrender.dcomp-video-check-slow-presenttype:RelaxedAtomicBoolvalue:truemirror:always# Force triple buffering in overlay's video swap chain-name:gfx.webrender.dcomp-video-force-triple-bufferingtype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.webrender.dcomp-video-swap-chain-present-interval-0type:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.video.convert-yuv-to-nv12.image-host-wintype:RelaxedAtomicBoolvalue:truemirror:always#endif# Whether or not fallback to Software WebRender requires the GPU process.-name:gfx.webrender.fallback.software.requires-gpu-processtype:boolvalue:falsemirror:once-name:gfx.webrender.program-binary-disktype:bool#if defined(XP_WIN) || defined(ANDROID)value:true#elsevalue:false#endifmirror:once-name:gfx.webrender.use-optimized-shaderstype:boolvalue:truemirror:once-name:gfx.webrender.precache-shaderstype:boolvalue:falsemirror:once# When gl debug message is a high severity message, forwward it to gfx critical# note.-name:gfx.webrender.gl-debug-message-critical-notetype:bool#if defined(XP_WIN) && defined(NIGHTLY_BUILD)value:true#elsevalue:false#endifmirror:once# Enable printing gl debug messages-name:gfx.webrender.gl-debug-message-printtype:boolvalue:falsemirror: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-errortype:boolvalue:falsemirror:once#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-countertype:RelaxedAtomicBoolvalue:falsemirror:always# Enables highlighting redraw regions of DCompositionVisual-name:gfx.webrender.debug.dcomp-redraw-regionstype:RelaxedAtomicBoolvalue:falsemirror:always#endif#ifdef XP_DARWIN# Files show up in $HOME/Desktop/nativelayerdumps-PID/frame-123.html-name:gfx.webrender.debug.dump-native-layer-tree-to-filetype:RelaxedAtomicBoolvalue:falsemirror:always#endif-name:gfx.webrender.enable-low-priority-pooltype:RelaxedAtomicBool#if defined(ANDROID)value:false#elsevalue:true#endifmirror:always# Force subpixel anti-aliasing as much as possible, despite performance cost.-name:gfx.webrender.quality.force-subpixel-aa-where-possibletype:boolvalue:falsemirror:always-name:gfx.webrender.enable-subpixel-aatype:boolmirror:once#ifdef MOZ_WIDGET_ANDROIDvalue:false#elsevalue:true#endif#ifdef XP_MACOSX-name:gfx.webrender.enable-client-storagetype:boolvalue:truemirror:once#endif# Width of WebRender tile size-name:gfx.webrender.picture-tile-widthtype:RelaxedAtomicInt32value:1024mirror:always# Width of WebRender tile size-name:gfx.webrender.picture-tile-heighttype:RelaxedAtomicInt32value:512mirror:always# WebRender upper bound for shared surface size# According to apitrace, textures larger than 2048 break fast clear# optimizations on some intel drivers. We sometimes need to go larger, but# we try to avoid it.-name:gfx.webrender.max-shared-surface-sizetype:int32_tvalue:2048mirror:once# Whether to use EGL robustness or not.-name:gfx.webrender.prefer-robustnesstype:bool#if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)value:true#elsevalue:false#endifmirror:once# Whether to use the WebRender software backend-name:gfx.webrender.softwaretype:boolvalue:falsemirror:once# Whether to use the D3D11 RenderCompositor when using WebRender software backend-name:gfx.webrender.software.d3d11type:boolvalue:truemirror:once-name:gfx.webrender.software.opengltype:bool#if defined(MOZ_WIDGET_ANDROID)value:true#elsevalue:false#endifmirror:once-name:gfx.webrender.software.d3d11.upload-modetype:RelaxedAtomicInt32value:4mirror:always# Whether to force widgets to don't support acceleration to use WebRender# despite that-name:gfx.webrender.unaccelerated-widget.forcetype:RelaxedAtomicBoolvalue:falsemirror:always# Enable a lower quality, but higher performance pinch-zoom mode. Primarily# for devices with weak GPUs, or when running SWGL.-name:gfx.webrender.low-quality-pinch-zoomtype:bool#if defined(MOZ_WIDGET_ANDROID) && defined(NIGHTLY_BUILD)value:true#elsevalue:false#endifmirror:once# Disable wait of GPU execution completion-name:gfx.webrender.wait-gpu-finished.disabledtype:bool#if defined(XP_WIN)value:true#elsevalue:false#endifmirror:once# Enable VideoProcessor Super Resolution for video overlay-name:gfx.webrender.overlay-vp-super-resolutiontype:bool#if defined(XP_WIN)value:true#elsevalue:false#endifmirror:once# Enable VideoProcessor-HDR on SDR content for video overlay-name:gfx.webrender.overlay-vp-auto-hdrtype:bool#if defined(XP_WIN)value:true#elsevalue:false#endifmirror:once# Enable a dedicated arena on frame builder threads.-name:gfx.webrender.frame-builder-thread-local-arenatype:boolrust:truevalue:falsemirror:once# Enable a dedicated arena on scene builder threads.-name:gfx.webrender.scene-builder-thread-local-arenatype:boolrust:truevalue:falsemirror:once# Enable a dedicated arena on WebRender worker threads.-name:gfx.webrender.worker-thread-local-arenatype:boolrust:truevalue:truemirror:once# Enable dithering in hardware WebRender-name:gfx.webrender.ditheringtype:boolrust:truevalue:falsemirror:once# Use vsync events generated by hardware-name:gfx.work-around-driver-bugstype:boolvalue:truemirror:once-name:gfx.ycbcr.accurate-conversiontype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.remote-texture.recycle.disabledtype:RelaxedAtomicBoolvalue:falsemirror:always-name:gfx.remote-texture.wait-owner-at-image-hosttype:RelaxedAtomicBoolvalue:falsemirror:always#if defined(MOZ_WAYLAND)-name:gfx.wayland.hdrtype:boolvalue:falsemirror:once#endif#---------------------------------------------------------------------------# Prefs starting with "gl." (OpenGL)#----------------------------------------------------------------------------name:gl.allow-high-powertype:RelaxedAtomicBoolvalue:truemirror:always-name:gl.ignore-dx-interop2-blacklisttype:RelaxedAtomicBoolvalue:falsemirror:always-name:gl.use-tls-is-currenttype:RelaxedAtomicInt32value:0mirror:always#---------------------------------------------------------------------------# Prefs starting with "html5."#---------------------------------------------------------------------------# 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.initialdelaytype:RelaxedAtomicInt32value:16mirror: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.subsequentdelaytype:RelaxedAtomicInt32value:16mirror:always#---------------------------------------------------------------------------# Prefs starting with "idle_period."#----------------------------------------------------------------------------name:idle_period.mintype:uint32_tvalue:3mirror:always-name:idle_period.during_page_load.mintype:uint32_tvalue:12mirror:always-name:idle_period.cross_process_schedulingtype:RelaxedAtomicBoolvalue:truemirror: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-kbtype:RelaxedAtomicUint32value:20*1024mirror: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-sizetype:RelaxedAtomicUint32value:6mirror: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.recycletype:boolvalue:truemirror:once# Resume an animated image from the last displayed frame rather than# advancing when out of view.-name:image.animated.resume-from-last-displayedtype:RelaxedAtomicBoolvalue:truemirror: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-surfacestype:RelaxedAtomicInt32value:4mirror:always# Maximum size of a surface in KB we are willing to produce when rasterizing# an SVG.-name:image.cache.max-rasterized-svg-threshold-kbtype:RelaxedAtomicInt32value:200*1024mirror:always# The maximum size, in bytes, of the decoded images we cache.-name:image.cache.sizetype:int32_tvalue:5*1024*1024mirror: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.timeweighttype:int32_tvalue:500mirror:once# Decode all images automatically on load, ignoring our normal heuristics.-name:image.decode-immediately.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Decode all images synchronously, intended to be used for reftests.-name:image.testing.decode-sync.enabledtype:boolvalue:falsemirror:always# Whether we attempt to downscale images during decoding.-name:image.downscale-during-decode.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Whether EXIF density metadata is sanity checked against PixelXDimension and PixelYDimension-name:image.exif-density-correction.sanity-check.enabledtype:RelaxedAtomicBoolvalue:truemirror: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-mstype:RelaxedAtomicUint32value:2000mirror:always# Whether the network request priority should be adjusted according# the layout and view frame position of each particular image.-name:image.layout_network_prioritytype:RelaxedAtomicBoolvalue:truemirror:always# Chunk size for calls to the image decoders.-name:image.mem.decode_bytes_at_a_timetype:uint32_tvalue:16384mirror:once# Discards inactive image frames and re-decodes them on demand from# compressed data.-name:image.mem.discardabletype:RelaxedAtomicBoolvalue:truemirror: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.discardabletype:boolvalue:truemirror:once# Enable extra information for debugging in the image memory reports.-name:image.mem.debug-reportingtype:RelaxedAtomicBoolvalue:falsemirror:always# Force unmapping of unused shared surfaces after a timeout period or when we# encounter virtual memory pressure. By default this is only enabled on 32-bit# Firefox.-name:image.mem.shared.unmap.force-enabledtype:boolvalue:falsemirror:once# Minimum timeout to unmap shared surfaces since they have been last used,# in milliseconds.-name:image.mem.shared.unmap.min_expiration_mstype:uint32_tvalue:60*1000mirror:once# Mininum size for shared surfaces to consider unmapping, in kilobytes.-name:image.mem.shared.unmap.min_threshold_kbtype:uint32_tvalue:100mirror:once# 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_factortype:uint32_tvalue:1mirror:once# Maximum size for the surface cache, in kilobytes.-name:image.mem.surfacecache.max_size_kbtype:uint32_tvalue:2024 * 1024mirror: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_mstype:uint32_tvalue:60*1000mirror: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_factortype:uint32_tvalue:4mirror:once# Maximum size in kilobytes that we allow to allocate an imgFrame, meant for# testing/fuzzing purposes. -1 disables this limit (there are other limits in# place).-name:image.mem.max_legal_imgframe_size_kbtype:RelaxedAtomicInt32value:-1mirror:always# If true, then the HTMLImageElement naturalWidth and naturalHeight APIs will# fall back to the default concrete object size (300x150) for images that lack# a natural width and/or height.-name:image.natural-size-fallback.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Whether we record SVG images as blobs or not.-name:image.svg.blob-imagetype:RelaxedAtomicBoolvalue:falsemirror:always# Whether to set the incremental attribute in the Priority header for images-name:image.priority.incrementaltype:RelaxedAtomicBoolvalue:truemirror:always# Whether we attempt to decode AVIF images or not.-name:image.avif.enabledtype:RelaxedAtomicBool#if defined(MOZ_AV1)value:true#elsevalue:false#endifmirror:always# How strict we are in accepting/rejecting AVIF inputs according to whether they# conform to the specification# 0 = Permissive: accept whatever we can simply, unambiguously interpret# 1 = Normal: reject violations of "shall" specification directives# 2 = Strict: reject violations of "should" specification directives-name:image.avif.compliance_strictnesstype:RelaxedAtomicInt32value:1mirror:always# Whether we apply container-level transforms like mirroring and rotation-name:image.avif.apply_transformstype:RelaxedAtomicBoolvalue:truemirror:always# Whether we use dav1d (true) or libaom (false) to decode AVIF image-name:image.avif.use-dav1dtype:RelaxedAtomicBoolvalue:truemirror:always# Whether to allow decoding of animated AVIF sequences.-name:image.avif.sequence.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Whether AVIF files containing sequences should be animated even when the# major brand is set to 'avif'.-name:image.avif.sequence.animate_avif_major_branded_imagestype:RelaxedAtomicBoolvalue:falsemirror:always# Whether we attempt to decode JXL images or not.-name:image.jxl.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always#---------------------------------------------------------------------------# Prefs starting with "intl."#---------------------------------------------------------------------------#ifdef XP_WIN# Whether Gecko creates or does not create native caret for legacy ATOK# (2011 - 2015).-name:intl.tsf.hack.atok.create_native_carettype:boolvalue:truemirror:always# Whether Gecko returns available composition string rect or TS_E_NOLAYOUT# from ITextStoreACP::GetTextExt() when the specified range is same as the# range of composition string but some character rects in it are still# dirty if and only if ATOK is active TIP.# Note that this is ignored if active ATOK is or older than 2016 and# create_native_caret is true.-name:intl.tsf.hack.atok.do_not_return_no_layout_error_of_composition_stringtype:boolvalue:truemirror:always# Whether Gecko sets input scope of ATOK to "search" or never does it.# When "search" is set to the input scope, ATOK may stop their suggestions.# To avoid it, turn this pref on, or changing the settings in ATOK.# Note that if you enable this pref and you use the touch keyboard for touch# screens, you cannot access some specific features for a "search" input# field.-name:intl.tsf.hack.atok.search_input_scope_disabledtype:boolvalue:falsemirror:always# Whether Gecko returns caret rect before composition string or TS_E_NOLAYOUT# from ITextStoreACP::GetTextExt() when the specified range is larger than# composition start offset if and only if Free ChangJie is active TIP.-name:intl.tsf.hack.free_chang_jie.do_not_return_no_layout_errortype:boolvalue:truemirror:always# Whether Gecko returns available composition string rect or TS_E_NOLAYOUT# from ITextStoreACP::GetTextExt() when the specified range is same as the# range of composition string but some character rects in it are still# dirty if and only if Japanist 10 is active TIP.-name:intl.tsf.hack.japanist10.do_not_return_no_layout_error_of_composition_stringtype:boolvalue:truemirror:always# Whether Gecko returns previous character rect or TS_E_NOLAYOUT from# ITfContextView::GetTextExt() when the specified range is the first# character of selected clause of composition string if and only if Japanese TIP# of Microsoft is active.-name:intl.tsf.hack.ms_japanese_ime.do_not_return_no_layout_error_at_first_chartype:boolvalue:truemirror:always# Whether Gecko returns previous character rect or TS_E_NOLAYOUT from# ITfContextView::GetTextExt() when the specified range is the caret of# composition string if and only if Japanese TIP of Microsoft is active.-name:intl.tsf.hack.ms_japanese_ime.do_not_return_no_layout_error_at_carettype:boolvalue:truemirror:always# Whether Gecko returns caret rect before composition string or TS_E_NOLAYOUT# from ITfContextView::GetTextExt() when the specified range is larger than# composition start offset if and only Simplified Chinese TIP of Microsoft# is active.-name:intl.tsf.hack.ms_simplified_chinese.do_not_return_no_layout_errortype:boolvalue:truemirror:always# Whether Geckos hacks ITextStoreACP::QueryInsert() or not. The method should# return new selection after specified length text is inserted at specified# range. However, Microsoft Pinyin and Microsoft Wubi expect that the result# is same as specified range. If following prefs are true,# ITextStoreACP::QueryInsert() returns specified range only when one of the# TIPs is active.-name:intl.tsf.hack.ms_simplified_chinese.query_insert_resulttype:boolvalue:truemirror:always# Whether Gecko returns caret rect before composition string or TS_E_NOLAYOUT# from ITfContextView::GetTextExt() when the specified range is larger than# composition start offset if and only Traditional Chinese TIP of Microsoft# is active.-name:intl.tsf.hack.ms_traditional_chinese.do_not_return_no_layout_errortype:boolvalue:truemirror:always# Whether Geckos hacks ITextStoreACP::QueryInsert() or not. The method should# return new selection after specified length text is inserted at specified# range. However, Microsoft ChangJie and Microsoft Quick expect that the# result is same as specified range. If following prefs are true,# ITextStoreACP::QueryInsert() returns specified range only when one of the# TIPs is active.-name:intl.tsf.hack.ms_traditional_chinese.query_insert_resulttype:boolvalue:truemirror:always# Whether Gecko sets input scope of the URL bar to IS_DEFAULT when black# listed IMEs are active or does not. If you use tablet mode mainly and you# want to use touch keyboard for URL when you set focus to the URL bar, you# can set this to false. Then, you'll see, e.g., ".com" key on the keyboard.# However, if you set this to false, such IMEs set its open state to "closed"# when you set focus to the URL bar. I.e., input mode is automatically# changed to English input mode.# Known buggy IME list:# - Microsoft IME for Japanese# - Google Japanese Input# - Microsoft Bopomofo# - Microsoft ChangJie# - Microsoft Phonetic# - Microsoft Quick# - Microsoft New ChangJie# - Microsoft New Phonetic# - Microsoft New Quick# - Microsoft Pinyin# - Microsoft Pinyin New Experience Input Style# - Microsoft Wubi# - Microsoft IME for Korean (except on Win7)# - Microsoft Old Hangul-name:intl.ime.hack.set_input_scope_of_url_bar_to_defaulttype:boolvalue:truemirror:always# On Windows 10 Build 17643 (an Insider Preview build of RS5), Microsoft# have fixed the caller of ITextACPStore::GetTextExt() to return# TS_E_NOLAYOUT to TIP as-is, rather than converting to E_FAIL.# Therefore, if TIP supports asynchronous layout computation perfectly, we# can return TS_E_NOLAYOUT and TIP waits next OnLayoutChange()# notification. However, some TIPs still have some bugs of asynchronous# layout support. We keep hacking the result of GetTextExt() like running# on Windows 10, however, there could be unknown TIP bugs if we stop# hacking the result. So, user can stop checking build ID to make Gecko# hack the result forcibly.-name:intl.tsf.hack.allow_to_stop_hacking_on_build_17643_or_latertype:boolvalue:@IS_EARLY_BETA_OR_EARLIER@mirror:always# 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_boundariestype:boolvalue:@IS_NOT_EARLY_BETA_OR_EARLIER@mirror:always# Whether Gecko supports IMM even if TSF is enabled. This pref exists# only for check TSF behavior of new versions. Therefore, users should# not set this to false for daily use.-name:intl.tsf.support_immtype:boolvalue:truemirror:once# If true, TSF and TIP (IME) can retrieve URL of the document containing# the focused element. When this is set to true, Gecko exposes the spec# of the URL.# And Gecko exposes only "http" and "https" URLs. E.g., "data", "blob",# "file" URLs are never exposed.-name:intl.tsf.expose_url.allowedtype:boolvalue:truemirror:always# If true, TSF and TIP (IME) can retrieve URL of the document containing# the focused element in the private browsing mode too.-name:intl.tsf.expose_url_in_private_browsing.allowedtype:boolvalue:falsemirror:always#if defined(ENABLE_TESTS)# If true, NS_GetComplexLineBreaks compares the line breaks produced in the# content process using the Uniscribe line breaker, with those from a# brokered call to the parent.-name:intl.compare_against_brokered_complex_line_breakstype:boolvalue:falsemirror:always#endif#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_committype:boolvalue:falsemirror:always#if defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK) || defined(ANDROID)# Whether text input without keyboard press nor IME composition should cause a# set of composition events or not. E.g., when you use Emoji picker on macOS,# it inserts an Emoji character directly. If set to true, `compositionstart`,# `compositionupdate` and `compositionend` events will be fired, and the# correspnding `beforeinput` events are not cancelable. Otherwise, if set to# false, any user input events are not exposed to web apps but only# `beforeinput` event is fired as "insert text" as a cancelable event.-name:intl.ime.use_composition_events_for_insert_texttype:boolvalue:falsemirror:always#endif# If true, we use UAX14/29 compatible segmenter rules using ICU4X-name:intl.icu4x.segmenter.enabledtype:RelaxedAtomicBoolvalue:truemirror:always#---------------------------------------------------------------------------# Prefs starting with "javascript."## NOTE: SpiderMonkey starts up before `mirror: once` preferences are sealed and# we cannot use them (Bug 1698311). Instead, we use `mirror: always`# prefs but mark as `do_not_use_directly` and `LoadStartupJSPrefs` will# mirror them into SpiderMonkey.#---------------------------------------------------------------------------# The JavaScript JIT compilers. These are read once on startup so a browser may# need to be restarted if toggling them. In general each subsequent JIT depends# on the ones before it being enabled.-name:javascript.options.blinterptype:boolvalue:truemirror:always# LoadStartupJSPrefsdo_not_use_directly:true-name:javascript.options.baselinejittype:boolvalue:truemirror:always# LoadStartupJSPrefsdo_not_use_directly:true-name:javascript.options.iontype:boolvalue:truemirror:always# LoadStartupJSPrefsdo_not_use_directly:true# The irregexp JIT for regex evaluation.-name:javascript.options.native_regexptype:boolvalue:truemirror:always# LoadStartupJSPrefsdo_not_use_directly:true# Jit Hints Cache - An in-process cache for the# content process to accelerate repeated baseline# compilations-name:javascript.options.jithintstype:boolvalue:truemirror:always# LoadStartupJSPrefsdo_not_use_directly:true# "Warm-up" thresholds at which we attempt to compile a script/function with# the next JIT tier.## NOTE: These must match JitOptions defaults.-name:javascript.options.blinterp.thresholdtype:int32_tvalue:10mirror:always# LoadStartupJSPrefsdo_not_use_directly:true-name:javascript.options.baselinejit.thresholdtype:int32_tvalue:100mirror:always# LoadStartupJSPrefsdo_not_use_directly:true-name:javascript.options.ion.thresholdtype:int32_tvalue:1500mirror:always# LoadStartupJSPrefsdo_not_use_directly:true#ifdef NIGHTLY_BUILD# Experimental support for off-main-thread baseline compilation.-name:javascript.options.experimental.baselinejit.offthread_compilationtype:boolvalue:falsemirror:always# LoadStartupJSPrefsdo_not_use_directly:true#endif# Enable off-main-thread Warp compilation.-name:javascript.options.ion.offthread_compilationtype:boolvalue:truemirror:always# LoadStartupJSPrefsdo_not_use_directly:true#ifdef DEBUG# Enable extra correctness checks in the JITs that are slow and only available# in debug builds.-name:javascript.options.jit.full_debug_checkstype:boolvalue:falsemirror:always# LoadStartupJSPrefsdo_not_use_directly:true#endif# Heuristic threshold for Warp/Ion to decide that too many bailouts are# happening and an IonScript should be discarded.## NOTE: This must match JitOptions defaults.-name:javascript.options.ion.frequent_bailout_thresholdtype:int32_tvalue:10mirror:always# LoadStartupJSPrefsdo_not_use_directly:true# A threshold for Warp to decide whether a function can be inlined.# If the size of a function is smaller than this threshold, then it# may be inlined.## NOTE: These must match JitOptions defaults.-name:javascript.options.inlining_bytecode_max_lengthtype:uint32_tvalue:130mirror:alwaysdo_not_use_directly:true-name:javascript.options.compact_on_user_inactivetype:boolvalue:truemirror:always# Determines which register allocator will be used by the Ion backend for JS and# Wasm code. Possible values:## 0: default register allocator (currently always the Backtracking allocator)# 1: always use the Backtracking allocator# 2: always use the Simple allocator# other values: same as 0-name:javascript.options.ion.regalloctype:uint32_tvalue:0mirror:alwaysset_spidermonkey_pref:startup# No-op pref for testing the SpiderMonkey pref system.-name:javascript.options.tests.uint32-preftype:uint32_tvalue:1mirror:alwaysset_spidermonkey_pref: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_delaytype:uint32_t#ifdef NIGHTLY_BUILDvalue:15000#elsevalue:300000#endifmirror:always# Use the realm local dom alloc site.-name:javascript.options.dom_alloc_sitetype:boolvalue:truemirror:alwaysset_spidermonkey_pref:always# Use better error message when accessing property of null or undefined.-name:javascript.options.property_error_message_fixtype:boolvalue:truemirror:alwaysset_spidermonkey_pref:startup# Whether to expose the FinalizationRegistry.prototype.cleanupSome method.-name:javascript.options.experimental.weakrefs.expose_cleanupSometype:boolvalue:falsemirror:alwaysset_spidermonkey_pref:startup# ShadowRealms: https://github.com/tc39/proposal-shadowrealm-name:javascript.options.experimental.shadow_realms# Atomic, as we assert the preference, and that assertion may happen# in a worker.type:RelaxedAtomicBoolvalue:falsemirror:always# Non-startup pref because the WPT test harness sets prefs after startup.set_spidermonkey_pref:always# Experimental support for Duplicate Named Capture Groups in JavaScript.-name:javascript.options.experimental.regexp_duplicate_named_groupstype:boolvalue:truemirror:alwaysset_spidermonkey_pref:startup# Experimental support for Pattern Modifiers in JavaScript.-name:javascript.options.experimental.regexp_modifierstype:boolvalue:truemirror:alwaysset_spidermonkey_pref:startup# Experimental support for Uint8Array base64/hex in JavaScript.-name:javascript.options.experimental.uint8array_base64type:boolvalue:truemirror:alwaysset_spidermonkey_pref:startup# Experimental support for Promise.try in JavaScript.-name:javascript.options.experimental.promise_trytype:boolvalue:truemirror:alwaysset_spidermonkey_pref:startup# Experimental support for Math.sumPrecise in JavaScript.-name:javascript.options.experimental.math_sumprecisetype:boolvalue:truemirror:alwaysset_spidermonkey_pref:startup# Experimental support for Atomics.pause in JavaScript.-name:javascript.options.experimental.atomics_pausetype:boolvalue:truemirror:alwaysset_spidermonkey_pref:startup# Experimental support for Error.isError in JavaScript.-name:javascript.options.experimental.error_iserrortype:boolvalue:truemirror:alwaysset_spidermonkey_pref:always# Support for Atomics.waitAsync in JavaScript.-name:javascript.options.atomics_wait_asynctype:boolvalue:falsemirror:alwaysset_spidermonkey_pref:startup#ifdef NIGHTLY_BUILD# Experimental support for Async Iterator Helpers in JavaScript.-name:javascript.options.experimental.async_iterator_helperstype:boolvalue:falsemirror:alwaysset_spidermonkey_pref:startup# Experimental support for Symbols as WeakMap keys in JavaScript.-name:javascript.options.experimental.symbols_as_weakmap_keystype:boolvalue:falsemirror:alwaysset_spidermonkey_pref:startup# Experimental support for Iterator.range in JavaScript.-name:javascript.options.experimental.iterator_rangetype:boolvalue:falsemirror:alwaysset_spidermonkey_pref:startup# Experimental support for Joint Iteration in JavaScript.-name:javascript.options.experimental.joint_iterationtype:boolvalue:falsemirror:alwaysset_spidermonkey_pref:startup# Experimental support for Iterator Sequencing in JavaScript.-name:javascript.options.experimental.iterator_sequencingtype:boolvalue:falsemirror:alwaysset_spidermonkey_pref:startup# Experimental support for upsert in JavaScript.-name:javascript.options.experimental.upserttype:boolvalue:falsemirror:alwaysset_spidermonkey_pref:startup# Experimental support for immutable ArrayBuffers in JavaScript.-name:javascript.options.experimental.arraybuffer_immutabletype:boolvalue:falsemirror:alwaysset_spidermonkey_pref:startup#endif // NIGHTLY_BUILD# Whether to Baseline-compile self-hosted functions the first time they are# used and cache the result.-name:javascript.options.experimental.self_hosted_cachetype:boolvalue:falsemirror:alwaysset_spidermonkey_pref:startup# Experimental support for Temporal in JavaScript.-name:javascript.options.experimental.temporaltype:boolvalue:truemirror:alwaysset_spidermonkey_pref:startup#ifdef ENABLE_EXPLICIT_RESOURCE_MANAGEMENT# Experimental support for Explicit Resource Management in JavaScript.-name:javascript.options.experimental.explicit_resource_managementtype:boolvalue:truemirror:alwaysset_spidermonkey_pref:always#endif // ENABLE_EXPLICIT_RESOURCE_MANAGEMENT-name:javascript.options.experimental.error_capture_stack_tracetype:boolvalue:truemirror:alwaysset_spidermonkey_pref:always-name:javascript.options.experimental.json_parse_with_sourcetype:boolvalue:truemirror:alwaysset_spidermonkey_pref:always# Dictionary Teleporting-name:javascript.options.experimental.dictionary_teleportingtype:boolvalue:truemirror:alwaysset_spidermonkey_pref:always-name:javascript.options.experimental.import_attributestype:boolvalue:truemirror:alwaysset_spidermonkey_pref:always-name:javascript.options.wasm_cachingtype:boolvalue:truemirror:always# 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_delaytype:uint32_tvalue:4000mirror: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.firsttype:uint32_tvalue:10000mirror: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.fulltype:uint32_tvalue:60000mirror:always# Maximum amount of time that should elapse between incremental GC slices, in ms.-name:javascript.options.gc_delay.interslicetype:uint32_tvalue:250mirror: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_pressuretype:bool# Disable the JS engine's GC on memory pressure on Android for now to continue investigating its# performance impacts and then decide to enable it or not.# See bug 1450787.value:@IS_NOT_ANDROID@mirror:always# We allow at most MIN(max, MAX(NUM_CPUS / cpu_divisor, 1)) concurrent GCs# between processes-name:javascript.options.concurrent_multiprocess_gcs.cpu_divisortype:RelaxedAtomicUint32value:4mirror:always# See 'cpu_divisor' above, 0 means UINT_32_MAX.-name:javascript.options.concurrent_multiprocess_gcs.maxtype:RelaxedAtomicUint32value:0mirror:always-name:javascript.options.mem.logtype:boolvalue:falsemirror:always-name:javascript.options.mem.notifytype:boolvalue:falsemirror:always# Whether the Parent process allocates and shares memory with all content# processes. This is mirrored once, as the parent process will do this# allocation early on.-name:javascript.options.self_hosted.use_shared_memorytype:boolvalue:truemirror:always# LoadStartupJSPrefsdo_not_use_directly:true-name:javascript.options.main_thread_stack_quota_captype:uint32_t#if defined(MOZ_ASAN)value:6 * 1024 * 1024#elsevalue:2 * 1024 * 1024#endifmirror:always-name:javascript.options.wasm_trace_apitype:boolvalue:falsemirror:alwaysset_spidermonkey_pref:always-name:javascript.options.wasm_disable_huge_memorytype:boolvalue:falsemirror:alwaysset_spidermonkey_pref:startup-name:javascript.options.wasm_optimizingjittype:boolvalue:truemirror:always-name:javascript.options.wasm_relaxed_simdtype:bool#if defined(ENABLE_WASM_RELAXED_SIMD)value:@IS_NIGHTLY_BUILD@#elsevalue:false#endifmirror:alwaysset_spidermonkey_pref:always-name:javascript.options.wasm_moz_intgemmtype:bool#if defined(ENABLE_WASM_MOZ_INTGEMM)value:@IS_NIGHTLY_BUILD@#elsevalue:false#endifmirror:alwaysset_spidermonkey_pref:startup-name:javascript.options.wasm_memory_controltype:boolvalue:falsemirror:alwaysset_spidermonkey_pref:always-name:javascript.options.wasm_branch_hintingtype:bool#if defined(ENABLE_WASM_BRANCH_HINTING)value:@IS_NIGHTLY_BUILD@#elsevalue:false#endifmirror:alwaysset_spidermonkey_pref:always#if defined(ENABLE_WASM_SIMD)#if defined(JS_CODEGEN_X64) || defined(JS_CODEGEN_X86)# Enables AVX instructions support on X86/X64 platforms.# Changing these prefs requires a restart.-name:javascript.options.wasm_simd_avxtype:boolvalue:truemirror:alwaysset_spidermonkey_pref:startup#endif#endif-name:javascript.options.wasm_js_promise_integrationtype:boolvalue:falsemirror:alwaysset_spidermonkey_pref:always-name:javascript.options.wasm_test_serializationtype:boolvalue:falsemirror:alwaysset_spidermonkey_pref:always# Enables lazy tiering for wasm modules that have a GC type defined in them.# Use wasm_lazy_tiering to enable it for any module.-name:javascript.options.wasm_lazy_tiering_for_gctype:boolvalue:truemirror:alwaysset_spidermonkey_pref:always# Enables lazy tiering for all modules. Use wasm_lazy_tiering_for_gc to only# enable this for GC modules.-name:javascript.options.wasm_lazy_tieringtype:boolvalue:truemirror:alwaysset_spidermonkey_pref:always# Aggressiveness of lazy tiering, allowable: 1 .. 9# 1 = min (almost never, set tiering threshold to max possible, == 2^31-1)# 9 = max (request tier up at first call, set tiering threshold to zero)-name:javascript.options.wasm_lazy_tiering_leveltype:uint32_tvalue:5mirror:alwaysset_spidermonkey_pref:always# Forces lazy tiering to synchronously compile instead of using a background# thread.-name:javascript.options.wasm_lazy_tiering_synchronoustype:boolvalue:falsemirror:alwaysset_spidermonkey_pref:always# Aggressiveness of inlining (regardless of call kind), allowable: 1 .. 9-name:javascript.options.wasm_inlining_leveltype:uint32_tvalue:5mirror:alwaysset_spidermonkey_pref:always# Are wasm direct calls (within same Instance) candidates for inlining?-name:javascript.options.wasm_direct_inliningtype:boolvalue:truemirror:alwaysset_spidermonkey_pref:always# Are wasm call_ref calls (within same Instance) candidates for inlining?-name:javascript.options.wasm_call_ref_inliningtype:boolvalue:truemirror:alwaysset_spidermonkey_pref:always# When selecting call_ref targets for speculative inlining, this is the minimum# percentage of the total number of calls from the call site that a candidate# set of targets must collectively have in order to be elegible for inlining.# Allowable: 10 .. 100 (%). Setting it (eg) 75 means the targets must collectively# be 75% of all observed calls to be considered for inlining. Probably unwise to# let this be much below 40.-name:javascript.options.wasm_call_ref_inlining_percenttype:uint32_tvalue:40mirror:alwaysset_spidermonkey_pref:always# Support for wasm loop unrolling and peeling in wasm-via-Ion. This enables# both unrolling and peeling.-name:javascript.options.wasm_unroll_loopstype:boolvalue:truemirror:alwaysset_spidermonkey_pref:always# The number of times a loop is unrolled, not counting the peeled iteration.# Minimum is 2 -- otherwise we're not unrolling at all. From testing with# JetStream3 (wasm tests), it's hard to get consistently better performance# than simply by unrolling by 3, regardless of loop size.-name:javascript.options.wasm_unroll_factortype:uint32_tvalue:3mirror:alwaysset_spidermonkey_pref:always# Support for pretenuring allocations based on their allocation site.-name:javascript.options.site_based_pretenuringtype:boolvalue:truemirror:alwaysdo_not_use_directly:trueset_spidermonkey_pref:startup#if defined(DEBUG) || defined(NIGHTLY_BUILD) || defined(JS_GC_ZEAL)# Enable extra poisoning of GC memory.-name:javascript.options.extra_gc_poisoningtype:bool#ifdef DEBUGvalue:true#elsevalue:false#endifmirror:alwaysset_spidermonkey_pref:startup#endif#if !defined(JS_CODEGEN_MIPS64) && !defined(JS_CODEGEN_LOONG64)# Spectre security vulnerability mitigations for the JS JITs.## NOTE: The MIPS and LoongArch backends do not support these mitigations (and generally# do not need them). In that case, leave the pref unlisted with its# default value of false.-name:javascript.options.spectre.index_maskingtype:boolvalue:truemirror:always# LoadStartupJSPrefsdo_not_use_directly:true-name:javascript.options.spectre.object_mitigationstype:boolvalue:truemirror:always# LoadStartupJSPrefsdo_not_use_directly:true-name:javascript.options.spectre.string_mitigationstype:boolvalue:truemirror:always# LoadStartupJSPrefsdo_not_use_directly:true-name:javascript.options.spectre.value_maskingtype:boolvalue:truemirror:always# LoadStartupJSPrefsdo_not_use_directly:true-name:javascript.options.spectre.jit_to_cxx_callstype:boolvalue:falsemirror:always# LoadStartupJSPrefsdo_not_use_directly:true#endif // !defined(JS_CODEGEN_MIPSXX) && !defined(JS_CODEGEN_LOONG64)# Separate pref to override the values of the Spectre-related prefs above for# isolated web content processes, where we don't need these mitigations.-name:javascript.options.spectre.disable_for_isolated_contenttype:boolvalue:truemirror:always# Whether the W^X policy is enforced to mark JIT code pages as either writable# or executable but never both at the same time. OpenBSD defaults to W^X.-name:javascript.options.content_process_write_protect_codetype:bool#if defined(XP_OPENBSD)value:true#elsevalue:false#endifmirror:always# Whether to use the XPCOM thread pool for JS helper tasks.-name:javascript.options.external_thread_pooltype:boolvalue:truemirror:alwaysdo_not_use_directly:true# Whether to use the off-thread script compilation and decoding.-name:javascript.options.parallel_parsingtype:boolvalue:truemirror:always# Whether to use fdlibm for Math.sin, Math.cos, and Math.tan. When# privacy.resistFingerprinting is true, this pref is ignored and fdlibm is used# anyway.-name:javascript.options.use_fdlibm_for_sin_cos_tantype:bool#if defined(XP_WIN)value:false#elsevalue:true#endifmirror:alwaysset_spidermonkey_pref:always# Whether to support parsing '//(#@) source(Mapping)?URL=' pragmas.-name:javascript.options.source_pragmastype:boolvalue:truemirror:always# asm.js-name:javascript.options.asmjstype:boolvalue:truemirror:always# Whether to throw a TypeError if asm.js code hits validation failure.-name:javascript.options.throw_on_asmjs_validation_failuretype:boolvalue:falsemirror:always# Whether to show a warning if asm.js is used.-name:javascript.options.warn_asmjs_deprecationtype:boolvalue:truemirror:alwaysset_spidermonkey_pref:always# Whether to disable the jit within the main process-name:javascript.options.main_process_disable_jittype:bool#ifdef XP_IOSvalue:true#elsevalue:false#endifmirror:always#---------------------------------------------------------------------------# Prefs starting with "layers."#---------------------------------------------------------------------------# Whether to disable acceleration for all widgets.-name:layers.acceleration.disabledtype:boolvalue:falsemirror:oncedo_not_use_directly:true# Instead, use gfxConfig::IsEnabled(Feature::HW_COMPOSITING).# Whether to force acceleration on, ignoring blacklists.-name:layers.acceleration.force-enabledtype:boolvalue:falsemirror:oncedo_not_use_directly:true# Whether we allow AMD switchable graphics.-name:layers.amd-switchable-gfx.enabledtype:boolvalue:truemirror:once# Whether to use async panning and zooming.-name:layers.async-pan-zoom.enabledtype:boolvalue:truemirror:oncedo_not_use_directly:true-name:layers.d3d11.force-warptype:boolvalue:falsemirror:once-name:layers.d3d11.enable-blacklisttype:boolvalue:truemirror:once# Enable DEAA antialiasing for transformed layers in the compositor.-name:layers.deaa.enabledtype:RelaxedAtomicBool#if defined(MOZ_WIDGET_ANDROID)value:false#elsevalue:true#endifmirror:always# Force all possible layers to be always active layers.-name:layers.force-activetype:boolvalue:falsemirror:always-name:layers.draw-mask-debugtype:RelaxedAtomicBoolvalue:falsemirror:always-name:layers.force-synchronous-resizetype:RelaxedAtomicBool#ifdef MOZ_WAYLAND# We want to control it by nsWindow::SynchronouslyRepaintOnResize() on Linux/Wayland.value:false#elsevalue:true#endifmirror:always-name:layers.gpu-process.allow-softwaretype:bool#if defined(XP_WIN)value:true#elsevalue:false#endifmirror:once-name:layers.gpu-process.enabledtype:bool#if defined(XP_WIN) || defined(MOZ_WIDGET_ANDROID)value:true#elif defined(MOZ_X11)value:false# we'd like this to be @IS_NIGHTLY_BUILD@, see Bug 1927058#elsevalue:false#endifmirror:once-name:layers.gpu-process.force-enabledtype:boolvalue:falsemirror:once-name:layers.gpu-process.ipc_reply_timeout_mstype:int32_tvalue:10000mirror:once-name:layers.gpu-process.extend_ipc_reply_timeout_mstype:int32_tvalue:20000mirror:once# How many unstable GPU process restarts we allow for a given configuration.-name:layers.gpu-process.max_restartstype:RelaxedAtomicInt32#if defined(XP_WIN) || defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_ANDROID)value:6#elsevalue:1#endifmirror:always# How many frames we must render before declaring the GPU process stable, and# allow restarts without it counting against our maximum restarts.-name:layers.gpu-process.stable.frame-thresholdtype:RelaxedAtomicUint32value:10mirror:always# How many milliseconds the GPU process must have lived before we accept that# it is stable, and allow restarts without it counting against our maximum# restarts.-name:layers.gpu-process.stable.min-uptime-mstype:RelaxedAtomicInt32value:4 * 60000mirror: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_decodertype:RelaxedAtomicInt32value:0mirror:always-name:layers.gpu-process.startup_timeout_mstype:int32_tvalue:5000mirror:once-name:layers.gpu-process.crash-also-crashes-browsertype:boolvalue:falsemirror:always# Whether to animate simple opacity and transforms on the compositor.-name:layers.offmainthreadcomposition.async-animationstype:boolvalue:truemirror:always# Whether to log information about off main thread animations to stderr.-name:layers.offmainthreadcomposition.log-animationstype:boolvalue:falsemirror:always-name:layers.offmainthreadcomposition.force-disabledtype:boolvalue:falsemirror: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-ratetype:RelaxedAtomicInt32value:-1mirror:always#ifdef XP_WIN-name:layers.prefer-opengltype:boolvalue:falsemirror:once#endif# Copy-on-write canvas.-name:layers.shared-buffer-provider.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:layers.recycle-allocator-rddtype:boolvalue:truemirror:once-name:layers.iosurfaceimage.recycle-limittype:RelaxedAtomicUint32value:15mirror: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.enabledtype:boolvalue:falsemirror: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_touchtype:boolvalue:truemirror:always# By default, carets become tilt only when they are overlapping.-name:layout.accessiblecaret.always_tilttype:boolvalue:falsemirror: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_contenttype:boolvalue:falsemirror: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_modetype:int32_tvalue:0mirror: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_carettype:boolvalue:truemirror:always# Optionally provide haptic feedback on long-press selection events.-name:layout.accessiblecaret.hapticfeedbacktype:boolvalue:falsemirror:always# Smart phone-number selection on long-press is not enabled by default.-name:layout.accessiblecaret.extend_selection_for_phone_numbertype:boolvalue:falsemirror: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_inputtype:boolvalue:truemirror:always# CSS attributes (width, height, margin-left) of the AccessibleCaret in CSS# pixels.-name:layout.accessiblecaret.widthtype:floatvalue:34.0fmirror:always-name:layout.accessiblecaret.heighttype:floatvalue:36.0fmirror:always-name:layout.accessiblecaret.margin-lefttype:floatvalue:-18.5fmirror:always-name:layout.accessiblecaret.transition-durationtype:floatvalue:250.0fmirror:always# Simulate long tap events to select words. Mainly used in manual testing# with mouse.-name:layout.accessiblecaret.use_long_tap_injectortype:boolvalue:falsemirror:always# To support magnify glass, whether we dispatch additional chrome event such as# dragcaret.-name:layout.accessiblecaret.magnifier.enabledtype:boolvalue:@IS_ANDROID@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.partialtype:RelaxedAtomicBoolvalue:falsemirror: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-limittype:AtomicFloatvalue:1.125fmirror: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-xtype:RelaxedAtomicUint32value:4096mirror: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-ytype:RelaxedAtomicUint32value:4096mirror: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.janktype:RelaxedAtomicBoolvalue:falsemirror:always# Whether to enable CSS Anchor Positioning support.# https://drafts.csswg.org/css-anchor-position-1/-name:layout.css.anchor-positioning.enabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Override DPI. A value of -1 means use the maximum of 96 and the system DPI.# A value of 0 means use the system DPI. A positive value is used as the DPI.# This sets the physical size of a device pixel and thus controls the# interpretation of physical units such as "pt".-name:layout.css.dpitype:int32_tvalue:-1mirror:always# Whether to always underline links.-name:layout.css.always_underline_linkstype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Whether content-box and stroke-box are enabled for transform-box.-name:layout.css.transform-box-content-stroke.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# Whether @starting-style is enabled?-name:layout.css.starting-style-at-rules.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# Whether style() container queries are enabled-name:layout.css.style-queries.enabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Should we look for counter ancestor scopes first?-name:layout.css.counter-ancestor-scope.enabledtype:boolvalue:truemirror:always# Whether the `-moz-control-character-visibility` property is exposed to# content.## Only for testing purposes.-name:layout.css.moz-control-character-visibility.enabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Whether the `-moz-user-input` property is exposed to content.-name:layout.css.moz-user-input.enabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# This pref controls whether the `prefers-color-scheme` value of iframes images# reacts to the embedder `color-scheme` in content.-name:layout.css.iframe-embedder-prefers-color-scheme.content.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Controls the transparency of the initial about:blank document. Generally you# don't ever want a white flash in dark mode, but due to backwards compat we# have some extra control over this, for now at least.## See https://github.com/w3c/csswg-drafts/issues/9624 for iframes.## Values:# 1: content-inaccessible top-level only.# 2: frames and content-inaccessible top-level only.# 3: always# Others: don't treat this document specially.-name:layout.css.initial-document-transparencytype:RelaxedAtomicInt32value:3mirror:always# The minimum contrast ratio between the accent color background and white.## We don't use this for text, so we need a contrast of at least AA (for user# interface components and graphical objects), which per WCAG is 3:1.## However that causes some colors that are realistically fine to get darkened,# so we lower it a little bit. Eventually we should maybe use something like# APCA or so perhaps, see:## * https://ruitina.com/apca-accessible-colour-contrast/# * https://github.com/w3c/csswg-drafts/issues/7937## See also:## * https://accent-color.glitch.me/## For testing this.-name:layout.css.accent-color.min-contrast-ratiotype:AtomicFloatvalue:2.4mirror:always# The target contrast ratio between the accent color foreground and background# colors when darkening.## We aim a bit further than the minimum contrast ratio, which seems to provide# nice results in practice.-name:layout.css.accent-color.darkening-target-contrast-ratiotype:AtomicFloatvalue:6.0mirror:always# Whether the `animation-composition` in css-animations-2 is enabled.-name:layout.css.animation-composition.enabledtype:boolvalue:truemirror:always# Is the codepath for using cached scrollbar styles enabled?-name:layout.css.cached-scrollbar-styles.enabledtype:boolvalue:truemirror:always# Are implicit tracks in computed grid templates serialized?-name:layout.css.serialize-grid-implicit-trackstype:RelaxedAtomicBoolvalue:truemirror:always# Whether the system-ui generic family is enabled.-name:layout.css.system-ui.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# 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). If browser.display.os-zoom-behavior == 1, then a positive value# will be multiplied by the text scale factor; otherwise a positive value is# used as-is. This controls the size of a CSS "px" at 100% full-zoom.# The size of system fonts is also changed in proportion with the change in# "px" sizes. Use "ui.textScaleFactor" instead to only change the size of "px".# This is only used for windows on the screen, not for printing.-name:layout.css.devPixelsPerPxtype:AtomicFloatvalue:-1.0fmirror:always# Is support for CSS backdrop-filter enabled?-name:layout.css.backdrop-filter.enabledtype:boolvalue:truemirror:always# Do we override the blocklist for CSS backdrop-filter?-name:layout.css.backdrop-filter.force-enabledtype:boolvalue:falsemirror:always# Is support for rect() enabled?-name:layout.css.basic-shape-rect.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# Is support for shape() enabled?-name:layout.css.basic-shape-shape.enabledtype:RelaxedAtomicBoolvalue:@IS_NIGHTLY_BUILD@mirror:alwaysrust:true# Is support for xywh() enabled?-name:layout.css.basic-shape-xywh.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# Whether alt text in content is enabled.-name:layout.css.content.alt-text.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# Should stray control characters be rendered visibly?-name:layout.css.control-characters.visibletype:RelaxedAtomicBoolvalue:@IS_NOT_RELEASE_OR_BETA@mirror:alwaysrust:true# Whether the `contain-intrinsic-size` CSS property is enabled-name:layout.css.contain-intrinsic-size.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# Is support for GeometryUtils.convert*FromNode enabled?-name:layout.css.convertFromNode.enabledtype:boolvalue:@IS_NOT_RELEASE_OR_BETA@mirror:always-name:layout.css.cross-fade.enabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Is support for light-dark() on images in content enabled?-name:layout.css.light-dark.images.enabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Is support for fit-content() enabled?-name:layout.css.fit-content-function.enabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Whether to use tight bounds for floating ::first-letter (legacy Gecko behavior)# or loose bounds based on overall font metrics (WebKit/Blink-like behavior)?# Values mean:# 1 legacy Gecko behavior (tight bounds)# 0 loose typographic bounds (similar to webkit/blink)# -1 auto behavior: use loose bounds if reduced line-height (<1em) or negative# block-start margin is present; otherwise use tight bounds.-name:layout.css.floating-first-letter.tight-glyph-boundstype:int32_t#ifdef NIGHTLY_BUILDvalue:-1#elsevalue:1#endifmirror:always# Is support for the @font-palette-values rule and font-palette property enabled?-name:layout.css.font-palette.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# Is support for variation fonts enabled?-name:layout.css.font-variations.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# Is support for the size-adjust @font-face descriptor enabled?-name:layout.css.size-adjust.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# Is support for the tech() function in the @font-face src descriptor enabled?-name:layout.css.font-tech.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# Is support for font-variant-emoji enabled?-name:layout.css.font-variant-emoji.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust: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-visibilitytype:int32_tvalue:3mirror:always# Is support for GeometryUtils.getBoxQuads enabled?-name:layout.css.getBoxQuads.enabledtype:boolvalue:@IS_NOT_RELEASE_OR_BETA@mirror:always# Is support for (linear|radial|conic)-gradient color interpolation methods enabled?-name:layout.css.gradient-color-interpolation-method.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# Should we propagate baseline alignment information from a parent grid into# its subgrids?-name:layout.css.grid-subgrid-baselines.enabledtype:RelaxedAtomicBoolvalue:@IS_NIGHTLY_BUILD@mirror:always# Is support for CSS masonry layout enabled?-name:layout.css.grid-template-masonry-value.enabledtype:RelaxedAtomicBool#if defined(NIGHTLY_BUILD) || defined(MOZ_THUNDERBIRD)value:true#elsevalue:false#endifmirror:alwaysrust:true# Perform intrinsic sizing of flexible grid tracks based on grid items that# span more than one track.-name:layout.css.grid-flex-spanning-items-intrinsic-sizing.enabledtype:boolvalue:truemirror:always# Enable the new multi-pass grid track sizing algorithm.# This features implements two aspects from the CSS Grid Level 2 spec:# 1. Percent-valued row track size re-resolution:# https://drafts.csswg.org/css-grid-2/#track-sizes# 2. Multi-pass grid sizing algorithm:# https://drafts.csswg.org/css-grid-2/#algo-grid-sizing-name:layout.css.grid-multi-pass-track-sizing.enabledtype:boolvalue:falsemirror:always# Is support for :heading and :heading() pseudo classes enabled?-name:layout.css.heading-selector.enabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Is support for CSS hyphenate-limit-chars enabled?-name:layout.css.hyphenate-limit-chars.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Is support for CSS initial-letter property enabled?-name:layout.css.initial-letter.enabledtype:boolvalue:falsemirror:always# Is eager first-letter processing during intrinsic size computation enabled?-name:layout.css.intrinsic-size-first-letter.enabledtype:boolvalue:truemirror:always# Which model to use for CSS letter-spacing:# 0 - Gecko legacy model, spacing added to trailing side of letter# 1 - WebKit/Blink-compatible, spacing always added to right-hand side# 2 - Symmetrical spacing, half added to each side-name:layout.css.letter-spacing.modeltype:int32_t#if defined(MOZ_DEV_EDITION) || defined(EARLY_BETA_OR_EARLIER)value:2#elsevalue:0#endifmirror:always# Is support for motion-path url enabled?-name:layout.css.motion-path-url.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust: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.restrictedtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# Is -moz-osx-font-smoothing enabled? (Only supported in OSX builds)-name:layout.css.osx-font-smoothing.enabledtype:bool#if defined(XP_MACOSX)value:true#elsevalue:false#endifmirror:always# Is support for CSS overflow-clip-box enabled for non-UA sheets?-name:layout.css.overflow-clip-box.enabledtype:boolvalue:falsemirror:always# Is support for CSS overflow: -moz-hidden-unscrollable enabled-name:layout.css.overflow-moz-hidden-unscrollable.enabledtype:RelaxedAtomicBoolvalue:@IS_NOT_NIGHTLY_BUILD@mirror:alwaysrust:true# Is support for overscroll-behavior enabled?-name:layout.css.overscroll-behavior.enabledtype:boolvalue:truemirror:always# Enables support for @margin rules.-name:layout.css.margin-rules.enabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Whether Properties and Values is enabled-name:layout.css.properties-and-values.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# Whether @scope rule is enabled-name:layout.css.at-scope.enabledtype:RelaxedAtomicBoolvalue:@IS_NIGHTLY_BUILD@mirror:alwaysrust:true# An override for prefers-color-scheme for content documents.# 0: Dark# 1: Light# 2: Auto (system color scheme unless overridden by browser theme)-name:layout.css.prefers-color-scheme.content-overridetype:RelaxedAtomicInt32value:2mirror:always# Dictates whether or not the prefers-reduced-transparency media query is enabled.-name:layout.css.prefers-reduced-transparency.enabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Dictates whether or not the inverted-colors media query is enabled.-name:layout.css.inverted-colors.enabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Is support for -moz-prefixed animation properties enabled?-name:layout.css.prefixes.animationstype:boolvalue:truemirror:always# Is support for -moz-border-image enabled?-name:layout.css.prefixes.border-imagetype:boolvalue:truemirror:always# Is support for -moz-box-sizing enabled?-name:layout.css.prefixes.box-sizingtype:boolvalue:truemirror:always# Is support for -moz-prefixed font feature properties enabled?-name:layout.css.prefixes.font-featurestype:boolvalue:truemirror:always# Is support for -moz-prefixed transform properties enabled?-name:layout.css.prefixes.transformstype:boolvalue:truemirror:always# Is support for -moz-prefixed transition properties enabled?-name:layout.css.prefixes.transitionstype:boolvalue:truemirror:always# Enable relative color syntax: https://drafts.csswg.org/css-color-5/#relative-colors-name:layout.css.relative-color-syntax.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# Is CSS error reporting enabled?-name:layout.css.report_errorstype:boolvalue:truemirror:always# Are inter-character ruby annotations enabled?-name:layout.css.ruby.intercharacter.enabledtype:boolvalue:falsemirror:always-name:layout.css.scroll-behavior.damping-ratiotype:AtomicFloatvalue:1.0fmirror: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-constanttype:AtomicFloatvalue:250.0fmirror:always# Whether the scroll-driven animations generated by CSS is enabled. This# also include animation-timeline property.-name:layout.css.scroll-driven-animations.enabledtype:RelaxedAtomicBoolvalue:@IS_NIGHTLY_BUILD@mirror:alwaysrust:true# 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-velocitytype:RelaxedAtomicInt32value:2000mirror: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-sensitivitytype:AtomicFloatvalue:0.750fmirror:always# Stylo thread-pool size.# Negative means auto, 0 disables the thread-pool (main-thread styling), other# numbers override as specified.# Note that 1 still creates a thread-pool of one thread!-name:layout.css.stylo-threadstype:RelaxedAtomicInt32value:-1mirror:alwaysrust:true# Stylo work unit size. This is the amount of nodes we'll process in a single# unit of work of the thread-pool.## Larger values will increase style sharing cache hits and general DOM locality# at the expense of decreased opportunities for parallelism. There are some# measurements in bug 1385982 comments 11, 12, 13 that investigate some# slightly different values for the work unit size.## If the size is significantly increased, make sure to also review# stylo-local-work-queue prefs, since we might end up doing too much work# sequentially.## A value of 0 disables parallelism altogether.-name:layout.css.stylo-work-unit-sizetype:RelaxedAtomicUint32value:16mirror:alwaysrust:true# The minimum amount of work that a thread doing styling will try to keep# locally before sending work to other threads, in a worker.-name:layout.css.stylo-local-work-queue.in-workertype:RelaxedAtomicUint32value:0mirror:alwaysrust:true# As above but for the main thread. The main thread can't really steal from# other threads so it might want a bigger min queue size before giving work to# other threads.-name:layout.css.stylo-local-work-queue.in-main-threadtype:RelaxedAtomicUint32value:32mirror:alwaysrust:true# Are counters for implemented CSS properties enabled?-name:layout.css.use-counters.enabledtype:boolvalue:truemirror:always# Are counters for unimplemented CSS properties enabled?-name:layout.css.use-counters-unimplemented.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# Should the :visited selector ever match (otherwise :link matches instead)?-name:layout.css.visited_links_enabledtype:boolvalue:truemirror:always# The margin used for detecting relevancy for `content-visibility: auto`.-name:layout.css.content-visibility-relevant-content-margintype:floatvalue:50# 50%mirror:always# Whether the `hanging` and `each-line` keywords are supported by `text-indent`-name:layout.css.text-indent-keywords.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# Whether the "modern" uppercase mapping of ß to ẞ (rather than SS) is used.-name:layout.css.text-transform.uppercase-eszett.enabledtype:boolvalue:falsemirror:always-name:layout.css.text-wrap-balance.enabledtype:boolvalue:truemirror:always# Maximum number of lines to try balancing.-name:layout.css.text-wrap-balance.limittype:int32_tvalue:10mirror:always-name:layout.css.text-wrap-balance-after-clamp.enabledtype:boolvalue:truemirror:always-name:layout.css.text-align.justify-only-after-last-tabtype:boolvalue:truemirror:always# Support for the css Zoom property.-name:layout.css.zoom.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# CSS for android picture-in-picture. See bug 1940052.-name:layout.css.android-pip.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# The maximum width or height of the cursor we should allow when intersecting# the UI, in CSS pixels.-name:layout.cursor.block.max-sizetype:uint32_tvalue:32mirror:always-name:layout.cursor.disable-for-popupstype:boolvalue:truemirror:always-name:layout.display-list.build-twicetype:RelaxedAtomicBoolvalue:falsemirror:always# Toggle retaining display lists between paints.-name:layout.display-list.retaintype:RelaxedAtomicBoolvalue:truemirror:always# Toggle retaining display lists between paints.-name:layout.display-list.retain.chrometype:RelaxedAtomicBoolvalue:truemirror:always-name:layout.display-list.retain.sctype:RelaxedAtomicBoolvalue:falsemirror:always# Set the maximum number of modified frames allowed before doing a full# display list rebuild.-name:layout.display-list.rebuild-frame-limittype:RelaxedAtomicUint32value:500mirror:always# Pref to dump the display list to the log. Useful for debugging drawing.-name:layout.display-list.dumptype:RelaxedAtomicBoolvalue:falsemirror:always# Pref to dump the display list to the log. Useful for debugging drawing.-name:layout.display-list.dump-contenttype:RelaxedAtomicBoolvalue:falsemirror:always# Pref to dump the display list to the log. Useful for debugging drawing.-name:layout.display-list.dump-parenttype:RelaxedAtomicBoolvalue:falsemirror:always-name:layout.display-list.show-rebuild-areatype:RelaxedAtomicBoolvalue:falsemirror:always-name:layout.display-list.improve-fragmentationtype:RelaxedAtomicBoolvalue:truemirror:always# Are dynamic reflow roots enabled?-name:layout.dynamic-reflow-roots.enabledtype:boolvalue:@IS_EARLY_BETA_OR_EARLIER@mirror:always# Enables the mechanism to optimize away flex item's final reflow.# Warning: Disabling the pref will impact the performance. This is useful only for# debugging flexbox issues.-name:layout.flexbox.item-final-reflow-optimization.enabledtype:boolvalue:truemirror: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.enabledtype:boolvalue:falsemirror:always# Enables the Reveal Password button inside a <input type=password>.-name:layout.forms.reveal-password-button.enabledtype:boolvalue:falsemirror:always# If enabled, textareas won't include 'overflow:auto' scrollbars in their# block-axis size (usually height).-name:layout.forms.textarea-sizing-excludes-auto-scrollbar.enabledtype:boolvalue:truemirror: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_ratetype:RelaxedAtomicInt32value:-1mirror:always# If it has been this many frame periods since a refresh, assume that painting# is quiescent (will not happen again soon).-name:layout.idle_period.required_quiescent_framestype:uint32_tvalue:2mirror: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_limittype:uint32_tvalue:1mirror:always# The minimum amount of time (milliseconds) required to be remaining# in the current vsync interval for us to attempt an extra tick, or# <0 to disable extra ticks entirely.-name:layout.extra-tick.minimum-mstype:int32_tvalue:4mirror:always# Whether to load the broken image icon eagerly. This is mostly needed for# reftests, since the broken image icon doesn't block the load event and thus# there's no easy way to guarantee it's loaded.-name:layout.image.eager_broken_image_icontype:boolvalue:falsemirror: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.enabledtype:boolvalue:truemirror:always# Whether synthesize eMouseMove for dispatching mouse boundary events after# a layout change or a scroll.-name:layout.reflow.synthMouseMovetype:boolvalue:truemirror:always# This pref determines which side vertical scrollbars should be on.# 0 = end-side in UI direction# 1 = end-side in document/content direction# 2 = right# 3 = left-name:layout.scrollbar.sidetype:int32_tvalue:0mirror:always# This pref is to be set by test code only.-name:layout.scrollbars.always-layerize-tracktype:RelaxedAtomicBoolvalue:falsemirror:always-name:layout.scrollbars.click_and_hold_track.continue_to_endtype:bool# On Linux, click-and-hold on the scrollbar track should continue scrolling# until the mouse is released. On the other platforms we want to stop# scrolling as soon as the scrollbar thumb has reached the current mouse# position.#ifdef MOZ_WIDGET_GTKvalue:true#elsevalue:false#endifmirror:always# Whether anchor is kept selected.-name:layout.selectanchortype:boolvalue:falsemirror: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_styletype:int32_tvalue:0mirror: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_pagetype:boolvalue:truemirror:always# This will automatically enable inline spellchecking (if it is available) for# editable elements in HTML.# 0 = spellcheck nothing# 1 = check multi-line controls [default]# 2 = check multi/single line controls-name:layout.spellcheckDefaulttype:int32_tvalue:1mirror:always# Treat top level pages as always-active for the purpose of refresh driver# throttling and such.## Intended for testing automation and so forth.-name:layout.testing.top-level-always-activetype:boolvalue:falsemirror:always# Pref to stop overlay scrollbars from fading out, for testing purposes.-name:layout.testing.overlay-scrollbars.always-visibletype:boolvalue:falsemirror:always# Whether we always hide the scrollbars, to avoid them affecting the visual# metrics of some performance tests.-name:layout.testing.scrollbars.always-hiddentype:RelaxedAtomicBoolvalue:falsemirror:always# Throttled frame rate, in frames per second.-name:layout.throttled_frame_ratetype:uint32_tvalue:1mirror:always# Whether we should throttle in-process iframes in the active tab.-name:layout.throttle_in_process_iframestype:boolvalue:truemirror:always-name:layout.lower_priority_refresh_driver_during_loadtype:boolvalue:truemirror:always# If > 0, nsRefreshDriver will keep ticking this amount of milliseconds after# top level page load.-name:layout.keep_ticking_after_load_mstype:uint32_tvalue:1000mirror:always# Pref to control enabling scroll anchoring.-name:layout.css.scroll-anchoring.enabledtype:boolvalue:truemirror:always# Pref to control how many consecutive scroll-anchoring adjustments (since the# most recent user scroll or timeout) 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-adjustmentstype:uint32_tvalue:10mirror:always# Whether to reset counting the consecutive scroll-anchoring adjustments during# running async scrolling by APZ.-name:layout.css.scroll-anchoring.reset-heuristic-during-animationtype:boolvalue:falsemirror:always# The time after which we reset the max-consecutive-adjustments period, in# milliseconds.## This prevents sporadic back-and-forth scroll anchoring to trigger the# max-consecutive-adjustments heuristic.-name:layout.css.scroll-anchoring.max-consecutive-adjustments-timeout-mstype:uint32_tvalue:500mirror: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-thresholdtype:uint32_tvalue:2mirror: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.enabledtype:boolvalue:truemirror:always-name:layout.css.scroll-anchoring.highlighttype:boolvalue:falsemirror:always# Pref to control whether we reselect scroll anchors if sub-optimal## See https://github.com/w3c/csswg-drafts/issues/6787-name:layout.css.scroll-anchoring.reselect-if-suboptimaltype:boolvalue:truemirror:always# Are shared memory User Agent style sheets enabled?-name:layout.css.shared-memory-ua-sheets.enabledtype:boolvalue:truemirror:always# Is the CSS 'stretch' keyword enabled, for size-valued properties like 'width'# and 'height'? (Note: this is unrelated to the 'stretch' value for the# various alignment properties like 'align-self'; this pref has has# no influence on the 'stretch' keyword for those alignment properties.)-name:layout.css.stretch-size-keyword.enabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Is the '-webkit-fill-available' keyword enabled, as an alias for 'stretch'?-name:layout.css.webkit-fill-available.enabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Is support for -webkit-line-clamp on regular blocks enabled?-name:layout.css.webkit-line-clamp.block.enabledtype:boolvalue:falsemirror:always# Does webkit-line-clamp skip painting clamped lines?# See bug 1934547.-name:layout.css.webkit-line-clamp.skip-painttype:boolvalue:falsemirror:always# Is support for the ::details-content pseudo-element enabled?-name:layout.css.details-content.enabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Is 'content:none' supported on (non-pseudo) elements?-name:layout.css.element-content-none.enabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Whether we want scrollbar-width: thin to behave as scrollbar-width: auto.-name:layout.css.scrollbar-width-thin.disabledtype:RelaxedAtomicBoolvalue:falsemirror:always# field-sizing CSS property-name:layout.css.field-sizing.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Whether supports() conditions in @import is enabled-name:layout.css.import-supports.enabledtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# Whether :-moz-broken is supported in content.-name:layout.css.moz-broken.content.enabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Whether the modern ::slider-* pseudos are enabled.-name:layout.css.modern-range-pseudos.enabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Is matching video-dynamic-range: high allowed?-name:layout.css.video-dynamic-range.allows-hightype:RelaxedAtomicBool#if defined(XP_MACOSX) || defined(MOZ_WAYLAND)value:true#elsevalue:false#endifmirror:always# Is support for CSS Typed Object Model API enabled?## Note that this feature is experimental and under active development.# Enabling this pref will only expose some interfaces that are already# implemented and is intended solely to enable WPT coverage during# incremental development.-name:layout.css.typed-om.enabledtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Whether frame visibility tracking is enabled globally.-name:layout.framevisibility.enabledtype:boolvalue:truemirror:always# The fraction of the scrollport we allow to horizontally scroll by before we# schedule an update of frame visibility.-name:layout.framevisibility.amountscrollbeforeupdatehorizontaltype:int32_tvalue:2mirror:always# The fraction of the scrollport we allow to vertically scroll by before we# schedule an update of frame visibility.-name:layout.framevisibility.amountscrollbeforeupdateverticaltype:int32_tvalue:2mirror:always# The number of scrollports wide to expand when tracking frame visibility.-name:layout.framevisibility.numscrollportwidthstype:uint32_t#ifdef ANDROIDvalue:1#elsevalue:0#endifmirror:always# The number of scrollports high to expand when tracking frame visibility.-name:layout.framevisibility.numscrollportheightstype:uint32_tvalue:1mirror:always# Test only.-name:layout.dynamic-toolbar-max-heighttype:RelaxedAtomicInt32value:0mirror:always# Whether outlines should include all overflowing descendants, or just the# border-box of a given element.## Historically we have included descendants but other browsers have not.-name:layout.outline.include-overflowtype:boolvalue:falsemirror:always-name:layout.visibility.min-recompute-interval-mstype:uint32_tvalue:1000mirror:always# Controls double click and Alt+Arrow word selection behavior.-name:layout.word_select.eat_space_to_next_wordtype:bool#ifdef XP_WINvalue:true#elsevalue:false#endifmirror:always-name:layout.word_select.stop_at_punctuationtype:RelaxedAtomicBoolvalue:truemirror:always# Whether underscore should be treated as a word-breaking character for# word selection/arrow-key movement purposes.-name:layout.word_select.stop_at_underscoretype:boolvalue:falsemirror:always# Whether to draw images in CSS backgrounds if we only have a partial frame.-name:layout.display_partial_background_imagestype:boolvalue:truemirror:always# Controls whether nsRefreshDriver::IsInHighRateMode() may ever return true.-name:layout.expose_high_rate_mode_from_refreshdrivertype:boolvalue:truemirror:always# Whether <details> is forced to be a block, see bug 1856374# The legacy behavior is 'true', i.e. forcing it to be a block.# The modern behavior is 'false', i.e. not forcing it to be a block.-name:layout.details.force-block-layouttype:boolvalue:@IS_NOT_NIGHTLY_BUILD@mirror:always# Whether table cells can generate scroll boxes.-name:layout.tables.scrollable-cellstype:boolvalue:falsemirror:always# Whether to disable layer pixel alignment in layout stuff.-name:layout.disable-pixel-alignmenttype:RelaxedAtomicBoolvalue:falsemirror:always# Whether scrollIntoView scrolls to `position: fixed` frames visually.-name:layout.scroll_fixed_content_into_view_visuallytype:bool#if defined(ANDROID)value:true#elsevalue:false#endifmirror:always#---------------------------------------------------------------------------# Prefs starting with "logging."#---------------------------------------------------------------------------# If this pref is true, prefs in the logging.config branch will be cleared on# startup. This prevents unadvertedly creating huge log files that fill the disk# when forgetting to remove the logging preferences.-name:logging.config.clear_on_startuptype:boolvalue:truemirror:never#---------------------------------------------------------------------------# Prefs starting with "mathml."#---------------------------------------------------------------------------# Whether to disable legacy names "thickmathspace", "mediummathspace",# "thickmathspace" etc for length attributes.-name:mathml.mathspace_names.disabledtype:boolvalue:@IS_NIGHTLY_BUILD@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.disabledtype:boolvalue:truemirror:always# Whether to disable fallback for mathvariant=italic/bold/bold-italic via# styling when lacking proper fonts for Mathematical Alphanumeric Symbols.# We expect all OSes to have relevant fonts, except Android, see bug 1789083.-name:mathml.mathvariant_styling_fallback.disabledtype:bool#if defined(ANDROID)value:false#elsevalue:true#endifmirror:always# Whether to disable the MathML3 support for the mathvariant attribute. For# MathML Core, support is restricted to the <mi> element and to value "normal".# Corresponding automatic italicization on single-char <mi> element is also# implemented via text-transform: auto when that flag is enabled.-name:mathml.legacy_mathvariant_attribute.disabledtype:boolvalue:@IS_NIGHTLY_BUILD@mirror:alwaysrust:true# Whether to disable forced centering of binary operators (+, =, ...).-name:mathml.centered_operators.disabledtype:boolvalue:truemirror:alwaysrust:true# Whether to disable extra top/bottom spacing for stretchy operators.-name:mathml.top_bottom_spacing_for_stretchy_operators.disabledtype:boolvalue:truemirror:alwaysrust:true#---------------------------------------------------------------------------# 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_policytype:uint32_tvalue:0mirror:always# Whether to allow autoplay on extension background pages.-name:media.autoplay.allow-extension-background-pagestype:boolvalue:truemirror:always# Block autoplay, asking for permission by default.# 0=Allowed, 1=Blocked, 5=All Blocked-name:media.autoplay.defaulttype:int32_tvalue:1mirror:always# File-backed MediaCache size.-name:media.cache_sizetype:RelaxedAtomicUint32value:512000# Measured in KiBmirror: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.cellulartype:RelaxedAtomicUint32value:32768# Measured in KiBmirror:always# Multiplier to change the sample rate at which input-only streams run, so as# to similate clock drift.-name:media.cubeb.input_drift_factortype:AtomicFloatmirror:alwaysvalue:1.f# Multiplier to change the sample rate at which output-only streams run, so as# to similate clock drift.-name:media.cubeb.output_drift_factortype:AtomicFloatmirror:alwaysvalue:1.f# Whether cubeb is sandboxed (AudioIPC)-name:media.cubeb.sandboxtype:boolmirror:always#if defined(XP_LINUX) || defined(XP_WIN) || defined(XP_MACOSX)value:true#elsevalue: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-rawtype:RelaxedAtomicUint32mirror:alwaysvalue:0#endif // XP_WIN# Whether to make the start of cubeb stream slower, and by how many# milliseconds.-name:media.cubeb.slow_stream_init_mstype:RelaxedAtomicUint32mirror:alwaysvalue:0# 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_sizetype:uint32_tvalue:8192# Measured in KiBmirror: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_kbtype:uint32_tvalue:524288mirror: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_sysmemtype:uint32_tvalue:5# A percentagemirror: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_thresholdtype:RelaxedAtomicUint32value:30mirror:always-name:media.cache_resume_threshold.cellulartype:RelaxedAtomicUint32value:10mirror: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_limittype:RelaxedAtomicUint32value:60mirror:always-name:media.cache_readahead_limit.cellulartype:RelaxedAtomicUint32value:30mirror:always# MediaCapabilities-name:media.mediacapabilities.drop-thresholdtype:RelaxedAtomicInt32value:95mirror:always-name:media.mediacapabilities.from-databasetype:RelaxedAtomicBoolvalue:@IS_NIGHTLY_BUILD@mirror:always# AudioSink-name:media.resampling.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# libcubeb backend implements .get_preferred_channel_layout-name:media.forcestereo.enabledtype:RelaxedAtomicBool#if defined(XP_WIN) || defined(XP_DARWIN) || defined(MOZ_PULSEAUDIO)value:false#elsevalue:true#endifmirror:always# MediaSource# Whether to enable MediaSource support.-name:media.mediasource.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:media.mediasource.mp4.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:media.mediasource.webm.enabledtype:RelaxedAtomicBoolvalue:truemirror: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.enabledtype:RelaxedAtomicBoolvalue:@IS_NOT_MOBILE@mirror:always# Whether to enable MediaSource v2 support.-name:media.mediasource.experimental.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Whether to enable experimental requestVideoFrameCallback support-name:media.rvfc.enabledtype:boolvalue:truemirror:always# true for talos tests so that VideoSink passes on the most recently decoded# frame to exercise the compositor even when the frame is out of date because# the decoder is stressed.# If this were true for normal playback, then presentation of such late decoded# video frames would be out of sync with audio, and VideoPlaybackQuality# metrics would provide no indication of the poor playback. [1]# For normal playback, this is false, which does not restore A/V sync in this# situation, but some out-of-date frames are dropped. The dropped frame count# is reported to content in VideoPlaybackQuality metrics.# [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1258870#c6-name:media.ruin-av-sync.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Encrypted Media Extensions-name:media.eme.enabledtype: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#elsevalue:true#endifmirror:always# Whether we expose the functionality proposed in# https://w3c.github.io/encrypted-media/#ref-for-dom-mediakeysystemmediacapability-encryptionscheme-2# 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.enabledtype:boolvalue:truemirror: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-approvaltype:boolvalue:falsemirror:always-name:media.eme.audio.blanktype:RelaxedAtomicBoolvalue:falsemirror:always-name:media.eme.video.blanktype:RelaxedAtomicBoolvalue:falsemirror:always-name:media.eme.chromium-api.video-shmemstype:RelaxedAtomicUint32value:6mirror:always# Is support for MediaKeys.getStatusForPolicy enabled?-name:media.eme.hdcp-policy-check.enabledtype:boolvalue:truemirror:always-name:media.eme.max-throughput-mstype:RelaxedAtomicUint32value:500mirror:always-name:media.clearkey.persistent-license.enabledtype:boolvalue:falsemirror:always# Are test specific clearkey key systems enabled and exposed?-name:media.clearkey.test-key-systems.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always-name:media.cloneElementVisually.testingtype:boolvalue:falsemirror:always# Does the GMPlugin process initialize minimal XPCOM-name:media.gmp.use-minimal-xpcomtype:RelaxedAtomicBoolvalue:truemirror:always# Does the GMPlugin process use native event processing-name:media.gmp.use-native-event-processingtype:RelaxedAtomicBoolvalue:@IS_NOT_XP_MACOSX@mirror:always# How long in milliseconds before timing out to destroy en/decoders gracefully-name:media.gmp.coder-shutdown-timeout-mstype:RelaxedAtomicUint32value:1000mirror: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.allowtype:RelaxedAtomicBoolvalue:falsemirror:always#endif# (When reading the next line, know that preprocessor.py doesn't# understand parentheses, but && is higher precedence than ||.)#if defined(XP_WIN) && defined(_ARM64_) || defined(XP_MACOSX)# These prefs control whether or not we will allow x86/x64 plugins# to run on Windows ARM or Apple Silicon machines. This requires# launching the GMP child process executable in x86/x64 mode. We# expect to allow this for Widevine until an arm64 version of# Widevine and Clearkey is made available. We don't expect to need# to allow this for OpenH264.## For Apple Silicon and OSX, it will be for universal builds and# whether or not it can use the x64 Widevine plugin.## For Windows ARM, it will be for ARM builds and whether or not it# can use x86 Widevine or Clearkey plugins.# May a Widevine GMP x64 process be executed on ARM builds.-name:media.gmp-widevinecdm.allow-x64-plugin-on-arm64type:RelaxedAtomicBoolvalue:truemirror:always# May an OpenH264 GMP x64 process be executed on ARM builds.-name:media.gmp-gmpopenh264.allow-x64-plugin-on-arm64type:RelaxedAtomicBoolvalue:falsemirror:always# May a Clearkey GMP x64 process be executed on ARM builds.-name:media.gmp-gmpclearkey.allow-x64-plugin-on-arm64type:RelaxedAtomicBoolvalue:falsemirror: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-decodertype:RelaxedAtomicBoolvalue:falsemirror:always# Specifies whether the PEMFactory can create PEMs for remote audio encoding# in the RDD or utility processes.-name:media.use-remote-encoder.audiotype:RelaxedAtomicBoolvalue:falsemirror:always# Specifies whether the PEMFactory can create PEMs for remote video encoding# in the RDD or GPU process.-name:media.use-remote-encoder.videotype:RelaxedAtomicBoolvalue:falsemirror:always-name:media.gpu-process-decodertype:RelaxedAtomicBool#if defined(XP_WIN)value:true#elsevalue:false#endifmirror:always-name:media.gpu-process-encodertype:RelaxedAtomicBoolvalue:falsemirror:always-name:media.ffvpx-hw.enabledtype:RelaxedAtomicBool#if defined(MOZ_WIDGET_GTK)value:true#elif defined(XP_WIN)value:@IS_NIGHTLY_BUILD@#elsevalue:false#endifmirror:always# The codecs in the vendored ffmpeg copy are usually prefered to the other# codecs. This allows changing this policy for testing purposes.-name:media.prefer-non-ffvpxtype:RelaxedAtomicBoolvalue:falsemirror:always-name:media.rdd-process.enabledtype:RelaxedAtomicBool#if defined(XP_WIN)value:true#elif defined(XP_MACOSX)value:true#elif defined(XP_LINUX) && !defined(ANDROID)value:true#elif defined(XP_FREEBSD)value:true#elif defined(XP_OPENBSD)value:true#elif defined(XP_SOLARIS)value:true#elsevalue:false#endifmirror:always-name:media.rdd-retryonfailure.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:media.rdd-process.startup_timeout_mstype:RelaxedAtomicInt32value:5000mirror:always# Specifies how many times we restart RDD process after crash till we give up.# After first RDD restart we disable HW acceleration on Linux.-name:media.rdd-process.max-crashestype:RelaxedAtomicInt32value:2mirror:always#ifdef MOZ_FFMPEG-name:media.rdd-ffmpeg.enabledtype:RelaxedAtomicBoolvalue:truemirror:always#endif-name:media.rdd-ffvpx.enabledtype:RelaxedAtomicBool#if defined(XP_WIN)value:true#elif defined(XP_MACOSX)value:true#elif defined(XP_LINUX) && !defined(ANDROID)value:true#elif defined(XP_FREEBSD)value:true#elif defined(XP_OPENBSD)value:true#elif defined(XP_SOLARIS)value:true#elsevalue:false#endifmirror:always#ifdef MOZ_WMF-name:media.rdd-wmf.enabledtype:RelaxedAtomicBoolvalue:truemirror:always#endif#ifdef MOZ_APPLEMEDIA-name:media.rdd-applemedia.enabledtype:RelaxedAtomicBoolvalue:truemirror:always#endif-name:media.rdd-vorbis.enabledtype:RelaxedAtomicBool#if defined(XP_WIN)value:true#elif defined(XP_MACOSX)value:true#elif defined(XP_LINUX) && !defined(ANDROID)value:true#elif defined(XP_FREEBSD)value:true#elif defined(XP_OPENBSD)value:true#elif defined(XP_SOLARIS)value:true#elsevalue:false#endifmirror:always-name:media.rdd-vpx.enabledtype:RelaxedAtomicBool#if defined(XP_WIN)value:true#elif defined(XP_MACOSX)value:true#elif defined(XP_LINUX) && !defined(ANDROID)value:true#elif defined(XP_FREEBSD)value:true#elif defined(XP_OPENBSD)value:true#elif defined(XP_SOLARIS)value:true#elsevalue:false#endifmirror:always-name:media.rdd-wav.enabledtype:RelaxedAtomicBool#if defined(XP_WIN)value:true#elif defined(XP_MACOSX)value:true#elif defined(XP_LINUX) && !defined(ANDROID)value:true#elif defined(XP_FREEBSD)value:true#elif defined(XP_OPENBSD)value:true#elif defined(XP_SOLARIS)value:true#elsevalue:false#endifmirror:always-name:media.rdd-opus.enabledtype:RelaxedAtomicBool#if defined(XP_WIN)value:true#elif defined(XP_MACOSX)value:true#elif defined(XP_LINUX) && !defined(ANDROID)value:true#elif defined(XP_FREEBSD)value:true#elif defined(XP_OPENBSD)value:true#elif defined(XP_SOLARIS)value:true#elsevalue:false#endifmirror:always-name:media.rdd-webaudio.batch.sizetype:RelaxedAtomicInt32value:100mirror:always# This pref is here to control whether we want to perform audio decoding by# using the IPC actor within the Utility process rather than the RDD process.# When it is set to true, then the utility process will take precedence over RDD# to perform audio decoding.-name:media.utility-process.enabledtype:RelaxedAtomicBool#if defined(XP_WIN)value:true#elif defined(XP_MACOSX)value:true#elif defined(XP_LINUX) || defined(ANDROID)value:true#elif defined(XP_FREEBSD)value:true#elif defined(XP_OPENBSD)value:true#elif defined(XP_SOLARIS)value:true#elsevalue:false#endifmirror:always# Specifies how many times we restart Utility process after crash till we give# up.-name:media.utility-process.max-crashestype:RelaxedAtomicInt32value:2mirror:always#ifdef ANDROID# Enable the MediaCodec PlatformDecoderModule by default.-name:media.android-media-codec.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Bug 1771196# Dont yet enable AndroidDecoderModule on Utility-name:media.utility-android-media-codec.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always-name:media.android-media-codec.preferredtype:RelaxedAtomicBoolvalue:truemirror:always#endif # ANDROID# Now we will completely disable the ability to perform audio decoding outside# of Utility.-name:media.allow-audio-non-utilitytype:RelaxedAtomicBoolvalue:@IS_IOS@mirror:always#ifdef MOZ_OMX-name:media.omx.enabledtype:boolvalue:falsemirror:always#endif# Allow ffmpeg decoder to decode directly onto shmem buffer-name:media.ffmpeg.customized-buffer-allocationtype:RelaxedAtomicBoolvalue:truemirror:always# Disable falling back to software decoders in case of frame drop-name:media.ffmpeg.disable-software-fallbacktype:RelaxedAtomicBoolvalue:falsemirror:always#ifdef MOZ_FFMPEG-name:media.ffmpeg.enabledtype:RelaxedAtomicBool#if defined(XP_MACOSX)value:false#elsevalue:true#endifmirror:always-name:media.libavcodec.allow-obsoletetype:boolvalue:falsemirror:always#endif # MOZ_FFMPEG# Allow using ffmpeg encoder-name:media.ffmpeg.encoder.enabledtype:RelaxedAtomicBool#if !defined(MOZ_WIDGET_ANDROID)value:true#elsevalue:false#endifmirror:always# A high quantizer value allows the encoder to use higher compression, but# resulting in lower quality for parts of the video. Using a lower value# restricts excessive compression, improving video quality but potentially# increasing file size. The quantizer's value range is controlled by the min# and max values below. The lower the value is, the finer the quantizer will be# Set AVCodecContext's qmin value to ffmpeg encoder-name:media.ffmpeg.encoder.quantizer-mintype:RelaxedAtomicInt32value:10# An empirical value for better performancemirror:always# Set AVCodecContext's qmax value to ffmpeg encoder-name:media.ffmpeg.encoder.quantizer-maxtype:RelaxedAtomicInt32value:35# An empirical value for better quality of the video outputmirror:always# Set the FFmpeg encoder's cpu-used option, only for the AV1 encoder in quality# mode currently. While values from 6 to 9 are generally used for real-time# encoding in libaom, we opt to prioritize speed over quality in this case.-name:media.ffmpeg.encoder.cpu-usedtype:RelaxedAtomicInt32value:7mirror:always# Allow using openh264 decoding with ffmpeg-name:media.ffmpeg.allow-openh264type:RelaxedAtomicBoolvalue:@IS_NOT_NIGHTLY_BUILD@mirror:always#ifdef MOZ_WIDGET_GTK# Force to copy dmabuf video frames# Used for debugging/troubleshooting only# 0 - force disable# 1 - force enable# 2 - default-name:media.ffmpeg.vaapi.force-surface-zero-copytype:uint32_tvalue:2mirror:once#endif # MOZ_WIDGET_GTK# 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.disabledtype:RelaxedAtomicBoolvalue:falsemirror:always#ifdef MOZ_WMF-name:media.wmf.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Whether DD should consider WMF-disabled a WMF failure, useful for testing.-name:media.decoder-doctor.wmf-disabled-is-failuretype:RelaxedAtomicBoolvalue:falsemirror:always-name:media.wmf.dxva.d3d11.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:media.wmf.dxva.max-videostype:RelaxedAtomicUint32value:8mirror:always-name:media.wmf.use-nv12-formattype:RelaxedAtomicBoolvalue:truemirror:always-name:media.wmf.zero-copy-nv12-texturestype:boolvalue:truemirror:once# Enable hardware decoded video no copy even when it is blocked.-name:media.wmf.zero-copy-nv12-textures-force-enabledtype:boolvalue:falsemirror:once-name:media.wmf.force.allow-p010-formattype:RelaxedAtomicBoolvalue:falsemirror:always-name:media.wmf.use-sync-texturetype:boolvalue:truemirror:once-name:media.wmf.low-latency.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:media.wmf.skip-blacklisttype:RelaxedAtomicBoolvalue:falsemirror:always-name:media.wmf.amd.highres.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:media.wmf.allow-unsupported-resolutionstype:RelaxedAtomicBoolvalue:truemirror:always-name:media.wmf.vp9.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:media.wmf.av1.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Using Windows Media Foundation Media Engine for encrypted playback# 0 : disable, 1 : enable for encrypted and clear,# 2 : enable for encrypted only, 3 : enable for clear only-name:media.wmf.media-engine.enabledtype:RelaxedAtomicUint32value:2mirror:always# Testing purpose, enable media engine on channel decoder as well.-name:media.wmf.media-engine.channel-decoder.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# The amount of video raw data the engine stream will queue-name:media.wmf.media-engine.raw-data-threshold.videotype:RelaxedAtomicInt32value:500000mirror:always# The amount of audio raw data the engine stream will queue-name:media.wmf.media-engine.raw-data-threshold.audiotype:RelaxedAtomicInt32value:2000000mirror:always# Specifies how many times we restart MFCDM process after crash till we give up.-name:media.wmf.media-engine.max-crashestype:RelaxedAtomicInt32value:2mirror:always# Bypass the gfx block list check for the media engine playback.-name:media.wmf.media-engine.bypass-gfx-blocklisttype:RelaxedAtomicBoolvalue:falsemirror:always# [TEST-ONLY] Use Media Foundation Clearkey CDM for EME related testing.-name:media.eme.wmf.clearkey.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# [TEST-ONLY] use Media Foundation clearkey CDM dll to mock as an external CDM,# external CDM like Widevine and PlayReady so that we won't be interfered by# unexpected behaviors caused by the external library.-name:media.eme.wmf.use-mock-cdm-for-external-cdmstype:RelaxedAtomicBoolvalue:falsemirror:always# Enable PlayReady DRM for EME-name:media.eme.playready.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Use IsTypeSupportedEx for PlayReady-name:media.eme.playready.istypesupportedextype:RelaxedAtomicBoolvalue:truemirror:always# Enable Widevine experiment DRM for EME-name:media.eme.widevine.experiment.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Enable origin filter for MFCDM support# 0 : disabled, 1 : enabled allowed list, 2 : enabled blocked list,# 3 : enabled allowed by default via Remote Settings# 4 : enabled blocked by default via Remote Settings-name:media.eme.mfcdm.origin-filter.enabledtype:RelaxedAtomicUint32#ifdef NIGHTLY_BUILDvalue:3#elsevalue:4#endifmirror:always#endif # MOZ_WMF-name:media.hevc.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:media.decoder-doctor.testingtype:boolvalue:falsemirror:always-name:media.hardware-video-decoding.enabledtype:boolvalue:truemirror:once-name:media.hardware-video-decoding.force-enabledtype:boolvalue:falsemirror:once-name:media.hardware-video-encoding.enabledtype:boolvalue:truemirror:once-name:media.hardware-video-encoding.force-enabledtype:boolvalue:falsemirror:once# Whether to check the decoder supports recycling.-name:media.decoder.recycle.enabledtype:RelaxedAtomicBoolvalue:@IS_ANDROID@mirror:always# Should MFR try to skip to the next key frame?-name:media.decoder.skip-to-next-key-frame.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# The delay time (ms) before releasing an audio wakelock.-name:media.wakelock.audio.delay-releasing.mstype:RelaxedAtomicUint32value:10000mirror:always# When video continues later than the current media time for this period of# time, then it will trigger skip-to-next-keyframe mechanism. As this aims to# solve the drop frames issue where video decoding too slow for high# resolution videos. eg. 4k+. Therefore, the value is is determined by the# telemetry probe `video_inter_keyframe_max_ms` in the key of `AV,h>2160` which# shows that 95% video's key frame interval are less than ~5000. We use its# half value as a threashold to decide whether we should keep decoding in the# current video position or jump to the next keyframe in order to decode future# frames in advance.-name:media.decoder.skip_when_video_too_slow_mstype:RelaxedAtomicInt32value:2500mirror:always# True if we want to decode in batches.-name:media.gmp.decoder.decode_batchtype:RelaxedAtomicBoolvalue:falsemirror:always# True if we allow use of any decoders found in GMP plugins.-name:media.gmp.decoder.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# True if we want to request the multithreaded GMP decoder.-name:media.gmp.decoder.multithreadedtype:RelaxedAtomicBoolvalue:falsemirror:always# True if we want to try using the GMP plugin decoders first.-name:media.gmp.decoder.preferredtype:RelaxedAtomicBoolvalue:falsemirror:always# True if we want to reorder frames from the decoder based on the timestamp.-name:media.gmp.decoder.reorder_framestype:RelaxedAtomicBoolvalue:truemirror:always# True if we allow use of any encoders found in GMP plugins.-name:media.gmp.encoder.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# True if we want to request the multithreaded GMP encoder.-name:media.gmp.encoder.multithreadedtype:RelaxedAtomicBoolvalue:falsemirror:always# True if we want to try using the GMP plugin encoders first.-name:media.gmp.encoder.preferredtype:RelaxedAtomicBoolvalue:falsemirror:always# Whether to suspend decoding of videos in background tabs.-name:media.suspend-background-video.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Delay, in ms, from time window goes to background to suspending# video decoders. Defaults to 10 seconds.-name:media.suspend-background-video.delay-mstype:RelaxedAtomicUint32value:10000mirror:always-name:media.dormant-on-pause-timeout-mstype:RelaxedAtomicInt32value:5000mirror:always# AudioTrack and VideoTrack support-name:media.track.enabledtype:boolvalue:falsemirror:always# This pref disables the reception of RTCP. It is used for testing.-name:media.webrtc.net.force_disable_rtcp_receptiontype:ReleaseAcquireAtomicBoolvalue:falsemirror:always# This pref disables using PQ crypto for WebRTC DTLS code.-name:media.webrtc.enable_pq_dtlstype:RelaxedAtomicBoolvalue:@IS_EARLY_BETA_OR_EARLIER@mirror:always# This pref controls whether dispatch testing-only events.-name:media.webvtt.testing.eventstype:boolvalue:falsemirror:always#ifdef MOZ_WEBSPEECH-name:media.webspeech.synth.force_global_queuetype:boolvalue:falsemirror:always-name:media.webspeech.test.enabletype:boolvalue:falsemirror:always-name:media.webspeech.test.fake_fsm_eventstype:boolvalue:falsemirror:always-name:media.webspeech.test.fake_recognition_servicetype:boolvalue:falsemirror:always-name:media.webspeech.recognition.enabletype:boolvalue:falsemirror:always-name:media.webspeech.synth.enabledtype:boolvalue:truemirror:always#endif # MOZ_WEBSPEECH-name:media.encoder.webm.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:media.audio-max-decode-errortype:uint32_t#if defined(RELEASE_OR_BETA)value:3#else# Zero tolerance in pre-release builds to detect any decoder regression.value:0#endifmirror:always-name:media.video-max-decode-errortype:uint32_t#if defined(RELEASE_OR_BETA)value:2#else# Zero tolerance in pre-release builds to detect any decoder regression.value:0#endifmirror:always# Are video stats enabled? (Disabling can help prevent fingerprinting.)-name:media.video_stats.enabledtype:boolvalue:truemirror:always# forces the number of dropped frames to 0-name:media.video.dropped_frame_stats.enabledtype:boolvalue:truemirror:always# Opus-name:media.opus.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Wave-name:media.wave.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Ogg-name:media.ogg.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# WebM-name:media.webm.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# AV1-name:media.av1.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:media.av1.use-dav1dtype:RelaxedAtomicBoolvalue:truemirror:always-name:media.av1.new-thread-count-strategytype:RelaxedAtomicBoolvalue:falsemirror:always-name:media.av1.force-thread-counttype:RelaxedAtomicInt32value:0mirror:always-name:media.flac.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Hls-name:media.hls.enabledtype:RelaxedAtomicBool#if defined(ANDROID)value:@IS_NOT_EARLY_BETA_OR_EARLIER@#elsevalue:false#endifmirror: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-allocationstype:uint32_tvalue:20mirror:always#endif-name:media.mp4.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:media.mp4.sniff_iso_brandtype:RelaxedAtomicBoolvalue:truemirror:always# Error/warning handling, Decoder Doctor.## Set to true to force demux/decode warnings to be treated as errors.-name:media.playback.warnings-as-errorstype:RelaxedAtomicBoolvalue:falsemirror: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-background-video-on-tabhovertype:boolvalue:truemirror:always# Media Seamless Looping-name:media.seamless-loopingtype:RelaxedAtomicBoolvalue:truemirror:always-name:media.seamless-looping-videotype:RelaxedAtomicBoolvalue:truemirror:always-name:media.autoplay.block-event.enabledtype:boolvalue:falsemirror:always-name:media.media-capabilities.screen.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always-name:media.benchmark.vp9.fpstype:RelaxedAtomicUint32value:0mirror:always-name:media.benchmark.vp9.thresholdtype:RelaxedAtomicUint32value:150mirror:always-name:media.benchmark.vp9.versionchecktype:RelaxedAtomicUint32value:0mirror:always-name:media.benchmark.framestype:RelaxedAtomicUint32value:300mirror:always-name:media.benchmark.timeouttype:RelaxedAtomicUint32value:1000mirror:always-name:media.test.video-suspendtype:RelaxedAtomicBoolvalue:falsemirror:always-name:media.test.null.decoder.creation-failuretype:RelaxedAtomicBoolvalue:falsemirror:always# MediaCapture prefs follow# Enables navigator.mediaDevices and getUserMedia() support. See also# media.peerconnection.enabled-name:media.navigator.enabledtype:boolvalue:truemirror:always# Expose the deprecated method navigator.mozGetUserMedia().-name:media.navigator.mozgetusermedia.enabledtype:boolvalue:truemirror:always# This pref turns off window-focus checks on the navigator.mediaDevices methods,# for partner testing frameworks.# Prefer "focusmanager.testmode", which is already set by default for# web-platform tests.-name:media.devices.unfocused.enabledtype:boolvalue:falsemirror:always# This pref turns off [SecureContext] on the navigator.mediaDevices object, for# more compatible legacy behavior.-name:media.devices.insecure.enabledtype:boolvalue:falsemirror: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.enabledtype:boolvalue:falsemirror:always# Enable tab sharing-name:media.getusermedia.browser.enabledtype:RelaxedAtomicBoolvalue:@IS_NIGHTLY_BUILD@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.enabledtype:boolvalue:@IS_NOT_MOBILE@mirror:always# The getDisplayMedia prompt uses getDisplayMedia under the hood to show previews.# This can be turned off if, e.g. on systems with known issues like X11, or if# previews are not desired.-name:media.getdisplaymedia.previews.enabledtype:boolvalue:@IS_NOT_ANDROID@mirror:always#if defined(MOZ_WEBRTC) && defined(XP_MACOSX)# Use the libwebrtc ScreenCaptureKit desktop capture backend on Mac by default.# When disabled, or on a host where not supported (< macOS 14), the older# CoreGraphics backend is used instead.-name:media.getdisplaymedia.screencapturekit.enabledtype:boolvalue:truemirror:once# Use SCContentSharingPicker for source picking when the libwebrtc# ScreenCaptureKit desktop capture backend is used. When this is true and the# backend supports SCContentSharingPicker, this takes precendence over the# enumeration pref below.-name:media.getdisplaymedia.screencapturekit.picker.enabledtype:boolvalue:truemirror:once# Use the libwebrtc ScreenCaptureKit desktop capture backend on Mac for screen# enumeration when enabled.# When this is false and the backend is used (see above), the older CoreGraphics# backend is used to enumerate CGDirectDisplayIDs, which the ScreenCaptureKit# backend understand as well.-name:media.getdisplaymedia.screencapturekit.enumeration.enabledtype:boolvalue:falsemirror:once#endif# Turn off any cameras (but not mics) while in the background. This is desirable# on mobile.-name:media.getusermedia.camera.background.mute.enabledtype:boolvalue:@IS_ANDROID@mirror:always# Use the libwebrtc AVFoundation camera backend on Mac by default. When# disabled, an older forked capture module is used.-name:media.getusermedia.camera.macavf.enabledtype:boolvalue:truemirror:once# When true enables capability enumeration and capture of a fake video capture# backend. Platform independent. Note, does not come into effect when the pref# `media.navigator.streams.fake` or the `fake` constraint is true.-name:media.getusermedia.camera.fake.forcetype:RelaxedAtomicBoolvalue:falsemirror:always# Tell the audio backend to prefer a stream adapted for voice when processing is# enabled through constraints (possibly defaults). Whether it has any effect# depends on the backend.-name:media.getusermedia.microphone.prefer_voice_stream_with_processing.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Tell the audio backend to create a voice stream for later re-use before asking# the user for microphone permissions, if approving those permissions would# result in a voice stream when created later on.-name:media.getusermedia.microphone.voice_stream_priming.enabledtype:RelaxedAtomicBoolvalue:@IS_XP_MACOSX@mirror:always# This pref turns on legacy (non-spec) exposure of camera and microphone# information from enumerateDevices and devicechange ahead of successful# getUserMedia calls. Should only be turned on to resolve web compat issues,# since doing so reveals more user fingerprinting information to trackers.## In this mode, camera and microphone device labels are exposed if the site has a# persisted permission to either kind, as well as while actively capturing either# kind (temporary and tab-specific grace-period permissions do not count).-name:media.devices.enumerate.legacy.enabledtype:boolvalue:falsemirror:always# Turns on legacy (non-spec) exposure of camera and microphone information# from enumerateDevices and devicechange ahead of successful getUserMedia# calls only for certain domains (ignored if above pref is true).-name:media.devices.enumerate.legacy.allowlisttype:Stringvalue:"slack.com,*.slack.com"mirror:never# WebRTC prefs follow# Enables auto refresh of peerconnection stats by default-name:media.aboutwebrtc.auto_refresh.peerconnection_sectiontype:boolvalue:@IS_NOT_NIGHTLY_BUILD@mirror:always# Enables auto refresh of the transport connection log by default-name:media.aboutwebrtc.auto_refresh.connection_log_sectiontype:boolvalue:falsemirror:always# Enables auto refresh of user config by default-name:media.aboutwebrtc.auto_refresh.user_modified_config_sectiontype:boolvalue:truemirror:always# Enables auto refresh of media context by default-name:media.aboutwebrtc.auto_refresh.media_ctx_sectiontype:boolvalue:falsemirror:always# 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.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:media.peerconnection.scripttransform.enabledtype:RelaxedAtomicBoolvalue:truemirror:always#ifdef MOZ_WEBRTC# Use MediaDataDecoder API for VP8/VP9 in WebRTC. This includes hardware# acceleration for decoding.-name:media.navigator.mediadatadecoder_vpx_enabledtype:RelaxedAtomicBool#if defined(NIGHTLY_BUILD) || defined(MOZ_WIDGET_GTK)value:true#elsevalue:false#endifmirror:always# Use MediaDataDecoder API for H264 in WebRTC. This includes hardware# acceleration for decoding.-name:media.navigator.mediadatadecoder_h264_enabledtype:RelaxedAtomicBool#if defined(_ARM64_) && defined(XP_WIN)value:false#elsevalue:true#endifmirror:always#if defined(MOZ_WIDGET_GTK)# Use hardware acceleration for VP8 decoding on Linux.-name:media.navigator.mediadatadecoder_vp8_hardware_enabledtype:RelaxedAtomicBoolvalue:falsemirror:always#endif# Interval in milliseconds at which to gather WebRTC stats for use in about:webrtc.-name:media.aboutwebrtc.hist.poll_interval_mstype:RelaxedAtomicUint32value:250mirror:always# History time depth in seconds to keep for webrtc:stats for use in about:webrtc.-name:media.aboutwebrtc.hist.storage_window_stype:RelaxedAtomicUint32value:60mirror:always# Time in minutes to retain peer connection stats after closing.-name:media.aboutwebrtc.hist.prune_after_mtype:RelaxedAtomicUint32value:60 * 24 * 2mirror:always# Max number of closed PC stats histories to retain-name:media.aboutwebrtc.hist.closed_stats_to_retaintype:RelaxedAtomicUint32value:8mirror:always# Gather PeerConnection stats history for display in about:webrtc. If# disabled history will only gather when about:webrtc is open. Additionally,# if disabled and when about:webrtc is not in the foreground history data# will become sparse.-name:media.aboutwebrtc.hist.enabledtype:RelaxedAtomicBool#if defined(MOZ_WIDGET_ANDROID)value:false#elsevalue:@IS_NIGHTLY_BUILD@#endifmirror: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.enabledtype:boolvalue:@IS_NIGHTLY_BUILD@mirror:always# Is support for HTMLMediaElement.seekToNextFrame enabled?-name:media.seekToNextFrame.enabledtype:boolvalue:falsemirror:always# Is the Audio Output Devices API enabled?-name:media.setsinkid.enabledtype:bool#if defined(MOZ_WIDGET_ANDROID)value:false# bug 1473346#elsevalue:true#endifmirror:always# Turn on this pref can enable test-only events for media element.-name:media.testing-only-eventstype:boolvalue:falsemirror:always-name:media.useAudioChannelService.testingtype:boolvalue:falsemirror:always-name:media.audioFocus.managementtype:bool#if defined(MOZ_WIDGET_ANDROID)value:true#elsevalue:false#endifmirror:always-name:media.hardwaremediakeys.enabledtype:boolvalue:truemirror: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.timertype:boolvalue:truemirror: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. The default value# is set to 24 hrs (24*60*60*1000)-name:media.mediacontrol.stopcontrol.timer.mstype:RelaxedAtomicUint32value:86400000mirror:always# If this pref is on, we would stop controlling media after it reaches to the# end.-name:media.mediacontrol.stopcontrol.aftermediaendstype:boolvalue:truemirror:always# We would only use media control to control media which duration is longer# than this value.-name:media.mediacontrol.eligible.media.duration.stype:AtomicFloatvalue:3.0fmirror:always# Encoder creation strategy for WebRTC# 0: prefer builtin WebRTC encoder (including OpenH264 via GMP)# 1: prefer PlatformEncoderModule-name:media.webrtc.encoder_creation_strategytype:RelaxedAtomicUint32#ifdef ANDROIDvalue:1#elsevalue:0#endifmirror:always#if defined(XP_MACOSX)-name:media.webrtc.capture.allow-iosurfacetype:RelaxedAtomicBoolvalue:truemirror:always#endif#if defined(XP_WIN)-name:media.webrtc.capture.allow-directxtype:RelaxedAtomicBoolvalue:truemirror:always-name:media.webrtc.capture.screen.allow-wgctype:RelaxedAtomicBoolvalue:falsemirror:always-name:media.webrtc.capture.window.allow-wgctype:RelaxedAtomicBoolvalue:falsemirror:always-name:media.webrtc.capture.wgc.allow-zero-hertztype:RelaxedAtomicBoolvalue:falsemirror:always#endif#if defined(MOZ_WIDGET_GTK)-name:media.webrtc.capture.allow-pipewiretype:RelaxedAtomicBoolvalue:truemirror:always-name:media.webrtc.camera.allow-pipewiretype:boolvalue:falsemirror:once#endif-name:media.block-autoplay-until-in-foregroundtype:bool#if !defined(MOZ_WIDGET_ANDROID)value:true#elsevalue:false#endifmirror:always-name:media.webrtc.hw.h264.enabledtype:bool#if defined(MOZ_WIDGET_ANDROID)value:true#elsevalue:false#endifmirror:always-name:media.webrtc.codec.video.av1.enabledtype:RelaxedAtomicBool#if defined(MOZ_AV1)value:true#endifmirror:always# If true, then AV1 will be used as the preferred codec for WebRTC video.# After the AV1 codec is enabled by default, this pref will be renamed.-name:media.webrtc.codec.video.av1.experimental_preferredtype:boolvalue:falsemirror:always-name:media.webrtc.simulcast.av1.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:media.webrtc.simulcast.h264.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:media.webrtc.simulcast.vp9.enabledtype:RelaxedAtomicBoolvalue:@IS_EARLY_BETA_OR_EARLIER@mirror:always-name:media.peerconnection.video.use_ddtype:RelaxedAtomicBoolvalue:truemirror:always-name:media.webrtc.tls_tunnel_for_all_proxytype:boolvalue:truemirror:always-name:media.webrtc.disallow_HTTPS_upgrade_for_TURNtype:boolvalue:truemirror: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.requesttype:boolvalue:falsemirror: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.testingtype:uint32_tvalue:0mirror:always-name:media.mediacontrol.testingevents.enabledtype:boolvalue:falsemirror:always#if defined(XP_MACOSX)-name:media.macos.screenrecording.oscheck.enabledtype:boolvalue:truemirror:always#endif# When the playback rate of an HTMLMediaElement is greater than this value, or# lower than the inverse of this value, the audio is muted.-name:media.audio.playbackrate.muting_thresholdtype:uint32_tvalue:8mirror:always# The interval of time in milliseconds between attempts to reopen any# previously unavailable audio device.-name:media.audio.device.retry.mstype:RelaxedAtomicInt32value:1000mirror:always# Time-stretch algorithm single processing sequence length in milliseconds.# This determines to how long sequences the original sound is chopped in the# time-stretch algorithm.-name:media.audio.playbackrate.soundtouch_sequence_mstype:RelaxedAtomicInt32value:10mirror:always# Time-stretch algorithm seeking window length in milliseconds for algorithm# that finds the best possible overlapping location. This determines from how# wide window the algorithm may look for an optimal joining location when mixing# the sound sequences back together.-name:media.audio.playbackrate.soundtouch_seekwindow_mstype:RelaxedAtomicInt32value:15mirror:always# Time-stretch algorithm overlap length in milliseconds. When the chopped sound# sequences are mixed back together, to form a continuous sound stream, this# parameter defines over how long period the two consecutive sequences are let# to overlap each other.-name:media.audio.playbackrate.soundtouch_overlap_mstype:RelaxedAtomicInt32value:8mirror:always# The duration, in milliseconds, of decoded audio to keep around in the# AudioSink ring-buffer. New decoding operations are started when this limit is# reached. The total size of the ring-buffer is slightly bigger than this.-name:media.audio.audiosink.threshold_mstype:AtomicFloat#if defined(XP_MACOSX) && defined(MOZ_AARCH64)value:1000.0#elsevalue:200.0#endifmirror:always-name:media.video-wakelocktype:RelaxedAtomicBoolvalue:truemirror:always# On Mac, enables using the `<Brand> Media Plugin Helper` executable as the# GMP child process instead of the plugin-container executable.#if defined(XP_MACOSX)-name:media.plugin_helper_process.enabledtype:RelaxedAtomicBoolvalue:truemirror:always#endif# When this is true, the protection mask that Firefox replies to Widevine API# QueryOutputProtectionStatus is `kProtectionHDCP` when no potential capturing.-name:media.widevine.hdcp-protection-masktype:RelaxedAtomicBoolvalue:truemirror:always#---------------------------------------------------------------------------# Prefs starting with "memory."#----------------------------------------------------------------------------name:memory.phc.enabledtype:boolvalue:truemirror:always-name:memory.phc.min_ram_mbtype:uint32_tvalue:8000mirror:always-name:memory.phc.avg_delay.firsttype:uint32_tvalue:65536mirror:always-name:memory.phc.avg_delay.normaltype:uint32_tvalue:16384mirror:always-name:memory.phc.avg_delay.page_reusetype:uint32_tvalue:262144mirror:always-name:memory.phc.avg_delay.content.firsttype:uint32_tvalue:16384mirror:always-name:memory.phc.avg_delay.content.normaltype:uint32_tvalue:4096mirror:always-name:memory.phc.avg_delay.content.page_reusetype:uint32_tvalue:262144mirror:always# Tell mozjemalloc and the TaskController to use lazy purge.-name:memory.lazypurge.enabletype:boolvalue:truemirror:always# If lazy purge is enabled, the maximum delay we wait for idle time in MS.-name:memory.lazypurge.maximum_delaytype:uint32_tvalue:5000mirror:always# If lazy purge is enabled, the minimum idle budget we wait for in MS.-name:memory.lazypurge.minimum_idle_budgettype:uint32_tvalue:5mirror:always# If lazy purge is enabled, the minimum time we wait with purge after some# memory was reused (tracked per arena).-name:memory.lazypurge.reuse_grace_periodtype:uint32_tvalue:500mirror:always#---------------------------------------------------------------------------# Prefs starting with "middlemouse."#---------------------------------------------------------------------------# If set and browser.tabs.opentabfor.middleclick is not set, middle clicking on# a link opens the link in a new window.-name:middlemouse.openNewWindowtype:bool#if defined(ANDROID) || !defined(XP_MACOSX) && defined(XP_UNIX)value:true#elsevalue:false#endifmirror:always#---------------------------------------------------------------------------# Prefs starting with "midi."#----------------------------------------------------------------------------name:midi.testingtype:RelaxedAtomicBoolvalue:falsemirror:always#---------------------------------------------------------------------------# 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.factortype:RelaxedAtomicInt32value:10mirror: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.starttype:RelaxedAtomicInt32value:-1mirror: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.enabledtype:boolvalue:falsemirror: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.honourroottype:boolvalue:falsemirror:always-name:mousewheel.system_scroll_override.enabledtype:RelaxedAtomicBool#if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)value:true#elsevalue:false#endifmirror:always# Prefs for overriding the system mouse wheel scrolling speed on# content of the web pages. When# "mousewheel.system_scroll_override.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.enabled" is# true, when Gecko detects the user customized the system scrolling speed# settings, the override isn't executed.-name:mousewheel.system_scroll_override.horizontal.factortype:RelaxedAtomicInt32value:200mirror:always-name:mousewheel.system_scroll_override.vertical.factortype:RelaxedAtomicInt32value:200mirror:always# Mouse wheel scroll transaction is held even if the mouse cursor is moved.-name:mousewheel.transaction.ignoremovedelaytype:RelaxedAtomicInt32value:100mirror:always# Mouse wheel scroll transaction period of time (in milliseconds).-name:mousewheel.transaction.timeouttype:RelaxedAtomicInt32value:1500mirror:always# Mouse wheel scroll position is determined by GetMessagePos rather than# LPARAM msg value-name:mousewheel.ignore_cursor_position_in_lparamtype:RelaxedAtomicBoolvalue:falsemirror:always# If line-height is lower than this value (in device pixels), 1 line scroll# scrolls this height.-name:mousewheel.min_line_scroll_amounttype:int32_tvalue:5mirror:always# Timeout period (in milliseconds) when the mouse wheel event is no longer# handled as the same series.-name:mousewheel.scroll_series_timeouttype:RelaxedAtomicInt32value:80mirror:always#---------------------------------------------------------------------------# Prefs starting with "mozilla."#----------------------------------------------------------------------------name:mozilla.widget.raise-on-setfocustype:boolvalue:truemirror:once#---------------------------------------------------------------------------# Prefs starting with "network."#---------------------------------------------------------------------------# Force less-secure NTLMv1 when needed (NTLMv2 is the default).-name:network.auth.force-generic-ntlm-v1type:RelaxedAtomicBoolvalue:falsemirror: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-allowtype:uint32_tvalue:2mirror: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-allowtype:boolvalue:falsemirror: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-allowtype:boolvalue:falsemirror:always# Whether to show anti-spoof confirmation prompts when navigating to a url# with userinfo-name:network.auth.confirmAuth.enabledtype:boolvalue:falsemirror:always# Whether to display auth prompts if X-Frame-Options header will block loading# page-name:network.auth.supress_auth_prompt_for_XFO_failurestype:boolvalue:truemirror:always# whether to redirect the channel for auth redirects. See Bug 1820807-name:network.auth.use_redirect_for_retriestype:RelaxedAtomicBoolvalue:@IS_EARLY_BETA_OR_EARLIER@mirror:always# When true, authentication challenges will be sorted even if# an authentication is already in progress. This may cause issues sometimes.-name:network.auth.sort_challenge_in_progresstype:RelaxedAtomicBoolvalue:falsemirror:always# See the full list of values in nsICookieService.idl.-name:network.cookie.cookieBehaviortype:RelaxedAtomicInt32value:0# accept all cookiesmirror:always# Maximum client-side cookie life-time cap. Measured in seconds, set to 0 to# disable.-name:network.cookie.maxageCaptype:RelaxedAtomicUint32value:34560000mirror:always# The cookieBehavior to be used in Private Browsing mode.-name:network.cookie.cookieBehavior.pbmodetype:RelaxedAtomicInt32value:0# accept all cookiesmirror:always# Changes cookieBehavior=5 to block third-party cookies by default-name:network.cookie.cookieBehavior.optInPartitioningtype:boolvalue:falsemirror:always# Changes cookieBehavior=5 to block third-party cookies in the private browsing# mode.-name:network.cookie.cookieBehavior.optInPartitioning.pbmodetype:boolvalue:falsemirror:always# Whether to block third-party tracker cookie and storage access when# cookieBehavior=5.-name:network.cookie.cookieBehavior.trackerCookieBlockingtype:boolvalue:falsemirror:always# Whether to support CHIPS(Cookies Having Independent Partitioned State).-name:network.cookie.CHIPS.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Updated to match the target count when we migrate the unpartitioned CHIPS# cookies to their first-party partition.-name:network.cookie.CHIPS.lastMigrateDatabasetype:RelaxedAtomicUint32value:0mirror:always# Used to increase the number of times we want to have migrated the database.# This lets us remotely perform a database migration with Nimbus.-name:network.cookie.CHIPS.migrateDatabaseTargettype:RelaxedAtomicUint32value:2mirror:always# Stale threshold for cookies in seconds.-name:network.cookie.staleThresholdtype:uint32_tvalue:60mirror:always# Enable CHIPS partition byte limit enforcement# This pref will only be consulted if CHIPS itself is enabled-name:network.cookie.chips.partitionLimitEnabledtype:boolvalue:truemirror:always# CHIPS partition limit DryRun mode disables purging/rejection# but still checks for capacity overflow and reports telemetry-name:network.cookie.chips.partitionLimitDryRuntype:boolvalue:falsemirror:always# The actual CHIPS parition limit in bytes-name:network.cookie.chips.partitionLimitByteCapacitytype:RelaxedAtomicInt32value:10240# 10KiBmirror:always-name:network.cookie.sameSite.laxByDefaulttype:RelaxedAtomicBoolvalue:falsemirror:always-name:network.cookie.sameSite.laxByDefaultWarningsForBetatype:RelaxedAtomicBoolvalue:falsemirror:always# lax-by-default 2 minutes tollerance for unsafe methods. The value is in seconds.-name:network.cookie.sameSite.laxPlusPOST.timeouttype:uint32_tvalue:120mirror:always# For lax-by-default cookies ignore cross-site redirects when the final# redirect is same-site again.# https://github.com/httpwg/http-extensions/issues/2104-name:network.cookie.sameSite.laxByDefault.allowBoomerangRedirecttype:boolvalue:truemirror:always-name:network.cookie.sameSite.noneRequiresSecuretype:boolvalue:truemirror:always-name:network.cookie.sameSite.schemefultype:boolvalue:@IS_NIGHTLY_BUILD@mirror:always-name:network.cookie.sameSite.crossSiteIframeSetChecktype:boolvalue:truemirror:always# If we should not store "persistent" cookies at all, i.e., make the# "persistent" storage be like "private" storage. This value is only read when# instantiating persistent storage for the cookie service, which usually only# happens when the cookie service singleton is created.-name:network.cookie.noPersistentStoragetype:boolvalue:falsemirror:always# If true then any cookies containing unicode will be rejected-name:network.cookie.blockUnicodetype:RelaxedAtomicBoolvalue:falsemirror:always# If true cookies loaded from the sqlite DB that have a creation or# last accessed time that is in the future will be fixed and the# timestamps will be set to the current time.-name:network.cookie.fixup_on_db_loadtype:RelaxedAtomicBoolvalue:truemirror:always# If true content types of multipart/x-mixed-replace cannot set a cookie-name:network.cookie.prevent_set_cookie_from_multiparttype:RelaxedAtomicBoolvalue:truemirror:always# Use sever time (Date header) to adjust the expire cookie attribute-name:network.cookie.useServerTimetype:RelaxedAtomicBoolvalue:truemirror:always# When true, Firefox will reject nameless cookies that contain `=` in value.-name:network.cookie.block_nameless_with_equal_chartype:RelaxedAtomicBoolvalue:truemirror:always# If we should attempt to race the cache and network.-name:network.http.rcwn.enabledtype:bool#if defined(ANDROID)value:false#elsevalue:true#endifmirror:always-name:network.http.rcwn.cache_queue_normal_thresholdtype:uint32_tvalue:8mirror:always-name:network.http.rcwn.cache_queue_priority_thresholdtype:uint32_tvalue:2mirror: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_kbtype:uint32_tvalue:256mirror:always-name:network.http.rcwn.min_wait_before_racing_mstype:uint32_tvalue:0mirror:always-name:network.http.rcwn.max_wait_before_racing_mstype:uint32_tvalue:500mirror:always# Whether to send the Referer header in response to a meta refresh, or# in response to a Refresh header.-name:network.http.referer.sendFromRefreshtype:boolvalue:truemirror:always# false=real referer, true=spoof referer (use target URI as referer).-name:network.http.referer.spoofSourcetype:boolvalue:falsemirror: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.hideOnionSourcetype:boolvalue:truemirror: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.sendOriginHeadertype:uint32_tvalue:2mirror:always# Include an idempotency-key header for POST requests-name:network.http.idempotencyKey.enabledtype:RelaxedAtomicBoolvalue:@IS_NIGHTLY_BUILD@mirror:always# Whether to respect the redirected-tainted origin flag# https://fetch.spec.whatwg.org/#concept-request-tainted-origin-name:network.http.origin.redirectTaintedtype:boolvalue:truemirror:always# If true, cross origin fetch (or XHR) requests would be keyed# with a different cache key.-name:network.fetch.cache_partition_cross_origintype:RelaxedAtomicBoolvalue:truemirror:always# If true, when browser code itself makes network requests, default to# omitting credentials.-name:network.fetch.systemDefaultsToOmittingCredentialstype:RelaxedAtomicBoolvalue:truemirror: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.sendRefererHeadertype:uint32_tvalue:2mirror:alwaysdo_not_use_directly:true# Whether to add urgency and incremental to request headers-name:network.http.priority_header.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# The maximum allowed length for a referrer header - 4096 default.# 0 means no limit.-name:network.http.referer.referrerLengthLimittype:uint32_tvalue:4096mirror:always# 0=always send, 1=send iff base domains match, 2=send iff hosts match.-name:network.http.referer.XOriginPolicytype:uint32_tvalue:0mirror:alwaysdo_not_use_directly:true# 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port.-name:network.http.referer.trimmingPolicytype:uint32_tvalue:0mirror:alwaysdo_not_use_directly:true# 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port.-name:network.http.referer.XOriginTrimmingPolicytype:uint32_tvalue:0mirror:alwaysdo_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.defaultPolicytype:uint32_tvalue:2mirror: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.trackerstype:uint32_tvalue:2mirror: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.pbmodetype:uint32_tvalue:2mirror:always# Set to ignore referrer policies which is less restricted than the default for# cross-site requests, including 'unsafe-url', 'no-referrer-when-downgrade' and# 'origin-when-cross-origin'.-name:network.http.referer.disallowCrossSiteRelaxingDefaulttype:boolvalue:truemirror:always# Whether we ignore less restricted referrer policies for top navigations.-name:network.http.referer.disallowCrossSiteRelaxingDefault.top_navigationtype:boolvalue:falsemirror:always# Set to ignore referrer policies which is less restricted than the default for# cross-site requests in the private browsing mode, including 'unsafe-url',# 'no-referrer-when-downgrade' and 'origin-when-cross-origin'.-name:network.http.referer.disallowCrossSiteRelaxingDefault.pbmodetype:boolvalue:truemirror:always# Whether we ignore less restricted referrer policies for top navigations in the# private browsing mode.-name:network.http.referer.disallowCrossSiteRelaxingDefault.pbmode.top_navigationtype:boolvalue:truemirror: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.pbmodetype:uint32_tvalue:2mirror: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-logstype:RelaxedAtomicBoolvalue:truemirror:always# Whether network error logging is enabled.-name:network.http.network_error_logging.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Whether or not we use Windows for SSO to Microsoft sites.-name:network.http.windows-sso.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Whether windows-sso is enabled for the default (0) container.# To enable SSO for additional containers, add a new pref like# `network.http.windows-sso.container-enabled.${containerId}` = true-name:network.http.windows-sso.container-enabled.0type:boolvalue:truemirror:never# Whether or not we use MS Entra SSO to network.microsoft-sso-authority-list sites.-name:network.http.microsoft-entra-sso.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Whether microsoft-entra-sso is enabled for the default (0) container.# To enable SSO for additional containers, add a new pref like# `network.http.microsoft-entra-sso.container-enabled.${containerId}` = true-name:network.http.microsoft-entra-sso.container-enabled.0type:boolvalue:truemirror:never# To specify the list of trusted Microsoft Single Sign-On (SSO) authority URLs# This is needed for macOS unlike Windows where we send every URL to SSO-name:network.microsoft-sso-authority-listtype:Stringvalue:>-login.microsoft.com,login.microsoftonline.com,sts.windows.net,login.partner.microsoftonline.cn,login.chinacloudapi.cn,login.microsoftonline.us,login-us.microsoftonline.commirror:never# The factor by which to increase the keepalive timeout when the# NS_HTTP_LARGE_KEEPALIVE flag is used for a connection-name:network.http.largeKeepaliveFactortype:RelaxedAtomicUint32#if defined(ANDROID)value:10#elsevalue:20#endifmirror:always# Max size, in bytes, for received HTTP response header.-name:network.http.max_response_header_sizetype:RelaxedAtomicUint32value:393216mirror:always# Whether or not we give more priority to active tab.-name:network.http.active_tab_prioritytype:RelaxedAtomicBool#if defined(ANDROID)value:false#elsevalue:true#endifmirror:always# Treat all Unicode labels as confusable/unsafe so that they show up# as Punycode in the UI.-name:network.IDN_show_punycodetype:RelaxedAtomicBoolvalue:falsemirror:always# If set to true, IOService.offline depends on IOService.connectivity.-name:network.offline-mirrors-connectivitytype:RelaxedAtomicBoolvalue:falsemirror:always# If set to true, disallow localhost connections when offline.-name:network.disable-localhost-when-offlinetype:RelaxedAtomicBoolvalue:falsemirror:always# If set to true, Firefox will use the file extension of a URL# to sniff its content type. When false, nsUnknownDecoder will# use the file extension only for file URLs-name:network.sniff.use_extensiontype:RelaxedAtomicBoolvalue:falsemirror:always# Enables the predictive service.-name:network.predictor.enabledtype:boolvalue:truemirror:always# Disable requests to 0.0.0.0# See Bug 1889130-name:network.socket.ip_addr_any.disabledtype:RelaxedAtomicBoolvalue:@IS_EARLY_BETA_OR_EARLIER@mirror:always# Set true to allow resolving proxy for localhost-name:network.proxy.allow_hijacking_localhosttype:RelaxedAtomicBoolvalue:falsemirror:always# This pref will still treat localhost URLs as secure even when hijacked# during testing. This is necessary for automated testing to check that we# actually treat localhost as a secure origin.-name:network.proxy.testing_localhost_is_secure_when_hijackedtype:RelaxedAtomicBoolvalue:falsemirror:always# The timeout used when calling DhcpRequestParams. The call may sometimes hang# after resuming from suspend.-name:network.proxy.dhcp_wpad_timeout_sectype:AtomicFloatvalue:5.0mirror:always# When true, we only allow one outstanding GetPacFromDHCP runnable-name:network.proxy.dhcp_wpad_only_one_outstandingtype:RelaxedAtomicBoolvalue:truemirror:always# Allow CookieJarSettings to be unblocked for channels without a document.# This is for testing only.-name:network.cookieJarSettings.unblocked_for_testingtype:boolvalue:falsemirror:always-name:network.predictor.enable-hover-on-ssltype:boolvalue:falsemirror:always-name:network.predictor.enable-prefetchtype:boolvalue:@IS_EARLY_BETA_OR_EARLIER@mirror:always-name:network.predictor.page-degradation.daytype:int32_tvalue:0mirror:always-name:network.predictor.page-degradation.weektype:int32_tvalue:5mirror:always-name:network.predictor.page-degradation.monthtype:int32_tvalue:10mirror:always-name:network.predictor.page-degradation.yeartype:int32_tvalue:25mirror:always-name:network.predictor.page-degradation.maxtype:int32_tvalue:50mirror:always-name:network.predictor.subresource-degradation.daytype:int32_tvalue:1mirror:always-name:network.predictor.subresource-degradation.weektype:int32_tvalue:10mirror:always-name:network.predictor.subresource-degradation.monthtype:int32_tvalue:25mirror:always-name:network.predictor.subresource-degradation.yeartype:int32_tvalue:50mirror:always-name:network.predictor.subresource-degradation.maxtype:int32_tvalue:100mirror:always-name:network.predictor.prefetch-rolling-load-counttype:int32_tvalue:10mirror:always-name:network.predictor.prefetch-min-confidencetype:int32_tvalue:100mirror:always-name:network.predictor.preconnect-min-confidencetype:int32_tvalue:90mirror:always-name:network.predictor.preresolve-min-confidencetype:int32_tvalue:60mirror:always-name:network.predictor.prefetch-force-valid-fortype:int32_tvalue:10mirror:always-name:network.predictor.max-resources-per-entrytype:int32_tvalue:100mirror: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-lengthtype:uint32_tvalue:500mirror:always# A testing flag.-name:network.predictor.doing-teststype:boolvalue:falsemirror:always# Indicates whether the `fetchpriority` attribute for elements which support it# (e.g. `<script>`) is enabled.-name:network.fetchpriority.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# When true, the channel's urgency will be adjusted based on the# channel's nsISupportsPriority.-name:network.fetchpriority.adjust_urgencytype:RelaxedAtomicBoolvalue:truemirror:always# Adjustments to apply to the internal priority of <link rel=preload as=script# fetchpriority=low/high/auto> and equivalent Link header with respect to the# case when network.fetchpriority is disabled.# - When the flag is disabled, Gecko currently sets priority to HIGHEST.# - When the flag is enabled, it respectively maps to LOW/HIGHEST/HIGHEST.-name:network.fetchpriority.adjustments.link-preload-script.lowtype:int32_tvalue:30mirror:always-name:network.fetchpriority.adjustments.link-preload-script.hightype:int32_tvalue:0mirror:always-name:network.fetchpriority.adjustments.link-preload-script.autotype:int32_tvalue:0mirror:always# Adjustments to apply to the internal priority of <script type="module"# fetchpriority=low/high/auto> with respect to the case when# network.fetchpriority is disabled.# - When the flag is disabled, Gecko currently sets priority to NORMAL.# - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL.-name:network.fetchpriority.adjustments.module-script.lowtype:int32_tvalue:10mirror:always-name:network.fetchpriority.adjustments.module-script.hightype:int32_tvalue:-10mirror:always-name:network.fetchpriority.adjustments.module-script.autotype:int32_tvalue:0mirror:always# Adjustments to apply to the internal priority of async or defer <script# fetchpriority=low/high/auto> with respect to the case when# network.fetchpriority is disabled.# - When the flag is disabled, Gecko currently sets priority to NORMAL.# - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL.-name:network.fetchpriority.adjustments.async-or-defer-script.lowtype:int32_tvalue:10mirror:always-name:network.fetchpriority.adjustments.async-or-defer-script.hightype:int32_tvalue:-10mirror:always-name:network.fetchpriority.adjustments.async-or-defer-script.autotype:int32_tvalue:0mirror:always# Adjustments to apply to the internal priority of <script# fetchpriority=low/high/auto> inside the <head>, with respect to the case when# network.fetchpriority is disabled.# - When the flag is disabled, Gecko currently sets priority to NORMAL.# - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL.-name:network.fetchpriority.adjustments.script-in-head.lowtype:int32_tvalue:10mirror:always-name:network.fetchpriority.adjustments.script-in-head.hightype:int32_tvalue:-10mirror:always-name:network.fetchpriority.adjustments.script-in-head.autotype:int32_tvalue:0mirror:always# Adjustments to apply to the internal priority of <script# fetchpriority=low/high/auto> (other than the scripts handled above) with# respect to the case when network.fetchpriority is disabled.# - When the flag is disabled, Gecko currently sets priority to NORMAL.# - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL.-name:network.fetchpriority.adjustments.other-script.lowtype:int32_tvalue:10mirror:always-name:network.fetchpriority.adjustments.other-script.hightype:int32_tvalue:-10mirror:always-name:network.fetchpriority.adjustments.other-script.autotype:int32_tvalue:0mirror:always# Adjustments to apply to the internal priority of <link rel=preload as=font# fetchpriority=low/high/auto> with respect to the case when# network.fetchpriority is disabled.# - When the flag is disabled, Gecko currently sets priority to HIGH.# - When the flag is enabled, it respectively maps to LOW/HIGH/HIGH.-name:network.fetchpriority.adjustments.link-preload-font.lowtype:int32_tvalue:20mirror:always-name:network.fetchpriority.adjustments.link-preload-font.hightype:int32_tvalue:-10mirror:always-name:network.fetchpriority.adjustments.link-preload-font.autotype:int32_tvalue:0mirror:always# Adjustments to apply to the internal priority of <link rel=preload as=fetch# fetchpriority=low/high/auto> with respect to the case when# network.fetchpriority is disabled.# - When the flag is disabled, Gecko currently sets priority to NORMAL.# - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL.-name:network.fetchpriority.adjustments.link-preload-fetch.lowtype:int32_tvalue:10mirror:always-name:network.fetchpriority.adjustments.link-preload-fetch.hightype:int32_tvalue:-10mirror:always-name:network.fetchpriority.adjustments.link-preload-fetch.autotype:int32_tvalue:0mirror:always# Adjustments to apply to the internal priority of deferred style for# fetchpriority=low/high/auto> with respect to the case when# network.fetchpriority is disabled.# - When the flag is disabled, Gecko currently sets priority to NORMAL.# - When the flag is enabled, it respectively maps to LOW/NORMAL/NORMAL.-name:network.fetchpriority.adjustments.deferred-style.lowtype:int32_tvalue:10mirror:always-name:network.fetchpriority.adjustments.deferred-style.hightype:int32_tvalue:0mirror:always-name:network.fetchpriority.adjustments.deferred-style.autotype:int32_tvalue:0mirror:always# Adjustments to apply to the internal priority of <link rel=preload as=style# fetchpriority=low/high/auto> with respect to the case when# network.fetchpriority is disabled.# - When the flag is disabled, Gecko currently sets priority to HIGHEST.# - When the flag is enabled, it respectively maps to HIGH/HIGHEST/HIGHEST.-name:network.fetchpriority.adjustments.link-preload-style.lowtype:int32_tvalue:10mirror:always-name:network.fetchpriority.adjustments.link-preload-style.hightype:int32_tvalue:0mirror:always-name:network.fetchpriority.adjustments.link-preload-style.autotype:int32_tvalue:0mirror:always# Adjustments to apply to the internal priority of other non-deferred# stylesheet load for fetchpriority=low/high/auto with respect to the case when# network.fetchpriority is disabled.# - When the flag is disabled, Gecko currently sets priority to NORMAL.# - When the flag is enabled, it respectively maps to HIGH/HIGHEST/NORMAL.-name:network.fetchpriority.adjustments.non-deferred-style.lowtype:int32_tvalue:0mirror:always-name:network.fetchpriority.adjustments.non-deferred-style.hightype:int32_tvalue:-20mirror:always-name:network.fetchpriority.adjustments.non-deferred-style.autotype:int32_tvalue:0mirror:always# Adjustments to apply to the internal priority of global fetch API# for fetchpriority=low/high/auto with respect to the case when# network.fetchpriority is disabled.# - When the flag is disabled, Gecko currently sets priority to NORMAL.# - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL.-name:network.fetchpriority.adjustments.global-fetch-api.lowtype:RelaxedAtomicInt32value:10mirror:always-name:network.fetchpriority.adjustments.global-fetch-api.hightype:RelaxedAtomicInt32value:-10mirror:always-name:network.fetchpriority.adjustments.global-fetch-api.autotype:RelaxedAtomicInt32value:0mirror:always# Adjustments to apply to the internal priority of <link rel=preload as=images# fetchpriority=low/high/auto> and <img fetchpriority=low/high/auto> with# respect to the case when network.fetchpriority is disabled.# - When the flag is disabled, Gecko currently sets priority to LOW.# - When the flag is enabled, it respectively maps to LOW/LOW/HIGH.# The image code can currently further adjust the priority for image load, see# imgRequest::BoostPriority and AdjustPriorityForImages.-name:network.fetchpriority.adjustments.images.lowtype:int32_tvalue:10mirror:always-name:network.fetchpriority.adjustments.images.hightype:int32_tvalue:-20mirror:always-name:network.fetchpriority.adjustments.images.autotype:int32_tvalue:0mirror:always# Adjustments to apply to the internal priority of <audio>, <track>, <video>,# or <link rel=preload as=audio/track/video> with respect to the case when# network.fetchpriority is disabled.# - When the flag is disabled, Gecko currently sets priority to NORMAL.# - When the flag is enabled, it respectively maps to LOW/LOW/HIGH.-name:network.fetchpriority.adjustments.media.lowtype:int32_tvalue:10mirror:always-name:network.fetchpriority.adjustments.media.hightype:int32_tvalue:0mirror:always-name:network.fetchpriority.adjustments.media.autotype:int32_tvalue:0mirror:always# Enables `<link rel="preconnect">` tag and `Link: rel=preconnect` response header# handling.-name:network.preconnecttype:RelaxedAtomicBoolvalue:truemirror:always# Enables `<link rel="modulepreload">` tag and `Link: rel=modulepreload`# response header handling.-name:network.modulepreloadtype:RelaxedAtomicBoolvalue:truemirror:always# Enable 103 Early Hint status code (RFC 8297)-name:network.early-hints.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Enable sending 103 (Early Hints) responses over HTTP/1.1-name:network.early-hints.over-http-v1-1.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Enable `Link: rel=preconnect` in 103 Early Hint response.-name:network.early-hints.preconnect.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# The max number of speculative connections we allow for `Link: rel=preconnect`.# When 0, the speculative connection created due to `Link: rel=preconnect` will# be limited by "network.http.speculative-parallel-limit".-name:network.early-hints.preconnect.max_connectionstype:uint32_tvalue:10mirror:always# How long we should wait for EarlyHintPreloader to be used.# Under normal circumstances it should be used immidiately.-name:network.early-hints.parent-connect-timeouttype:uint32_tvalue:10000mirror: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.enabledtype:RelaxedAtomicBoolmirror:always#if defined(ANDROID) || defined(MOZ_THUNDERBIRD) || defined(XP_IOS)value:false# see bug 1641427#elsevalue:true#endif# Whether we can send OnDataAvailable to content process directly.-name:network.send_ODA_to_content_directlytype:RelaxedAtomicBoolvalue:truemirror:always# Whether we can send OnDataFinished to html5parser in content process directly-name:network.send_OnDataFinished.html5parsertype:RelaxedAtomicBoolvalue:truemirror:always# Whether we can send OnDataFinished in the content process-name:network.send_OnDataFinishedtype:RelaxedAtomicBoolvalue:truemirror:always# Whether we can send OnDataFinished to content process directly.-name:network.send_OnDataFinished.nsInputStreamPumptype:RelaxedAtomicBoolvalue:truemirror:always# Whether we can send OnDataFinished to cssLoader in content process.-name:network.send_OnDataFinished.cssLoadertype:RelaxedAtomicBoolvalue:truemirror:always# Whether we can send send OnDataFinished only after dispatching# all the progress events on the main thread-name:network.send_OnDataFinished_after_progress_updatestype:RelaxedAtomicBoolvalue:falsemirror: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.enabledtype:RelaxedAtomicBoolmirror:alwaysvalue:false# Telemetry of traffic categories. Whether or not to enable HttpTrafficAnalyzer.-name:network.traffic_analyzer.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Whether DNS resolution is limited to literals and cached entries.-name:network.dns.disabledtype:RelaxedAtomicBoolvalue:falsemirror:always-name:network.dns.disablePrefetchFromHTTPStype:boolvalue:falsemirror:always# For testing purpose only: allow dns prefetch through proxies-name:network.dns.prefetch_via_proxytype:boolvalue:falsemirror:always# Max time to shutdown the resolver threads-name:network.dns.resolver_shutdown_timeout_mstype:uint32_tvalue:2000mirror: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_labeltype:RelaxedAtomicBoolvalue:falsemirror:always# Use platform DNS APIs (where available) to resolve HTTPS queries-name:network.dns.native_https_querytype:RelaxedAtomicBool#if !defined(XP_MACOSX)value:true#elsevalue:false#endifmirror:always# DnsQuery_A is broken for HTTPS queries on Windows 10.# Once it gets fixed, we can flip this pref to enable it.# Changes might not take effect until restart.-name:network.dns.native_https_query_win10type:RelaxedAtomicBoolvalue:falsemirror:always# When true, the HTTPS query will actually call the native# platform API. When false it will return before the call# to the platform API# This pref is necessary because having a HTTPS record# could cause channels to connect to a different port,# which is not desirable in automation.-name:network.dns.native_https_query_in_automationtype:RelaxedAtomicBoolvalue:falsemirror:always# When resolving a native HTTPS query with native APIs# the Android implementation has a max timeout-name:network.dns.native_https_timeout_androidtype:RelaxedAtomicInt32value:20000mirror:always# When resolving a native HTTPS query with native APIs# the MacOS implementation has a max timeout-name:network.dns.native_https_timeout_mac_msectype:RelaxedAtomicInt32value:5000mirror:always# When this pref is true, we copy the host name to a fresh string before# calling into getaddrinfo.-name:network.dns.copy_string_before_calltype:RelaxedAtomicBoolvalue:truemirror:always-name:network.dns.max_high_priority_threadstype:RelaxedAtomicUint32value:40mirror:always-name:network.dns.max_any_priority_threadstype:RelaxedAtomicUint32value:24mirror:always# This makes it so NS_HTTP_REFRESH_DNS is only# set on DNS resolutions when LOAD_FRESH_CONNECTION is set.# That's because we don't need to refresh DNS on# every page reload.-name:network.dns.only_refresh_on_fresh_connectiontype:RelaxedAtomicBoolvalue:truemirror:always# When true, DNS resolutions will downgrade DNS# from AF_UNSPEC to AF_INET when no non-local IPv6 addresses are# available.-name:network.dns.skip_ipv6_when_no_addressestype:RelaxedAtomicBoolvalue:falsemirror:always# This preference specifies a list of domains for which DNS lookups will be# IPv4 only. Works around broken DNS servers which can't handle IPv6 lookups# and/or allows the user to disable IPv6 on a per-domain basis. See bug 68796.-name:network.dns.ipv4OnlyDomainstype:Stringvalue:""mirror:never# This is the number of dns cache entries allowed-name:network.dnsCacheEntriestype:RelaxedAtomicUint32value:800mirror:always# In the absence of OS TTLs, the DNS cache TTL value-name:network.dnsCacheExpirationtype:RelaxedAtomicUint32value:60mirror:always# Get TTL; not supported on all platforms; nop on the unsupported ones.-name:network.dns.get-ttltype:RelaxedAtomicBool#if defined(XP_WIN)value:true#elsevalue:false#endifmirror:always# For testing purposes! Makes the native resolver resolve IPv4 "localhost"# instead of the actual given name.-name:network.dns.native-is-localhosttype:RelaxedAtomicBoolvalue:falsemirror:always# The grace period allows the DNS cache to use expired entries, while kicking off# a revalidation in the background.-name:network.dnsCacheExpirationGracePeriodtype:RelaxedAtomicUint32value:60mirror:always# This preference can be used to turn off DNS prefetch.-name:network.dns.disablePrefetchtype:RelaxedAtomicBoolvalue:falsemirror:always# This preference controls whether .onion hostnames are# rejected before being given to DNS. RFC 7686-name:network.dns.blockDotOniontype:RelaxedAtomicBoolvalue:truemirror:always# These domains are treated as localhost equivalent-name:network.dns.localDomainstype:Stringvalue:""mirror:never# When non empty all non-localhost DNS queries (including IP addresses)# resolve to this value. The value can be a name or an IP address.# domains mapped to localhost with localDomains stay localhost.-name:network.dns.forceResolvetype:Stringvalue:""mirror:never# Contols whether or not "localhost" should resolve when offline-name:network.dns.offline-localhosttype:RelaxedAtomicBoolvalue:truemirror:always# Defines how much longer resolver threads should stay idle before are shut down.# A negative value will keep the thread alive forever.-name:network.dns.resolver-thread-extra-idle-time-secondstype:RelaxedAtomicInt32value:60mirror:always# When true, the DNS code will always set the AI_CANONNAME# when calling getaddrinfo-name:network.dns.always_ai_canonnametype:RelaxedAtomicBoolvalue:truemirror:always# This preference specifies a comma seperated list of URL/IPAddress:Port that will be treated as public IPAddressSpace.-name:network.lna.address_space.public.overridetype:Stringtype:Stringvalue:""mirror:never# This preference specifies a comma seperated list of URL/IPAddress:Port that will be treated as private IPAddressSpace.-name:network.lna.address_space.private.overridetype:Stringvalue:""mirror:never# This preference specifies a comma seperated list of URL/IPAddress:Port that will be treated as local IPAddressSpace.-name:network.lna.address_space.local.overridetype:Stringvalue:""mirror:never# This preference controls Local Network Access (LNA) feature.-name:network.lna.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# This preference controls blocking requests for Local Network Access (LNA) failures.-name:network.lna.blockingtype:RelaxedAtomicBoolvalue:falsemirror:always# When this pref is true, loads triggered by scripts classified as trackers# will automatically be blocked.-name:network.lna.block_trackerstype:RelaxedAtomicBoolvalue:@IS_EARLY_BETA_OR_EARLIER@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.typetype:RelaxedAtomicUint32value:5mirror:always# Whether to use WPAD while configuring proxy with system settings-name:network.proxy.system_wpadtype:boolvalue:falsemirror:always# Whether to allow the use of WPAD while configuring proxy with system settings-name:network.proxy.system_wpad.allowedtype:boolvalue:falsemirror:always# Whether the SOCKS5 proxy should be in charge of DNS resolution. Making it a# SOCKS5h proxy by convention-name:network.proxy.socks5_remote_dnstype:RelaxedAtomicBoolvalue:truemirror:always# Whether the SOCKS4 proxy should be in charge of DNS resolution. Making it a# SOCKS4a proxy.-name:network.proxy.socks_remote_dnstype:RelaxedAtomicBoolvalue:falsemirror:always# When receiving a network change event, the time (in ms) we wait to reload the# PAC url.-name:network.proxy.reload_pac_delaytype:RelaxedAtomicUint32value:2000mirror:always# When parsing "SOCKS" in PAC string, the default version of SOCKS that will be# used.-name:network.proxy.default_pac_script_socks_versiontype:RelaxedAtomicUint32value:4mirror:always# Whether to force failover to direct for system requests.#ifdef MOZ_PROXY_DIRECT_FAILOVER-name:network.proxy.failover_directtype:boolvalue:truemirror:always#endif# Whether to allow a bypass flag to be set on httpChannel that will# prevent proxies from being used for that specific request.-name:network.proxy.allow_bypasstype:bool#ifdef MOZ_PROXY_BYPASS_PROTECTIONvalue:false#elsevalue:true#endifmirror:always-name:network.proxy.parse_pac_on_socket_processtype:RelaxedAtomicBoolvalue:falsemirror:always-name:network.proxy.detect_system_proxy_changestype:RelaxedAtomicBoolvalue:falsemirror:always# If all non-direct proxies have failed, we retry all of them in case they# are online now.-name:network.proxy.retry_failed_proxiestype:RelaxedAtomicBoolvalue:truemirror: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.enabledtype:boolvalue:truemirror:always# Priority urgency of tailed request. Default to 6, which is a very low priority-name:network.http.tailing.urgencytype:RelaxedAtomicUint32value:6mirror:always# Tailing: When the page load has not yet reached DOMContentLoaded point, tail requestes are delayed# by (non-tailed requests count + 1) * delay-quantum milliseconds.-name:network.http.tailing.delay-quantumtype:int32_tvalue:600mirror:always# Tailing: The same as above, but applied after the document load reached DOMContentLoaded event.-name:network.http.tailing.delay-quantum-after-domcontentloadedtype:int32_tvalue:100mirror:always# Tailing: Upper limit for the calculated delay, prevents long standing and comet-like requests tail forever. This is in milliseconds as well.-name:network.http.tailing.delay-maxtype:int32_tvalue:6000mirror:always# Tailing: Total limit we delay tailed requests since a page load beginning.-name:network.http.tailing.total-maxtype:int32_tvalue:45000mirror:always# When true, the default Accept request header will include the supported mime# types for images.-name:network.http.accept_include_imagestype:RelaxedAtomicBoolvalue:falsemirror:always# Whether to run proxy checks when processing Alt-Svc headers.-name:network.http.altsvc.proxy_checkstype:boolvalue:truemirror:always-name:network.http.stale_while_revalidate.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Capacity of the above cache, in kilobytes.-name:network.ssl_tokens_cache_capacitytype:RelaxedAtomicUint32value:2048mirror:always# How many records we store per entry-name:network.ssl_tokens_cache_records_per_entrytype:RelaxedAtomicUint32value:2mirror:always# The maximum allowed length for a URL - 1MB default.-name:network.standard-url.max-lengthtype:RelaxedAtomicUint32value:1048576mirror:always# If true, use the HSTS preload list.-name:network.stricttransportsecurity.preloadlisttype:RelaxedAtomicBoolvalue:truemirror:always# DNS Trusted Recursive Resolver# 0 - default off, 1 - reserved/off, 2 - TRR first, 3 - TRR only,# 4 - reserved/off, 5 off by choice-name:network.trr.modetype:RelaxedAtomicUint32value:0mirror:always# Default global TRR provider-name:network.trr.default_provider_uritype:Stringvalue:"https://mozilla.cloudflare-dns.com/dns-query"mirror:never# If true, retry TRR for recoverable errors once.-name:network.trr.retry_on_recoverable_errorstype:RelaxedAtomicBoolvalue:truemirror:always# If true, don't fallback to native DNS upon network errors.-name:network.trr.strict_native_fallbacktype:RelaxedAtomicBoolvalue:falsemirror:always# If true, we'll fallback to native if the retry also times out.-name:network.trr.strict_native_fallback_allow_timeoutstype:RelaxedAtomicBoolvalue:truemirror:always# Single TRR request timeout (ms) when strict native fallback is enabled.-name:network.trr.strict_fallback_request_timeout_mstype:RelaxedAtomicUint32value:6000mirror:always# If false, the temporary blocklisting feature is disabled.# This is useful for tests to prevent bleeding extra reqs# between tasks, since we may attempt to look up the# parent domain in the background when blocklisting a host.-name:network.trr.temp_blocklisttype:RelaxedAtomicBoolvalue:truemirror:always# TRR blocklist entry expire time (in seconds). Default is one minute.# Meant to survive basically a page load.-name:network.trr.temp_blocklist_duration_sectype:RelaxedAtomicUint32value:60mirror:always# Single TRR request timeout, in milliseconds-name:network.trr.request_timeout_mstype:RelaxedAtomicUint32value:1500mirror:always# Single TRR request timeout, in milliseconds for mode 3-name:network.trr.request_timeout_mode_trronly_mstype:RelaxedAtomicUint32value:30000mirror:always# Similar to network.http.http2.ping-timeout, but this is used when the# Http/2 connection is connected to the TRR server.-name:network.trr.ping_timeouttype:RelaxedAtomicUint32value:3000mirror:always# The timeout of the TRR confirmation request-name:network.trr.confirmation_timeout_mstype:RelaxedAtomicUint32value:6000mirror:always# The timeout of the TRR confirmation request-name:network.trr.confirmation_telemetry_enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Whether to send the Accept-Language header for TRR requests-name:network.trr.send_accept-language_headerstype:RelaxedAtomicBoolvalue:falsemirror:always# Whether to send an empty Accept-Encoding header for TRR requests-name:network.trr.send_empty_accept-encoding_headerstype:RelaxedAtomicBoolvalue:truemirror:always# Whether to send the User-Agent header for TRR requests-name:network.trr.send_user-agent_headerstype:RelaxedAtomicBoolvalue:falsemirror:always# If we should wait for captive portal confirmation before enabling TRR-name:network.trr.wait-for-portaltype:RelaxedAtomicBoolvalue:falsemirror: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-confirmationtype:RelaxedAtomicBoolvalue:falsemirror:always# Normally when confirmation fails we wait for the confirmation to succeed# before attempting to do TRR. When this pref is true, we optimistically# assume the confirmation will succeed and might attempt TRR anyway.# If network.trr.wait-for-confirmation is true, this pref is ignored.-name:network.trr.attempt-when-retrying-confirmationtype:RelaxedAtomicBoolvalue:falsemirror:always# Use GET (rather than POST)-name:network.trr.useGETtype:RelaxedAtomicBoolvalue:falsemirror:always# Allow RFC1918 address in responses?-name:network.trr.allow-rfc1918type:RelaxedAtomicBoolvalue:falsemirror:always# When true, it only sends AAAA when the system has IPv6 connectivity-name:network.trr.skip-AAAA-when-not-supportedtype:RelaxedAtomicBoolvalue:truemirror: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_mitigationstype:RelaxedAtomicBoolvalue:truemirror:always# Explicitly disable ECS (EDNS Client Subnet, RFC 7871)-name:network.trr.disable-ECStype:RelaxedAtomicBoolvalue:truemirror: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-changetype:RelaxedAtomicBoolvalue:truemirror:always# After this many failed TRR requests in a row, consider TRR borked-name:network.trr.max-failstype:RelaxedAtomicUint32value:15mirror: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# network.trr.max-retry-timeout-ms (64 seconds by default)-name:network.trr.retry-timeout-mstype:RelaxedAtomicUint32value:125mirror:always-name:network.trr.max-retry-timeout-mstype:RelaxedAtomicUint32value:64000mirror:always# Retry with no TRR when the response contained only 0.0.0.0 or ::-name:network.trr.fallback-on-zero-responsetype:RelaxedAtomicBoolvalue:falsemirror: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-hoststype:RelaxedAtomicBoolvalue:truemirror:always# Whether to add padding in the doh dns queries (rfc 7830)-name:network.trr.paddingtype:RelaxedAtomicBoolvalue:truemirror:always# The block size to pad to. Capped at 1024 bytes.# Setting it to 0 doesn't add additional padding, but allows the server to# respond with padding (RFC7930 Sec 4)-name:network.trr.padding.lengthtype:RelaxedAtomicUint32value:128mirror:always# Whether to skip the NS check for the blocked host.# Note this is used for test only.-name:network.trr.skip-check-for-blocked-hosttype:RelaxedAtomicBoolvalue:falsemirror:always# Whether to use the connection info that is generated asynchronously.-name:network.trr.async_connInfotype:RelaxedAtomicBoolvalue:falsemirror:always# If true, a failed TRR request that contains an extended DNS error# matching the hardFail condition in DNSPacket.cpp will not be# retried with native DNS-name:network.trr.hard_fail_on_extended_errortype:RelaxedAtomicBoolvalue:truemirror:always# The base URL of the `Learn more` button for skip reasons-name:network.trr_ui.skip_reason_learn_more_urltype:Stringvalue:"https://firefox-source-docs.mozilla.org/networking/dns/trr-skip-reasons.html#"mirror:never# Use Oblivious HTTP when making TRR requests.-name:network.trr.use_ohttptype:RelaxedAtomicBoolvalue:falsemirror:always# Oblivious HTTP relay URI for TRR requests.-name:network.trr.ohttp.relay_uritype:Stringvalue:""mirror:never# URI from which to fetch the configuration for the Oblivious HTTP gateway for TRR requests.-name:network.trr.ohttp.config_uritype:Stringvalue:""mirror:never# The URI used for the target DoH server when network.trr.use_ohttp is true-name:network.trr.ohttp.uritype:Stringvalue:""mirror:never# The idle timeout for the HTTP/3 connection that is used for DoH-name:network.trr.idle_timeout_for_http3_conntype:RelaxedAtomicUint32#ifdef EARLY_BETA_OR_EARLIERvalue:400#elsevalue:30#endifmirror:always# When this pref is true, GeckoViewStartup.sys.mjs will initialize the DoHController# and Fenix will automatically select the TRR provider when the browser is in# "Default protection" mode (ie network.trr.mode is 0).# The selected provider depends on remote settings and the user's region.# If a rollout hasn't started in the user's region, then Fenix will continue using# the system DNS settings.-name:network.android_doh.autoselect_enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Allow the network changed event to get sent when a network topology or setup# change is noticed while running.-name:network.notify.changedtype:RelaxedAtomicBoolvalue:truemirror:always# Allow network detection of IPv6 related changes (bug 1245059)-name:network.notify.IPv6type:RelaxedAtomicBool#ifdef XP_WINvalue:false#elsevalue:true#endifmirror:always# Whether to check the dnsSuffix on network changes-name:network.notify.dnsSuffixListtype:RelaxedAtomicBoolvalue:truemirror:always# Whether to check the registry for proxies on network changes that indicate# that TRR should not be used.-name:network.notify.checkForProxiestype:RelaxedAtomicBoolvalue:truemirror:always# Whether to check the registry for NRPT rules on network changes that# indicate that TRR should not be used.-name:network.notify.checkForNRPTtype:RelaxedAtomicBoolvalue:truemirror:always# Whether NotifyIpInterfaceChange should be called immediately after# registration in order to record the initial state of the network adapters.-name:network.notify.initial_calltype:RelaxedAtomicBoolvalue:truemirror:always# Whether to check for DNS resolvers-name:network.notify.resolverstype:RelaxedAtomicBoolvalue:truemirror:always# Whether to use the rust implemented DefaultURI for unknown scheme types-name:network.url.useDefaultURItype:RelaxedAtomicBoolvalue:truemirror:always# Allows use of a protocol exception list that will bypass defaultURI parser-name:network.url.simple_uri_unknown_schemes_enabledtype:RelaxedAtomicBoolvalue:truemirror:always# A list of schemes to allow for bypassing defaultURI as default# This is only used when network.url.simple_uri_unknown_schemes_enabled is true-name:network.url.simple_uri_unknown_schemestype:Stringvalue:""mirror:never# The maximum allowed length for a URL - 512MB default.# If 0 that means no limit.-name:network.url.max-lengthtype:RelaxedAtomicUint32value:512 * 1024 * 1024mirror:always# When true, if all the cyrillic characters in a label# are latin confusables and on a non-cyrillic domain# the label will be displayed as punycode.-name:network.idn.punycode_cyrillic_confusablestype:RelaxedAtomicBoolvalue:truemirror: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.forcePorttype:Stringvalue:""mirror:never# Try and use HTTP2 when using SSL-name:network.http.http2.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:network.http.http2.enabled.depstype:RelaxedAtomicBoolvalue:falsemirror:always# When true, Firefox will send Extensivle prioritization scheme# PRIORITY_UPDATE frames.-name:network.http.http2.priority_updatestype:RelaxedAtomicBoolvalue:falsemirror:always# This pref controls whether to send the# SETTINGS_NO_RFC7540_PRIORITIES when stream dependencies# are disabled, and extensible prioritization scheme is in use.# defaults to false as some servers panic when they see this (bug 1928600)-name:network.http.http2.send_NO_RFC7540_PRItype:RelaxedAtomicBoolvalue:falsemirror:always# This pref controls whether to send PRIORITY_UPDATE# frames for pushed streams.-name:network.http.http2.push_priority_updatetype:RelaxedAtomicBoolvalue:falsemirror:always-name:network.http.http2.enforce-tls-profiletype:RelaxedAtomicBoolvalue:truemirror:always-name:network.http.http2.chunk-sizetype:RelaxedAtomicInt32value:16000mirror:always-name:network.http.http2.timeouttype:RelaxedAtomicInt32value:170mirror:always-name:network.http.http2.coalesce-hostnamestype:RelaxedAtomicBoolvalue:truemirror:always# When true, origin A and origin B will be coalesced if they have an overlap# in IP addresses as advertized by DNS, regardless if the existing connection# to origin A is not to an IP present in B's DNS response.# When false, an existing connection will only be reused if the# connection's remote IP is also present in B's DNS response.-name:network.http.http2.aggressive_coalescingtype:RelaxedAtomicBoolvalue:falsemirror:always-name:network.http.http2.ping-thresholdtype:RelaxedAtomicInt32value:58mirror:always-name:network.http.http2.ping-timeouttype:RelaxedAtomicInt32value:8mirror:always-name:network.http.http2.send-buffer-sizetype:RelaxedAtomicInt32value:0mirror:always# When true, Firefox will send a SETTINGS_MAX_CONCURRENT_STREAMS# parameter when push is disabled. Chrome doesn't send this,# so some servers misbehave when we do. See Bug 1919750.-name:network.http.http2.send-push-max-concurrent-frametype:RelaxedAtomicBoolvalue:falsemirror:always-name:network.http.http2.push-allowancetype:RelaxedAtomicInt32value:131072# 128KBmirror:always-name:network.http.http2.pull-allowancetype:RelaxedAtomicInt32value:12582912# 12MBmirror:always-name:network.http.http2.default-concurrenttype:RelaxedAtomicInt32value:100mirror:always-name:network.http.http2.default-hpack-buffertype:RelaxedAtomicInt32value:65536# 64Kmirror:always-name:network.http.http2.websocketstype:RelaxedAtomicBoolvalue:truemirror:always-name:network.http.http2.enable-hpack-dumptype:RelaxedAtomicBoolvalue:falsemirror:always-name:network.http.move_to_pending_list_after_network_changetype:RelaxedAtomicBoolvalue:truemirror:always# Enable HTTP/3-name:network.http.http3.enabletype:RelaxedAtomicBoolvalue:truemirror:always# Receive buffer size of QUIC socket-name:network.http.http3.recvBufferSizetype:RelaxedAtomicInt32value:1048576mirror:always# Use NSPR for HTTP3 UDP IO-name:network.http.http3.use_nspr_for_iotype:RelaxedAtomicBoolvalue:@IS_NOT_EARLY_BETA_OR_EARLIER@mirror:alwaysrust:true# Set IP ECN marks on HTTP3/QUIC UDP datagrams. Noop if# network.http.http3.use_nspr_for_io is true.-name:network.http.http3.ecn_marktype:RelaxedAtomicBoolvalue:@IS_EARLY_BETA_OR_EARLIER@mirror:alwaysrust:true# Report IP ECN marks from HTTP3/QUIC UDP datagrams via QUIC ACKs back to the# sender. Noop if network.http.http3.use_nspr_for_io is true.-name:network.http.http3.ecn_reporttype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# Poll UDP socket via PR_POLL_WRITE on WOULD_BLOCK. Noop if# network.http.http3.use_nspr_for_io is true.## See <https://phabricator.services.mozilla.com/D239162> for details.-name:network.http.http3.pr_poll_writetype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# Maximum number of UDP segments in a single UDP GSO send. Noop if# network.http.http3.use_nspr_for_io is true.-name:network.http.http3.max_gso_segmentstype:RelaxedAtomicUint32# Current industry standard. Likely worth tuning.value:10mirror:alwaysrust:true-name:network.http.http3.enable_qlogtype:RelaxedAtomicBoolvalue:falsemirror:always-name:network.http.http3.enable_0rtttype:RelaxedAtomicBoolvalue:truemirror: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_delaytype:RelaxedAtomicUint32value:100mirror:always# The global half open sockets allowed for creating a backup connection.-name:network.http.http3.parallel_fallback_conn_limittype:RelaxedAtomicUint32value:32mirror:always# Connection-level flow control limit-name:network.http.http3.max_datatype:RelaxedAtomicUint32value:25165824mirror:always# Stream-level flow control limit-name:network.http.http3.max_stream_datatype:RelaxedAtomicUint32value:12582912mirror:always# Enable http3 network priority as described in# <https://www.rfc-editor.org/rfc/rfc9218.html>.-name:network.http.http3.prioritytype:RelaxedAtomicBoolvalue:truemirror:always# Depriorizing background tabs notifies websites when switching to or from the# tab while still loading resources for the website. On one hand it might# improve performance when switching to an tab with a website using the same# QUIC connection. On the other hand it sends more data to the website and# might be a privacy concern.-name:network.http.http3.send_background_tabs_deprioritizationtype:RelaxedAtomicBoolvalue:falsemirror:always-name:network.http.http3.version_negotiation.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# When a Http/3 connection failed, whether to retry with a different IP address.-name:network.http.http3.retry_different_ip_familytype:RelaxedAtomicBoolvalue:@IS_EARLY_BETA_OR_EARLIER@mirror:always# This is for testing purpose. When true, nsUDPSocket::SendWithAddress and# neqo_http3conn_process_output_and_send will return NS_ERROR_CONNECTION_REFUSED# for address "::1".-name:network.http.http3.block_loopback_ipv6_addrtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# The congestion control algorithm with which to configure neqo.# 0 => NewReno# 1 => Cubic-name:network.http.http3.cc_algorithmtype:RelaxedAtomicUint32value:1mirror:alwaysrust:true# Whether to send an mlkem768x25519 key share in HTTP/3 TLS handshakes.# Has no effect unless security.tls.enable_kyber is true.-name:network.http.http3.enable_kybertype:RelaxedAtomicBool#ifdef ANDROIDvalue:@IS_NIGHTLY_BUILD@#elsevalue:true#endifmirror:alwaysrust:true# When true, HTTP/3 will be disabled when third party roots are found.-name:network.http.http3.disable_when_third_party_roots_foundtype:RelaxedAtomicBoolvalue:truemirror:always# Only used for testing purposes. In automation, this value is used to override# the result of third party roots check.-name:network.http.http3.has_third_party_roots_found_in_automationtype:RelaxedAtomicBoolvalue:falsemirror:always# When network.http.http3.alt-svc-mapping-for-testing is set, only use# HTTP/3 to connect.-name:network.http.http3.force-use-alt-svc-mapping-for-testingtype:RelaxedAtomicBoolvalue:falsemirror:always# When network.http.http3.sni-slicing is set, TLS SNI slicing is enabled.-name:network.http.http3.sni-slicingtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# When true, skip alt-svc validation when the connection is made using HTTPS RR.-name:network.http.skip_alt_svc_validation_on_https_rrtype:RelaxedAtomicBoolvalue:truemirror:always# The idle timeout used for HTTP/3 connection.-name:network.http.http3.idle_timeouttype:RelaxedAtomicUint32value:30mirror:always# When true, a http request will be upgraded to https when HTTPS RR is# available.-name:network.dns.upgrade_with_https_rrtype:RelaxedAtomicBoolvalue:truemirror:always# Whether to use HTTPS RR as AltSvc-name:network.dns.use_https_rr_as_altsvctype:RelaxedAtomicBoolvalue:truemirror:always# Whether to check for NAT64 using the system resolver-name:network.connectivity-service.nat64-checktype:boolvalue:truemirror: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-prefixtype:Stringvalue:""mirror:never# Whether to wait for idle-startup notification before performing connectivity checks-name:network.connectivity-service.wait_for_idle_startuptype:RelaxedAtomicBoolvalue:truemirror:always# Whether to enable echconfig.-name:network.dns.echconfig.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Whether to enable echconfig for http3.-name:network.dns.http3_echconfig.enabledtype:RelaxedAtomicBoolvalue:truemirror: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_failedtype:RelaxedAtomicBoolvalue:falsemirror:always# When true, reset the exclusion list when all records are excluded.-name:network.dns.httpssvc.reset_exclustion_listtype:RelaxedAtomicBoolvalue:truemirror: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_timeouttype:RelaxedAtomicUint32value:50mirror:always# The TTL for negative responses of TXT and HTTPS records.-name:network.dns.negative_ttl_for_type_recordtype:RelaxedAtomicUint32value:300# 5 minutes (in seconds)mirror:always# Whether to use port prefixed QNAME for HTTPS RR-name:network.dns.port_prefixed_qname_https_rrtype:RelaxedAtomicBoolvalue:truemirror:always# Whether to use HTTPS RR and ignore NS_HTTP_DISALLOW_HTTPS_RR# This pref is only set when running tests-name:network.dns.force_use_https_rrtype:RelaxedAtomicBoolvalue:falsemirror:always# When true, we check if the cname is the same as the target name of the record.# If not, the record will not be used.-name:network.dns.https_rr.check_record_with_cnametype:RelaxedAtomicBoolvalue:truemirror:always# This preference can be used to turn off IPv6 name lookups. See bug 68796.-name:network.dns.disableIPv6type:RelaxedAtomicBoolvalue:falsemirror:always# Whether to prefer IPv6 name lookups.-name:network.dns.preferIPv6type:RelaxedAtomicBoolvalue:falsemirror:always# Only used for testing-name:network.dns.mock_HTTPS_RR_domaintype:Stringvalue:""mirror:never# Whether to add additional record IPs to the cache-name:network.trr.add_additional_recordstype:RelaxedAtomicBoolvalue:truemirror:always# When this pref is true, AddStorageEntry will return an error if the# OPEN_READONLY & OPEN_SECRETLY flags are passed and no entry exists.# If no regressions occur this pref should be removed.-name:network.cache.bug1708673type:RelaxedAtomicBoolvalue:falsemirror:always# How much progress we want to do minimum when purging under pressure.# On disk, we may see blocking I/O, so for now we keep 0 here.-name:network.cache.purge_minprogress_disktype:RelaxedAtomicUint32value:0mirror:always# How much progress we want to do minimum when purging under pressure.# In memory, purging is cheap and memory is precious.-name:network.cache.purge_minprogress_memorytype:RelaxedAtomicUint32value:32mirror:always# When true we will dispatch a background task (separate process) to# delete the cache folder at shutdown in order to avoid shutdown hangs.-name:network.cache.shutdown_purge_in_background_tasktype:RelaxedAtomicBool#if defined(XP_WIN)value:true#elsevalue:false#endifmirror:always# Number of seconds to wait for the cache folder to be renamed before# the background task forcefully exists.-name:network.cache.shutdown_purge_folder_wait_secondstype:RelaxedAtomicUint32value:10mirror:always-name:network.cache.persist_permanent_redirects_httptype:boolvalue:falsemirror: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_certtype:RelaxedAtomicBoolvalue:falsemirror:always# Whether to record the telemetry event when a JAR channel is failed to load.-name:network.jar.record_failure_reasontype:RelaxedAtomicBoolvalue:@IS_EARLY_BETA_OR_EARLIER@mirror:always# nsJARInputStream::Available returns the size indicated by the archived entry# so we need a limit so we don't OOM if the archive is corrupted.-name:network.jar.max_available_sizetype:RelaxedAtomicUint32value:256*1024*1024# 256 Mbmirror:always# When decompressing an archived entry we need to allocate a buffer# large enough to hold the uncompressed entry. This pref specifies the max# size of such a buffer.# When set to 0 there is no limit.-name:network.jar.max_entry_sizetype:RelaxedAtomicUint32value:256*1024*1024# 256 Mbmirror:always# When this pref is true, we will use the HTTPS acceptable content encoding# list for trustworthy domains such as http://localhost-name:network.http.encoding.trustworthy_is_httpstype:RelaxedAtomicBoolvalue:truemirror:always# Support http3 version1-name:network.http.http3.support_version1type:RelaxedAtomicBoolvalue:truemirror:always# Disable early data on an origin if SSL_ERROR_PROTOCOL_VERSION_ALERT is received-name:network.http.early_data_disable_on_errortype:RelaxedAtomicBoolvalue:truemirror:always# Disable early data if it fails for more than this number of origins-name:network.http.early_data_max_errortype:RelaxedAtomicUint32value:5mirror:always# If true, remove the resumption token when 0RTT failed.-name:network.http.remove_resumption_token_when_early_data_failedtype:RelaxedAtomicBoolvalue:truemirror:always# The length of cnonce string used in HTTP digest auth.-name:network.http.digest_auth_cnonce_lengthtype:uint32_tvalue:16mirror:always# When a primary or backup half-open socket fails while another is still# connecting, retry with the remaining one-name:network.http.retry_with_another_half_opentype:RelaxedAtomicBoolvalue:@IS_EARLY_BETA_OR_EARLIER@mirror:always-name:network.http.basic_http_auth.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# If true, HTTP response content-type headers will be parsed using the standards-compliant MimeType parser-name:network.standard_content_type_parsing.response_headerstype:RelaxedAtomicBoolvalue:truemirror:always# The maximum count that we allow socket prrocess to crash. If this count is# reached, we won't use networking over socket process.-name:network.max_socket_process_failed_counttype:RelaxedAtomicUint32value:1mirror:always-name:network.allow_redirect_to_datatype:RelaxedAtomicBoolvalue:falsemirror:always-name:network.allow_raw_sockets_in_content_processestype:boolvalue:falsemirror:once-name:network.allow_large_stack_size_for_socket_threadtype:RelaxedAtomicBoolvalue:truemirror:always# WebTransport-name:network.webtransport.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# WebTransport Datagram support-name:network.webtransport.datagrams.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# WebTransport Datagram size-name:network.webtransport.datagram_sizetype:RelaxedAtomicUint32value:1200mirror:always# WebTransport Redirect support-name:network.webtransport.redirect.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Wifi-scan polling period, in ms, when on a mobile network.# A value of 0 indicates that no polling should be done.-name:network.wifi.scanning_periodtype:RelaxedAtomicUint32value:60000mirror:always# Block synchronous XMLHttpRequests coming from system requests-name:network.xhr.block_sync_system_requeststype:boolvalue:truemirror:always# When the Access-Control-Allow-Headers is wildcard (*), whether to allow# CORS-protected requests with the Authorization request header.-name:network.cors_preflight.authorization_covered_by_wildcardtype:boolvalue:truemirror:always# Inner schemes that are allowed to display application/http-index-format.# Set to * to allow all schemes.-name:network.http_index_format.allowed_schemestype:Stringvalue:"file,moz-gio"mirror:never# Enable off-main-thread decompression of network streams# Note:network.decompression_off_mainthread triggered a bug, so# we switched to a new pref that can be turned off safely-name:network.decompression_off_mainthread2type:boolvalue:truemirror:always# Minimum content-length to use off-main-thread decompression of network streams-name:network.decompression_off_mainthread_min_sizetype:int32_tvalue:512mirror:always# Cached state of parental controls (enabled/disabled)-name:network.parental_controls_cached_statetype:RelaxedAtomicBoolvalue:falsemirror:always# Used for testing purposes only. When true, it attaches an extra networking# layer to simulate different network scenarios.-name:network.socket.attach_mock_network_layertype:RelaxedAtomicBoolvalue:falsemirror:always# Whether to redirect a failing request to an essential domain# to a fallback domain that hosts the same content.-name:network.essential_domains_fallbacktype:RelaxedAtomicBoolvalue:falsemirror:always#---------------------------------------------------------------------------# Prefs starting with "nglayout."#---------------------------------------------------------------------------# Enable/disable display list invalidation logging --- useful for debugging.-name:nglayout.debug.invalidationtype:boolvalue:falsemirror:always-name:nglayout.debug.disable_xul_cachetype:boolvalue:falsemirror:always-name:nglayout.initialpaint.delaytype:int32_tvalue:5mirror:always-name:nglayout.initialpaint.delay_in_oopiftype:int32_tvalue:5mirror:always#---------------------------------------------------------------------------# Prefs starting with "page_load."#---------------------------------------------------------------------------# Time in milliseconds during which certain tasks are deprioritized during# page load.-name:page_load.deprioritization_periodtype:RelaxedAtomicUint32value:5000mirror:always#---------------------------------------------------------------------------# Prefs starting with "pdfjs."#----------------------------------------------------------------------------name:pdfjs.disabledtype:boolvalue:falsemirror:always#---------------------------------------------------------------------------# Prefs starting with "permissions."#---------------------------------------------------------------------------# 1-Accept, 2-Deny, Any other value: Accept-name:permissions.default.imagetype:RelaxedAtomicUint32value:1mirror:always-name:permissions.default.screen-wake-locktype:RelaxedAtomicUint32value:1mirror:always-name:permissions.isolateBy.userContexttype:RelaxedAtomicBoolvalue:falsemirror:always-name:permissions.isolateBy.privateBrowsingtype:RelaxedAtomicBoolvalue:truemirror:always# Is support for Permissions.query enabled for camera and microphone?-name:permissions.media.query.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Whether default permissions should be imported from remote settings in# addition to importing them from browser/app/permissions.-name:permissions.manager.remote.enabledtype:boolvalue:truemirror:always#---------------------------------------------------------------------------# Prefs starting with "places."#---------------------------------------------------------------------------# Whether pages alternative frecency is enabled. This and the following related# prefs only apply at restart.-name:places.frecency.pages.alternative.featureGatetype:boolvalue:falsemirror:once-name:places.frecency.pages.alternative.maxDaysFromTodaytype:uint32_tvalue:60mirror:once-name:places.frecency.pages.alternative.veryHighWeighttype:uint32_tvalue:200mirror:once-name:places.frecency.pages.alternative.highWeighttype:uint32_tvalue:100mirror:once-name:places.frecency.pages.alternative.mediumWeighttype:uint32_tvalue:50mirror:once-name:places.frecency.pages.alternative.lowWeighttype:uint32_tvalue:20mirror:once-name:places.frecency.pages.alternative.halfLifeDaystype:uint32_tvalue:30mirror:once-name:places.frecency.pages.alternative.numSampledVisitstype:uint32_tvalue:10mirror:once# Max difference allowed between a visit and an interaction.-name:places.frecency.pages.alternative.interactions.maxVisitGapSecondstype:uint32_tvalue:2 * 60mirror:once# Minimum time required to upgrade a visit score.-name:places.frecency.pages.alternative.interactions.viewTimeSecondstype:uint32_tvalue:60mirror:once# Minimum time required to upgrade a visit score of a visit# provided there is a minimum threshold of keypresses.-name:places.frecency.pages.alternative.interactions.viewTimeIfManyKeypressesSecondstype:uint32_tvalue:20mirror:once-name:places.frecency.pages.alternative.interactions.manyKeypressestype:uint32_tvalue:50mirror:once# Whether flooding prevention feature is enabled or not.-name:places.history.floodingPrevention.enabledtype:boolvalue:truemirror:always# Maximum elapsed time betwen a user interaction and a visit before starting to# apply flooding prevention.-name:places.history.floodingPrevention.maxSecondsFromLastUserInteractiontype:uint32_tvalue:3mirror:always# Number of consecutive accesses to an origin in a short timeframe before# starting to restrict storing visits for it.-name:places.history.floodingPrevention.restrictionCounttype:uint32_tvalue:3mirror:always# Duration of the timeframe where consecutive visits to an origin should happen# before starting to restrict storing visits for it.-name:places.history.floodingPrevention.restrictionExpireSecondstype:uint32_tvalue:5mirror:always#---------------------------------------------------------------------------# Prefs starting with "plain_text."#---------------------------------------------------------------------------# When false, text in plaintext documents does not wrap long lines.-name:plain_text.wrap_long_linestype:boolvalue:truemirror:always#---------------------------------------------------------------------------# Prefs starting with "preferences."#----------------------------------------------------------------------------name:preferences.allow.omt-writetype:boolvalue:truemirror: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.policytype:boolvalue:falsemirror: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.policytype:boolvalue:falsemirror: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-pathstype:RelaxedAtomicBoolvalue:truemirror:always# Whether we always print silently (without a print dialog).-name:print.always_print_silenttype:RelaxedAtomicBoolvalue:falsemirror:always# Whether we directly use the system print dialog to collect the user's print# settings rather than using the tab-modal print preview dialog.# Note: `print.always_print_silent` overrides this.-name:print.prefer_system_dialogtype:RelaxedAtomicBoolvalue:falsemirror:always# Whether we attempt to generate links in Save As PDF output.-name:print.save_as_pdf.links.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Whether we attempt to generate and use document-internal PDF destinations.-name:print.save_as_pdf.internal_destinations.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Whether we use the CSS @page size as the paper size in PDF output.-name:print.save_as_pdf.use_page_rule_size_as_paper_size.enabledtype:RelaxedAtomicBoolvalue:@IS_NOT_ANDROID@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,# but only if it does not lead to issues such as excessive memory use.-name:print.default_dpitype:floatvalue:144.0fmirror:always# Whether support for monochrome printing is enabled for CUPS.-name:print.cups.monochrome.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Disabling this will no-op window.print()-name:print.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Determines if and when to center pages on a sheet horiontally when printing.# With a setting of 2, it's guaranteed that A4 on US Letter will be centered.# 0: never,# 1: always,# 2: when the ratio of sheet to page size after content scaling is near 1.0-name:print.center_page_on_sheettype:RelaxedAtomicUint32value:2mirror:always#---------------------------------------------------------------------------# Prefs starting with "privacy."#---------------------------------------------------------------------------# Annotate trackers using the strict list. If set to false, the basic list will# be used instead.-name:privacy.annotate_channels.strict_list.enabledtype:boolvalue:falsemirror:always# Annotate trackers using the strict list in the private browsing mode. If set# to false, the basic list will be used instead.-name:privacy.annotate_channels.strict_list.pbmode.enabledtype:boolvalue:truemirror:always# Enable the clearing of cache data using the clear-site-data header. If enabled,# header values of "cache" and "*" will clear cached data from the origin-name:privacy.clearSiteDataHeader.cache.enabledtype:boolvalue:truemirror:always# Also enable the clearing the bfcache for "Clear-Site-Data"-Header-name:privacy.clearSiteDataHeader.cache.bfcache.enabledtype:boolvalue:truemirror:always# First Party Isolation (double keying), disabled by default.-name:privacy.firstparty.isolatetype:RelaxedAtomicBoolvalue:falsemirror: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_accesstype:RelaxedAtomicBoolvalue:truemirror:always-name:privacy.firstparty.isolate.block_post_messagetype:RelaxedAtomicBoolvalue:falsemirror:always-name:privacy.firstparty.isolate.use_sitetype:RelaxedAtomicBoolvalue:falsemirror:always# Enforce tracking protection in all modes.-name:privacy.trackingprotection.enabledtype:boolvalue:falsemirror:always# Enforce tracking protection in Private Browsing mode.-name:privacy.trackingprotection.pbmode.enabledtype:boolvalue:truemirror:always# Annotate channels based on the tracking protection list in all modes-name:privacy.trackingprotection.annotate_channelstype:boolvalue:truemirror:always# Block 3rd party fingerprinting resources.-name:privacy.trackingprotection.fingerprinting.enabledtype:boolvalue:falsemirror:always# Block 3rd party cryptomining resources.-name:privacy.trackingprotection.cryptomining.enabledtype:boolvalue:falsemirror:always# Block 3rd party socialtracking resources.-name:privacy.trackingprotection.socialtracking.enabledtype:boolvalue:falsemirror:always# Consider socialtracking annotation as trackers (see ETP).-name:privacy.socialtracking.block_cookies.enabledtype:boolvalue:truemirror:always# Block 3rd party emailtracking resources in all mode.-name:privacy.trackingprotection.emailtracking.enabledtype:boolvalue:falsemirror:always# Block 3rd party emailtracking resources in Private Browsing mode.-name:privacy.trackingprotection.emailtracking.pbmode.enabledtype:boolvalue:truemirror:always# Collecting 3rd party emailtracking telemetry.-name:privacy.trackingprotection.emailtracking.data_collection.enabledtype:boolvalue:truemirror:always-name:privacy.trackingprotection.testing.report_blocked_nodetype:RelaxedAtomicBoolvalue:falsemirror:always# Annotate channels based on the consent manager list# Note: consent manager annotations will be disabled if tracking protection is disabled-name:privacy.trackingprotection.consentmanager.annotate_channelstype:boolvalue:truemirror:always# Skip blocking for consentmanager resources in all modes.-name:privacy.trackingprotection.consentmanager.skip.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Skip blocking for consentmanager resources in Private Browsing mode.-name:privacy.trackingprotection.consentmanager.skip.pbmode.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Annotate channels based on the anti-fraud list# Note: anti-fraud annotations will be disabled if tracking protection is disabled-name:privacy.trackingprotection.antifraud.annotate_channelstype:boolvalue:truemirror:always# Skip blocking for anti-fraud resources in all modes.-name:privacy.trackingprotection.antifraud.skip.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Skip blocking for anti-fraud resources in Private Browsing mode.-name:privacy.trackingprotection.antifraud.skip.pbmode.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Enable the "baseline" allow-list for fixing severe site breakage (e.g. blank# page).-name:privacy.trackingprotection.allow_list.baseline.enabledtype:boolvalue:truemirror:always# Enable the "convenience" allow-list for less severe site breakage (e.g. embeds# or images missing).-name:privacy.trackingprotection.allow_list.convenience.enabledtype:boolvalue:truemirror: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_englishtype:RelaxedAtomicUint32value:0mirror:alwaysdo_not_use_directly:true# Send "do not track" HTTP header, disabled by default.-name:privacy.donottrackheader.enabledtype:boolvalue:falsemirror:always# Potentially send "global privacy control" HTTP header and set navigator# property accordingly. Communicates user's desire to opt-out/in of# websites or services selling or sharing the user's information, false by# default.# true - Send the header with a value of 1 to indicate opting-out# false - Do not send header to indicate opting-in-name:privacy.globalprivacycontrol.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Controls whether or not GPC signals are sent in private browsing mode.# This can be overridden by `privacy.globalprivacycontrol.enabled` as true.-name:privacy.globalprivacycontrol.pbmode.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Controls whether or not GPC signals are sent. Meant to act as a third option# of 'undecided' by leaving the navigator property undefined and not attaching# the Sec-GPC HTTP header.-name:privacy.globalprivacycontrol.functionality.enabledtype:RelaxedAtomicBoolvalue:falsemirror: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_prioritytype:boolvalue:falsemirror: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.reduceTimerPrecisiontype:RelaxedAtomicBoolvalue:truemirror: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.unconditionaltype:RelaxedAtomicBoolvalue:truemirror: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.resistFingerprintingtype:RelaxedAtomicBoolvalue:falsemirror:alwaysdo_not_use_directly:true# When the .pbmode pref is on, RFP or FPP will be enabled in PBM# When the non-pbm pref is on, they will be enabled in PBM and non-PBM-name:privacy.resistFingerprinting.pbmodetype:RelaxedAtomicBoolvalue:falsemirror:alwaysdo_not_use_directly:true# privacy.fingerprintingProtection enables a set of fingerprinting protections# designed to minimize breakage while maximizing protection.-name:privacy.fingerprintingProtectiontype:RelaxedAtomicBoolvalue:falsemirror:alwaysdo_not_use_directly:true-name:privacy.fingerprintingProtection.pbmodetype:RelaxedAtomicBoolvalue:truemirror:alwaysdo_not_use_directly:true# Disables FPP Remote settings bucket. Allows user to stop overriding# of FPP overrides-name:privacy.fingerprintingProtection.remoteOverrides.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Enable/Disable fingerprinting protections that are enabled in# Enhanced Tracking Protection Standard mode.# bFPP cannot be enabled in only PBM, it is either enabled# browser-wide or disabled browser-wide. If FPP is enabled# in the same context as bFPP, FPP takes precedence. If# RFP is enabled in the same context as FPP, then RFP takes precedence-name:privacy.baselineFingerprintingProtectiontype:RelaxedAtomicBoolvalue:truemirror:alwaysdo_not_use_directly:true# This pref can be used to disable mozAddonManager entirely for fingerprinting# reasons. Someone like Tor browser will use this pref.# NOTE: We'd like this to be a "hidden" pref once StaticPrefs supports it.-name:privacy.resistFingerprinting.block_mozAddonManagertype:RelaxedAtomicBoolvalue:falsemirror:always# The log level for browser console messages logged in RFPHelper.sys.mjs. Change to# 'All' and restart to see the messages.-name:privacy.resistFingerprinting.jsmlogleveltype:Stringvalue:"Warn"mirror:never# Enable jittering the clock one precision value forward.-name:privacy.resistFingerprinting.reduceTimerPrecision.jittertype:RelaxedAtomicBoolvalue:truemirror:always# Dynamically tune the resolution of the timer reduction for# `privacy.reduceTimerPrecision` and `privacy.resistFingerprinting`.-name:privacy.resistFingerprinting.reduceTimerPrecision.microsecondstype:RelaxedAtomicUint32value:1000mirror:always-name:privacy.resistFingerprinting.target_video_restype:uint32_tvalue:1080mirror:always# Enable resetting the fingerprinting randomization key daily for normal windwos.-name:privacy.resistFingerprinting.randomization.daily_reset.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Enable resetting the fingerprinting randomization key daily for private windwos.-name:privacy.resistFingerprinting.randomization.daily_reset.private.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Control whether we use the SipHash to generate the canvas random key.-name:privacy.resistFingerprinting.randomization.canvas.use_siphashtype:RelaxedAtomicBoolvalue:falsemirror:always# Anti-tracking permission expiration.-name:privacy.restrict3rdpartystorage.expirationtype:uint32_tvalue:2592000# 30 days (in seconds)mirror:always# Report Anti-tracking warnings to console lazily-name:privacy.restrict3rdpartystorage.console.lazytype:boolvalue:truemirror:always# Enable the heuristic to allow storage access for windows opened using window.open() after user interaction-name:privacy.restrict3rdpartystorage.heuristic.opened_window_after_interactiontype:boolvalue:truemirror:always# Enable the heuristic to allow storage access for windows opened using window.open()-name:privacy.restrict3rdpartystorage.heuristic.window_opentype:boolvalue:falsemirror:always# Enable the heuristic to allow storage access for windows opened using window.open()-name:privacy.restrict3rdpartystorage.heuristic.redirecttype:boolvalue:falsemirror:always# Enable the heuristic to allow storage access for extended navigations with interaction-name:privacy.restrict3rdpartystorage.heuristic.navigationtype:bool#if defined(ANDROID)value:false#elsevalue:true#endifmirror:always# Anti-tracking permission expiration.-name:privacy.restrict3rdpartystorage.expiration_redirecttype:uint32_tvalue:2592000# 30 days (in seconds)mirror:always# Anti-tracking user-interaction expiration.-name:privacy.userInteraction.expirationtype:uint32_tvalue:3888000# 45 days (in seconds)mirror:always# Anti-tracking user-interaction document interval.-name:privacy.userInteraction.document.intervaltype:uint32_tvalue: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.testingtype:boolvalue:falsemirror:always# Full isolation (referrer, cookie jar, etc) of resources injected by content-scripts.-name:privacy.antitracking.isolateContentScriptResourcestype:boolvalue:@IS_NIGHTLY_BUILD@mirror:always# Controls the anti-tracking webcompat features. This includes:# - All URL-Classifier and state partitioning skip lists (prefs and remote# settings)# - Storage access heuristics (opener, redirect, etc.)# - StorageAccessAPI automatic grants (skips the prompt)# - Allowing specific tracking channels on user opt-in (e.g. facebook login# shim).-name:privacy.antitracking.enableWebcompattype:RelaxedAtomicBoolvalue:truemirror:always# Enable the heuristic to allow storage access for recent visited pages-name:privacy.restrict3rdpartystorage.heuristic.recently_visitedtype:bool#if defined(ANDROID)value:true#elsevalue:false#endifmirror:always# Valid time gap since last visit-name:privacy.restrict3rdpartystorage.heuristic.recently_visited_timetype:uint32_tvalue:600# 10 minutesmirror:always# Whether to exclude third-party trackers from the storage access heuristics.-name:privacy.restrict3rdpartystorage.heuristic.exclude_third_party_trackerstype:boolvalue:truemirror:always# Recent visited pages redirection permission expiration.-name:privacy.restrict3rdpartystorage.expiration_visitedtype:uint32_tvalue:2592000# 30 days (in seconds)mirror:always-name:privacy.window.maxInnerWidthtype:int32_tvalue:1400mirror:always-name:privacy.window.maxInnerHeighttype:int32_tvalue:900mirror:always-name:privacy.sanitize.useOldClearHistoryDialogtype:RelaxedAtomicBoolvalue:truemirror:always-name:privacy.sanitize.sanitizeOnShutdowntype:RelaxedAtomicBoolvalue:falsemirror:always-name:privacy.clearOnShutdown.cachetype:RelaxedAtomicBoolvalue:falsemirror:always-name:privacy.clearOnShutdown_v2.cachetype:RelaxedAtomicBoolvalue:falsemirror:always-name:privacy.dynamic_firstparty.limitForeigntype:RelaxedAtomicBoolvalue:falsemirror:always-name:privacy.dynamic_firstparty.use_sitetype:RelaxedAtomicBoolvalue:truemirror:always# Controls whether or not the dFPI partition key includes non-standard ports-name:privacy.dynamic_firstparty.use_site.include_porttype:RelaxedAtomicBoolvalue:falsemirror:always-name:privacy.partition.network_statetype:RelaxedAtomicBoolvalue:truemirror:always# Partition the OCSP cache by the partitionKey.-name:privacy.partition.network_state.ocsp_cachetype:RelaxedAtomicBoolvalue:truemirror:always# Partition the OCSP cache by the partitionKey for private browsing mode.-name:privacy.partition.network_state.ocsp_cache.pbmodetype:RelaxedAtomicBoolvalue:truemirror:always# Always partition web storage APIs except cookies.-name:privacy.partition.always_partition_third_party_non_cookie_storagetype:RelaxedAtomicBoolvalue:truemirror:always# Exclude session storage from the above preference.-name:privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstoragetype:RelaxedAtomicBoolvalue:falsemirror:always-name:privacy.partition.bloburl_per_partition_keytype:boolvalue:truemirror:always-name:privacy.window.name.update.enabledtype:boolvalue:truemirror: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_proxytype:boolvalue:falsemirror:always# Partition the service workers unconditionally when dFPI is enabled.-name:privacy.partition.serviceWorkerstype:RelaxedAtomicBoolvalue:truemirror:always# Enables / disables the strip on share feature which strips query parameters# when copying/sharing in-content links or from the url bar.-name:privacy.query_stripping.strip_on_share.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Enables / disables the URL query string stripping in normal browsing mode# which strips query parameters from loading URIs to prevent bounce (redirect)# tracking.-name:privacy.query_stripping.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Same as the pref above, but controls query stripping for private browsing# mode.-name:privacy.query_stripping.enabled.pbmodetype:RelaxedAtomicBoolvalue:falsemirror:always# The list which contains query parameters that are needed to be stripped from# URIs. The query parameters are separated by a space.-name:privacy.query_stripping.strip_listtype:Stringvalue:""mirror:never# This controls if we will do the query string stripping for redirects.-name:privacy.query_stripping.redirecttype:boolvalue:truemirror:always# the list which contains sites where should exempt from query stripping-name:privacy.query_stripping.allow_listtype:Stringvalue:""mirror:never# Controls Bounce Tracking Protection behavior.# Set to 0 to fully disable. See nsIBounceTrackingProtection.idl for# documentation.-name:privacy.bounceTrackingProtection.modetype:uint32_t#ifdef NIGHTLY_BUILDvalue:1#elsevalue:3#endifmirror:always# How long to wait for a client redirect after a navigation ends.-name:privacy.bounceTrackingProtection.clientBounceDetectionTimerPeriodMStype:uint32_tvalue:10000mirror:always# How long user activations will protect a site host from storage deletion.-name:privacy.bounceTrackingProtection.bounceTrackingActivationLifetimeSectype:uint32_tvalue:3888000mirror:always# How long to wait for interaction after a possible bounce tracking event before# deleting a site host's storage.-name:privacy.bounceTrackingProtection.bounceTrackingGracePeriodSectype:uint32_tvalue:3600mirror:always# How often to run the bounce tracking timer algorithm which purges bounce# tracker state periodically. Set to 0 to disable purging.-name:privacy.bounceTrackingProtection.bounceTrackingPurgeTimerPeriodSectype:uint32_tvalue:3600mirror:always# Whether only bounces that access storage should be considered trackers.-name:privacy.bounceTrackingProtection.requireStatefulBouncestype:boolvalue:@IS_NOT_NIGHTLY_BUILD@mirror:always# To be used in automated test environments to enable observer messages.-name:privacy.bounceTrackingProtection.enableTestModetype:RelaxedAtomicBoolvalue:falsemirror:always# Whether the migration ran to import user activation flags into the BTP user# activation store. Set to false to trigger a new migration.-name:privacy.bounceTrackingProtection.hasMigratedUserActivationDatatype:boolvalue:falsemirror:always# Maximum number of pending storage updates before flushing to disk.-name:privacy.bounceTrackingProtection.storage.maxPendingUpdatestype:uint32_tvalue:25mirror:always#---------------------------------------------------------------------------# Prefs starting with "prompts."#---------------------------------------------------------------------------# Prompt modal type prefs# See nsIPromptService::MODAL_TYPE fields for possible values.# Insecure form submit warning.-name:prompts.modalType.insecureFormSubmittype:int32_tvalue:2mirror:always# nsHttpChannelAuthProvider#ConfirmAuth anti-phishing prompts.-name:prompts.modalType.confirmAuthtype:int32_tvalue:2mirror: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_accessibletype:boolvalue:falsemirror:always-name:security.bad_cert_domain_error.url_fix_enabledtype:boolvalue:truemirror:always# When a TLS server asks for a client authentication certificate, the platform# will ask the user to select one or opt to not send one. At the same time, the# platform will offer a few options for how long to remember the decision at# hand. The value of this preference determines which of these three options is# selected by default.# 0 selects "do not remember the decision"# 1 selects "remember the decision permanently"# 2 selects "remember the decision for the rest of the session"-name:security.client_auth_certificate_default_remember_settingtype:uint32_tvalue:2mirror:always-name:security.csp.reporting.script-sample.max-lengthtype:int32_tvalue:40mirror:always-name:security.csp.truncate_blocked_uri_for_frame_navigationstype:boolvalue:falsemirror:always# Limit the number of CSP reports that are send in a specific timespan.-name:security.csp.reporting.limit.counttype:uint32_tvalue:100mirror:always# Time span in seconds for reporting limit.-name:security.csp.reporting.limit.timespantype:uint32_tvalue:2mirror:always# Enable/disable CSP reporting (report-uri and report-to)-name:security.csp.reporting.enabledtype:boolvalue:truemirror:always#ifdef DEBUG# Crash on CSP violations on internal pages (i.e. chrome:)-name:security.csp.testing.allow_internal_csp_violationtype:boolvalue:falsemirror:always#endif# 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_navigationstype:boolvalue:truemirror:always# Whether to apply the <meta http="Content-Security-Policy"> to browser.xhtml-name:security.browser_xhtml_csp.enabledtype:boolvalue:truemirror:always# Allow unsafe eval usage with high privileges to. This should# not be activated without a very good reason.# This pref has to be set before starting Firefox!-name:security.allow_unsafe_dangerous_privileged_evil_evaltype:boolvalue:falsemirror:once# 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_loadstype:RelaxedAtomicBoolvalue:truemirror:always# Don't enable this! This is only meant for legacy tests.-name:security.allow_eval_with_system_principaltype:RelaxedAtomicBoolvalue:falsemirror:always# Don't enable this! This is only meant for legacy tests.-name:security.allow_eval_in_parent_processtype:RelaxedAtomicBoolvalue:falsemirror:always# Disallowed by default, ensure not disallowed content is loaded in the parent# process.-name:security.allow_unsafe_parent_loadstype:boolvalue:falsemirror:always# Pref to block mixed scripts (fonts, plugin content, scripts, stylesheets,# iframes, websockets, XHR).-name:security.mixed_content.block_active_contenttype:boolvalue:@IS_ANDROID@mirror:always# Pref for mixed display content blocking (images, audio, video).-name:security.mixed_content.block_display_contenttype:boolvalue:falsemirror:always# Prerequisite pref for mixed display content upgrading (images, audio, video).-name:security.mixed_content.upgrade_display_contenttype:RelaxedAtomicBoolvalue:truemirror:always# Upgrade images when the upgrading is enabled.-name:security.mixed_content.upgrade_display_content.imagetype:RelaxedAtomicBoolvalue:truemirror:always# Upgrade audio when the upgrading is enabled.-name:security.mixed_content.upgrade_display_content.audiotype:RelaxedAtomicBoolvalue:truemirror:always# Upgrade videos when the upgrading is enabled.-name:security.mixed_content.upgrade_display_content.videotype:RelaxedAtomicBoolvalue:truemirror:always# Whether strict file origin policy is in effect. "False" is traditional.-name:security.fileuri.strict_origin_policytype:RelaxedAtomicBoolvalue:truemirror: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.leveltype:int32_tvalue:0mirror:alwaysdo_not_use_directly:true# Consumers should use SandboxSettings to ask.-name:security.sandbox.socket.process.leveltype:int32_tvalue:0mirror:alwaysdo_not_use_directly:true# Consumers should use SandboxSettings to ask.# This controls the strength of the Windows GPU process sandbox. Changes# will require restart.# For information on what the level number means, see# SetSecurityLevelForGPUProcess() in# security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp-name:security.sandbox.gpu.leveltype:int32_t#if defined(XP_WIN)value:1#elsevalue:0#endifmirror:always# Enrollment preferences for the win32k experiment, set and managed by Normandy-name:security.sandbox.content.win32k-experiment.enrollmentStatustype:uint32_tvalue:0mirror:never-name:security.sandbox.content.win32k-experiment.startupEnrollmentStatustype:uint32_tvalue:0mirror:never#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-disabletype:RelaxedAtomicBoolvalue:truemirror:always# Whether win32k is disabled for compatible plugins.-name:security.sandbox.gmp.win32k-disabletype:RelaxedAtomicBoolvalue:truemirror:always# Whether ACG is enabled (dynamic code blocked) for compatible plugins.-name:security.sandbox.gmp.acg.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Whether win32k is disabled for socket processes.# true means win32k system calls are not permitted.-name:security.sandbox.socket.win32k-disabletype:RelaxedAtomicBoolvalue:truemirror:always# Whether CET User Shadow Stack compatible modules only is enabled for the# relevant process type.-name:security.sandbox.content.shadow-stack.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always-name:security.sandbox.rdd.shadow-stack.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:security.sandbox.socket.shadow-stack.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:security.sandbox.gpu.shadow-stack.enabledtype:RelaxedAtomicBoolvalue:truemirror:always-name:security.sandbox.gmp.shadow-stack.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Whether a Low Privilege AppContainer (LPAC) is enabled for the relevant# process type.#if defined(MOZ_WMF_MEDIA_ENGINE)-name:security.sandbox.utility-wmf-cdm.lpac.enabledtype:RelaxedAtomicBoolvalue:truemirror:always#endif# Whether Arbitrary Code Guard is enabled for the RDD process.-name:security.sandbox.rdd.acg.enabledtype:RelaxedAtomicBoolvalue:truemirror:always#ifdef MOZ_WMF# Whether Arbitrary Code Guard is enabled for the utility WMF audio decoder# process.-name:security.sandbox.utility-wmf.acg.enabledtype:RelaxedAtomicBoolvalue:truemirror:always#endif // MOZ_WMF# Whether CIG is applied pre-spawn or later when lowering the sandbox. We# enable pre-spawn CIG only in Nightly for now because it caused a compat# issue (bug 1682304 and 1704373).-name:security.sandbox.cig.prespawn.enabledtype:RelaxedAtomicBoolvalue:@IS_NIGHTLY_BUILD@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.stackTraceDepthtype:RelaxedAtomicUint32value:0mirror:always#endif#if defined(XP_LINUX) && defined(MOZ_SANDBOX)-name:security.sandbox.warn_unprivileged_namespacestype:boolvalue:truemirror:always#endif# Pref to show warning when submitting from secure to insecure.-name:security.warn_submit_secure_to_insecuretype:boolvalue:truemirror:always# Hardware Origin-bound Second Factor Support-name:security.webauth.webauthntype:boolvalue:truemirror:always# WebAuthn CTAP2 support-name:security.webauthn.ctap2type:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true# WebAuthn JSON serialization methods-name:security.webauthn.enable_json_serialization_methodstype:RelaxedAtomicBoolvalue:truemirror:always# WebAuthn conditional mediation-name:security.webauthn.enable_conditional_mediationtype:RelaxedAtomicBoolvalue:truemirror:always# Dispatch WebAuthn requests to virtual authenticators (mutually exclusive# with and webauthn_enable_usbtoken)-name:security.webauth.webauthn_enable_softtokentype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# residentKey support when using Android platform API-name:security.webauthn.webauthn_enable_android_fido2.residentkeytype:RelaxedAtomicBoolvalue:truemirror:always# Dispatch WebAuthn requests to the macOS platform API-name:security.webauthn.enable_macos_passkeystype:RelaxedAtomicBoolvalue:truemirror:always# Dispatch WebAuthn requests to authenticator-rs-name:security.webauth.webauthn_enable_usbtokentype:RelaxedAtomicBoolvalue:@IS_NOT_MOBILE@mirror:alwaysrust:true# Skip direct attestation consent prompts (for tests).-name:security.webauth.webauthn_testing_allow_direct_attestationtype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true# Show the Windows Passkey settings link in about:preferences. This is# set to true if we find that webauthn.dll is sufficiently recent.-name:security.webauthn.show_ms_settings_linktype:RelaxedAtomicBoolvalue:falsemirror:always# Block Worker/SharedWorker scripts with wrong MIME type.-name:security.block_Worker_with_wrong_mimetype:boolvalue:truemirror:always# Block the execution of scripts using a wrong type as defined by the file extension# (OS) mapping when loaded via the file:// protocol.-name:security.block_fileuri_script_with_wrong_mimetype:boolvalue:falsemirror:always# Cancel outgoing requests from privileged about pages:# but only with scheme http(s) and contentpolicytype script-name:security.disallow_privilegedabout_remote_script_loadstype:boolvalue:truemirror:always# Enable preloaded static key pins by default.-name:security.cert_pinning.enforcement_leveltype:RelaxedAtomicUint32value:1mirror:alwaysdo_not_use_directly:true# OCSP fetching behavior:# 0: do not fetch OCSP# 1: fetch OCSP for DV and EV certificates# 2: fetch OCSP only for EV certificates-name:security.OCSP.enabledtype:RelaxedAtomicUint32#ifdef ANDROIDvalue:2#elsevalue:1#endifmirror:always# Whether or not OCSP is required.# true => hard-fail (if an OCSP request times out, stop the connection)# false => soft-fail (if an OCSP request times out, continue the connection)-name:security.OCSP.requiretype:RelaxedAtomicBoolvalue:falsemirror:always# How many milliseconds to wait for an OCSP response before assuming it failed# (when fetching for soft-fail).-name:security.OCSP.timeoutMilliseconds.softtype:RelaxedAtomicUint32#ifdef RELEASE_OR_BETAvalue:2000#elsevalue:1000#endifmirror:always# How many milliseconds to wait for an OCSP response before assuming it failed# (when fetching for hard-fail).-name:security.OCSP.timeoutMilliseconds.hardtype:RelaxedAtomicUint32value:10000mirror:always# Whether or not to enable OCSP must-staple (in other words, TLS-feature with# status request).-name:security.ssl.enable_ocsp_must_stapletype:RelaxedAtomicBoolvalue:truemirror:always# Whether or not to enable OCSP stapling.-name:security.ssl.enable_ocsp_staplingtype:RelaxedAtomicBoolvalue:truemirror:always# This is checked at startup to see if NSS should be initialized without the# user's certificate and key databases.-name:security.nocertdbtype:boolvalue:falsemirror:once# Whether or not to import and trust third party root certificates from the OS.-name:security.enterprise_roots.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# If true, attempt to load the osclientcerts PKCS#11 module at startup on a# background thread. This module allows Firefox to use client certificates# stored in OS certificate storage. Currently only available for Windows and# macOS.-name:security.osclientcerts.autoloadtype:RelaxedAtomicBoolvalue:truemirror:always-name:security.pki.cert_short_lifetime_in_daystype:RelaxedAtomicUint32value:10mirror:always# security.pki.netscape_step_up_policy controls how the platform handles the# id-Netscape-stepUp OID in extended key usage extensions of CA certificates.# 0: id-Netscape-stepUp is always considered equivalent to id-kp-serverAuth# 1: it is considered equivalent when the notBefore is before 23 August 2016# 2: similarly, but for 23 August 2015# 3: it is never considered equivalent-name:security.pki.netscape_step_up_policytype:RelaxedAtomicUint32#ifdef RELEASE_OR_BETAvalue:1#elsevalue:2#endifmirror:always# Configures Certificate Transparency support mode:# 0: Fully disabled.# 1: Only collect telemetry. CT qualification checks are not performed.# 2: Enforce CT.-name:security.pki.certificate_transparency.modetype:RelaxedAtomicUint32#if defined(ANDROID) && !defined(EARLY_BETA_OR_EARLIER)value:0#elsevalue:2#endifmirror:always# A comma-separated list of host names to not enforce certificate transparency# for. Entries of the form 'example.com' apply to the host 'example.com' and# all subdomains (e.g. 'sub.example.com', 'sub.www.example.com', etc.).# Entries of the form '.example.com' only apply to the host 'example.com'.# Entries may also be IP addresses.-name:security.pki.certificate_transparency.disable_for_hoststype:Stringvalue:""mirror:never# A comma-separated list of base64-encoded sha256 hashes of subject public key# infos to not enforce certificate transparency for. If a verified certificate# chain contains a certificate with a SPKI hash in this list, certificate# transparency will not be enforced for that connection.-name:security.pki.certificate_transparency.disable_for_spki_hashestype:Stringvalue:""mirror:never# 0: Disable CRLite entirely.# 1: Enable CRLite but only to collect telemetry.# 2: Enable CRLite and enforce its results. Firefox will not fetch OCSP for DV# certificates that chain to the Mozilla root store unless# security.OCSP.require is true. Firefox will, however, fetch OCSP for EV# certificates that chain to the Mozilla root store (unless# security.OCSP.enable is 0).# 3: Enable CRLite but only enforce "Not Revoked" results. Firefox will fetch# OCSP for certificates that are not covered by CRLite. Firefox will also# fetch OCSP to confirm CRLite "Revoked" responses.-name:security.pki.crlite_modetype:RelaxedAtomicUint32value:2mirror:always# The CRLite filter channel to which the user is subscribed.# - "default" => clubcards that contain all revocations# - "compat" => clubcards that contain priority revocations-name:security.pki.crlite_channeltype:Stringvalue:"default"mirror:never# The number of SCTs that must be "covered" by a CRLite filter before# we will enforce a result from that filter.-name:security.pki.crlite_timestamps_for_coveragetype:RelaxedAtomicUint32value:1mirror:alwaysrust:true-name:security.pki.use_modern_crypto_with_pkcs12type:RelaxedAtomicBoolvalue:truemirror:always# The number of entries in the certificate signature cache.# A higher number increases memory usage, but should increase the cache hit rate.# Each entry is approximately 64 bytes, and the maximum number of entries is 65535.-name:security.pki.cert_signature_cache_sizetype:RelaxedAtomicUint32value:128mirror:always# The number of entries in the SCT signature cache.# A higher number increases memory usage, but should increase the cache hit rate.# Each entry is approximately 64 bytes, and the maximum number of entries is 65535.# There will be 2-3 SCTs per certificate, so this probably needs to be 2-3x# security.pki.cert_signature_cache_size to achieve similar hit rates.-name:security.pki.sct_signature_cache_sizetype:RelaxedAtomicUint32value:256mirror:always# The number of entries in the certificate trust cache.# A higher number increases memory usage, but should increase the cache hit rate.# Each entry is approximately 65 bytes, and the maximum number of entries is 65535.-name:security.pki.cert_trust_cache_sizetype:RelaxedAtomicUint32value:128mirror:always-name:security.tls.version.mintype:RelaxedAtomicUint32value:3mirror:always-name:security.tls.version.maxtype:RelaxedAtomicUint32value:4mirror:always-name:security.tls.version.enable-deprecatedtype:RelaxedAtomicBoolvalue:falsemirror:always-name:security.tls.version.fallback-limittype:RelaxedAtomicUint32value:4mirror:always# Turn off post-handshake authentication for TLS 1.3 by default,# until the incompatibility with HTTP/2 is resolved:# https://tools.ietf.org/html/draft-davidben-http2-tls13-00-name:security.tls.enable_post_handshake_authtype:RelaxedAtomicBoolvalue:falsemirror:always# Probability of GREASEing a TLS connection with ECH (0-100)# 0 means never GREASE, 100 means always GREASE-name:security.tls.ech.grease_probabilitytype:RelaxedAtomicUint32value:100mirror:always# Whether to apply ECH GREASE settings to HTTP3/QUIC connections-name:security.tls.ech.grease_http3type:RelaxedAtomicBoolvalue:truemirror:always# Whether to retry connections without ECH Grease-name:security.tls.ech.disable_grease_on_fallbacktype:RelaxedAtomicBoolvalue:falsemirror:always# ECH GREASE Padding target (1-255)-name:security.tls.ech.grease_sizetype:RelaxedAtomicUint32value:100mirror:always# Whether to apply GREASE settings to HTTP3/QUIC connections-name:security.tls.grease_http3_enabletype:RelaxedAtomicBoolvalue:falsemirror:alwaysrust:true-name:security.tls.hello_downgrade_checktype:RelaxedAtomicBoolvalue:truemirror:always-name:security.tls.enable_delegated_credentialstype:RelaxedAtomicBoolvalue:truemirror:always-name:security.tls.enable_0rtt_datatype:RelaxedAtomicBoolvalue:truemirror:always-name:security.tls.enable_kybertype:RelaxedAtomicBool#ifdef ANDROIDvalue:@IS_NIGHTLY_BUILD@#elsevalue:true#endifmirror:alwaysrust:true-name:security.tls.client_hello.send_p256_keysharetype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true-name:security.tls.enable_certificate_compression_zlibtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true-name:security.tls.enable_certificate_compression_brotlitype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true-name:security.tls.enable_certificate_compression_zstdtype:RelaxedAtomicBoolvalue:truemirror:alwaysrust:true-name:security.tls.enable_certificate_compression_abridgedtype:RelaxedAtomicBoolvalue:falsemirror:always-name:security.ssl.treat_unsafe_negotiation_as_brokentype:RelaxedAtomicBoolvalue:falsemirror:always-name:security.ssl.require_safe_negotiationtype:RelaxedAtomicBoolvalue:falsemirror:always-name:security.ssl.enable_false_starttype:RelaxedAtomicBoolvalue:truemirror:always-name:security.ssl.enable_alpntype:RelaxedAtomicBoolvalue:truemirror:always-name:security.ssl.disable_session_identifierstype:RelaxedAtomicBoolvalue:falsemirror:always-name:security.ssl3.ecdhe_rsa_aes_128_gcm_sha256type:RelaxedAtomicBoolvalue:truemirror:always-name:security.ssl3.ecdhe_ecdsa_aes_128_gcm_sha256type:RelaxedAtomicBoolvalue:truemirror:always-name:security.ssl3.ecdhe_ecdsa_chacha20_poly1305_sha256type:RelaxedAtomicBoolvalue:truemirror:always-name:security.ssl3.ecdhe_rsa_chacha20_poly1305_sha256type:RelaxedAtomicBoolvalue:truemirror:always-name:security.ssl3.ecdhe_ecdsa_aes_256_gcm_sha384type:RelaxedAtomicBoolvalue:truemirror:always-name:security.ssl3.ecdhe_rsa_aes_256_gcm_sha384type:RelaxedAtomicBoolvalue:truemirror:always-name:security.ssl3.ecdhe_rsa_aes_128_shatype:RelaxedAtomicBoolvalue:truemirror:always-name:security.ssl3.ecdhe_ecdsa_aes_128_shatype:RelaxedAtomicBoolvalue:@IS_NOT_EARLY_BETA_OR_EARLIER@mirror:always-name:security.ssl3.ecdhe_rsa_aes_256_shatype:RelaxedAtomicBoolvalue:truemirror:always-name:security.ssl3.ecdhe_ecdsa_aes_256_shatype:RelaxedAtomicBoolvalue:@IS_NOT_EARLY_BETA_OR_EARLIER@mirror:always-name:security.ssl3.dhe_rsa_aes_128_shatype:RelaxedAtomicBoolvalue:falsemirror:always-name:security.ssl3.dhe_rsa_aes_256_shatype:RelaxedAtomicBoolvalue:falsemirror:always-name:security.ssl3.rsa_aes_128_shatype:RelaxedAtomicBoolvalue:truemirror:always-name:security.ssl3.rsa_aes_256_shatype:RelaxedAtomicBoolvalue:truemirror:always-name:security.ssl3.rsa_aes_128_gcm_sha256type:RelaxedAtomicBoolvalue:truemirror:always-name:security.ssl3.rsa_aes_256_gcm_sha384type:RelaxedAtomicBoolvalue:truemirror:always-name:security.ssl3.deprecated.rsa_des_ede3_shatype:RelaxedAtomicBoolvalue:truemirror:always-name:security.tls13.aes_128_gcm_sha256type:RelaxedAtomicBoolvalue:truemirror:always-name:security.tls13.chacha20_poly1305_sha256type:RelaxedAtomicBoolvalue:truemirror:always-name:security.tls13.aes_256_gcm_sha384type:RelaxedAtomicBoolvalue:truemirror:always-name:security.integrity_policy.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always-name:security.integrity_policy.stylesheet.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Which mechanism the secret decoder ring should use for encryption. Decryption# can always happen with all mechanisms.# 0 - DES3_CBC# 1 - AES_CBC-name:security.sdr.mechanismtype:RelaxedAtomicUint32value:0mirror:always#---------------------------------------------------------------------------# Prefs starting with "signon."#----------------------------------------------------------------------------name:signon.usernameOnlyForm.enabledtype:boolvalue:truemirror:always#---------------------------------------------------------------------------# Prefs starting with "slider."#---------------------------------------------------------------------------# Scrollbar snapping region.# - 0: off# - 1 and higher: slider thickness multiple-name:slider.snapMultipliertype:int32_t#ifdef XP_WINvalue:6#elsevalue:0#endifmirror:always#---------------------------------------------------------------------------# 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.enabledtype:RelaxedAtomicBoolvalue:@IS_NOT_MOBILE@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.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# This pref controls whether the `prefers-color-scheme` value of SVG images# reacts to the embedder `color-scheme` in content.-name:svg.embedder-prefers-color-scheme.content.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Enables the 'context-fill' and 'context-stroke' keywords for particular# domains. We expect this list to be Mozilla-controlled properties, since the# 'context-*' keywords are not part of any spec. We expect to remove this# preference and the 'context-` keyword support entirely in the# not-too-distant future when a standardized alternative ships. This preference# is _not_ for allowing web content to use these keywords. For performance# reasons, the list of domains in this preference should remain short in# length.-name:svg.context-properties.content.allowed-domainstype:Stringvalue:""mirror:never# 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.enabledtype:boolvalue:@IS_NIGHTLY_BUILD@mirror:always# Whether we use Moz2D Path::GetStrokedBounds to get the stroke bounds.-name:svg.Moz2D.strokeBounds.enabledtype:boolvalue:@IS_NIGHTLY_BUILD@mirror:always# Whether SVGGraphicsElement.nearestViewportElement and SVGGraphicsElement.farthestViewportElement are enabled.-name:svg.nearestAndFarthestViewportElement.enabledtype:boolvalue:falsemirror:always# Whether SVGAElement.text is enabled.-name:svg.SVGAElement.text.enabledtype:boolvalue:falsemirror:always# Whether SVGImageElement loading is forced to be sync.-name:svg.image-element.force-sync-loadtype:boolvalue:truemirror:always# Tweak which elements are allowed in <svg:use> subtrees, and in which# circumstances. See RemoveForbiddenNodes in SVGUseElement.cpp for the spec# text.## - 0: Don't restrict ever.# - 1: Restrict only cross-document.# - 2/other: restrict always.## We allow the behavior to be configurable via this pref. Our chosen default# value forbids non-graphical content in <svg:use> clones of cross-document# elements. This is a compromise between our more-permissive pre-existing# behavior (which SVG 2 seems to call for, and maps to pref value 0) and the# behavior of other UAs (which SVG 1.1 seems to call for, and maps to pref# value 2).-name:svg.use-element.graphics-element-restrictionstype:int32_tvalue:1mirror:always# Whether to restrict <svg:use> element recursion levels.## - 0: Don't restrict ever.# - 1: Restrict everywhere# - 2/other: Restrict only in the parent process.#-name:svg.use-element.recursive-clone-limit.enabledtype:int32_tvalue:2mirror:always# What is the recursion limit for svg use element cloning if enabled.-name:svg.use-element.recursive-clone-limittype:uint32_tvalue:8mirror:always# Whether <svg:use> with a data: URL as href is allowed-name:svg.use-element.data-url-href.allowedtype:boolvalue:falsemirror:always#---------------------------------------------------------------------------# Prefs starting with "telemetry."#----------------------------------------------------------------------------name:telemetry.number_of_site_origin.min_intervaltype:uint32_tvalue:300000mirror:always-name:telemetry.fog.test.localhost_porttype:RelaxedAtomicInt32value:0mirror:alwaysrust:true-name:telemetry.fog.test.activity_limittype:RelaxedAtomicInt32value:120mirror:alwaysrust:true-name:telemetry.fog.test.inactivity_limittype:RelaxedAtomicInt32value:1200mirror:alwaysrust:true-name:telemetry.fog.artifact_buildtype:RelaxedAtomicBoolvalue:falsemirror:always-name:telemetry.fog.init_on_shutdowntype:RelaxedAtomicBoolvalue:truemirror:always#---------------------------------------------------------------------------# Prefs starting with "test."#---------------------------------------------------------------------------# A mechanism to make the current time seem later than it is for specific# operations. Currently used to test expiration of the HSTS preload list.-name:test.currentTimeOffsetSecondstype:RelaxedAtomicUint32value:0mirror:always-name:test.events.async.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Enable assertions in IMEContentObserver::FlatTextCache on debug builds.# If this pref is enabled, DOM mutation becomes much slower.-name:test.ime_content_observer.assert_valid_cachetype:boolvalue:falsemirror:always-name:test.mousescrolltype:RelaxedAtomicBoolvalue:falsemirror:always#---------------------------------------------------------------------------# Prefs starting with "thread."#---------------------------------------------------------------------------# If the service is available, set threads to low-power mode when in the background.-name:threads.use_low_power.enabledtype:RelaxedAtomicBool#ifdef XP_MACOSXvalue:true#elsevalue:@IS_NIGHTLY_BUILD@#endifmirror:always# If the process priority is set to background, put the main thread in the background.# Currently off by default.-name:threads.lower_mainthread_priority_in_background.enabledtype:bool#ifdef XP_MACOSXvalue:true#elsevalue:@IS_NIGHTLY_BUILD@#endifmirror: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_notificationstype:RelaxedAtomicBool#ifdef XP_MACOSXvalue:true#elsevalue:false#endifmirror:always# Amount of time by which it is always acceptable to delay the firing of a timer.# Any timer may be delayed by up to this amount in order to enable timers to be# bundled together for efficiency.-name:timer.minimum_firing_delay_tolerance_mstype:AtomicFloatvalue:1.0mirror:always# Maximum amount of time by which it is ever acceptable to delay the firing of a timer.# Setting this to zero will effectively disable timer coalescing.-name:timer.maximum_firing_delay_tolerance_mstype:AtomicFloatvalue:10000.0mirror:always#ifdef XP_WIN# Controls whether or not TimerThread will automatically increase the Windows timer# resolution when appropriate conditions are met.-name:timer.auto_increase_timer_resolutiontype:RelaxedAtomicBool#ifdef NIGHTLY_BUILDvalue:true#elsevalue:false#endifmirror:always#endif#---------------------------------------------------------------------------# Prefs starting with "toolkit."#---------------------------------------------------------------------------# Makes removeDirectory background task wait for the given milliseconds before removal.-name:toolkit.background_tasks.remove_directory.testing.sleep_mstype:RelaxedAtomicUint32value:0mirror:always# Indicates whether we are testng crash annotation validation. In DEBUG builds,# invalid crash annotations cause an assertion failure, which would prevent us# from checking the non-DEBUG behavior.#ifdef DEBUG-name:toolkit.crash_annotation.testing_validationtype:boolvalue:falsemirror:always#endif# Returns true if BHR is disabled.-name:toolkit.content-background-hang-monitor.disabledtype:boolvalue:falsemirror:always-name:toolkit.scrollbox.smoothScrolltype:RelaxedAtomicBoolvalue:truemirror:always-name:toolkit.scrollbox.horizontalScrollDistancetype:RelaxedAtomicInt32value:5mirror:always-name:toolkit.scrollbox.verticalScrollDistancetype:RelaxedAtomicInt32value:3mirror:always# The maximum overlap between pages when scrolling with# page-up/page-down/spacebar, as a percentage of scrollport size.-name:toolkit.scrollbox.pagescroll.maxOverlapPercenttype:RelaxedAtomicInt32value:10mirror:always# The maximum overlap between pages when scrolling with# page-up/page-down/spacebar, in lines.-name:toolkit.scrollbox.pagescroll.maxOverlapLinestype:RelaxedAtomicInt32value:2mirror: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.lateWriteChecksStagetype:int32_t#ifdef MOZ_CODE_COVERAGEvalue:0#elsevalue:2#endifmirror: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.fastShutdownStagetype: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)value:1#elsevalue:0#endifmirror: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.ipcBatchTimeouttype:uint32_tvalue:2000mirror:always-name:toolkit.telemetry.testing.overrideProductsChecktype:RelaxedAtomicBoolvalue:falsemirror:always#---------------------------------------------------------------------------# Prefs starting with "ui."#----------------------------------------------------------------------------name:ui.key.generalAccessKeytype:int32_tvalue:-1mirror:always# Use 17 for Ctrl, 18 for Alt, 91 or 224 for Meta, 0 for none.-name:ui.key.accelKeytype:uint32_t#ifdef XP_MACOSXvalue:224#elsevalue:17#endifmirror:always# See above for the key codes to use.-name:ui.key.menuAccessKeytype:uint32_t#ifdef XP_MACOSXvalue:0#elsevalue:18#endifmirror:always# Only used if generalAccessKey is -1.-name:ui.key.chromeAccesstype:int32_t#ifdef XP_MACOSX# 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 3 = ctrl+shift, 8 = Metavalue:2#else# 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 5 = Alt+Shift, 8 = Winvalue:4#endifmirror:always# Only used if generalAccessKey is -1.-name:ui.key.contentAccesstype:int32_t#ifdef XP_MACOSX# 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 3 = ctrl+shift, 8 = Metavalue:6#else# 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 5 = Alt+Shift, 8 = Winvalue:5#endifmirror:always#ifdef XP_WIN-name:ui.key.layout.load_when_first_neededtype:boolvalue:@IS_EARLY_BETA_OR_EARLIER@mirror:always#endif# Does the access key by itself focus the menu bar?-name:ui.key.menuAccessKeyFocusestype: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#elsevalue:false#endifmirror:always# Whether native key bindings in the environment or builtin shortcut key# definitions in Gecko are used first in <input> and <textarea>-name:ui.key.textcontrol.prefer_native_key_bindings_over_builtin_shortcut_key_definitionstype:boolvalue:truemirror:always#ifdef MOZ_WIDGET_GTK# Only GtkTextView (native multiline text viewer/editor) supports "select-all"# signal so that we cannot know "select-all" key bindings only with GtkEntry.# When this pref is set to true, if a key combination does not cause any# signals in GtkEntry, try to check the key combination is mapped to# "select-all" in GtkTextView or not. If it's mapped to other commands, they# are just ignored.-name:ui.key.use_select_all_in_single_line_editortype:boolvalue:truemirror:always#endif# Duration of timeout of incremental search in menus (ms). 0 means infinite.-name:ui.menu.incremental_search.timeouttype:uint32_tvalue:1000mirror:always# If true, popups are attached to their native parent window (and move with it)# and can't overlap the OS chrome. Otherwise they are topmost.# NOTE(emilio): Comments below might not be accurate anymore.-name:ui.panel.default_level_parenttype:RelaxedAtomicBool#if defined(XP_WIN) || defined(XP_MACOSX)# See bug 448927, on topmost panel, some IMEs are not usable on Windows.# See bug 404131, topmost <panel> element wins to Dashboard on MacOSX.value:true#else# Setting default_level_parent to true makes the default level for popup# windows "top" instead of "parent". On GTK2 platform, this is implemented# with override-redirect windows which is the normal way to implement# temporary popup windows. Setting this to false would make the default# level "parent" which is implemented with managed windows. A problem with# using managed windows is that metacity sometimes deactivates the parent# window when the managed popup is shown, see bug 526941.## TODO(emilio): Re-evaluate this default, the comment above is no longer# true since bug 552982 (where we started looking at mNoAutohide rather than# popup level to make the override-redirect vs. managed window distinction).## The Android default was copied from GTK in bug 568700.value:false#endifmirror:always# If true, all popups won't hide automatically on blur-name:ui.popup.disable_autohidetype:RelaxedAtomicBoolvalue:falsemirror: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_scrolltype:RelaxedAtomicBoolvalue:@IS_ANDROID@mirror:always# Delay in milliseconds for tooltips-name:ui.tooltip.delay_mstype:uint32_tvalue:500mirror: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_mstype:int32_tvalue:100mirror:always# If the user has clicked an element, how long do we keep the :active state# before it is cleared.-name:ui.touch_activation.duration_mstype:int32_tvalue:50mirror:always# Prevent system colors from being exposed to CSS or canvas.-name:ui.use_standins_for_native_colorstype:RelaxedAtomicBoolvalue:falsemirror: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_mouseuptype:boolvalue:falsemirror:always# Whether click-hold context menus are enabled.-name:ui.click_hold_context_menustype:RelaxedAtomicBoolvalue:falsemirror:always# How long to wait for a drag gesture before displaying click-hold context menu,# in milliseconds.-name:ui.click_hold_context_menus.delaytype:RelaxedAtomicInt32value:500mirror: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.enabledtype:boolvalue:@IS_ANDROID@mirror:always-name:ui.touch.radius.topmmtype:uint32_t#ifdef ANDROIDvalue:2#elsevalue:12#endifmirror:always-name:ui.touch.radius.rightmmtype:uint32_t#ifdef ANDROIDvalue:3#elsevalue:8#endifmirror:always-name:ui.touch.radius.bottommmtype:uint32_t#ifdef ANDROIDvalue:2#elsevalue:4#endifmirror:always-name:ui.touch.radius.leftmmtype:uint32_t#ifdef ANDROIDvalue:3#elsevalue:8#endifmirror:always# If this pref and ui.touch.radious.enabled are both true, clickable content is# also treated as touchable content if and only if a sigle touch.-name:ui.touch.radius.single_touch.treat_clickable_as_touchabletype:boolvalue:truemirror:always-name:ui.touch.radius.visitedWeighttype:uint32_tvalue:120mirror:always-name:ui.mouse.radius.enabledtype:boolvalue:@IS_ANDROID@mirror:always-name:ui.mouse.radius.topmmtype:uint32_t#ifdef ANDROIDvalue:2#elsevalue:12#endifmirror:always-name:ui.mouse.radius.rightmmtype:uint32_t#ifdef ANDROIDvalue:3#elsevalue:8#endifmirror:always-name:ui.mouse.radius.bottommmtype:uint32_t#ifdef ANDROIDvalue:2#elsevalue:4#endifmirror:always-name:ui.mouse.radius.leftmmtype:uint32_t#ifdef ANDROIDvalue:3#elsevalue:8#endifmirror:always-name:ui.mouse.radius.visitedWeighttype:uint32_tvalue:120mirror:always-name:ui.mouse.radius.repositiontype:boolvalue:@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.touchOnlytype:boolvalue:truemirror:always# When true, selection is not collapsed at the right click point if there is a# non-collapsed selection.-name:ui.mouse.right_click.collapse_selection.stop_if_non_collapsed_selectiontype:boolvalue:truemirror:always# When true, selection is not collapsed at the right click point if the clicked# node is not editable.-name:ui.mouse.right_click.collapse_selection.stop_if_non_editable_nodetype:boolvalue:falsemirror:always# When true, the caret is not moved to the right click point in focused editable# content.-name:ui.mouse.right_click.move_caret.stop_if_in_focused_editable_nodetype:boolvalue:falsemirror:always#---------------------------------------------------------------------------# Prefs starting with "urlclassifier."#---------------------------------------------------------------------------# Update server response timeout for Safe Browsing.-name:urlclassifier.update.response_timeout_mstype:uint32_tvalue:30000mirror:always# Download update timeout for Safe Browsing.-name:urlclassifier.update.timeout_mstype:uint32_tvalue:90000mirror:always# Whether to delay the CRC32 check of prefix files until the update.-name:urlclassifier.delay_prefixes_crc32_checktype:RelaxedAtomicBoolvalue:falsemirror:always#---------------------------------------------------------------------------# Prefs starting with "view_source."#----------------------------------------------------------------------------name:view_source.editor.externaltype:boolvalue:falsemirror:always-name:view_source.wrap_long_linestype:boolvalue:@IS_ANDROID@mirror:always-name:view_source.syntax_highlighttype:boolvalue:truemirror:always-name:view_source.tab_sizetype:int32_tvalue:4mirror:always#---------------------------------------------------------------------------# Prefs starting with "webgl." (for pref access from Worker threads)#----------------------------------------------------------------------------name:webgl.1.allow-core-profilestype:RelaxedAtomicBool#ifdef XP_MACOSXvalue:true#elsevalue:false#endifmirror:always-name:webgl.1.request_es2type:RelaxedAtomicBool#ifdef XP_WINvalue:false#elsevalue:true#endifmirror:always-name:webgl.angle.force-d3d11type:RelaxedAtomicBoolvalue:falsemirror:always-name:webgl.angle.try-d3d11type:RelaxedAtomicBool#ifdef XP_WINvalue:true#elsevalue:false#endifmirror:always-name:webgl.angle.force-warptype:RelaxedAtomicBoolvalue:falsemirror:always-name:webgl.auto-flushtype:RelaxedAtomicBoolvalue:truemirror:always-name:webgl.auto-flush.gltype:RelaxedAtomicBoolvalue:falsemirror:always-name:webgl.can-lose-context-in-foregroundtype:RelaxedAtomicBoolvalue:truemirror:always-name:webgl.cgl.multithreadedtype:RelaxedAtomicBoolvalue:truemirror:always-name:webgl.drawing_buffer_color_spacetype:RelaxedAtomicBoolvalue:truemirror:always-name:webgl.debug.incomplete-tex-colortype:RelaxedAtomicUint32value:0mirror:always-name:webgl.default-antialiastype:RelaxedAtomicBoolvalue:@IS_NOT_ANDROID@mirror:always-name:webgl.default-no-alphatype:RelaxedAtomicBoolvalue:falsemirror:always-name:webgl.disable-angletype:RelaxedAtomicBoolvalue:falsemirror:always-name:webgl.disable-wgltype:RelaxedAtomicBoolvalue:falsemirror:always-name:webgl.porting.strict_readpixels_formatstype:RelaxedAtomicBoolvalue:falsemirror:always-name:webgl.porting.strict_readpixels_formats.non_estype:RelaxedAtomicBoolvalue:falsemirror:always-name:webgl.dxgl.enabledtype:RelaxedAtomicBool#ifdef XP_WINvalue:true#elsevalue:false#endifmirror:always-name:webgl.dxgl.needs-finishtype:RelaxedAtomicBoolvalue:falsemirror:always-name:webgl.disable-fail-if-major-performance-caveattype:RelaxedAtomicBoolvalue:truemirror:always-name:webgl.disable-DOM-blit-uploadstype:RelaxedAtomicBool#if defined(MOZ_AARCH64) && defined(XP_MACOSX)value:true#elsevalue:false#endifmirror:always-name:webgl.disabledtype:RelaxedAtomicBoolvalue:falsemirror:always-name:webgl.enable-debug-renderer-infotype:RelaxedAtomicBoolvalue:truemirror:always-name:webgl.enable-draft-extensionstype:RelaxedAtomicBoolvalue:falsemirror:always-name:webgl.enable-privileged-extensionstype:RelaxedAtomicBoolvalue:falsemirror:always-name:webgl.enable-renderer-querytype:RelaxedAtomicBoolvalue:truemirror:always-name:webgl.enable-egl-imagetype:RelaxedAtomicBoolvalue:truemirror:always-name:webgl.enable-surface-texturetype:RelaxedAtomicBoolvalue:truemirror:always-name:webgl.enable-webgl2type:RelaxedAtomicBoolvalue:truemirror:always-name:webgl.fake-verts.maxtype:RelaxedAtomicUint32value:10*1000*1000# 10M as vec4 is count*4*4 = 160MBmirror:always# Only works on Mac for now.-name:webgl.forbid-hardwaretype:RelaxedAtomicBoolvalue:falsemirror:always# Only works on Mac for now.-name:webgl.forbid-softwaretype:RelaxedAtomicBoolvalue:true# It's generally better to encourage fallback to e.g. canvas2d.mirror:always-name:webgl.force-enabledtype:RelaxedAtomicBoolvalue:falsemirror:always-name:webgl.force-index-validationtype:RelaxedAtomicInt32value:0mirror:always-name:webgl.gl_khr_no_errortype:RelaxedAtomicBool#ifdef XP_WINvalue:false#elif defined(MOZ_WIDGET_GTK)# Bug 1862039 - All versions of Mesa as of Nov 2023 have issues with# GL_CONTEXT_FLAG_NO_ERROR_BIT. We should aspire to reenable it at# some point when the bugs are fixed.# See also https://gitlab.freedesktop.org/mesa/mesa/-/issues/10062value:false#elsevalue:true#endifmirror:always-name:webgl.glsl.max_var_size_in_kibytestype:RelaxedAtomicInt32value:-1# -1 => default for platform, 0 => no limit, >0 => max valid sizemirror:always-name:webgl.glsl.max_private_var_size_in_bytestype:RelaxedAtomicInt32value:-1# -1 => default for platform, 0 => no limit, >0 => max valid sizemirror:always-name:webgl.lose-context-on-memory-pressuretype:RelaxedAtomicBoolvalue:falsemirror:always-name:webgl.max-contextstype:RelaxedAtomicUint32value:1000mirror:always-name:webgl.max-contexts-per-principaltype:RelaxedAtomicUint32value:300mirror:always-name:webgl.max-size-per-texture-mibtype:RelaxedAtomicUint32value:1024mirror:always-name:webgl.max-vert-ids-per-drawtype:RelaxedAtomicUint32value:30*1000*1000mirror:always-name:webgl.max-warnings-per-contexttype:RelaxedAtomicUint32value:32mirror:always-name:webgl.min_capability_modetype:RelaxedAtomicBoolvalue:falsemirror:always-name:webgl.msaa-forcetype:RelaxedAtomicBoolvalue:falsemirror:always-name:webgl.msaa-samplestype:RelaxedAtomicUint32value:4mirror:always-name:webgl.out-of-processtype:RelaxedAtomicBoolvalue:truemirror:always-name:webgl.out-of-process.workertype:RelaxedAtomicBoolvalue:truemirror:always-name:webgl.out-of-process.forcetype:RelaxedAtomicBoolvalue:falsemirror:always-name:webgl.out-of-process.shmem-sizetype:RelaxedAtomicUint32value:100000# 100KBmirror:always-name:webgl.out-of-process.async-presenttype:RelaxedAtomicBoolvalue:truemirror:always# Forces async present to wait for a sync, even while using remote textures.-name:webgl.out-of-process.async-present.force-synctype:RelaxedAtomicBoolvalue:falsemirror:always#if defined(MOZ_WIDGET_ANDROID)-name:webgl.out-of-process.enable-ahardwarebuffertype:boolvalue:falsemirror:once#endif# Override the blocklist to assume that GL is threadsafe.-name:webgl.threadsafe-gl.force-enabledtype:boolvalue:falsemirror:once# Override the blocklist to assume that GL is not threadsafe.-name:webgl.threadsafe-gl.force-disabledtype:boolvalue:falsemirror:once-name:webgl.use-canvas-render-threadtype:boolvalue:truemirror:once-name:webgl.override-unmasked-renderertype:DataMutexStringvalue:""mirror:always-name:webgl.override-unmasked-vendortype:DataMutexStringvalue:""mirror:always-name:webgl.power-preference-overridetype:RelaxedAtomicInt32value:0mirror:always-name:webgl.prefer-16bpptype:RelaxedAtomicBoolvalue:falsemirror:always-name:webgl.sanitize-unmasked-renderertype:RelaxedAtomicBoolvalue:truemirror:always-name:webgl.allow-immediate-queriestype:RelaxedAtomicBoolvalue:falsemirror:always-name:webgl.allow-fb-invalidationtype:RelaxedAtomicBoolvalue:falsemirror:always-name:webgl.perf.max-warningstype:RelaxedAtomicInt32value:0mirror:always-name:webgl.perf.max-acceptable-fb-status-invalstype:RelaxedAtomicInt32value:0mirror:always-name:webgl.perf.spew-frame-allocstype:RelaxedAtomicBoolvalue:truemirror:always#---------------------------------------------------------------------------# Prefs starting with "widget."#---------------------------------------------------------------------------# Whether the non-native theme should always use system colors. Useful mostly# for testing forced colors mode.-name:widget.non-native-theme.always-high-contrasttype:RelaxedAtomicBoolvalue:falsemirror:always# The style of scrollbars to use. Here are the current options:## 0: Default platform scrollbar style.# 1: macOS scrollbars# 2: GTK scrollbars# 3: Android scrollbars# 4: Windows 10 scrollbars# 5: Windows 11 scrollbars## Note that switching to non-default scrollbars is experimental and other# scrollbar-related prefs may interfere with the experience. For example,# setting the GTK thumb size may have no effect when using non-GTK scrollbars# on GTK.-name:widget.non-native-theme.scrollbar.styletype:uint32_tvalue:0mirror:always# An override that allows to override the default platform size. The size in CSS# pixels at full zoom of the minimum scrollbar width.-name:widget.non-native-theme.scrollbar.size.overridetype:uint32_tvalue:0mirror:always# Whether we should use themed values for dark scrollbars.-name:widget.non-native-theme.scrollbar.dark-themedtype:RelaxedAtomicBoolvalue:truemirror:always# Whether the active thumb color should always use the themed colors, even if# dark scrollbars are in use.-name:widget.non-native-theme.scrollbar.active-always-themedtype:RelaxedAtomicBoolvalue:truemirror:always# Whether we use the Windows CSS scrollbar sizes, or the scrollbar sizes# defined above.-name:widget.non-native-theme.win.scrollbar.use-system-sizetype:boolvalue:truemirror:always# Whether Windows 11 scrollbars are always drawn with the thinner "overlay"# scrollbar style.-name:widget.non-native-theme.win11.scrollbar.force-overlay-styletype:boolvalue:falsemirror:always# Whether Windows 11 overlay scrollbar tracks are round.-name:widget.non-native-theme.win11.scrollbar.round-tracktype:boolvalue:falsemirror:always# The amount of space that the thumb should fill the scrollbar, from zero to# one.-name:widget.non-native-theme.gtk.scrollbar.thumb-sizetype:floatvalue:0.75mirror:always# The minimum size of the scroll thumb, in the scrollbar direction.-name:widget.non-native-theme.gtk.scrollbar.thumb-cross-sizetype:uint32_tvalue:40mirror:always# Whether the thumb should be rounded for the non-native scrollbars.-name:widget.non-native-theme.gtk.scrollbar.round-thumbtype:boolvalue:truemirror:always# Whether buttons shouldn't be suppressed for non-native scrollbars.-name:widget.non-native-theme.gtk.scrollbar.allow-buttonstype:boolvalue:falsemirror:always# Whether we should use the default accent color or the theme-provided one for# content (e.g. for form controls and CSS system colors).## Turned off on Windows, for now (we always use the default blue-ish# accent-color there). We might want to turn this on there, though it's worth# thinking on what the behavior should be for grey-ish accent colors (which are# a thing on Windows and can cause confusion with things like disabled form# controls). Maybe it's just fine.-name:widget.non-native-theme.use-theme-accenttype:RelaxedAtomicBool#if defined(XP_WIN) && !defined(MOZ_THUNDERBIRD)value:false#elsevalue:true#endifmirror: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-scrollbartype:boolvalue:falsemirror:always-name:widget.disable_file_pickerstype:RelaxedAtomicBoolvalue:falsemirror:always-name:widget.window-transforms.disabledtype:RelaxedAtomicBoolvalue:falsemirror:always#ifdef XP_MACOSX# Whether to shift by the menubar height on fullscreen mode.# 0: never# 1: always# 2: auto (tries to detect when it is needed)-name:widget.macos.shift-by-menubar-on-fullscreentype:RelaxedAtomicUint32value:2mirror:always-name:widget.macos.native-context-menustype:RelaxedAtomicBoolvalue:truemirror:always-name:widget.macos.sidebar-blend-mode.behind-windowtype:RelaxedAtomicBoolvalue:truemirror:always-name:widget.macos.titlebar-blend-mode.behind-windowtype:RelaxedAtomicBoolvalue:falsemirror:always#endif# Whether native GTK global menubar support is enabled.# Disabled because there are some minor bugs and it needs deeper integration# with the front-end.-name:widget.gtk.global-menu.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Whether GTK global menubar support is enabled using wayland's experimental# dbus_annotation protocol:# https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/52# Disabled until it has a final shape and it is available in compositors.-name:widget.gtk.global-menu.wayland.enabledtype:RelaxedAtomicBoolvalue:falsemirror:always# Whether native GTK context menus are enabled.# Disabled because at the very least there's missing custom icon support.-name:widget.gtk.native-context-menustype:RelaxedAtomicBoolvalue:falsemirror:always# Whether we use overlay scrollbars on GTK.-name:widget.gtk.overlay-scrollbars.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Whether we hide the pointer while typing on Linux-name:widget.gtk.hide-pointer-while-typing.enabledtype:RelaxedAtomicBoolvalue:truemirror:always# Whether we honor the scrollbar colors from the gtk theme.-name:widget.gtk.theme-scrollbar-colors.enabledtype:boolvalue:truemirror:always# Whether libadwaita colors are used rather than the default ones.-name:widget.gtk.libadwaita-colors.enabledtype:boolvalue:truemirror:always# Whether to use gtk titlebar actions for middle click instead of Firefox# build in one-name:widget.gtk.titlebar-action-middle-click-enabledtype:boolvalue:falsemirror:always# Whether to ignore middle click events on widget level.-name:widget.gtk.middle-click-enabledtype:boolvalue:truemirror:always# Whether we enable rounded bottom corners on GTK by default.## The implementation is a bit hacky (see details in bug 1850827) so behind a# pref for emergency purposes.-name:widget.gtk.rounded-bottom-corners.enabledtype:boolvalue:falsemirror:alwaysrust:true# Whether selection colors for the non-system theme get passed from the system# GTK theme.-name:widget.gtk.alt-theme.selectiontype:boolvalue:truemirror:always# Whether form control accent colors for the non-system theme get passed from# the system GTK theme.-name:widget.gtk.alt-theme.accenttype:boolvalue:truemirror:always# Whether the scrollbar thumb active color from the non-system theme gets# passed from the system GTK theme.-name:widget.gtk.alt-theme.scrollbar_activetype:boolvalue:truemirror:always# Whether we should try to grab the pointer on popups.# 0: Never# 1: Always# 2: Auto (depending on the system)-name:widget.gtk.grab-pointertype:int32_tvalue:2mirror:always# Whether we should try ignore bogus leave-notify events from the window# manager.# 0: Never# 1: Always# 2: Auto (depending on the system)-name:widget.gtk.ignore-bogus-leave-notifytype:int32_tvalue:2mirror:always# Whether to use gtk legacy cursor API.-name:widget.gtk.legacy-cursors.enabledtype:boolvalue:falsemirror:always# Gtk clipboard timeout-name:widget.gtk.clipboard_timeout_mstype:RelaxedAtomicUint32value:1000mirror:always# Whether to use gtk high contrast themes to disable content styling like on# windows high contrast mode.-name:widget.content.gtk-high-contrast.enabledtype:boolvalue:truemirror:always#ifdef MOZ_WAYLAND-name:widget.wayland.fractional-scale.enabledtype:boolvalue:falsemirror:once# Use opaque region for MozContainer wl_surface-name:widget.wayland.opaque-region.enabledtype:boolvalue:truemirror:once# Use frame callback based vsync-name:widget.wayland.vsync.enabledtype:boolvalue:truemirror:once# Whether experimental PiP support for Wayland is enabled via the xx_pip_v1# protocol.-name:widget.wayland.experimental.pip.enabledtype:boolvalue:truemirror:once# Whether to keep firing vsync at layout.throttled_frame_rate after we've been# occluded.-name:widget.wayland.vsync.keep-firing-at-idletype:boolvalue:falsemirror:always#endif#ifdef MOZ_WIDGET_GTK# Whether to use DMABuf backend.-name:widget.dmabuf.enabledtype:boolvalue:truemirror:once# Whether to override the DMABuf blocklist.-name:widget.dmabuf.force-enabledtype:boolvalue:falsemirror:once#ifdef NIGHTLY_BUILD# Keep those pref hidden on non-nightly builds to avoid people accidentally# turning it on.# Override FEATURE_DMABUF_SURFACE_EXPORT for testing-name:widget.dmabuf-export.force-enabledtype:boolvalue:falsemirror:once# Get DMABuf format feedback from compositor.# For testing only-name:widget.dmabuf-feedback.enabledtype:boolvalue:truemirror:once#endif# Use DMABuf backend for WebGL.-name:widget.dmabuf-webgl.enabledtype:boolvalue:truemirror:once# Use gdk_window_move_to_rect to move Wayland popups when available.-name:widget.wayland.use-move-to-recttype:boolvalue:truemirror:once# The time we should spend on a DBUS call to the FileManager1 interface before# giving up and trying an alternative method.## -1 for the default system timeout, INT_MAX for "infinite time".## This happens right now on the main thread so 1 second should be enough, we# should consider moving it to a background task and just use the default# timeout.-name:widget.gtk.file-manager-show-items-timeout-mstype:int32_tvalue:1000mirror:always# The timeout we should spend on a DBUS call to the Settings proxy before# giving up.## -1 for the default system timeout, INT_MAX for "infinite time".## This runs just once, but during startup, so make sure it doesn't take too# long. Three seconds should be way more than enough, and if we don't get the# reply on time then the only potential issue is that we use a light instead of# dark interface or vice versa.-name:widget.gtk.settings-portal-timeout-mstype:int32_tvalue:3000mirror:always# Whether to use gtk portal for the file picker.# - 0: never# - 1: always# - 2: auto (true for flatpak or GTK_USE_PORTAL=1, false otherwise)-name:widget.use-xdg-desktop-portal.file-pickertype:int32_tvalue:2mirror:always# Whether to use gtk portal for the mime handler.# - 0: never# - 1: always# - 2: auto (for now only true for flatpak, see bug 1516290)-name:widget.use-xdg-desktop-portal.mime-handlertype:int32_tvalue:2mirror:always# Whether to use XDG portal for native messaging.# https://github.com/flatpak/xdg-desktop-portal/issues/655# - 0: never# - 1: always# - 2: auto (true for snap and flatpak or GTK_USE_PORTAL=1, false otherwise)-name:widget.use-xdg-desktop-portal.native-messagingtype:int32_tvalue:0mirror:always# Whether to try to use XDG portal for settings / look-and-feel information.# https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.Settings# - 0: never# - 1: always# - 2: auto-name:widget.use-xdg-desktop-portal.settingstype:int32_tvalue:2mirror:always# Whether to use XDG portal for geolocation.# https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.Location# - 0: never# - 1: always# - 2: auto-name:widget.use-xdg-desktop-portal.locationtype:int32_tvalue:2mirror:always# Whether to use XDG portal for opening to a file.# https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.OpenURI# - 0: never# - 1: always# - 2: auto (true for flatpak or GTK_USE_PORTAL=1, false otherwise)-name:widget.use-xdg-desktop-portal.open-uritype:int32_tvalue:2mirror:always#endif#ifdef XP_WIN# WindowsUIUtils::Share to wait for user action on Windows share dialog# `true` means the promise resolves when user completes or cancels the share# action. This can be unsafe since selecting copy action fires no DataPackage# event as of 21H1.# `false` means the promise resolves when the share data is passed to# DataPackage.# This affects the behavior of `navigator.share()`.-name:widget.windows.share.wait_action.enabledtype:boolvalue:falsemirror:always-name:widget.windows.window_occlusion_tracking.enabledtype:boolvalue:truemirror:always# Whether overlay scrollbars respect the system settings.# Note that these can be overridden by the ui.useOverlayScrollbars pref.-name:widget.windows.overlay-scrollbars.enabledtype:boolvalue:truemirror:always# Whether we allow accessing the UWP system color pallete.-name:widget.windows.uwp-system-colors.enabledtype:boolvalue:truemirror:always# Whether PiP windows have window decorations (borders and shadows).# Off for now while we fix bug 1934760 and related issues.-name:widget.windows.pip-decorations.enabledtype:boolvalue:falsemirror:always# Whether we use the accent color for highlight as some other UWP apps do.## false for now since it can cause some contrast-with-background issues# specially with grey accents, see bug 1776588.-name:widget.windows.uwp-system-colors.highlight-accenttype:boolvalue:falsemirror:always-name:widget.windows.window_occlusion_tracking_display_state.enabledtype:boolvalue:falsemirror:always-name:widget.windows.window_occlusion_tracking_session_lock.enabledtype:boolvalue:truemirror:always# Whether this device is capable of entering tablet mode. (Win11+ only.)## Valid values:# * -1: assume this device is tablet-mode-incapable# * 0: rely on heuristics# * 1: assume this device is tablet-mode-capable-name:widget.windows.tablet_detection_overridetype:RelaxedAtomicInt32value:0mirror:always# Whether to give explorer.exe a delayed nudge to recalculate the fullscreenness# of a window after unminimizing it.-name:widget.windows.fullscreen_remind_taskbartype:RelaxedAtomicBoolvalue:truemirror:always# Mechanism to use to mark fullscreen windows.## This value can be fixed once we settle on a version that works universally.## * 0: Default. Use Gecko-internal heuristics. May vary between versions.# * 1: Use only "NonRudeHWND". Historical default on Win7.# * 2: Use only MarkFullscreenWindow. Historical default for Win10+.# * 3: Use both. (Never a default; not well-tested.)-name:widget.windows.fullscreen_marking_methodtype:RelaxedAtomicUint32value:2mirror:always# Whether to open the Windows file and folder pickers "remotely" (in a utility# process) or "locally" (in the main process).## Valid values:# * 0: auto (possibly release-channel-dependent)# * 1: remotely, falling back to locally# * 2: remotely, no fallback# * 3: remotely, falling back to locally except on crashes# * -1: locally, no fallback-name:widget.windows.utility_process_file_pickertype:RelaxedAtomicInt32value:0mirror:always# Whether to follow `.lnk` (etc.) shortcuts in the Windows file-open dialog.## Valid values:# * 0: never# * 1: always# * 2: auto-name:widget.windows.follow_shortcuts_on_file_opentype:RelaxedAtomicInt32value:1mirror:always# The number of messages of each type to keep for display in# about:windows-messages-name:widget.windows.messages_to_logtype:RelaxedAtomicUint32value:6mirror:always# Whether to flush the Ole clipboard synchronously.# Possible values are:# * 0: never# * 1: always# * 2 (or others): when needed-name:widget.windows.sync-clipboard-flushtype:uint32_tvalue:2mirror:always# Whether to allow dragging and dropping tabs onto another application. This is# disallowed by default because most applications that say they can handle# Firefox tabs are lying (bug 1598915).-name:widget.windows.allow-external-tab-dragtype:boolvalue:falsemirror:always# Whether to apply a hack (adjusting the window height by -1px and back again)# upon first entering fullscreen intended to work around a bug exhibited under# on some Windows 11 machines under some configurations. (See bug 1763981.)## Semantics:# * 0: never# * 1: always# * 2: auto-name:widget.windows.apply-dwm-resize-hacktype:RelaxedAtomicInt32value:2mirror:always# Whether we use the mica backdrop for top level windows. Off by default for# now.-name:widget.windows.micatype:boolvalue:falsemirror:always# Whether we use the mica backdrop for popups when available.# * 0: never# * 1: always# * 2 or others: auto-name:widget.windows.mica.popupstype:RelaxedAtomicInt32value:2mirror:always# What mica backdrop do we use for toplevels. See [1] for the meaning.## * 0 or other values: auto# * 1: MAINWINDOW# * 2: TRANSIENTWINDOW# * 3: TABBEDWINDOW## [1]: https://learn.microsoft.com/en-us/windows/win32/api/dwmapi/ne-dwmapi-dwm_systembackdrop_type#constants-name:widget.windows.mica.toplevel-backdroptype:RelaxedAtomicInt32value:0mirror:always#endif# Whether to disable SwipeTracker (e.g. swipe-to-nav).-name:widget.disable-swipe-trackertype:boolvalue:falsemirror:always# Various metrics to control SwipeTracker.-name:widget.swipe.velocity-twitch-tolerancetype:floatvalue:0.0000001fmirror:always-name:widget.swipe.success-velocity-contributiontype:floatvalue:0.05fmirror:always# When using pixel deltas for pan input, how many pixels do we consider a whole# swipe?## The values for this pref are derived from trial and error in an effort to# match the existing behavior on the respective platforms.-name:widget.swipe.pixel-sizetype:float#if defined(XP_MACOSX)value:550.0f#elsevalue:1100.0f#endifmirror:always# When using page deltas for pan input, how many pages do we consider a whole# swipe navigation?## This is only relevant for GTK which is as of right now the only platform# which supports page-based pan gestures.-name:widget.swipe.page-sizetype:floatvalue:40.0fmirror:always-name:widget.transparent-windowstype:boolvalue:truemirror:once# Whether the clipboard cached are used while getting system clipboard data.-name:widget.clipboard.use-cached-data.enabledtype:bool#if defined(XP_MACOSX)value:true#elsevalue:false#endifmirror:always#ifdef XP_MACOSX# The folllowing widget.macos.automatic.* prefs are whether Gecko turns on# text replacement features.-name:widget.macos.automatic.text_replacementtype:boolvalue:truemirror:always# Whether the smart dash feature is enabled-name:widget.macos.automatic.dash_substitutiontype:boolvalue:falsemirror:always# Whether the smart quote feature is enabled-name:widget.macos.automatic.quote_substitutiontype:boolvalue:falsemirror:always# fetching length when processing text substitution.-name:widget.macos.automatic.text_substitution_fetch_lengthtype:uint32_tvalue:20mirror:always#endif# Whether to render in to a child SurfaceControl rather than directly into the SurfaceView-name:widget.android.use-surfacecontroltype:boolvalue:falsemirror:once#ifdef ANDROID# A threshold value for double click by mouse.-name:widget.double-click.thresholdtype:RelaxedAtomicInt32value:4mirror:always# A timeout value for double click by mouse.-name:widget.double-click.timeouttype:RelaxedAtomicInt32value:500mirror:always# A min time value for double click by mouse.-name:widget.double-click.mintype:RelaxedAtomicInt32value:40mirror:always#endif#---------------------------------------------------------------------------# Prefs starting with "zoom."#----------------------------------------------------------------------------name:zoom.maxPercenttype:uint32_t#ifdef ANDROIDvalue:400#elsevalue:500#endifmirror:always-name:zoom.minPercenttype:uint32_t#ifdef ANDROIDvalue:20#elsevalue:30#endifmirror:always#---------------------------------------------------------------------------# End of prefs#---------------------------------------------------------------------------