1 # This Source Code Form is subject to the terms of the Mozilla Public
2 # License, v. 2.0. If a copy of the MPL was not distributed with this
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 # This file defines static prefs, i.e. those that are defined at startup and
6 # used entirely or mostly from C++ and/or Rust code.
8 # The file is separated into sections, where each section contains a group of
9 # prefs that all share the same first segment of their name -- all the "gfx.*"
10 # prefs are together, all the "network.*" prefs are together, etc. Sections
11 # must be kept in alphabetical order, but prefs within sections need not be.
15 # Any pref defined in one of the files included here should *not* be defined
16 # in a data file such as all.js; that would just be useless duplication.
18 # (Except under unusual circumstances where the value defined here must be
19 # overridden, e.g. for some Thunderbird prefs. In those cases the default
20 # value from the data file will override the static default value defined
23 # Please follow the existing prefs naming convention when considering adding a
24 # new pref, and don't create a new pref group unless it's appropriate and there
25 # are likely to be multiple prefs within that group. (If you do, you'll need to
26 # update the `pref_groups` variable in modules/libpref/moz.build.)
30 # A pref definition looks like this:
32 # - name: <pref-name> # mandatory
33 # type: <cpp-type> # mandatory
34 # value: <default-value> # mandatory
35 # mirror: <never | once | always> # mandatory
36 # do_not_use_directly: <true | false> # optional
37 # include: <header-file> # optional
38 # rust: <true | false> # optional
39 # set_spidermonkey_pref: <false | startup | always> # optional
41 # - `name` is the name of the pref, without double-quotes, as it appears
42 # in about:config. It is used in most libpref API functions (from both C++
45 # - `type` is one of `bool`, `int32_t`, `uint32_t`, `float`, an atomic version
46 # of one of those, `String` or `DataMutexString`. Note that float prefs are
47 # stored internally as strings. The C++ preprocessor doesn't like template
48 # syntax in a macro argument, so use the typedefs defined in
49 # StaticPrefsBase.h; for example, use `RelaxedAtomicBool` instead of
50 # `Atomic<bool, Relaxed>`.
52 # - `value` is the default value. Its type should be appropriate for
53 # <cpp-type>, otherwise the generated code will fail to compile. A complex
54 # C++ numeric expressions like `60 * 60` (which the YAML parser cannot treat
55 # as an integer or float) is treated as a string and passed through without
56 # change, which is useful.
58 # - `mirror` indicates how the pref value is mirrored into a C++ variable.
60 # * `never`: There is no C++ mirror variable. The pref value can only be
61 # accessed via the standard libpref API functions.
63 # * `once`: The pref value is mirrored into a variable at startup; the
64 # mirror variable is left unchanged after that. (The exact point at which
65 # all `once` mirror variables are set is when the first `once` mirror
66 # variable is accessed, via its getter function.) This is mostly useful for
67 # graphics prefs where we often don't want a new pref value to apply until
68 # restart. Otherwise, this update policy is best avoided because its
69 # behaviour can cause confusion and bugs.
71 # * `always`: The mirror variable is always kept in sync with the pref value.
72 # This is the most common choice.
74 # When a mirror variable is present, a getter will be created that can access
75 # it. Using the getter function to read the pref's value has the two
76 # following advantages over the normal API functions.
78 # * A direct variable access is faster than a hash table lookup.
80 # * A mirror variable can be accessed off the main thread. If a pref *is*
81 # accessed off the main thread, it should have an atomic type. Assertions
84 # Note that Rust code must access the mirror variable directly, rather than
85 # via the getter function.
87 # - `do_not_use_directly` indicates if `_DoNotUseDirectly` should be appended to
88 # the name of the getter function. This is simply a naming convention
89 # indicating that there is some other wrapper getter function that should be
90 # used in preference to the normal static pref getter. Defaults to `false` if
91 # not present. Cannot be used with a `never` mirror value, because there is
92 # no getter function in that case.
94 # - `include` names a header file that must be included for the pref value to
95 # compile correctly, e.g. because it refers to a code constant. System
96 # headers should be surrounded with angle brackets, e.g. `<cmath>`.
98 # - `rust` indicates if the mirror variable is used by Rust code. If so, it
99 # will be usable via the `static_prefs::pref!` macro, e.g.
100 # `static_prefs::pref!("layout.css.cross-fade.enabled")`.
102 # - `set_spidermonkey_pref` indicates whether SpiderMonkey boilerplate code
103 # should be generated for this pref. If this is set to 'startup', the
104 # pref on the SpiderMonkey side is only set during process startup. If set to
105 # 'always', the SpiderMonkey pref value is also updated when this pref is
106 # changed at runtime.
107 # This option is only valid for javascript.options.* prefs.
109 # The getter function's base name is the same as the pref's name, but with
110 # '.' or '-' chars converted to '_', to make a valid identifier. For example,
111 # the getter for `foo.bar_baz` is `foo_bar_baz()`. This is ugly but clear,
112 # and you can search for both the pref name and the getter using the regexp
113 # /foo.bar.baz/. Suffixes are added as follows:
115 # - If the `mirror` value is `once`, `_AtStartup` is appended, to indicate the
116 # value was obtained at startup.
118 # - If the `do_not_use_directly` value is true, `_DoNotUseDirectly` is
123 # Note finally that this file is preprocessed by preprocessor.py, not the C++
124 # preprocessor. As a result, the following things may be surprising.
126 # - YAML comments start with a '#', so putting a comment on the same line as a
127 # preprocessor directive is dubious. E.g. avoid lines like `#define X 3 #
128 # three` because the ` # three` will be part of `X`.
130 # - '@' use is required for substitutions to occur. E.g. with `#define FOO 1`,
131 # `FOO` won't be replaced with `1` unless it has '@' chars around it.
133 # - Spaces aren't permitted between the leading '#' and the name of a
134 # directive, e.g. `#ifdef XYZ` works but `# ifdef XYZ` does not.
136 # Please indent all prefs defined within #ifdef/#ifndef conditions. This
137 # improves readability, particular for conditional blocks that exceed a single
138 # screen. But note that the leading '-' in a definition must remain in the
139 # first column for it to be valid YAML.
141 #ifdef RELEASE_OR_BETA
142 #define IS_NOT_RELEASE_OR_BETA false
144 #define IS_NOT_RELEASE_OR_BETA true
148 #define IS_NIGHTLY_BUILD true
149 #define IS_NOT_NIGHTLY_BUILD false
151 #define IS_NIGHTLY_BUILD false
152 #define IS_NOT_NIGHTLY_BUILD true
155 #if defined(NIGHTLY_BUILD) || defined(MOZ_DEV_EDITION)
156 #define IS_NIGHTLY_OR_DEV_EDITION true
158 #define IS_NIGHTLY_OR_DEV_EDITION false
161 #ifdef MOZILLA_OFFICIAL
162 #define IS_NOT_MOZILLA_OFFICIAL false
164 #define IS_NOT_MOZILLA_OFFICIAL true
167 #ifdef EARLY_BETA_OR_EARLIER
168 #define IS_EARLY_BETA_OR_EARLIER true
169 #define IS_NOT_EARLY_BETA_OR_EARLIER false
171 #define IS_EARLY_BETA_OR_EARLIER false
172 #define IS_NOT_EARLY_BETA_OR_EARLIER true
175 #if defined(MOZ_DEV_EDITION) || defined(EARLY_BETA_OR_EARLIER)
176 #define DEV_EDITION_OR_EARLY_BETA_OR_EARLIER true
178 #define DEV_EDITION_OR_EARLY_BETA_OR_EARLIER false
182 #define IS_ANDROID true
183 #define IS_NOT_ANDROID false
185 #define IS_ANDROID false
186 #define IS_NOT_ANDROID true
190 #define IS_XP_WIN true
191 #define IS_NOT_XP_WIN false
193 #define IS_XP_WIN false
194 #define IS_NOT_XP_WIN true
198 #define IS_XP_MACOSX true
199 #define IS_NOT_XP_MACOSX false
201 #define IS_XP_MACOSX false
202 #define IS_NOT_XP_MACOSX true
205 #---------------------------------------------------------------------------
206 # Prefs starting with "accessibility."
207 #---------------------------------------------------------------------------
209 # Tab focus model bit field:
210 # 1 focuses text controls, 2 focuses other form elements, 4 adds links.
211 # Most users will want 1, 3, or 7. On macOS we expose a checkbox to alter
213 - name: accessibility.tabfocus
218 # Only on mac tabfocus is expected to handle UI widgets as well as web content.
219 # FIXME(emilio): This is weird now that we have a lot of HTML in our pages.
220 - name: accessibility.tabfocus_applies_to_xul
222 value: @IS_XP_MACOSX@
225 - name: accessibility.accesskeycausesactivation
230 - name: accessibility.monoaudio.enable
231 type: RelaxedAtomicBool
235 - name: accessibility.browsewithcaret
236 type: RelaxedAtomicBool
240 - name: accessibility.AOM.enabled
245 - name: accessibility.ARIAElementReflection.enabled
247 value: @IS_NIGHTLY_BUILD@
250 # Whether form controls and images should be focusable with mouse, in content
253 # This matches historical macOS / Safari behavior.
257 # * 2: on content documents
258 - name: accessibility.mouse_focuses_formcontrol
267 # Whether to enable support for the UI Automation API on Windows.
268 - name: accessibility.uia.enable
273 # Whether to avoid accessibility activation on Windows shortly after clipboard
276 # Possible values are:
279 # * 2 (or others): when needed
280 - name: accessibility.windows.suppress-after-clipboard-copy
285 # Whether to avoid accessibility activation on Windows shortly after max button
286 # hit-test for the "snap layout" feature.
288 # Possible values are:
291 # * 2 (or others): when needed
292 - name: accessibility.windows.suppress-for-snap-layout
297 #---------------------------------------------------------------------------
298 # Prefs starting with "alerts."
299 #---------------------------------------------------------------------------
301 # Whether to use platform-specific backends for showing desktop notifications.
302 # If no such backend is available, or if the pref is false, then XUL
303 # notifications are used.
304 - name: alerts.useSystemBackend
310 # On Windows, a COM Surrogate notification server receives notification events
311 # and can relaunch the application after it has been closed.
312 - name: alerts.useSystemBackend.windows.notificationserver.enabled
319 #---------------------------------------------------------------------------
320 # Prefs starting with "android."
321 #---------------------------------------------------------------------------
323 # On Android, we want an opaque background to be visible under the page,
324 # so layout should not force a default background.
325 - name: android.widget_paints_background
326 type: RelaxedAtomicBool
330 - name: android.touch_resampling.enabled
331 type: RelaxedAtomicBool
337 #---------------------------------------------------------------------------
338 # Prefs starting with "apz."
339 # The apz prefs are explained in AsyncPanZoomController.cpp
340 #---------------------------------------------------------------------------
342 # amount we zoom in for a double tap gesture if we couldn't find any content
343 # based rect to zoom to
344 - name: apz.doubletapzoom.defaultzoomin
349 - name: apz.scrollbarbuttonrepeat.enabled
350 type: RelaxedAtomicBool
354 # After a user has executed a pan gesture, we may receive momentum phase pan
355 # gestures from the OS. This specifies how long we should wait following the
356 # pan end gesture for possible momentum phase pan gestures before sending the
357 # TransformEnd notification.
358 - name: apz.scrollend-event.content.delay_ms
359 type: RelaxedAtomicInt32
363 - name: apz.wr.activate_all_scroll_frames
364 type: RelaxedAtomicBool
368 - name: apz.wr.activate_all_scroll_frames_when_fission
369 type: RelaxedAtomicBool
373 - name: apz.prefer_jank_minimal_displayports
374 type: RelaxedAtomicBool
378 - name: apz.allow_double_tap_zooming
379 type: RelaxedAtomicBool
383 - name: apz.mac.enable_double_tap_zoom_touchpad_gesture
384 type: RelaxedAtomicBool
388 - name: apz.allow_immediate_handoff
389 type: RelaxedAtomicBool
393 - name: apz.allow_zooming
394 type: RelaxedAtomicBool
408 - name: apz.allow_zooming_out
409 type: RelaxedAtomicBool
413 - name: apz.android.chrome_fling_physics.friction
418 - name: apz.android.chrome_fling_physics.inflexion
423 - name: apz.android.chrome_fling_physics.stop_threshold
428 - name: apz.autoscroll.enabled
429 type: RelaxedAtomicBool
433 - name: apz.axis_lock.breakout_angle
435 value: float(M_PI / 8.0) # 22.5 degrees
439 - name: apz.axis_lock.breakout_threshold
444 - name: apz.axis_lock.direct_pan_angle
446 value: float(M_PI / 3.0) # 60 degrees
450 - name: apz.axis_lock.lock_angle
452 value: float(M_PI / 6.0) # 30 degrees
456 # Whether to lock touch scrolling to one axis at a time. When a new
457 # axis lock mode is added, the APZCAxisLockCompatTester GTest shoud
458 # be updated to include the lock mode value.
459 # 0 = FREE (No locking at all)
460 # 1 = STANDARD (Once locked, remain locked until scrolling ends)
461 # 2 = STICKY (Allow lock to be broken, with hysteresis)
462 # 3 = DOMINANT_AXIS (Only allow movement on one axis at a time, only
463 # applies to touchpad scrolling)
464 - name: apz.axis_lock.mode
465 type: RelaxedAtomicInt32
466 #if defined(XP_MACOSX)
473 - name: apz.content_response_timeout
474 type: RelaxedAtomicInt32
478 - name: apz.danger_zone_x
479 type: RelaxedAtomicInt32
483 - name: apz.danger_zone_y
484 type: RelaxedAtomicInt32
488 - name: apz.disable_for_scroll_linked_effects
489 type: RelaxedAtomicBool
493 - name: apz.displayport_expiry_ms
494 type: RelaxedAtomicUint32
498 - name: apz.drag.enabled
499 type: RelaxedAtomicBool
503 - name: apz.drag.touch.enabled
504 type: RelaxedAtomicBool
508 - name: apz.enlarge_displayport_when_clipped
509 type: RelaxedAtomicBool
514 - name: apz.fixed-margin-override.enabled
515 type: RelaxedAtomicBool
520 - name: apz.fixed-margin-override.bottom
521 type: RelaxedAtomicInt32
526 - name: apz.fixed-margin-override.top
527 type: RelaxedAtomicInt32
531 - name: apz.fling_accel_base_mult
536 - name: apz.fling_accel_supplemental_mult
541 - name: apz.fling_accel_min_fling_velocity
546 - name: apz.fling_accel_min_pan_velocity
551 - name: apz.fling_accel_max_pause_interval_ms
552 type: RelaxedAtomicInt32
556 - name: apz.fling_curve_function_x1
561 - name: apz.fling_curve_function_x2
566 - name: apz.fling_curve_function_y1
571 - name: apz.fling_curve_function_y2
576 - name: apz.fling_curve_threshold_inches_per_ms
581 - name: apz.fling_friction
586 - name: apz.fling_min_velocity_threshold
591 - name: apz.fling_stop_on_tap_threshold
596 - name: apz.fling_stopped_threshold
601 - name: apz.touch_acceleration_factor_x
606 - name: apz.touch_acceleration_factor_y
611 #ifdef MOZ_WIDGET_GTK
612 - name: apz.gtk.kinetic_scroll.enabled
613 type: RelaxedAtomicBool
617 - name: apz.gtk.pangesture.enabled
618 type: RelaxedAtomicBool
622 # Mode to use when receiving pan gesture input.
624 # * 0: Auto mode (uses the default behavior, subject to change).
625 # * 1: Page mode: Uses gtk deltas as a percentage of the page size to scroll. This mode matches:
627 # https://gitlab.gnome.org/GNOME/gtk/blob/c734c7e9188b56f56c3a504abee05fa40c5475ac/gtk/gtkrange.c#L3063-3074
629 # * 2: Pixel mode: Uses gtk deltas as a fixed pixel multiplier. This mode matches e.g. GNOME web.
631 # https://webkit-search.igalia.com/webkit/rev/215039ef09d6bfd6e088175bfe30788d95b9705d/Source/WebKit/Shared/gtk/WebEventFactory.cpp#265-296
632 # (multiplied then by pixelsPerLineStep which in GNOME-web is 40).
633 - name: apz.gtk.pangesture.delta_mode
638 - name: apz.gtk.pangesture.page_delta_mode_multiplier
643 - name: apz.gtk.pangesture.pixel_delta_mode_multiplier
648 - name: apz.gtk.touchpad_pinch.enabled
649 type: RelaxedAtomicBool
653 - name: apz.gtk.touchpad_pinch.three_fingers.enabled
654 type: RelaxedAtomicBool
659 - name: apz.keyboard.enabled
661 value: @IS_NOT_ANDROID@
664 - name: apz.keyboard.passive-listeners
665 type: RelaxedAtomicBool
666 value: @IS_NOT_ANDROID@
669 - name: apz.max_tap_time
670 type: RelaxedAtomicInt32
674 - name: apz.max_velocity_inches_per_ms
679 - name: apz.max_velocity_queue_size
684 - name: apz.min_skate_speed
689 - name: apz.minimap.enabled
690 type: RelaxedAtomicBool
694 - name: apz.one_touch_pinch.enabled
695 type: RelaxedAtomicBool
699 - name: apz.overscroll.enabled
700 type: RelaxedAtomicBool
701 #if defined(XP_MACOSX) || defined(XP_WIN)
704 value: @IS_NIGHTLY_BUILD@
708 # The "test async scroll offset" (used via reftest-async-scroll
709 # or nsIDOMWindowUtils.setAsyncScrollOffset()) can be used to
710 # trigger overscroll. Used for tests only.
711 - name: apz.overscroll.test_async_scroll_offset.enabled
712 type: RelaxedAtomicBool
716 - name: apz.overscroll.min_pan_distance_ratio
721 - name: apz.overscroll.stop_distance_threshold
726 - name: apz.overscroll.spring_stiffness
731 - name: apz.overscroll.damping
736 - name: apz.overscroll.max_velocity
741 - name: apz.paint_skipping.enabled
742 type: RelaxedAtomicBool
746 # Fetch displayport updates early from the message queue.
747 - name: apz.pinch_lock.mode
748 type: RelaxedAtomicInt32
752 - name: apz.pinch_lock.scroll_lock_threshold
754 value: 1.0f / 16.0f # 1/16 inches
757 - name: apz.pinch_lock.span_breakout_threshold
759 value: 1.0f / 32.0f # 1/32 inches
762 - name: apz.pinch_lock.span_lock_threshold
764 value: 1.0f / 32.0f # 1/32 inches
767 - name: apz.pinch_lock.buffer_max_age
769 value: 80 # milliseconds
772 - name: apz.popups.enabled
773 type: RelaxedAtomicBool
777 # Whether to print the APZC tree for debugging.
778 - name: apz.printtree
779 type: RelaxedAtomicBool
783 - name: apz.record_checkerboarding
784 type: RelaxedAtomicBool
785 value: @IS_NIGHTLY_BUILD@
788 - name: apz.second_tap_tolerance
793 # If this is true, APZ fully recalculates the scroll thumb size and
794 # position in the compositor. This leads to the size and position
795 # being more accurate in scenarios such as async zooming.
796 - name: apz.scrollthumb.recalc
797 type: RelaxedAtomicBool
801 - name: apz.test.fails_with_native_injection
802 type: RelaxedAtomicBool
806 - name: apz.test.logging_enabled
807 type: RelaxedAtomicBool
811 - name: apz.touch_move_tolerance
816 - name: apz.touch_start_tolerance
821 - name: apz.velocity_bias
826 - name: apz.velocity_relevance_time_ms
827 type: RelaxedAtomicUint32
831 - name: apz.windows.force_disable_direct_manipulation
832 type: RelaxedAtomicBool
836 - name: apz.windows.use_direct_manipulation
837 type: RelaxedAtomicBool
841 - name: apz.windows.check_for_pan_gesture_conversion
842 type: RelaxedAtomicBool
846 - name: apz.x_skate_highmem_adjust
851 - name: apz.x_skate_size_multiplier
856 - name: apz.x_stationary_size_multiplier
861 - name: apz.y_skate_highmem_adjust
866 - name: apz.y_skate_size_multiplier
868 #if defined(MOZ_WIDGET_ANDROID)
875 - name: apz.y_stationary_size_multiplier
877 #if defined(MOZ_WIDGET_ANDROID)
884 - name: apz.zoom_animation_duration_ms
885 type: RelaxedAtomicInt32
886 #if defined(MOZ_WIDGET_ANDROID)
893 - name: apz.scale_repaint_delay_ms
894 type: RelaxedAtomicInt32
898 # Whether to use rounded external scroll offsets.
899 - name: apz.rounded_external_scroll_offset
904 #---------------------------------------------------------------------------
905 # Prefs starting with "beacon."
906 #---------------------------------------------------------------------------
908 # Is support for Navigator.sendBeacon enabled?
909 - name: beacon.enabled
914 #---------------------------------------------------------------------------
915 # Prefs starting with "bidi."
916 #---------------------------------------------------------------------------
918 # Whether delete and backspace should immediately delete characters not
919 # visually adjacent to the caret, or adjust the visual position of the caret
920 # on the first keypress and delete the character on a second keypress
921 - name: bidi.edit.delete_immediately
926 # Bidi caret movement style:
929 # 2 = visual, but logical during selection
930 - name: bidi.edit.caret_movement_style
932 #if !defined(XP_LINUX) && defined(NIGHTLY_BUILD)
935 value: 2 # See Bug 1638240
939 # Bidi numeral style:
940 # 0 = nominalnumeralBidi *
941 # 1 = regularcontextnumeralBidi
942 # 2 = hindicontextnumeralBidi
943 # 3 = arabicnumeralBidi
944 # 4 = hindinumeralBidi
945 # 5 = persiancontextnumeralBidi
946 # 6 = persiannumeralBidi
948 type: RelaxedAtomicUint32
953 # 1 = charsettexttypeBidi *
954 # 2 = logicaltexttypeBidi
955 # 3 = visualtexttypeBidi
956 - name: bidi.texttype
957 type: RelaxedAtomicUint32
962 # 1 = directionLTRBidi *
963 # 2 = directionRTLBidi
964 - name: bidi.direction
965 type: RelaxedAtomicUint32
969 # Setting this pref to |true| forces Bidi UI menu items and keyboard shortcuts
970 # to be exposed, and enables the directional caret hook. By default, only
971 # expose it for bidi-associated system locales.
972 - name: bidi.browser.ui
977 #---------------------------------------------------------------------------
978 # Prefs starting with "browser."
979 #---------------------------------------------------------------------------
981 - name: browser.active_color
986 - name: browser.active_color.dark
991 - name: browser.anchor_color
996 # If you change this, you probably also want to change
997 # nsXPLookAndFeel::GenericDarkColor for MozNativehyperlinktext.
998 - name: browser.anchor_color.dark
1003 # See http://dev.w3.org/html5/spec/forms.html#attr-fe-autofocus
1004 - name: browser.autofocus
1009 - name: browser.cache.disk.enable
1010 type: RelaxedAtomicBool
1014 - name: browser.cache.memory.enable
1015 type: RelaxedAtomicBool
1019 # Limit of recent metadata we keep in memory for faster access, in KB.
1020 - name: browser.cache.disk.metadata_memory_limit
1021 type: RelaxedAtomicUint32
1022 value: 250 # 0.25 MB
1025 # Does the user want smart-sizing?
1026 - name: browser.cache.disk.smart_size.enabled
1027 type: RelaxedAtomicBool
1031 # Disk cache capacity in kilobytes. It's used only when
1032 # browser.cache.disk.smart_size.enabled == false
1033 - name: browser.cache.disk.capacity
1034 type: RelaxedAtomicUint32
1038 # -1 = determine dynamically, 0 = none, n = memory capacity in kilobytes.
1039 - name: browser.cache.memory.capacity
1040 type: RelaxedAtomicInt32
1044 # When smartsizing is disabled we could potentially fill all disk space by
1045 # cache data when the disk capacity is not set correctly. To avoid that we
1046 # check the free space every time we write some data to the cache. The free
1047 # space is checked against two limits. Once the soft limit is reached we start
1048 # evicting the least useful entries, when we reach the hard limit writing to
1050 - name: browser.cache.disk.free_space_soft_limit
1051 type: RelaxedAtomicUint32
1052 value: 5 * 1024 # 5MB
1055 - name: browser.cache.disk.free_space_hard_limit
1056 type: RelaxedAtomicUint32
1060 # The number of chunks we preload ahead of read. One chunk currently has
1062 - name: browser.cache.disk.preload_chunk_count
1063 type: RelaxedAtomicUint32
1064 value: 4 # 1 MB of read ahead
1067 # Max-size (in KB) for entries in disk cache. Set to -1 for no limit.
1068 # (Note: entries bigger than 1/8 of disk-cache are never cached)
1069 - name: browser.cache.disk.max_entry_size
1070 type: RelaxedAtomicUint32
1071 value: 50 * 1024 # 50 MB
1074 # Max-size (in KB) for entries in memory cache. Set to -1 for no limit.
1075 # (Note: entries bigger than than 90% of the mem-cache are never cached.)
1076 - name: browser.cache.memory.max_entry_size
1077 type: RelaxedAtomicInt32
1081 # Memory limit (in kB) for new cache data not yet written to disk. Writes to
1082 # the cache are buffered and written to disk on background with low priority.
1083 # With a slow persistent storage these buffers may grow when data is coming
1084 # fast from the network. When the amount of unwritten data is exceeded, new
1085 # writes will simply fail. We have two buckets, one for important data
1086 # (priority) like html, css, fonts and js, and one for other data like images,
1088 # Note: 0 means no limit.
1089 - name: browser.cache.disk.max_chunks_memory_usage
1090 type: RelaxedAtomicUint32
1093 - name: browser.cache.disk.max_priority_chunks_memory_usage
1094 type: RelaxedAtomicUint32
1099 # Number of seconds the cache spends writing pending data and closing files
1100 # after shutdown has been signalled. Past that time data is not written and
1101 # files are left open for the OS to clean up.
1102 - name: browser.cache.max_shutdown_io_lag
1103 type: RelaxedAtomicUint32
1107 # After the max_shutdown_io_lag has passed, we will attempt to cancel
1108 # blocking IO (on windows). The CacheIOThread may pick up more blocking
1109 # tasks so we want to cancel those too. The main thread will be woken
1110 # up every shutdown_io_time_between_cancellations_ms to cancel the IO
1111 # on the other thread.
1112 - name: browser.cache.shutdown_io_time_between_cancellations_ms
1113 type: RelaxedAtomicUint32
1117 # A percentage limit for media content type in the disk cache. When some entries
1118 # need to be evicted and media is over the limit, it's evicted first.
1119 - name: browser.cache.disk.content_type_media_limit
1120 type: RelaxedAtomicInt32
1124 # How often to validate document in cache
1125 # 0 = once-per-session,
1128 # 3 = when-appropriate/automatically
1129 - name: browser.cache.check_doc_frequency
1130 type: RelaxedAtomicUint32
1134 # Compression level for cached JavaScript bytecode
1135 # 0 = do not compress,
1136 # 1 = minimal compression,
1137 # 9 = maximal compression
1138 - name: browser.cache.jsbc_compression_level
1139 type: RelaxedAtomicUint32
1143 # Whether tooltips are enabled.
1144 - name: browser.chrome.toolbar_tips
1149 # Whether tooltips are hidden on keydown.
1152 # 2: only on non-modifier keys
1153 - name: browser.chrome.toolbar_tips.hide_on_keydown
1162 # DLP agent name, for display in the browser
1163 - name: browser.contentanalysis.agent_name
1165 value: "A DLP agent"
1168 # (optional) The organization name that the DLP agent should have. If this is
1169 # non-empty and the DLP agent is not signed with this organization name,
1170 # Firefox will fail the connection.
1171 - name: browser.contentanalysis.client_signature
1176 # Content analysis by external applications, e.g. data-loss prevention apps
1177 - name: browser.contentanalysis.enabled
1182 # What content analysis should return if there is a problem communicating
1183 # with the agent. (see DefaultResponse enum in ContentAnalysis.h)
1184 # Make sure these stay in sync with the out-of-range check in Policies.sys.mjs.
1186 # 0: Block all requests
1187 # 1: Warn on all requests (which lets the user decide)
1188 # 2: Allow all requests
1189 - name: browser.contentanalysis.default_result
1194 # Is the IPC pipe to the DLP tool specific to the user or to the system?
1195 - name: browser.contentanalysis.is_per_user
1200 # Path name of pipe used to connect to a configured DLP agent.
1201 - name: browser.contentanalysis.pipe_path_name
1206 # Space-separated list of regexs that are compared to URLs of resources
1207 # being checked by content-analysis. Resources that match are not checked
1208 # and are always permitted.
1209 # By default this does not check any about: page except for about:blank
1211 - name: browser.contentanalysis.allow_url_regex_list
1213 value: "^about:(?!blank|srcdoc).*"
1216 # Space-separated list of regexs that are compared to URLs of resources
1217 # being checked by content-analysis. Resources that match are not checked
1218 # and are always denied.
1219 - name: browser.contentanalysis.deny_url_regex_list
1224 # Should CA ignore the system setting and use silent notifications?
1225 - name: browser.contentanalysis.silent_notifications
1230 # Time (secs) after which content analysis operations are considered timed-out
1231 - name: browser.contentanalysis.agent_timeout
1236 # Should Firefox show a notification or dialog when content analysis blocks
1238 - name: browser.contentanalysis.show_blocked_result
1243 # Should Firefox bypass content analysis for pastes and drags whose source
1245 - name: browser.contentanalysis.bypass_for_same_tab_operations
1250 # Content blocking for Enhanced Tracking Protection
1251 - name: browser.contentblocking.database.enabled
1256 # How many recent block/unblock actions per origins we remember in the
1257 # Content Blocking log for each top-level window.
1258 - name: browser.contentblocking.originlog.length
1263 # Min font device pixel size at which to turn on high quality.
1264 - name: browser.display.auto_quality_min_font_size
1265 type: RelaxedAtomicUint32
1269 - name: browser.display.background_color
1274 - name: browser.display.background_color.dark
1279 # This preference is a bit confusing because we use the opposite
1280 # string value in the colors dialog to indicate to users how FF HCM
1282 # With resect to document colors, these values mean:
1283 # 0 = "default" = always, except in high contrast mode
1287 # On windows, we set this to 0, which means FF HCM will mirror OS HCM.
1288 # Everywhere else, we set this to 1, disabling FF HCM.
1289 - name: browser.display.document_color_use
1290 type: RelaxedAtomicUint32
1302 - name: browser.display.windows.non_native_menus
1303 type: RelaxedAtomicUint32
1308 # This pref dictates whether or not backplates and background images
1309 # are to be drawn, when in high-contrast mode:
1310 # false: do not draw backplates or render background images
1311 # true: render background images and draw backplates
1312 # This condition is only considered when high-contrast mode is enabled
1313 # in Firefox, ie. when the user has:
1314 # (1) mUseAccessibilityMode set to true (Widows high-contrast mode is on)
1315 # AND browser.display.document_color_use set to 0
1316 # (only with high-contrast themes) OR
1317 # (2) browser.display.document_color_use set to 2 (always)
1318 - name: browser.display.permit_backplate
1319 type: RelaxedAtomicBool
1324 # Whether we should suppress the background-image of the canvas (the root
1325 # frame) if we're in forced colors mode.
1327 # This is important because some sites use background-image with a plain color
1328 # and it causes undesirable results in high-contrast mode.
1330 # See bug 1614921 for example.
1331 - name: browser.display.suppress_canvas_background_image_on_forced_colors
1336 - name: browser.display.foreground_color
1341 - name: browser.display.foreground_color.dark
1346 # Determines the behavior of OS zoom settings.
1348 # 0: doesn't affect rendering at all
1349 # 1: affects full zoom (dpi, effectively).
1350 # 2: affects text zoom.
1352 # Default is (1): Historical behavior on Linux, matches other browsers on
1353 # Windows, and generally creates more consistent rendering.
1354 - name: browser.display.os-zoom-behavior
1355 type: RelaxedAtomicInt32
1360 # Whether focus rings are always shown by default.
1362 # This is the initial value of nsWindowRoot::mShowFocusRings, but it can be
1363 # overridden by system preferences.
1364 - name: browser.display.show_focus_rings
1369 # Enable showing image placeholders while image is loading or when image is broken.
1370 - name: browser.display.show_image_placeholders
1375 # Whether we should always enable focus rings after focus was moved by keyboard.
1377 # This behavior matches both historical and GTK / Windows focus behavior.
1379 # :focus-visible is intended to provide better heuristics than this.
1380 - name: browser.display.always_show_rings_after_key_focus
1385 # In theory: 0 = never, 1 = quick, 2 = always, though we always just use it as
1387 - name: browser.display.use_document_fonts
1388 type: RelaxedAtomicInt32
1393 # font-family names for which we'll override use_document_fonts=0, and always
1394 # use the specified font.
1395 # This is to support ligature-icon fonts, which render literal strings like
1396 # "arrow_drop_down" with an icon, even when use_document_fonts is disabled.
1397 # If an author provides & uses such a font, and we decline to use it, we'll end
1398 # up rendering these literal strings where the author intended an icon, which
1399 # can cause all sorts of overlapping/unreadable content.
1400 - name: browser.display.use_document_fonts.icon_font_allowlist
1404 Material Icons Extended,
1405 Material Icons Outlined,
1406 Material Icons Round,
1407 Material Icons Sharp,
1408 Material Icons Two Tone,
1409 Google Material Icons,
1410 Google Material Icons Filled,
1411 Material Symbols Outlined,
1412 Material Symbols Round,
1413 Material Symbols Rounded,
1414 Material Symbols Sharp,
1419 - name: browser.display.use_system_colors
1420 type: RelaxedAtomicBool
1428 - name: browser.dom.window.dump.enabled
1429 type: RelaxedAtomicBool
1430 value: @IS_NOT_MOZILLA_OFFICIAL@
1434 - name: browser.download.start_downloads_in_tmp_dir
1440 - name: browser.download.always_ask_before_handling_new_types
1446 - name: browser.download.enable_spam_prevention
1452 - name: browser.download.open_pdf_attachments_inline
1458 - name: browser.download.force_save_internally_handled_attachments
1463 - name: browser.download.sanitize_non_media_extensions
1468 # Image document's automatic image sizing.
1469 - name: browser.enable_automatic_image_resizing
1474 # Image document's click-to-resize.
1475 - name: browser.enable_click_image_resizing
1477 value: @IS_NOT_ANDROID@
1480 - name: browser.find.ignore_ruby_annotations
1485 #if defined(XP_MACOSX)
1486 # Whether pressing Esc will exit fullscreen.
1487 - name: browser.fullscreen.exit_on_escape
1493 # The max url length we'll store in history.
1495 # The default value is mostly a guess based on various facts:
1497 # * IE didn't support urls longer than 2083 chars
1498 # * Sitemaps protocol used to support a maximum of 2048 chars
1499 # * Various SEO guides suggest to not go over 2000 chars
1500 # * Various apps/services are known to have issues over 2000 chars
1501 # * RFC 2616 - HTTP/1.1 suggests being cautious about depending
1502 # on URI lengths above 255 bytes
1504 - name: browser.history.maxUrlLength
1509 # Max size of push/replaceState data parameter
1510 - name: browser.history.maxStateObjectSize
1515 # True to collect wireframes upon navigations / pushState
1516 - name: browser.history.collectWireframes
1521 # The minimum area for a rect to be included in a wireframe, in CSS pixels.
1523 # The current value of 50 is pretty arbitrary, and will be tuned as we refine
1524 # and test the wireframing capability.
1525 - name: browser.history.wireframeAreaThreshold
1530 #if defined(XP_WIN) || defined(XP_LINUX)
1531 # Notify TabUnloader or send the memory pressure if the memory resource
1532 # notification is signaled AND the available commit space is lower than
1534 - name: browser.low_commit_space_threshold_mb
1535 type: RelaxedAtomicUint32
1541 # On Linux we also check available memory in comparison to total memory,
1542 # and use this percent value (out of 100) to determine if we are in a
1543 # low memory scenario.
1544 - name: browser.low_commit_space_threshold_percent
1545 type: RelaxedAtomicUint32
1550 # Render animations and videos as a solid color
1551 - name: browser.measurement.render_anims_and_video_solid
1552 type: RelaxedAtomicBool
1556 - name: browser.navigation.requireUserInteraction
1561 # Indicates if about:newtab shows content (enabled) or just blank.
1562 - name: browser.newtabpage.enabled
1567 # Open PDFs in Edge with the --app flag if it is the default.
1568 - name: browser.pdf.launchDefaultEdgeAsApp
1573 # Maximium delay between keystrokes that will be considered typing (milliseconds).
1574 - name: browser.places.interactions.typing_timeout_ms
1575 type: RelaxedAtomicUint32
1579 # Maximum delay between scroll input events that will be considered a scrolling interaction (milliseconds).
1580 - name: browser.places.interactions.scrolling_timeout_ms
1581 type: RelaxedAtomicUint32
1585 # Number of seconds till the sponsored session is timeout.
1586 - name: browser.places.sponsoredSession.timeoutSecs
1587 type: RelaxedAtomicUint32
1591 # Whether to start the private browsing mode at application startup
1592 - name: browser.privatebrowsing.autostart
1597 # Force usage of in-memory (rather than file on disk) media cache for video streaming when private browsing
1598 - name: browser.privatebrowsing.forceMediaMemoryCache
1603 # Communicates the toolbar color to platform (for e.g., prefers-color-scheme).
1605 # Returns whether the toolbar is dark (0), light (1), or system (2). The
1606 # theming code overrides it if appropriate.
1607 - name: browser.theme.toolbar-theme
1608 type: RelaxedAtomicUint32
1612 # Communicates the preferred content theme color to platform (for e.g.,
1613 # prefers-color-scheme).
1615 # dark (0), light (1), system (2), or toolbar (3).
1617 # Default to "toolbar", the theming code sets it appropriately.
1618 - name: browser.theme.content-theme
1619 type: RelaxedAtomicUint32
1624 # Whether the firefox titlebar respects the
1625 # -moz-windows-accent-color-in-titlebar setting on the tab strip.
1626 - name: browser.theme.windows.accent-color-in-tabs.enabled
1627 type: RelaxedAtomicBool
1632 # Blocked plugin content
1633 - name: browser.safebrowsing.blockedURIs.enabled
1638 # Malware protection
1639 - name: browser.safebrowsing.malware.enabled
1644 # Phishing protection
1645 - name: browser.safebrowsing.phishing.enabled
1650 # Maximum size for an array to store the safebrowsing prefixset.
1651 - name: browser.safebrowsing.prefixset_max_array_size
1652 type: RelaxedAtomicUint32
1656 # SessionStore prefs
1657 # Maximum number of bytes of DOMSessionStorage data we collect per origin.
1658 - name: browser.sessionstore.dom_storage_limit
1663 # Maximum number of characters of form field data per field we collect.
1664 - name: browser.sessionstore.dom_form_limit
1669 # Maximum number of characters of form data we collect per origin.
1670 - name: browser.sessionstore.dom_form_max_limit
1675 # Minimal interval between two save operations in milliseconds (while the user is active).
1676 - name: browser.sessionstore.interval
1677 type: RelaxedAtomicUint32
1681 # Disable collection of data for session store using the native collector code,
1682 # instead use the older implementation that's not compatible with session
1683 # history in the parent (and thus Fission).
1684 - name: browser.sessionstore.disable_platform_collection
1686 #if defined(MOZ_THUNDERBIRD)
1692 do_not_use_directly: true
1694 #if defined(NIGHTLY_BUILD) || defined(MOZ_DEV_EDITION) || defined(DEBUG)
1695 - name: browser.startup.record
1701 # Causes SessionStore to ignore non-final update messages from
1702 # browser tabs that were not caused by a flush from the parent.
1703 # This is a testing flag and should not be used by end-users.
1704 - name: browser.sessionstore.debug.no_auto_updates
1705 type: RelaxedAtomicBool
1709 # Whether we should draw the tabs on top of the titlebar.
1711 # no (0), yes (1), or default (2), which is true everywhere except Linux.
1712 - name: browser.tabs.inTitlebar
1717 # If set, use DocumentChannel to directly initiate loads entirely
1718 # from parent-process BrowsingContexts
1719 - name: browser.tabs.documentchannel.parent-controlled
1724 # Testing-only pref which makes data: URIs be loaded in a "web" content process
1725 # instead of within a process based on the URI's loader.
1726 - name: browser.tabs.remote.dataUriInDefaultWebProcess
1731 # Testing-only pref to force system-triggered about:blank loads to not change
1732 # content processes. This is used for performance tests which load an
1733 # about:blank document between navigations for historical reasons to avoid
1734 # unnecessary process switches.
1735 - name: browser.tabs.remote.systemTriggeredAboutBlankAnywhere
1740 # Testing-only pref to cause PBrowser creation for a specific BrowsingContext to
1741 # fail, to test the errored codepath.
1742 - name: browser.tabs.remote.testOnly.failPBrowserCreation.enabled
1747 - name: browser.tabs.remote.force-paint
1752 # When this pref is enabled document loads with a mismatched
1753 # Cross-Origin-Embedder-Policy header will fail to load
1754 - name: browser.tabs.remote.useCrossOriginEmbedderPolicy
1755 type: RelaxedAtomicBool
1759 # This pref makes `credentialless` a valid value for
1760 # Cross-Origin-Embedder-Policy header
1761 - name: browser.tabs.remote.coep.credentialless
1762 type: RelaxedAtomicBool
1763 #if defined(ANDROID)
1764 value: @IS_NIGHTLY_BUILD@
1769 do_not_use_directly: true
1771 # When this pref is enabled top level loads with a mismatched
1772 # Cross-Origin-Opener-Policy header will be loaded in a separate process.
1773 - name: browser.tabs.remote.useCrossOriginOpenerPolicy
1774 type: RelaxedAtomicBool
1778 # When this pref is enabled then we use a separate content process for
1779 # top-level load of file:// URIs
1780 - name: browser.tabs.remote.separateFileUriProcess
1781 type: RelaxedAtomicBool
1782 #if !defined(ANDROID)
1789 # Pref to control whether we use a separate privileged content process
1790 # for certain mozilla webpages (which are listed in the pref
1791 # browser.tabs.remote.separatedMozillaDomains).
1792 - name: browser.tabs.remote.separatePrivilegedMozillaWebContentProcess
1797 # Whether or not process selection for subframes will prefer re-using an
1798 # existing content process over creating a new one. Enabling this pref should
1799 # reduce the number of processes allocated for non-first-party domains if
1800 # dom.ipc.processCount.webIsolated > 1.
1801 - name: browser.tabs.remote.subframesPreferUsed
1806 # When this pref is enabled, opaque response is only allowed to enter the
1807 # content process if it's a response for media (audio, image, video), CSS, or
1809 - name: browser.opaqueResponseBlocking
1810 type: RelaxedAtomicBool
1811 #if defined(ANDROID)
1818 # When this pref is enabled, the JS validator will be enabled for
1820 - name: browser.opaqueResponseBlocking.javascriptValidator
1825 # This pref controls how filtering of opaque responses for calls to `Window.fetch`.
1826 # (and similar) is performed in the parent process. This is intended to make sure
1827 # that data that would be filtered in a content process never actually reaches that
1829 # See https://fetch.spec.whatwg.org/#concept-filtered-response-opaque
1830 # 0) Don't filter in the parent process at all, and let content processes handle
1831 # opaque filtering. Regardless of if ORB is enabled or not. N.B. that if ORB
1832 # is enabled opaque responses will be blocked.
1833 # 1) If ORB is enabled, in the parent process, filter the responses that ORB allows.
1834 # N.B. any responses ORB doesn't allow will not send data to a content process
1835 # since they will return a NetworkError. If the request is allowed by ORB, the
1836 # internal response will be intact and sent to the content process as is.
1837 # 2) If ORB is enabled, in the parent process, filter the responses that ORB blocks,
1838 # when they were issued by `Window.fetch` (and similar).
1839 # 3) Filter all responses in the parent, regardless of if ORB is enabled or not.
1840 # This means that opaque responses coming from `Window.fetch` won't even be
1841 # considered for being blocked by ORB.
1842 - name: browser.opaqueResponseBlocking.filterFetchResponse
1846 do_not_use_directly: true
1848 # This pref controls how exceptions to opaque response blocking for the media MIME types
1849 # `audio/*` and `video/*` are handled. This is because step 8 in the spec that performs
1850 # audio or video type pattern matching cannot handle certain MIME types (yet).
1851 # See https://whatpr.org/fetch/1442.html#orb-algorithm
1853 # 1) Some exceptions, explicitly hard coded in `IsOpaqueSafeListedSpecBreakingMIMEType`
1854 # 2) Allow all MIME types beginning with `audio/*` or `video/*`.
1855 - name: browser.opaqueResponseBlocking.mediaExceptionsStrategy
1859 do_not_use_directly: true
1861 # When true, zooming will be enabled on all sites, even ones that declare
1862 # user-scalable=no or use touch-action to disable pinch gestures.
1863 - name: browser.ui.zoom.force-user-scalable
1864 type: RelaxedAtomicBool
1868 - name: browser.viewport.desktopWidth
1869 type: RelaxedAtomicInt32
1873 - name: browser.visited_color
1878 # If you change this, you probably also want to change
1879 # nsXPLookAndFeel::GenericDarkColor for MozNativevisitedhyperlinktext.
1880 - name: browser.visited_color.dark
1885 # When true, soft reloads (including location.reload())
1886 # will only froce validate the top level document, subresources will
1887 # be loaded normally as-if users normally navigated to the page.
1888 - name: browser.soft_reload.only_force_validate_top_level_document
1893 # Whether or not to save and restore zoom levels on a per-site basis.
1894 - name: browser.zoom.siteSpecific
1896 value: @IS_NOT_ANDROID@
1899 #---------------------------------------------------------------------------
1900 # Prefs starting with "channelclassifier."
1901 #---------------------------------------------------------------------------
1903 - name: channelclassifier.allowlist_example
1908 #---------------------------------------------------------------------------
1909 # Prefs starting with "clipboard."
1910 #---------------------------------------------------------------------------
1912 # Clipboard behavior.
1913 - name: clipboard.autocopy
1915 #if !defined(ANDROID) && !defined(XP_MACOSX) && defined(XP_UNIX)
1923 # allow to copy clipboard data to Clipboard History/Cloud
1924 # (used on sensitive data in about:logins and Private Browsing)
1925 - name: clipboard.copyPrivateDataToClipboardCloudOrHistory
1930 # Whether to put a file promise onto the clipboard when copying images on Windows
1931 - name: clipboard.imageAsFile.enabled
1933 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
1937 #---------------------------------------------------------------------------
1938 # Prefs starting with "consoleservice."
1939 #---------------------------------------------------------------------------
1941 #if defined(ANDROID)
1942 # Disable sending console to logcat on release builds.
1943 - name: consoleservice.logcat
1944 type: RelaxedAtomicBool
1945 value: @IS_NOT_RELEASE_OR_BETA@
1949 #---------------------------------------------------------------------------
1950 # Prefs starting with "content."
1951 #---------------------------------------------------------------------------
1953 - name: content.cors.disable
1958 # Back off timer notification after count.
1960 - name: content.notify.backoffcount
1965 # Notification interval in microseconds.
1966 # The notification interval has a dramatic effect on how long it takes to
1967 # initially display content for slow connections. The current value
1968 # provides good incremental display of content without causing an increase
1969 # in page load time. If this value is set below 1/10 of a second it starts
1970 # to impact page load performance.
1971 # See bugzilla bug 72138 for more info.
1972 - name: content.notify.interval
1977 # Do we notify based on time?
1978 - name: content.notify.ontimer
1983 # How many times to deflect in interactive mode.
1984 - name: content.sink.interactive_deflect_count
1989 # How many times to deflect in perf mode.
1990 - name: content.sink.perf_deflect_count
1995 # Parse mode for handling pending events.
1996 # 0 = don't check for pending events
1997 # 1 = don't deflect if there are pending events
1998 # 2 = bail if there are pending events
1999 - name: content.sink.pending_event_mode
2008 # How often to probe for pending events. 1 = every token.
2009 - name: content.sink.event_probe_rate
2014 # How long to stay off the event loop in interactive mode (microseconds).
2015 - name: content.sink.interactive_parse_time
2020 # How long to stay off the event loop in perf mode.
2021 - name: content.sink.perf_parse_time
2026 # How long to be in interactive mode after an event.
2027 - name: content.sink.interactive_time
2032 # How long to stay in perf mode after initial loading.
2033 - name: content.sink.initial_perf_time
2038 # Should we switch between perf-mode and interactive-mode?
2040 # 1 = Interactive mode
2042 - name: content.sink.enable_perf_mode
2047 #---------------------------------------------------------------------------
2048 # Prefs starting with "converter."
2049 #---------------------------------------------------------------------------
2051 # Whether we include ruby annotation in the text despite whether it
2052 # is requested. This was true because we didn't explicitly strip out
2053 # annotations. Set false by default to provide a better behavior, but
2054 # we want to be able to pref-off it if user doesn't like it.
2055 - name: converter.html2txt.always_include_ruby
2060 #---------------------------------------------------------------------------
2061 # Prefs starting with "cookiebanners."
2062 #---------------------------------------------------------------------------
2064 # Controls the cookie banner handling mode in normal browsing.
2065 # 0: Disables all cookie banner handling.
2066 # 1: Reject-all if possible, otherwise do nothing.
2067 # 2: Reject-all if possible, otherwise accept-all.
2068 - name: cookiebanners.service.mode
2073 # When set to true, cookie banners are detected and detection events are
2074 # dispatched, but they will not be handled. Requires the service to be enabled
2075 # for the desired mode via pref cookiebanners.service.mode*
2076 - name: cookiebanners.service.detectOnly
2081 # Controls the cookie banner handling mode in private browsing. Same mode
2082 # options as the normal browsing pref above.
2083 - name: cookiebanners.service.mode.privateBrowsing
2088 # Enables use of global CookieBannerRules, which apply to all sites. This is
2089 # used for click rules that can handle common Consent Management Providers
2091 # Enabling this (when the cookie handling feature is enabled) may negatively
2092 # impact site performance since it requires us to run rule-defined query
2093 # selectors for every page.
2094 - name: cookiebanners.service.enableGlobalRules
2099 # Whether global rules are allowed to run in sub-frames. Running query selectors
2100 # in every sub-frame may negatively impact performance, but is required for some
2102 - name: cookiebanners.service.enableGlobalRules.subFrames
2107 # Enables the cookie banner cookie injector. The cookie banner cookie injector
2108 # depends on the `cookiebanners.service.mode` pref above.
2109 - name: cookiebanners.cookieInjector.enabled
2114 # By default, how many seconds in the future cookies should expire after they
2115 # have been injected. Defaults to 12 months. Individual cookie rules may
2117 - name: cookiebanners.cookieInjector.defaultExpiryRelative
2122 # How many times per site and site load to check for cookie banners after which
2123 # the mechanism is considered on cooldown for the site in the current browsing
2124 # session. If the threshold is set to zero, banner clicking won't be considered
2125 # as being on cooldown regardless of how many times the site is loaded. The
2126 # maximum value for the retry is 255, any value over than that will be capped.
2127 - name: cookiebanners.bannerClicking.maxTriesPerSiteAndSession
2132 #---------------------------------------------------------------------------
2133 # Prefs starting with "datareporting."
2134 #---------------------------------------------------------------------------
2136 - name: datareporting.healthreport.uploadEnabled
2137 type: RelaxedAtomicBool
2142 #---------------------------------------------------------------------------
2143 # Prefs starting with "device."
2144 #---------------------------------------------------------------------------
2146 # Is support for the device sensors API enabled?
2147 - name: device.sensors.enabled
2152 # KaiOS-only, see https://bugzilla.mozilla.org/show_bug.cgi?id=1699707#c10
2153 - name: device.sensors.ambientLight.enabled
2158 - name: device.sensors.motion.enabled
2163 - name: device.sensors.orientation.enabled
2168 # KaiOS-only, see https://bugzilla.mozilla.org/show_bug.cgi?id=1699707#c10
2169 - name: device.sensors.proximity.enabled
2174 - name: device.sensors.test.events
2179 #---------------------------------------------------------------------------
2180 # Prefs starting with "devtools."
2181 #---------------------------------------------------------------------------
2183 - name: devtools.console.stdout.chrome
2184 type: RelaxedAtomicBool
2185 value: @IS_NOT_MOZILLA_OFFICIAL@
2188 - name: devtools.console.stdout.content
2189 type: RelaxedAtomicBool
2193 #---------------------------------------------------------------------------
2194 # Prefs starting with "docshell."
2195 #---------------------------------------------------------------------------
2197 # Used to indicate whether session history listeners should be notified
2198 # about content viewer eviction. Used only for testing.
2199 - name: docshell.shistory.testing.bfevict
2204 # If true, pages with an opener won't be bfcached.
2205 - name: docshell.shistory.bfcache.require_no_opener
2210 # If true, page with beforeunload or unload event listeners can be bfcached.
2211 - name: docshell.shistory.bfcache.allow_unload_listeners
2216 # If true, page with beforeunload event listeners can be bfcached.
2217 # This only works when sessionHistoryInParent is enabled.
2218 - name: docshell.shistory.bfcache.ship_allow_beforeunload_listeners
2223 #---------------------------------------------------------------------------
2224 # Prefs starting with "dom."
2225 #---------------------------------------------------------------------------
2228 - name: dom.allow_cut_copy
2233 # Checks if offscreen animation throttling is enabled.
2234 - name: dom.animations.offscreen-throttling
2239 # Is support for Navigator.getBattery enabled?
2240 - name: dom.battery.enabled
2245 # Block multiple external protocol URLs in iframes per single event.
2246 - name: dom.block_external_protocol_in_iframes
2251 # Block sandboxed BrowsingContexts from navigating to external protocols.
2252 - name: dom.block_external_protocol_navigation_from_sandbox
2257 # Block Insecure downloads from Secure Origins
2258 - name: dom.block_download_insecure
2263 # Block multiple window.open() per single event.
2264 - name: dom.block_multiple_popups
2269 # The maximum number of popup that is allowed to be opened. Set to -1 for no
2271 - name: dom.popup_maximum
2276 # Enable CacheAPI in private browsing mode with encryption
2277 - name: dom.cache.privateBrowsing.enabled
2278 type: RelaxedAtomicBool
2282 # Exposes window.caches and skips SecureContext check.
2283 # dom.serviceWorkers.testing.enabled also includes the same effect.
2284 - name: dom.caches.testing.enabled
2285 type: RelaxedAtomicBool
2289 # Disable capture attribute for input elements; only supported on GeckoView.
2290 - name: dom.capture.enabled
2295 # HTML specification says the level should be 5
2296 # https://html.spec.whatwg.org/#timer-initialisation-steps
2297 - name: dom.clamp.timeout.nesting.level
2302 # Disable custom highlight API; implementation pending.
2303 - name: dom.customHighlightAPI.enabled
2304 type: RelaxedAtomicBool
2305 value: @IS_NIGHTLY_BUILD@
2309 # Allow control characters appear in composition string.
2310 # When this is false, control characters except
2311 # CHARACTER TABULATION (horizontal tab) are removed from
2312 # both composition string and data attribute of compositionupdate
2313 # and compositionend events.
2314 - name: dom.compositionevent.allow_control_characters
2319 # Compression Streams (CompressionStream/DecompressionStream)
2320 - name: dom.compression_streams.enabled
2321 type: RelaxedAtomicBool
2325 # Is support for CSSPseudoElement enabled?
2326 - name: dom.css_pseudo_element.enabled
2331 # After how many seconds we allow external protocol URLs in iframe when not in
2333 - name: dom.delay.block_external_protocol_in_iframes
2335 value: 10 # in seconds
2338 # Whether the above pref has any effect at all.
2339 # Make sure cases like bug 1795380 work before trying to turn this off. See
2340 # bug 1680721 for some other context that might be relevant.
2341 - name: dom.delay.block_external_protocol_in_iframes.enabled
2346 # Only propagate the open window click permission if the setTimeout() is equal
2347 # to or less than this value.
2348 - name: dom.disable_open_click_delay
2353 - name: dom.disable_open_during_load
2358 - name: dom.disable_beforeunload
2363 - name: dom.require_user_interaction_for_beforeunload
2368 # Enable/disable Gecko specific edit commands
2369 - name: dom.document.edit_command.contentReadOnly.enabled
2371 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
2374 - name: dom.document.edit_command.insertBrOnReturn.enabled
2376 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
2379 # Only intended for fuzzing purposes, this will break mozPrintCallback, etc.
2380 - name: dom.window_print.fuzzing.block_while_printing
2385 - name: dom.element.transform-getters.enabled
2390 # Whether the popover attribute implementation is enabled,
2391 # see https://html.spec.whatwg.org/#the-popover-attribute
2392 - name: dom.element.popover.enabled
2393 type: RelaxedAtomicBool
2398 # Whether the blocking attribute implementation is enabled,
2399 # see https://html.spec.whatwg.org/#blocking-attributes
2400 - name: dom.element.blocking.enabled
2401 type: RelaxedAtomicBool
2405 # Whether CustomStateSet is enabled
2406 - name: dom.element.customstateset.enabled
2407 type: RelaxedAtomicBool
2412 # Whether the invoketarget attribute implementation is enabled
2413 - name: dom.element.invokers.enabled
2418 - name: dom.mouse_capture.enabled
2423 # Is support for Performance.mozMemory enabled?
2424 - name: dom.enable_memory_stats
2429 # Enable Performance API
2430 # Whether nonzero values can be returned from performance.timing.*
2431 - name: dom.enable_performance
2432 type: RelaxedAtomicBool
2436 # Enable Performance Observer API
2437 - name: dom.enable_performance_observer
2438 type: RelaxedAtomicBool
2442 # Whether resource timing will be gathered and returned by performance.GetEntries*
2443 - name: dom.enable_resource_timing
2448 # Whether event timing will be gathered and returned by performance observer*
2449 - name: dom.enable_event_timing
2450 type: RelaxedAtomicBool
2454 # Whether the LargestContentfulPaint API will be gathered and returned by performance observer*
2455 - name: dom.enable_largest_contentful_paint
2456 type: RelaxedAtomicBool
2460 # Whether performance.GetEntries* will contain an entry for the active document
2461 - name: dom.enable_performance_navigation_timing
2466 # Whether the scheduler interface will be exposed
2467 - name: dom.enable_web_task_scheduling
2468 type: RelaxedAtomicBool
2469 value: @IS_NIGHTLY_BUILD@
2472 # If this is true, it's allowed to fire "cut", "copy" and "paste" events.
2473 # Additionally, "input" events may expose clipboard content when inputType
2474 # is "insertFromPaste" or something.
2475 - name: dom.event.clipboardevents.enabled
2480 # Whether Shift+Right click force-opens the context menu
2481 - name: dom.event.contextmenu.shift_suppresses_event
2486 - name: dom.event.dragexit.enabled
2488 value: @IS_NOT_NIGHTLY_BUILD@
2491 # If this pref is set to true, typing a surrogate pair causes one `keypress`
2492 # event whose `charCode` stores the unicode code point over 0xFFFF. This is
2493 # compatible with Safari and Chrome in non-Windows platforms.
2494 # Otherwise, typing a surrogate pair causes two `keypress` events. This is
2495 # compatible with legacy web apps which does
2496 # `String.fromCharCode(event.charCode)`.
2497 - name: dom.event.keypress.dispatch_once_per_surrogate_pair
2502 # This is meaningful only when `dispatch_once_per_surrogate_pair` is false.
2503 # If this pref is set to true, `.key` of the first `keypress` is set to the
2504 # high-surrogate and `.key` of the other is set to the low-surrogate.
2505 # Therefore, setting this exposing ill-formed UTF-16 string with `.key`.
2506 # (And also `InputEvent.data` if pressed in an editable element.)
2507 # Otherwise, `.key` of the first `keypress` is set to the surrogate pair, and
2508 # `.key` of the second `keypress` is set to the empty string.
2509 - name: dom.event.keypress.key.allow_lone_surrogate
2511 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
2514 # Whether wheel event target's should be grouped. When enabled, all wheel
2515 # events that occur in a given wheel transaction have the same event target.
2516 - name: dom.event.wheel-event-groups.enabled
2521 # Whether WheelEvent should return pixels instead of lines for
2522 # WheelEvent.deltaX/Y/Z, when deltaMode hasn't been checked.
2524 # Other browsers don't use line deltas and websites forget to check for it, see
2526 - name: dom.event.wheel-deltaMode-lines.disabled
2531 # Mostly for debugging. Whether we should do the same as
2532 # dom.event.wheel-deltaMode-lines.disabled, but unconditionally rather than
2533 # only when deltaMode hasn't been checked.
2534 - name: dom.event.wheel-deltaMode-lines.always-disabled
2539 # A blocklist (list of domains) for the
2540 # dom.event.wheel-deltaMode-lines.disabled behavior, in case potential
2541 # unforeseen problems with it arrive.
2542 - name: dom.event.wheel-deltaMode-lines.always-enabled
2547 #if defined(XP_MACOSX)
2548 # Whether to disable treating ctrl click as right click
2549 - name: dom.event.treat_ctrl_click_as_right_click.disabled
2551 value: @IS_NIGHTLY_BUILD@
2555 # Whether Gecko keeps store or forgets the last deepest "enter" event target for
2556 # the next "enter" or "leave" event dispatching when the last "over" event
2557 # target is removed from the DOM tree.
2558 - name: dom.events.mouse-pointer-boundary.keep-enter-targets-after-over-target-removed
2560 value: @IS_EARLY_BETA_OR_EARLIER@
2563 # Whether .offset{X,Y} for events targeted at SVG nodes returns bounds relative
2565 - name: dom.events.offset-in-svg-relative-to-svg-root
2570 # Control whether clipboard.read(), clipboard.write() and ClipboardItem are exposed
2572 - name: dom.events.asyncClipboard.clipboardItem
2577 # Skips checking permission and user activation when accessing the clipboard.
2578 # Should only be enabled in tests.
2579 # Access with Clipboard::IsTestingPrefEnabled().
2580 - name: dom.events.testing.asyncClipboard
2584 do_not_use_directly: true
2586 # Control whether `navigator.clipboard.readText()` is exposed to content.
2587 - name: dom.events.asyncClipboard.readText
2591 do_not_use_directly: true
2593 # This pref controls whether or not the `protected` dataTransfer state is
2594 # enabled. If the `protected` dataTransfer stae is disabled, then the
2595 # DataTransfer will be read-only whenever it should be protected, and will not
2596 # be disconnected after a drag event is completed.
2597 - name: dom.events.dataTransfer.protected.enabled
2602 # Whether to hide normal files (i.e. non-images) in dataTransfer inside
2603 # the content process.
2604 - name: dom.events.dataTransfer.mozFile.enabled
2609 - name: dom.events.dataTransfer.imageAsFile.enabled
2614 # User interaction timer interval, in ms
2615 - name: dom.events.user_interaction_interval
2620 # Whether to try to compress touchmove events on IPC layer.
2621 - name: dom.events.compress.touchmove
2626 # In addition to the above IPC layer compresison, allow touchmove
2627 # events to be further coalesced in the child side after they
2629 - name: dom.events.coalesce.touchmove
2634 # Allow mousemove events to be coalesced in the child side after they are sent.
2635 - name: dom.events.coalesce.mousemove
2640 # Expose Window.TextEvent and make the builtin editors dispatch `textInput`
2641 # event as a default action of `beforeinput`.
2642 - name: dom.events.textevent.enabled
2647 # Whether to expose test interfaces of various sorts
2648 - name: dom.expose_test_interfaces
2653 - name: dom.fetchKeepalive.enabled
2654 type: RelaxedAtomicBool
2658 - name: dom.fetchObserver.enabled
2659 type: RelaxedAtomicBool
2663 # Whether to set the incremental flag on the top level document's
2665 - name: dom.document_priority.incremental
2666 type: RelaxedAtomicBool
2670 # Allow the content process to create a File from a path. This is allowed just
2671 # on parent process, on 'file' Content process, or for testing.
2672 - name: dom.file.createInChild
2673 type: RelaxedAtomicBool
2677 # Support @autocomplete values for form autofill feature.
2678 - name: dom.forms.autocomplete.formautofill
2683 # Only trusted submit event could trigger form submission.
2684 - name: dom.forms.submit.trusted_event_only
2689 # This pref just controls whether we format the number with grouping separator
2690 # characters when the internal value is set or updated. It does not stop the
2691 # user from typing in a number and using grouping separators.
2692 - name: dom.forms.number.grouping
2697 # The interval in milliseconds between two Escape key events where the second
2698 # key event will exit fullscreen, even if it is consumed.
2699 - name: dom.fullscreen.force_exit_on_multiple_escape_interval
2704 # Whether the Gamepad API is enabled
2705 - name: dom.gamepad.enabled
2710 # Is Gamepad Extension API enabled?
2711 - name: dom.gamepad.extensions.enabled
2716 # Is LightIndicator API enabled in Gamepad Extension API?
2717 - name: dom.gamepad.extensions.lightindicator
2722 # Is MultiTouch API enabled in Gamepad Extension API?
2723 - name: dom.gamepad.extensions.multitouch
2728 # Is Gamepad vibrate haptic feedback function enabled?
2729 - name: dom.gamepad.haptic_feedback.enabled
2734 - name: dom.gamepad.non_standard_events.enabled
2736 value: @IS_NOT_RELEASE_OR_BETA@
2739 - name: dom.gamepad.test.enabled
2740 type: RelaxedAtomicBool
2744 # W3C draft ImageCapture API
2745 - name: dom.imagecapture.enabled
2750 # The root margin for image lazy loading, defined as four (value, percentage)
2752 - name: dom.image-lazy-loading.root-margin.top
2757 - name: dom.image-lazy-loading.root-margin.top.percentage
2762 - name: dom.image-lazy-loading.root-margin.bottom
2767 - name: dom.image-lazy-loading.root-margin.bottom.percentage
2772 - name: dom.image-lazy-loading.root-margin.left
2777 - name: dom.image-lazy-loading.root-margin.left.percentage
2782 - name: dom.image-lazy-loading.root-margin.right
2787 - name: dom.image-lazy-loading.root-margin.right.percentage
2792 # Enable indexedDB in private browsing mode with encryption
2793 - name: dom.indexedDB.privateBrowsing.enabled
2794 type: RelaxedAtomicBool
2798 # A pref that is used to slow down connection idle maintenance for testing
2800 - name: dom.indexedDB.connectionIdleMaintenance.pauseOnConnectionThreadMs
2801 type: RelaxedAtomicUint32
2805 # Whether or not indexedDB test mode is enabled.
2806 - name: dom.indexedDB.testing
2807 type: RelaxedAtomicBool
2811 # Whether or not indexedDB experimental features are enabled.
2812 - name: dom.indexedDB.experimental
2813 type: RelaxedAtomicBool
2817 # Whether or not indexedDB preprocessing is enabled.
2818 - name: dom.indexedDB.preprocessing
2819 type: RelaxedAtomicBool
2823 # How innerWidth / innerHeight return rounded or fractional sizes.
2825 # 0 or others: Do not round at all.
2829 # NOTE(emilio): Fractional sizes are not web-compatible, see the regressions
2830 # from bug 1676843, but we want to expose the fractional sizes (probably in
2831 # another API) one way or another, see [1], so we're keeping the code for the
2834 # [1]: https://github.com/w3c/csswg-drafts/issues/5260
2835 - name: dom.innerSize.rounding
2840 # Whether we conform to Input Events Level 1 or Input Events Level 2.
2841 # true: conforming to Level 1
2842 # false: conforming to Level 2
2843 - name: dom.input_events.conform_to_level_1
2848 # Whether we allow BrowsingContextGroup to suspend input events
2849 - name: dom.input_events.canSuspendInBCG.enabled
2854 # The minimum number of ticks after page navigation
2855 # that need to occur before user input events are allowed to be handled.
2856 - name: dom.input_events.security.minNumTicks
2861 # The minimum elapsed time (in milliseconds) after page navigation
2862 # for user input events are allowed to be handled.
2863 - name: dom.input_events.security.minTimeElapsedInMS
2868 # By default user input handling delay is disabled (mostly) for testing ,
2869 # this is used for forcefully enable it for certain tests.
2870 - name: dom.input_events.security.isUserInputHandlingDelayTest
2875 # The maximum time (milliseconds) we reserve for handling input events in each
2877 - name: dom.input_event_queue.duration.max
2882 # How often to check for CPOW timeouts (ms). CPOWs are only timed
2883 # out by the hang monitor.
2884 - name: dom.ipc.cpow.timeout
2889 #ifdef MOZ_ENABLE_FORKSERVER
2890 - name: dom.ipc.forkserver.enable
2896 #ifdef MOZ_WIDGET_GTK
2898 # Avoid the use of GTK in content processes if possible, by running
2899 # them in headless mode, to conserve resources (e.g., connections to
2900 # the X server). See the usage in `ContentParent.cpp` for the full
2901 # definition of "if possible".
2903 # This does not affect sandbox policies; content processes may still
2904 # dynamically connect to the display server for, e.g., WebGL.
2905 - name: dom.ipc.avoid-gtk
2911 # Whether or not to collect a paired minidump when force-killing a
2913 - name: dom.ipc.tabs.createKillHardCrashReports
2915 value: @IS_NOT_RELEASE_OR_BETA@
2918 # Enable e10s hang monitoring (slow script checking and plugin hang detection).
2919 - name: dom.ipc.processHangMonitor
2924 # Whether we report such process hangs
2925 - name: dom.ipc.reportProcessHangs
2926 type: RelaxedAtomicBool
2927 # Don't report hangs in DEBUG builds. They're too slow and often a
2928 # debugger is attached.
2936 # Process launch delay (in milliseconds).
2937 - name: dom.ipc.processPrelaunch.delayMs
2939 # This number is fairly arbitrary ... the intention is to put off
2940 # launching another app process until the last one has finished
2941 # loading its content, to reduce CPU/memory/IO contention.
2945 - name: dom.ipc.processPrelaunch.startupDelayMs
2947 # delay starting content processes for a short time after browser start
2948 # to provide time for the UI to come up
2952 # Process preallocation cache
2953 # Only used in fission; in e10s we use 1 always
2954 - name: dom.ipc.processPrelaunch.fission.number
2959 # Limit preallocated processes below this memory size (in MB)
2960 - name: dom.ipc.processPrelaunch.lowmem_mb
2965 - name: dom.ipc.processPriorityManager.enabled
2970 - name: dom.ipc.processPriorityManager.testMode
2975 - name: dom.ipc.processPriorityManager.backgroundPerceivableGracePeriodMS
2977 #if defined(MOZ_WIDGET_ANDROID) && defined(NIGHTLY_BUILD)
2984 - name: dom.ipc.processPriorityManager.backgroundGracePeriodMS
2986 #if defined(MOZ_WIDGET_ANDROID) && defined(NIGHTLY_BUILD)
2994 - name: dom.ipc.processPriorityManager.backgroundUsesEcoQoS
3000 # Support for input type=month, type=week. By default, disabled.
3001 - name: dom.forms.datetime.others
3006 - name: dom.forms.always_allow_pointer_events.enabled
3011 # Is support for key events and focus events on disabled elements enabled?
3012 - name: dom.forms.always_allow_key_and_focus_events.enabled
3014 value: @IS_EARLY_BETA_OR_EARLIER@
3017 # Whether to disable only the descendants or the parent fieldset element too
3018 # Note that this still allows it to be selected by `:disable`.
3019 - name: dom.forms.fieldset_disable_only_descendants.enabled
3021 value: @IS_EARLY_BETA_OR_EARLIER@
3024 # Whether to allow or disallow web apps to cancel `beforeinput` events caused
3025 # by MozEditableElement#setUserInput() which is used by autocomplete, autofill
3026 # and password manager.
3027 - name: dom.input_event.allow_to_cancel_set_user_input
3032 # How long a content process can take before closing its IPC channel
3033 # after shutdown is initiated. If the process exceeds the timeout,
3034 # we fear the worst and kill it.
3035 - name: dom.ipc.tabs.shutdownTimeoutSecs
3036 type: RelaxedAtomicUint32
3037 #if !defined(DEBUG) && !defined(MOZ_ASAN) && !defined(MOZ_VALGRIND) && !defined(MOZ_TSAN)
3044 # Whether a native event loop should be used in the content process.
3045 - name: dom.ipc.useNativeEventProcessing.content
3046 type: RelaxedAtomicBool
3047 #if defined(XP_WIN) || defined(XP_MACOSX)
3054 # If this is true, TextEventDispatcher dispatches keydown and keyup events
3055 # even during composition (keypress events are never fired during composition
3056 # even if this is true).
3057 - name: dom.keyboardevent.dispatch_during_composition
3062 # Enable/disable KeyboardEvent.initKeyEvent function
3063 - name: dom.keyboardevent.init_key_event.enabled
3068 # Enable/disable KeyboardEvent.initKeyEvent function in addons even if it's
3070 - name: dom.keyboardevent.init_key_event.enabled_in_addons
3072 value: @IS_NOT_NIGHTLY_BUILD@
3075 # If this is true, keypress events for non-printable keys are dispatched only
3076 # for event listeners of the system event group in web content.
3077 - name: dom.keyboardevent.keypress.dispatch_non_printable_keys_only_system_group_in_content
3082 # If this is true, "keypress" event's keyCode value and charCode value always
3083 # become same if the event is not created/initialized by JS.
3084 - name: dom.keyboardevent.keypress.set_keycode_and_charcode_to_same_value
3089 # Whether "W3C Web Manifest" processing is enabled
3090 - name: dom.manifest.enabled
3095 # Enable mapped array buffer by default.
3096 - name: dom.mapped_arraybuffer.enabled
3101 # Autoplay Policy Detection https://w3c.github.io/autoplay/
3102 - name: dom.media.autoplay-policy-detection.enabled
3103 type: RelaxedAtomicBool
3108 - name: dom.media.webcodecs.enabled
3109 type: RelaxedAtomicBool
3110 value: @IS_NIGHTLY_BUILD@
3113 # Number of seconds of very quiet or silent audio before considering the audio
3115 - name: dom.media.silence_duration_for_audibility
3120 # Inform mozjemalloc that the foreground content processes can keep more dirty
3122 - name: dom.memory.foreground_content_processes_have_larger_page_cache
3128 # 1 free dirty mozjemalloc pages
3129 # 2 trigger memory-pressure/heap-minimize
3130 # 3 trigger memory-pressure/low-memory
3131 - name: dom.memory.memory_pressure_on_background
3136 # Enable meta-viewport support in remote APZ-enabled frames.
3137 - name: dom.meta-viewport.enabled
3138 type: RelaxedAtomicBool
3142 # Timeout clamp in ms for timeouts we clamp.
3143 - name: dom.min_timeout_value
3144 type: RelaxedAtomicInt32
3148 # Timeout clamp in ms for background windows.
3149 - name: dom.min_background_timeout_value
3154 # Timeout clamp in ms for background windows when throttling isn't enabled.
3155 - name: dom.min_background_timeout_value_without_budget_throttling
3160 # Are missing-property use counters for certain DOM attributes enabled?
3161 - name: dom.missing_prop_counters.enabled
3166 # Limit of location change caused by content scripts in a time span per
3167 # BrowsingContext. This includes calls to History and Location APIs.
3168 - name: dom.navigation.locationChangeRateLimit.count
3173 # Time span in seconds for location change rate limit.
3174 - name: dom.navigation.locationChangeRateLimit.timespan
3179 # Whether to allow <object> and <embed> element loads to be retargeted to an
3180 # external application or download.
3181 - name: dom.navigation.object_embed.allow_retargeting
3186 # Network Information API
3187 # This feature is not available on Firefox desktop. It exposes too much
3188 # user information. Let's be consistent and disable it on Android.
3189 # But let's keep it around in case it becomes necessary for webcompat
3191 # https://bugzilla.mozilla.org/show_bug.cgi?id=1637922
3192 - name: dom.netinfo.enabled
3193 type: RelaxedAtomicBool
3197 # Whether we should open noopener links in a new process.
3198 - name: dom.noopener.newprocess.enabled
3203 # Whether origin trials are enabled.
3204 - name: dom.origin-trials.enabled
3209 # Whether we use the test key to verify tokens.
3210 - name: dom.origin-trials.test-key.enabled
3215 # Origin trial state for "TestTrial".
3216 # 0: normal, 1: always-enabled, 2: always-disabled
3217 - name: dom.origin-trials.test-trial.state
3218 type: RelaxedAtomicInt32
3222 # Origin trial state for COEP: Credentialless.
3223 # 0: normal, 1: always-enabled, 2: always-disabled
3224 - name: dom.origin-trials.coep-credentialless.state
3225 type: RelaxedAtomicInt32
3229 # Origin trial state for Private Attribution
3230 # 0: normal, 1: always-enabled, 2: always-disabled
3231 - name: dom.origin-trials.private-attribution.state
3232 type: RelaxedAtomicInt32
3236 # User pref to control whether Private Attribution
3237 # information should be collected / submitted.
3238 - name: dom.private-attribution.submission.enabled
3243 # Is support for Window.paintWorklet enabled?
3244 - name: dom.paintWorklet.enabled
3249 # Enable/disable the PaymentRequest API
3250 - name: dom.payments.request.enabled
3255 # Whether a user gesture is required to call PaymentRequest.prototype.show().
3256 - name: dom.payments.request.user_interaction_required
3261 # Time in milliseconds for PaymentResponse to wait for
3262 # the Web page to call complete().
3263 - name: dom.payments.response.timeout
3268 # Enable printing performance marks/measures to log
3269 - name: dom.performance.enable_user_timing_logging
3270 type: RelaxedAtomicBool
3274 # Enable notification of performance timing
3275 - name: dom.performance.enable_notify_performance_timing
3280 # Is support for PerformanceTiming.timeToContentfulPaint enabled?
3281 - name: dom.performance.time_to_contentful_paint.enabled
3286 # Is support for PerformanceTiming.timeToDOMContentFlushed enabled?
3287 - name: dom.performance.time_to_dom_content_flushed.enabled
3292 # Is support for PerformanceTiming.timeToFirstInteractive enabled?
3293 - name: dom.performance.time_to_first_interactive.enabled
3298 # Is support for PerformanceTiming.timeToNonBlankPaint enabled?
3299 - name: dom.performance.time_to_non_blank_paint.enabled
3304 # Is support for Permissions.revoke enabled?
3305 - name: dom.permissions.revoke.enable
3310 # Is support for Element.requestPointerLock enabled?
3311 # This is added for accessibility purpose. When user has no way to exit
3312 # pointer lock (e.g. no keyboard available), they can use this pref to
3313 # disable the Pointer Lock API altogether.
3314 - name: dom.pointer-lock.enabled
3319 # re-SAB: Whether to allow postMessage of a SharedArrayBuffer if various
3320 # preconditions related to COOP and COEP are met
3321 - name: dom.postMessage.sharedArrayBuffer.withCOOP_COEP
3326 # Overridden in all.js on RELEASE_OR_BETA in order to add the locked attribute.
3327 - name: dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled
3328 type: RelaxedAtomicBool
3332 # Should we speculatively prefetch dns for anchor elements on http documents
3333 - name: dom.prefetch_dns_for_anchor_http_document
3338 # Should we speculatively prefetch dns for anchor elements on https documents
3339 - name: dom.prefetch_dns_for_anchor_https_document
3344 # This currently only affects XHTML. For XUL the cache is always allowed.
3345 - name: dom.prototype_document_cache.enabled
3351 - name: dom.push.enabled
3352 type: RelaxedAtomicBool
3356 # This enables the SVGPathSeg APIs
3357 - name: dom.svg.pathSeg.enabled
3362 # Preference that is primarily used for testing of problematic file paths.
3363 # It can also be used for switching between different storage directories, but
3364 # such feature is not officially supported.
3365 - name: dom.quotaManager.storageName
3370 # An upper limit for the "age" of an origin. Any origin which is older than the
3371 # threshold is considered as unaccessed. That doesn't necessarily mean that
3372 # such origins will be immediatelly archived. They will be archived only when
3373 # dom.quotaManager.checkQuotaInfoLoadTime is true and loading of quota info
3374 # takes a long time (dom.quotaManager.longQuotaInfoLoadTimeThresholdMs is used
3375 # to decide what is a long quota info load time).
3376 - name: dom.quotaManager.unaccessedForLongTimeThresholdSec
3377 type: RelaxedAtomicUint32
3378 value: 33696000 # 13 months
3381 # Should we try to load origin information from the cache?
3382 # See bug 1563023 for more details.
3383 - name: dom.quotaManager.loadQuotaFromCache
3384 type: RelaxedAtomicBool
3388 # Should we check build ID as part of the cache validation?
3389 # When enabled, the cache is invalidated on any upgrade (or downgrade),
3390 # ensuring that changes in how quota usage is calculated can't cause
3391 # inconsistencies at the cost of a slower initialization. Currently, this
3392 # should only be set to false in tests using a packaged profile that inherently
3393 # includes a build id different from the building running the tests. In the
3394 # future this may be set to false if we are confident that we have sufficiently
3395 # thorough schema versioning.
3396 - name: dom.quotaManager.caching.checkBuildId
3397 type: RelaxedAtomicBool
3401 # Should we check quota info load time and eventually archive some unaccessed
3402 # origins if loading of quota info takes a long time ?
3403 - name: dom.quotaManager.checkQuotaInfoLoadTime
3404 type: RelaxedAtomicBool
3408 # An upper limit for quota info load time, anything which takes longer than the
3409 # threshold is considered as long quota info load time.
3410 - name: dom.quotaManager.longQuotaInfoLoadTimeThresholdMs
3411 type: RelaxedAtomicUint32
3412 value: 21000 # 21 seconds
3415 # Preference that users can set to override temporary storage smart limit
3417 - name: dom.quotaManager.temporaryStorage.fixedLimit
3418 type: RelaxedAtomicInt32
3422 # A pref that is used to enable testing features.
3423 - name: dom.quotaManager.testing
3424 type: SequentiallyConsistentAtomicBool
3429 # Preference that is used to set nsILocalFileWin::useDOSDevicePathSyntax
3430 # attribute for all local file instances created by QuotaManager and its
3431 # clients. The value of this preference is cached so changing the preference
3432 # during runtime has no effect.
3433 # See bug 1626846 for setting this to false by default.
3434 - name: dom.quotaManager.useDOSDevicePathSyntax
3435 type: RelaxedAtomicBool
3438 do_not_use_directly: true
3440 # Preference that is used to enable the hack for overrriding xFullPathname in
3442 - name: dom.quotaManager.overrideXFullPathname
3443 type: RelaxedAtomicBool
3446 #elif defined(XP_UNIX)
3447 # Preference that is used to enable the overriding of Unix xFullPathname
3448 # implementation in QuotaVFS.
3449 - name: dom.quotaManager.overrideXFullPathnameUnix
3450 type: RelaxedAtomicBool
3455 # How many times we should retry directory removal or renaming if access was
3457 - name: dom.quotaManager.directoryRemovalOrRenaming.maxRetries
3458 type: RelaxedAtomicUint32
3466 # How long we should wait between retries (in milliseconds)?
3467 - name: dom.quotaManager.directoryRemovalOrRenaming.delayMs
3468 type: RelaxedAtomicUint32
3472 #ifdef MOZ_BACKGROUNDTASKS
3473 # Use a Background Task to delete files at shutdown.
3474 - name: dom.quotaManager.backgroundTask.enabled
3477 # Needs to figure out how to prevent bug 1827486.
3485 # Use to control to dump CheckedUnsafePtr creation stack and assignment stacks.
3486 - name: dom.checkedUnsafePtr.dumpStacks.enabled
3487 type: RelaxedAtomicBool
3491 # Determines within what distance of a tick mark, in pixels, dragging an input
3492 # range range will snap the range's value to that tick mark. By default, this is
3493 # half the default width of the range thumb.
3494 - name: dom.range_element.magnet_effect_threshold
3500 - name: dom.reporting.enabled
3501 type: RelaxedAtomicBool
3505 - name: dom.reporting.testing.enabled
3506 type: RelaxedAtomicBool
3510 - name: dom.reporting.featurePolicy.enabled
3511 type: RelaxedAtomicBool
3515 - name: dom.reporting.crash.enabled
3516 type: RelaxedAtomicBool
3520 - name: dom.reporting.header.enabled
3521 type: RelaxedAtomicBool
3525 # In seconds. The timeout to remove not-active report-to endpoints.
3526 - name: dom.reporting.cleanup.timeout
3531 # Any X seconds the reports are dispatched to endpoints.
3532 - name: dom.reporting.delivering.timeout
3537 # How many times the delivering of a report should be tried.
3538 - name: dom.reporting.delivering.maxFailures
3543 # How many reports should be stored in the report queue before being delivered.
3544 - name: dom.reporting.delivering.maxReports
3549 # Enable Screen Orientation lock
3550 - name: dom.screenorientation.allow-lock
3552 value: @IS_NIGHTLY_BUILD@
3555 # Enable Screen Wake Lock API
3556 - name: dom.screenwakelock.enabled
3561 # Whether to enable the JavaScript start-up cache. This causes one of the first
3562 # execution to record the bytecode of the JavaScript function used, and save it
3563 # in the existing cache entry. On the following loads of the same script, the
3564 # bytecode would be loaded from the cache instead of being generated once more.
3565 - name: dom.script_loader.bytecode_cache.enabled
3570 # Ignore the heuristics of the bytecode cache, and always record on the first
3571 # visit. (used for testing purposes).
3573 # Choose one strategy to use to decide when the bytecode should be encoded and
3574 # saved. The following strategies are available right now:
3575 # * -2 : (reader mode) The bytecode cache would be read, but it would never
3577 # * -1 : (eager mode) The bytecode would be saved as soon as the script is
3578 # seen for the first time, independently of the size or last access
3580 # * 0 : (default) The bytecode would be saved in order to minimize the
3583 # Other values might lead to experimental strategies. For more details, have a
3584 # look at: ScriptLoader::ShouldCacheBytecode function.
3585 - name: dom.script_loader.bytecode_cache.strategy
3590 # Select which parse/delazification strategy should be used while parsing
3591 # scripts off-main-thread. (see CompileOptions.h, DelazificationOption enum)
3593 # 0: On-demand only. Delazification will be triggered only on the main thread
3594 # before the execution of the function.
3596 # 1: Compare on-demand delazification (= 0) with concurrent depth-first
3597 # delazification (= 2).
3599 # 2: Depth-first. Delazify all functions off-thread in the order of appearance
3602 # 3: Large-first. Delazify all functions off-thread starting with the largest
3603 # functions first, and the smallest as the last one to be delazified, where
3604 # the size of function is measured in bytes between the start to the end of
3607 # 255: Parse everything eagerly, from the first parse. All functions are parsed
3608 # at the same time as the top-level of a file.
3609 - name: dom.script_loader.delazification.strategy
3614 # Maximum total size after which the delazification strategy, specified by
3615 # `dom.script_loader.delazification.strategy`, is no longer applied, and the
3616 # on-demand strategy is used by default.
3618 # -1 disable the threshold, and delazification strategy is applied to all
3621 # Default value is 10MB for utf8 scripts.
3622 - name: dom.script_loader.delazification.max_size
3627 # Minimum memory, in GB, required to enable delazification strategy, specified
3628 # by `dom.script_loader.delazification.strategy`. Otherwise, the on-demand
3629 # delazification strategy is used.
3630 - name: dom.script_loader.delazification.min_mem
3635 # Enable speculative off main thread parsing of external scripts as
3636 # soon as they are fetched.
3637 - name: dom.script_loader.external_scripts.speculative_omt_parse.enabled
3642 # Speculatively compile non parser inserted scripts
3643 - name: dom.script_loader.external_scripts.speculate_non_parser_inserted.enabled
3648 # Speculatively compile async scripts
3649 - name: dom.script_loader.external_scripts.speculate_async.enabled
3654 # Speculatively compile link preload scripts
3655 - name: dom.script_loader.external_scripts.speculate_link_preload.enabled
3660 - name: dom.securecontext.allowlist_onions
3665 # This pref enables the featurePolicy header support.
3666 - name: dom.security.featurePolicy.header.enabled
3671 - name: dom.security.featurePolicy.experimental.enabled
3676 # Expose the 'featurePolicy' attribute in document and HTMLIFrameElement
3677 - name: dom.security.featurePolicy.webidl.enabled
3682 # Perform IPC based Principal vetting in ContentParent
3683 - name: dom.security.enforceIPCBasedPrincipalVetting
3684 type: RelaxedAtomicBool
3688 # For testing purposes only: Flipping this pref to true allows
3689 # to skip the allowlist for about: pages and do not ship with a
3690 # CSP and NS_ASSERT right away.
3691 - name: dom.security.skip_about_page_csp_allowlist_and_assert
3692 type: RelaxedAtomicBool
3696 # For testing purposes only: Flipping this pref to true allows
3697 # to skip the assertion that every about page ships with a CSP.
3698 - name: dom.security.skip_about_page_has_csp_assert
3699 type: RelaxedAtomicBool
3703 # For testing purposes only: Flipping this pref to true allows
3704 # to skip the assertion that HTML fragments (e.g. innerHTML) can
3705 # not be used within chrome code or about: pages.
3706 - name: dom.security.skip_html_fragment_assertion
3707 type: RelaxedAtomicBool
3711 # For testing purposes only; Flipping this pref to true allows
3712 # to skip the assertion that remote scripts can not be loaded
3713 # in system privileged contexts.
3714 - name: dom.security.skip_remote_script_assertion_in_system_priv_context
3715 type: RelaxedAtomicBool
3719 # If and only if true, support for Trusted Types
3720 # (https://w3c.github.io/trusted-types/dist/spec/) is enabled.
3721 - name: dom.security.trusted_types.enabled
3722 type: RelaxedAtomicBool
3726 # If true, all content requests will get upgraded to HTTPS://
3727 # (some Firefox functionality requests, like OCSP will not be affected)
3728 - name: dom.security.https_only_mode
3729 type: RelaxedAtomicBool
3733 # If true, all content requests in Private Browsing Mode will get
3734 # upgraded to HTTPS://. (If dom.security.https_only_mode is set
3735 # to true then this pref has no effect)
3736 - name: dom.security.https_only_mode_pbm
3737 type: RelaxedAtomicBool
3741 # If true, sends http background request for top-level sites to
3742 # counter long timeouts.
3743 - name: dom.security.https_only_mode_send_http_background_request
3744 type: RelaxedAtomicBool
3748 # Time limit, in milliseconds, before sending the http background
3749 # request for HTTPS-Only and HTTPS-First
3750 - name: dom.security.https_only_fire_http_request_background_timer_ms
3751 type: RelaxedAtomicUint32
3755 # If true, tries to break upgrade downgrade cycles where https-only tries
3756 # to upgrad ethe connection, but the website tries to downgrade again.
3757 - name: dom.security.https_only_mode_break_upgrade_downgrade_endless_loop
3758 type: RelaxedAtomicBool
3762 # If true and HTTPS-only mode is enabled, requests
3763 # to local IP addresses are also upgraded
3764 - name: dom.security.https_only_mode.upgrade_local
3765 type: RelaxedAtomicBool
3769 # If true and HTTPS-only mode is enabled, requests
3770 # to .onion hosts are also upgraded
3771 - name: dom.security.https_only_mode.upgrade_onion
3772 type: RelaxedAtomicBool
3776 # WARNING: Don't ever update that pref manually! It is only used
3777 # for telemetry purposes and allows to reason about retention of
3778 # the pref dom.security.https_only_mode from above.
3779 - name: dom.security.https_only_mode_ever_enabled
3780 type: RelaxedAtomicBool
3784 # WARNING: Don't ever update that pref manually! It is only used
3785 # for telemetry purposes and allows to reason about retention of
3786 # the pref dom.security.https_only_mode_pbm from above.
3787 - name: dom.security.https_only_mode_ever_enabled_pbm
3788 type: RelaxedAtomicBool
3792 # If true checks for secure www connections when https fails
3793 # and gives the user suggestions on the error page
3794 - name: dom.security.https_only_mode_error_page_user_suggestions
3795 type: RelaxedAtomicBool
3799 # If true, top-level request will get upgraded to HTTPS and
3800 # downgraded again if the request failed.
3801 - name: dom.security.https_first
3802 type: RelaxedAtomicBool
3806 # If true, top-level requests in Private Browsing Mode will get
3807 # upgraded to HTTPS. (If dom.security.https_first
3808 # is set to true then this pref has no effect)
3809 - name: dom.security.https_first_pbm
3810 type: RelaxedAtomicBool
3814 # If true, top-level requests that are initiated from the address
3815 # bar and with an empty scheme get upgraded to HTTPS
3817 - name: dom.security.https_first_schemeless
3818 type: RelaxedAtomicBool
3819 value: @IS_EARLY_BETA_OR_EARLIER@
3822 # If true, will add a special temporary HTTPS-First exception for a site when a
3823 # HTTPS-First upgrade fails.
3824 - name: dom.security.https_first_add_exception_on_failiure
3825 type: RelaxedAtomicBool
3829 - name: dom.security.unexpected_system_load_telemetry_enabled
3834 # pref controls `Sanitizer` API being exposed
3835 # https://wicg.github.io/sanitizer-api/
3836 - name: dom.security.sanitizer.enabled
3841 # Pref that controls the Element.setHTML API idenpendetly of the sanitizer
3843 - name: dom.security.setHTML.enabled
3848 # Logs elements and attributes removed by the Sanitizer API to the console.
3849 - name: dom.security.sanitizer.logging
3854 # pref controls `identity` credentials being exposed
3855 - name: dom.security.credentialmanagement.identity.enabled
3860 # pref controls "heavyweight" network discoverable `identity` credentials being exposed
3861 - name: dom.security.credentialmanagement.identity.heavyweight.enabled
3866 # pref controls storable "lightweight" `identity` credentials being exposed
3867 - name: dom.security.credentialmanagement.identity.lightweight.enabled
3872 # pref controls `identity` credential UI for testing. When true, UI is not shown and
3873 # the first option in the account and provider lists are chosen
3874 - name: dom.security.credentialmanagement.identity.select_first_in_ui_lists
3879 # pref controls `identity` credential platform behavior for testing. When true,
3880 # the .well-known file check is not performed.
3881 - name: dom.security.credentialmanagement.identity.test_ignore_well_known
3886 # pref controls whether we should delay identity credential rejections at all
3887 - name: dom.security.credentialmanagement.identity.reject_delay.enabled
3892 # pref controls how long we should delay identity credential rejections if enabled
3893 - name: dom.security.credentialmanagement.identity.reject_delay.duration_ms
3898 # Enforce origin check whenever a content process tries to set a document URI
3899 - name: dom.security.setdocumenturi
3904 # Whether or not selection events on text controls are enabled.
3905 - name: dom.select_events.textcontrols.selectionchange.enabled
3910 - name: dom.select_events.textcontrols.selectstart.enabled
3915 - name: dom.select.showPicker.enabled
3920 - name: dom.send_after_paint_to_content
3925 - name: dom.separate_event_queue_for_post_message.enabled
3930 - name: dom.arena_allocator.enabled
3935 - name: dom.serviceWorkers.enabled
3936 type: RelaxedAtomicBool
3940 - name: dom.serviceWorkers.navigationPreload.enabled
3941 type: RelaxedAtomicBool
3945 # Mitigates ServiceWorker navigation faults by bypassing the ServiceWorker on
3946 # navigation faults. This is more extensive than just resetting interception
3947 # because we also mark the page as uncontrolled so that subresources will not
3948 # go to the ServiceWorker either.
3949 - name: dom.serviceWorkers.mitigations.bypass_on_fault
3954 # Additional ServiceWorker navigation mitigation control to unregister the
3955 # ServiceWorker after multiple faults are encountered. The mitigation is
3956 # disabled when this is set to zero, otherwise this is the number of faults that
3957 # need to occur for a specific ServiceWorker before it will be unregistered.
3958 - name: dom.serviceWorkers.mitigations.navigation_fault_threshold
3963 # This is the group usage head room for service workers.
3964 # The quota usage mitigation algorithm uses this preference to determine if the
3965 # origin or also group data should be cleared or not.
3966 # The default value is 400 MiB.
3967 - name: dom.serviceWorkers.mitigations.group_usage_headroom_kb
3972 - name: dom.serviceWorkers.testing.enabled
3973 type: RelaxedAtomicBool
3977 # Whether ServiceWorkerManager should persist the service worker
3978 # registered by temporary installed extension (only meant to be used
3979 # for testing purpose, to make it easier to test some particular scenario
3980 # with a temporary installed addon, which doesn't need to be signed to be
3981 # installed on release channel builds).
3982 - name: dom.serviceWorkers.testing.persistTemporarilyInstalledAddons
3983 type: RelaxedAtomicBool
3987 - name: dom.storage.enabled
3988 type: RelaxedAtomicBool
3992 # ReadableStream.from(asyncIterable)
3993 - name: dom.streams.from.enabled
3994 type: RelaxedAtomicBool
3998 - name: dom.workers.pFetch.enabled
3999 type: RelaxedAtomicBool
4003 - name: dom.workers.importScripts.enforceStrictMimeType
4004 type: RelaxedAtomicBool
4008 # Is support for modules (new Worker(..., {type: "module"})) enabled for workers?
4009 - name: dom.workers.modules.enabled
4010 type: RelaxedAtomicBool
4014 - name: dom.workers.serialized-sab-access
4015 type: RelaxedAtomicBool
4019 # Enable stronger diagnostics on worker shutdown.
4020 # If this is true, we will potentially run an extra GCCC when a worker should
4021 # exit its DoRunLoop but holds any WorkerRef and we will MOZ_DIAGNOSTIC_ASSERT
4022 # when during that extra GCCC such a WorkerRef is freed.
4023 - name: dom.workers.GCCC_on_potentially_last_event
4024 type: RelaxedAtomicBool
4025 #if defined(FUZZING) || defined(DEBUG)
4032 - name: dom.sitepermsaddon-provider.enabled
4034 value: @IS_NOT_ANDROID@
4037 # Whether automatic storage access granting heuristics should be turned on.
4038 - name: dom.storage_access.auto_grants
4043 - name: dom.storage_access.auto_grants.delayed
4048 # Storage-access API.
4049 - name: dom.storage_access.enabled
4054 # Forward-Declared Storage-access API.
4055 - name: dom.storage_access.forward_declared.enabled
4060 # How long the Forward-Declared Storage-access API allows between pair requests
4062 - name: dom.storage_access.forward_declared.lifetime
4067 # The maximum number of origins that a given third-party tracker is allowed
4068 # to have concurrent access to before the user is presented with a storage
4069 # access prompt. Only effective when the auto_grants pref is turned on.
4070 - name: dom.storage_access.max_concurrent_auto_grants
4075 - name: dom.storage_access.frame_only
4080 # Only grant storage access to secure contexts.
4081 - name: dom.storage_access.dont_grant_insecure_contexts
4082 type: RelaxedAtomicBool
4086 # Whether the File System API is enabled
4087 - name: dom.fs.enabled
4088 type: RelaxedAtomicBool
4092 # Whether the WritableFileStream is enabled or disabled.
4093 - name: dom.fs.writable_file_stream.enabled
4094 type: RelaxedAtomicBool
4098 # LocalStorage data limit as determined by summing up the lengths of all string
4099 # keys and values. This is consistent with the legacy implementation and other
4100 # browser engines. This value should really only ever change in unit testing
4101 # where being able to lower it makes it easier for us to test certain edge
4102 # cases. Measured in KiBs.
4103 - name: dom.storage.default_quota
4104 type: RelaxedAtomicUint32
4105 # Only allow relatively small amounts of data since performance of the
4106 # synchronous IO is very bad. We are enforcing simple per-origin quota only.
4110 # Per-site quota for legacy LocalStorage implementation.
4111 - name: dom.storage.default_site_quota
4112 type: RelaxedAtomicUint32
4116 # Whether or not the unsupported legacy implemenation should be enabled. Please
4117 # don't advertise this pref as a way for disabling LSNG. This pref is intended
4118 # for internal testing only and will be removed in near future. Accidental
4119 # disabling of LSNG can lead to a data loss in a combination with disabled
4120 # shadow writes. Disabling of shadow writes is the initial step towards
4121 # removing legacy implementation and will be done soon.
4122 - name: dom.storage.enable_unsupported_legacy_implementation
4123 type: RelaxedAtomicBool
4126 do_not_use_directly: true
4128 # The amount of snapshot peak usage which is attempted to be pre-incremented
4129 # during snapshot creation.
4130 - name: dom.storage.snapshot_peak_usage.initial_preincrement
4131 type: RelaxedAtomicUint32
4135 # The amount of snapshot peak usage which is attempted to be pre-incremented
4136 # during snapshot creation if the LocalStorage usage was already close to the
4137 # limit (a fallback for dom.storage.snapshot_peak_usage.initial_preincrement).
4138 - name: dom.storage.snapshot_peak_usage.reduced_initial_preincrement
4139 type: RelaxedAtomicUint32
4143 # The amount of snapshot peak usage which is attempted to be pre-incremented
4144 # beyond the specific values which are subsequently requested after snapshot
4146 - name: dom.storage.snapshot_peak_usage.gradual_preincrement
4147 type: RelaxedAtomicUint32
4151 # The amount of snapshot peak usage which is attempted to be pre-incremented
4152 # beyond the specific values which are subsequently requested after snapshot
4153 # creation if the LocalStorage total usage was already close to the limit
4154 # (a fallback for dom.storage.snapshot_peak_usage.gradual_preincrement).
4155 - name: dom.storage.snapshot_peak_usage.reduced_gradual_preincrement
4156 type: RelaxedAtomicUint32
4160 # How long between a snapshot becomes idle and when we actually finish the
4161 # snapshot. This preference is only used when "dom.storage.snapshot_reusing"
4163 - name: dom.storage.snapshot_idle_timeout_ms
4168 # Is support for Storage test APIs enabled?
4169 - name: dom.storage.testing
4174 # For area and anchor elements with target=_blank and no rel set to
4176 - name: dom.targetBlankNoOpener.enabled
4181 # Is support for Selection.GetRangesForInterval enabled?
4182 - name: dom.testing.selection.GetRangesForInterval
4187 - name: dom.testing.structuredclonetester.enabled
4188 type: RelaxedAtomicBool
4192 - name: dom.testing.sync-content-blocking-notifications
4197 # To enable TestUtils interface on WPT
4198 - name: dom.testing.testutils.enabled
4199 type: RelaxedAtomicBool
4203 - name: dom.text_fragments.enabled
4204 type: RelaxedAtomicBool
4209 - name: dom.textMetrics.actualBoundingBox.enabled
4210 type: RelaxedAtomicBool
4214 - name: dom.textMetrics.baselines.enabled
4215 type: RelaxedAtomicBool
4219 - name: dom.textMetrics.emHeight.enabled
4220 type: RelaxedAtomicBool
4224 - name: dom.textMetrics.fontBoundingBox.enabled
4225 type: RelaxedAtomicBool
4229 # Time (in ms) that it takes to regenerate 1ms.
4230 - name: dom.timeout.background_budget_regeneration_rate
4235 # Time (in ms) that it takes to regenerate 1ms.
4236 - name: dom.timeout.foreground_budget_regeneration_rate
4241 # Maximum value (in ms) for the background budget. Only valid for
4242 # values greater than 0.
4243 - name: dom.timeout.background_throttling_max_budget
4248 # Maximum value (in ms) for the foreground budget. Only valid for
4249 # values greater than 0.
4250 - name: dom.timeout.foreground_throttling_max_budget
4255 # The maximum amount a timeout can be delayed by budget throttling.
4256 - name: dom.timeout.budget_throttling_max_delay
4261 # Turn on budget throttling by default.
4262 - name: dom.timeout.enable_budget_timer_throttling
4267 # Should we defer timeouts and intervals while loading a page. Released
4268 # on Idle or when the page is loaded.
4269 - name: dom.timeout.defer_during_load
4274 # Maximum amount of time in milliseconds consecutive setTimeout()/setInterval()
4275 # callback are allowed to run before yielding the event loop.
4276 - name: dom.timeout.max_consecutive_callbacks_ms
4281 # Maximum deferral time for setTimeout/Interval in milliseconds
4282 - name: dom.timeout.max_idle_defer_ms
4287 # Delay in ms from document load until we start throttling background timeouts.
4288 - name: dom.timeout.throttling_delay
4294 - name: dom.udpsocket.enabled
4299 # Whether to dump worker use counters
4300 - name: dom.use_counters.dump.worker
4301 type: RelaxedAtomicBool
4305 # Whether to dump document use counters
4306 - name: dom.use_counters.dump.document
4311 # Whether to dump page use counters
4312 - name: dom.use_counters.dump.page
4317 # Time limit, in milliseconds, for user gesture transient activation.
4318 - name: dom.user_activation.transient.timeout
4323 # Whether to treat the clicks on scrollbars as user interaction with web content.
4324 - name: dom.user_activation.ignore_scrollbars
4329 # Whether to shim a Components object on untrusted windows.
4330 - name: dom.use_components_shim
4332 value: @IS_NOT_NIGHTLY_BUILD@
4335 - name: dom.vibrator.enabled
4340 - name: dom.vibrator.max_vibrate_ms
4341 type: RelaxedAtomicUint32
4345 - name: dom.vibrator.max_vibrate_list_len
4346 type: RelaxedAtomicUint32
4350 # Is support for WebVR APIs enabled?
4351 # Disabled everywhere, but not removed.
4352 - name: dom.vr.enabled
4353 type: RelaxedAtomicBool
4357 # Should VR sessions always be reported as supported, without first
4358 # checking for VR runtimes? This will prevent permission prompts
4359 # from being suppressed on machines without VR runtimes and cause
4360 # navigator.xr.isSessionSupported to always report that immersive-vr
4362 - name: dom.vr.always_support_vr
4363 type: RelaxedAtomicBool
4367 # Should AR sessions always be reported as supported, without first
4368 # checking for AR runtimes? This will prevent permission prompts
4369 # from being suppressed on machines without AR runtimes and cause
4370 # navigator.xr.isSessionSupported to always report that immersive-ar
4372 - name: dom.vr.always_support_ar
4373 type: RelaxedAtomicBool
4377 # It is often desirable to automatically start vr presentation when
4378 # a user puts on the VR headset. This is done by emitting the
4379 # Window.vrdisplayactivate event when the headset's sensors detect it
4380 # being worn. This can result in WebVR content taking over the headset
4381 # when the user is using it outside the browser or inadvertent start of
4382 # presentation due to the high sensitivity of the proximity sensor in some
4383 # headsets, so it is off by default.
4384 - name: dom.vr.autoactivate.enabled
4385 type: RelaxedAtomicBool
4389 # Minimum number of milliseconds that the browser will wait before
4390 # attempting to poll again for connected VR controllers. The browser
4391 # will not attempt to poll for VR controllers until it needs to use them.
4392 - name: dom.vr.controller.enumerate.interval
4393 type: RelaxedAtomicInt32
4397 # The threshold value of trigger inputs for VR controllers.
4398 - name: dom.vr.controller_trigger_threshold
4403 # Minimum number of milliseconds that the browser will wait before
4404 # attempting to poll again for connected VR displays. The browser
4405 # will not attempt to poll for VR displays until it needs to use
4406 # them, such as when detecting a WebVR site.
4407 - name: dom.vr.display.enumerate.interval
4408 type: RelaxedAtomicInt32
4412 # The number of milliseconds since last frame start before triggering a new
4413 # frame. When content is failing to submit frames on time or the lower level
4414 # VR platform APIs are rejecting frames, it determines the rate at which RAF
4415 # callbacks will be called.
4416 - name: dom.vr.display.rafMaxDuration
4417 type: RelaxedAtomicUint32
4421 # Minimum number of milliseconds the browser will wait before attempting
4422 # to re-start the VR service after an enumeration returned no devices.
4423 - name: dom.vr.external.notdetected.timeout
4424 type: RelaxedAtomicInt32
4428 # Minimum number of milliseconds the browser will wait before attempting
4429 # to re-start the VR service after a VR API (eg, OpenVR or Oculus)
4430 # requests that we shutdown and unload its libraries.
4431 # To ensure that we don't interfere with VR runtime software auto-updates,
4432 # we will not attempt to re-load the service until this timeout has elapsed.
4433 - name: dom.vr.external.quit.timeout
4434 type: RelaxedAtomicInt32
4438 # Minimum number of milliseconds that the VR session will be kept
4439 # alive after the browser and content no longer are using the
4440 # hardware. If a VR multitasking environment, this should be set
4441 # very low or set to 0.
4442 - name: dom.vr.inactive.timeout
4443 type: RelaxedAtomicInt32
4447 # Maximum number of milliseconds the browser will wait for content to call
4448 # VRDisplay.requestPresent after emitting vrdisplayactivate during VR
4449 # link traversal. This prevents a long running event handler for
4450 # vrdisplayactivate from later calling VRDisplay.requestPresent, which would
4451 # result in a non-responsive browser in the VR headset.
4452 - name: dom.vr.navigation.timeout
4453 type: RelaxedAtomicInt32
4458 - name: dom.vr.oculus.enabled
4459 type: RelaxedAtomicBool
4460 #if defined(HAVE_64BIT_BUILD) && !defined(ANDROID)
4461 # We are only enabling WebVR by default on 64-bit builds (Bug 1384459).
4464 # On Android, this pref is irrelevant.
4469 # When enabled, Oculus sessions may be created with the ovrInit_Invisible
4470 # flag if a page is using tracking but not presenting. When a page
4471 # begins presenting VR frames, the session will be re-initialized without
4472 # the flag. This eliminates the "Firefox not responding" warnings in
4473 # the headset, but might not be compatible with all versions of the Oculus
4475 - name: dom.vr.oculus.invisible.enabled
4476 type: RelaxedAtomicBool
4480 # Minimum number of milliseconds after content has stopped VR presentation
4481 # before the Oculus session is re-initialized to an invisible / tracking
4482 # only mode. If this value is too high, users will need to wait longer
4483 # after stopping WebVR presentation before automatically returning to the
4484 # Oculus home interface. (They can immediately return to the Oculus Home
4485 # interface through the Oculus HUD without waiting this duration)
4486 # If this value is too low, the Oculus Home interface may be visible
4487 # momentarily during VR link navigation.
4488 - name: dom.vr.oculus.present.timeout
4489 type: RelaxedAtomicInt32
4494 - name: dom.vr.openvr.enabled
4495 type: RelaxedAtomicBool
4496 #if !defined(HAVE_64BIT_BUILD) && !defined(ANDROID)
4497 # We are only enabling WebVR by default on 64-bit builds (Bug 1384459).
4499 #elif defined(XP_WIN) || defined(XP_MACOSX)
4500 # We enable OpenVR by default for Windows and macOS.
4503 # See Bug 1310663 (Linux). On Android, this pref is irrelevant.
4509 - name: dom.vr.osvr.enabled
4510 type: RelaxedAtomicBool
4514 # Pose prediction reduces latency effects by returning future predicted HMD
4515 # poses to callers of the WebVR API. This currently only has an effect for
4516 # Oculus Rift on SDK 0.8 or greater.
4517 - name: dom.vr.poseprediction.enabled
4518 type: RelaxedAtomicBool
4522 # Enable a separate process for VR module.
4523 - name: dom.vr.process.enabled
4532 - name: dom.vr.process.startup_timeout_ms
4537 # Puppet device, used for simulating VR hardware within tests and dev tools.
4538 - name: dom.vr.puppet.enabled
4539 type: RelaxedAtomicBool
4543 # Starting VR presentation is only allowed within a user gesture or event such
4544 # as VRDisplayActivate triggered by the system. dom.vr.require-gesture allows
4545 # this requirement to be disabled for special cases such as during automated
4546 # tests or in a headless kiosk system.
4547 - name: dom.vr.require-gesture
4548 type: RelaxedAtomicBool
4552 # Is support for WebXR APIs enabled?
4553 - name: dom.vr.webxr.enabled
4554 type: RelaxedAtomicBool
4558 # Points in the native bounds geometry are required to be quantized
4559 # sufficiently to prevent fingerprinting. The WebXR spec suggests
4560 # quantizing to the nearest 5 centimeters.
4561 - name: dom.vr.webxr.quantization
4567 # Control firing WidgetMouseEvent by handling Windows pointer messages or
4569 - name: dom.w3c_pointer_events.dispatch_by_pointer_messages
4574 - name: dom.w3c_pointer_events.scroll_by_pen.enabled
4580 # If the value is >= 0, it will be used for max touch points in child processes.
4581 - name: dom.maxtouchpoints.testing.value
4586 # Maximum value of navigator.hardwareConcurrency.
4587 - name: dom.maxHardwareConcurrency
4588 type: RelaxedAtomicUint32
4589 #ifdef NIGHTLY_BUILD
4596 # W3C pointer events draft.
4597 - name: dom.w3c_pointer_events.implicit_capture
4602 - name: dom.w3c_pointer_events.getcoalescedevents_only_in_securecontext
4604 value: @IS_NIGHTLY_BUILD@
4607 # Whether `click`, `auxclick` and `contextmenu` events are dispatched as a
4608 # PointerEvent or MouseEvent.
4609 - name: dom.w3c_pointer_events.dispatch_click_as_pointer_event
4614 # In case Touch API is enabled, this pref controls whether to support
4615 # ontouch* event handlers, document.createTouch, document.createTouchList and
4616 # document.createEvent("TouchEvent").
4617 - name: dom.w3c_touch_events.legacy_apis.enabled
4623 # 0 - disabled, 1 - enabled, 2 - autodetect
4624 # Autodetection is currently only supported on Windows and GTK3 (and assumed on
4626 - name: dom.w3c_touch_events.enabled
4628 #if defined(XP_MACOSX)
4635 # Is support for the Web Audio API enabled?
4636 - name: dom.webaudio.enabled
4641 - name: dom.webkitBlink.dirPicker.enabled
4642 type: RelaxedAtomicBool
4643 value: @IS_NOT_ANDROID@
4646 # Whether allowing selection across the boundary
4647 # between shadow DOM and light DOM.
4648 # This is based on https://github.com/mfreed7/shadow-dom-selection
4649 - name: dom.shadowdom.selection_across_boundary.enabled
4651 value: @IS_NIGHTLY_BUILD@
4654 # NOTE: This preference is used in unit tests. If it is removed or its default
4655 # value changes, please update test_sharedMap_static_prefs.js accordingly.
4656 - name: dom.webcomponents.shadowdom.report_usage
4661 # Is support for Declarative ShadowDOM enabled?
4662 - name: dom.webcomponents.shadowdom.declarative.enabled
4667 # Is support for the Web GPU API enabled?
4668 - name: dom.webgpu.enabled
4669 type: RelaxedAtomicBool
4670 value: @IS_NIGHTLY_BUILD@
4673 # Is support for the Web GPU API enabled on DOM workers?
4674 - name: dom.webgpu.workers.enabled
4675 type: RelaxedAtomicBool
4679 # Are WebGPU indirect draws/dispatches enabled?
4680 - name: dom.webgpu.indirect-dispatch.enabled
4681 type: RelaxedAtomicBool
4685 # Comma-separated list of wgpu backend names to permit in WebGPU adapters.
4687 # If non-empty, this is parsed by `wgpu_core::instance::parse_backends_from_comma_list` to
4688 # produce a `wgpu_types::Backends` bitset used to create a `wgpu_core::hub::Global`. As of
4689 # 2023-3-22, recognized names are:
4691 # "vulkan" | "vk" => Backends::VULKAN,
4692 # "dx12" | "d3d12" => Backends::DX12,
4693 # "dx11" | "d3d11" => Backends::DX11,
4694 # "metal" | "mtl" => Backends::METAL,
4695 # "opengl" | "gles" | "gl" => Backends::GL,
4696 # "webgpu" => Backends::BROWSER_WEBGPU,
4697 - name: dom.webgpu.wgpu-backend
4698 type: DataMutexString
4703 - name: dom.webgpu.allow-present-without-readback
4704 type: RelaxedAtomicBool
4712 # For testing purposes, crash if we don't get a hardware adapter.
4713 - name: dom.webgpu.testing.assert-hardware-adapter
4714 type: RelaxedAtomicBool
4719 # Whether to pass labels to the hardware abstraction layer. This is only useful when
4720 # inspecting a WebGPU workload in a GPU debugging tool like renderdoc. Enabling it
4721 # exposes poorly tested driver API surfaces so it should not be enabled by default.
4722 - name: dom.webgpu.hal-labels
4728 # Is support for HTMLInputElement.webkitEntries enabled?
4729 - name: dom.webkitBlink.filesystem.enabled
4731 value: @IS_NOT_ANDROID@
4734 # Whether the WebMIDI API is enabled
4735 - name: dom.webmidi.enabled
4737 value: @IS_NOT_ANDROID@
4740 # midi permission is addon-gated
4741 - name: dom.webmidi.gated
4746 - name: dom.webnotifications.allowcrossoriginiframe
4747 type: RelaxedAtomicBool
4751 - name: dom.webnotifications.enabled
4752 type: RelaxedAtomicBool
4756 - name: dom.webnotifications.privateBrowsing.enableDespiteLimitations
4757 type: RelaxedAtomicBool
4761 - name: dom.webnotifications.requireuserinteraction
4762 type: RelaxedAtomicBool
4766 - name: dom.webnotifications.requireinteraction.enabled
4767 type: RelaxedAtomicBool
4771 value: @IS_NIGHTLY_BUILD@
4775 - name: dom.webnotifications.silent.enabled
4776 type: RelaxedAtomicBool
4777 value: @IS_NIGHTLY_BUILD@
4780 - name: dom.webnotifications.vibrate.enabled
4781 type: RelaxedAtomicBool
4785 # Setting log level for notification modules.
4786 # The value follows the enum ConsoleLogLevel in ConsoleInstance.webidl.
4787 - name: dom.webnotifications.loglevel
4792 - name: dom.window.clientinformation.enabled
4797 # Whether Window.sizeToContent() is enabled.
4798 - name: dom.window.sizeToContent.enabled
4803 - name: dom.worker.canceling.timeoutMilliseconds
4804 type: RelaxedAtomicUint32
4805 value: 30000 # 30 seconds
4808 - name: dom.worker.use_medium_high_event_queue
4809 type: RelaxedAtomicBool
4813 # Enables the dispatching of console log events from worker threads to the
4815 - name: dom.worker.console.dispatch_events_to_main_thread
4816 type: RelaxedAtomicBool
4820 - name: dom.workers.testing.enabled
4821 type: RelaxedAtomicBool
4825 # WebIDL test prefs.
4826 - name: dom.webidl.test1
4830 - name: dom.webidl.test2
4835 # WebShare API - exposes navigator.share()
4836 - name: dom.webshare.enabled
4839 value: @IS_EARLY_BETA_OR_EARLIER@
4845 # WebShare API - allows WebShare without user interaction (for tests only).
4846 - name: dom.webshare.requireinteraction
4851 # Hide the confirm dialog when a POST request is reloaded.
4852 - name: dom.confirm_repost.testing.always_accept
4857 # Whether we should suspend inactive tabs or not
4858 - name: dom.suspend_inactive.enabled
4863 # The following three prefs control the maximum script run time before slow
4866 # Controls the time that a content script can run before showing a
4868 - name: dom.max_script_run_time
4873 # Controls whether we want to wait for user input before surfacing notifying
4874 # the parent process about a long-running script.
4875 - name: dom.max_script_run_time.require_critical_input
4877 # On desktop, we don't want to annoy the user with a notification if they're
4878 # not interacting with the browser. On Android however, we automatically
4879 # terminate long-running scripts, so we want to make sure we don't get in the
4880 # way of that by waiting for input.
4881 #if defined(MOZ_WIDGET_ANDROID)
4888 # Controls if a content script will be aborted on child process shutdown.
4889 - name: dom.abort_script_on_child_shutdown
4894 - name: dom.max_chrome_script_run_time
4899 - name: dom.max_ext_content_script_run_time
4904 # Let Resize Observer report the size of all fragments, and not just the
4905 # first one, as per CSSWG resolution:
4906 # https://github.com/w3c/csswg-drafts/issues/3673#issuecomment-467221565
4907 - name: dom.resize_observer.support_fragments
4912 # <iframe loading="lazy">
4913 - name: dom.iframe_lazy_loading.enabled
4914 type: RelaxedAtomicBool
4918 # Whether allowing using <tab> to move focus to root elements
4919 - name: dom.disable_tab_focus_to_root_element
4924 #---------------------------------------------------------------------------
4925 # Prefs starting with "editor"
4926 #---------------------------------------------------------------------------
4928 # Default background color of HTML editor. This is referred only when
4929 # "editor.use_custom_colors" is set to `true`.
4930 - name: editor.background_color
4935 # Whether HTMLEditor consides block or inline element with computed style or
4936 # only with the default style of HTML definition.
4937 - name: editor.block_inline_check.use_computed_style
4942 # Delay to mask last input character in password fields.
4943 # If negative value, to use platform's default behavior.
4944 # If 0, no delay to mask password.
4945 # Otherwise, password fields unmask last input character(s) during specified
4946 # time (in milliseconds).
4947 - name: editor.password.mask_delay
4952 # Set to true when you test mask_delay of password editor. If this is set
4953 # to true, "MozLastInputMasked" is fired when last input characters are
4954 # masked by timeout.
4955 - name: editor.password.testing.mask_delay
4960 # How line breakers are treated in single line editor:
4961 # * 0: Only remove the leading and trailing newlines.
4962 # * 1: Remove the first newline and all characters following it.
4963 # * 2: Replace newlines with spaces (default of Firefox).
4964 # * 3: Remove newlines from the string.
4965 # * 4: Replace newlines with commas (default of Thunderbird).
4966 # * 5: Collapse newlines and surrounding white space characters and
4967 # remove them from the string.
4968 # Other values are treated as 1.
4969 - name: editor.singleLine.pasteNewlines
4974 # Whether user pastes should be truncated.
4975 - name: editor.truncate_user_pastes
4980 # When this is set to `true`, "editor.background_color" must be set, then,
4981 # the value is treated as default background color of the HTML editor.
4982 # If `false` and "browser.display.use_system_colors" is set to `true`,
4983 # "browser.display.background_color" is used instead.
4984 # Otherwise, no color is used as default background color.
4985 # This pref is for Thunderbird and SeaMonkey.
4986 - name: editor.use_custom_colors
4991 # If this is set to `true`, CSS mode of style editor is enabled by default
4992 # unless it's a mail editor.
4993 # This pref is for Thunderbird and SeaMonkey.
4994 - name: editor.use_css
4999 # Whether enabling blink compatible white-space normalizer or keep using
5000 # Gecko's traditional white-space normalizer.
5001 - name: editor.white_space_normalization.blink_compatible
5006 # General prefs for editor, indicating whether Gecko-specific editing UI is
5007 # enabled by default. Those UIs are not implemented by any other browsers. So,
5008 # only Firefox users can change some styles with them. This means that Firefox
5009 # users may get unexpected result of some web apps if they assume that users
5010 # cannot change such styles.
5011 - name: editor.resizing.enabled_by_default
5015 - name: editor.inline_table_editing.enabled_by_default
5019 - name: editor.positioning.enabled_by_default
5024 # Controls if a double click word selection also deletes one adjacent whitespace
5025 # (if feasible). This mimics native behaviour on MacOS.
5026 - name: editor.word_select.delete_space_after_doubleclick_selection
5035 #---------------------------------------------------------------------------
5036 # Prefs starting with "extensions."
5037 #---------------------------------------------------------------------------
5039 # Pref that enforces the use of web_accessible_resources for content loads.
5040 # This behavior is default for MV3. The pref controls this for MV2.
5041 - name: extensions.content_web_accessible.enabled
5046 # Whether the InstallTrigger implementation should be enabled (or hidden and
5047 # none of its methods available).
5048 - name: extensions.InstallTriggerImpl.enabled
5053 # Whether the InstallTrigger implementation should be enabled (or completely
5054 # hidden), separate from InstallTriggerImpl because InstallTrigger is improperly
5055 # used also for UA detection.
5056 - name: extensions.InstallTrigger.enabled
5058 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
5062 # Whether the background.service_worker in the extension manifest.json file
5064 # all.js locks the pref to false when MOZ_WEBEXT_WEBIDL_ENABLED is false.
5065 - name: extensions.backgroundServiceWorker.enabled
5070 # Maximum number of misspelled words in a text.
5071 - name: extensions.spellcheck.inline.max-misspellings
5076 # Whether the extensions can register a service worker on its own.
5077 # NOTE: WebExtensions Framework ability to register a background service worker
5078 # is not controlled by this pref, only the extension code ability to use
5079 # navigator.serviceWorker.register is locked behind this pref.
5080 - name: extensions.serviceWorkerRegister.allowed
5085 # Temporary pref to allow reverting the fix to bug 1853409.
5086 # TODO bug 1856071: Remove this pref.
5087 # When true, extensions can run content scripts in about:blank documents that
5088 # have a null principal. When false, extensions require permissions to all URLs.
5089 - name: extensions.script_about_blank_without_permission
5094 # When true, content scripts of MV2 extensions can run in blob:-documents without
5095 # requiring match_origin_as_fallback to be set, to revert bug 1897113.
5096 # TODO bug 1899134: Remove this pref.
5097 - name: extensions.script_blob_without_match_origin_as_fallback
5102 # Legacy behavior on filterResponse calls on intercepted sw script requests.
5103 - name: extensions.filterResponseServiceWorkerScript.disabled
5108 # This pref governs whether we run webextensions in a separate process (true)
5109 # or the parent/main process (false)
5110 - name: extensions.webextensions.remote
5111 type: RelaxedAtomicBool
5115 # Whether to expose the MockExtensionAPI test interface in tests.
5116 # The interface MockExtensionAPI doesn't represent a real extension API,
5117 # it is only available in test and does include a series of cases useful
5118 # to test the API request handling without tying the unit test to a
5119 # specific WebExtensions API.
5120 - name: extensions.webidl-api.expose_mock_interface
5121 type: RelaxedAtomicBool
5125 # Whether to allow acccess to AddonManager to developer sites for testing
5126 # NOTE: We'd like this to be a "hidden" pref once StaticPrefs supports it.
5127 - name: extensions.webapi.testing
5128 type: RelaxedAtomicBool
5132 # Automation-only pref to allow AddonManager over insecure protocols.
5133 # NOTE: We'd like this to be a "hidden" pref once StaticPrefs supports it.
5134 - name: extensions.webapi.testing.http
5135 type: RelaxedAtomicBool
5139 # Whether to expose the AddonManager web API.
5140 - name: extensions.webapi.enabled
5141 type: RelaxedAtomicBool
5142 value: @IS_NOT_ANDROID@
5145 #---------------------------------------------------------------------------
5146 # Prefs starting with "fission."
5147 #---------------------------------------------------------------------------
5149 # Whether to enable Fission in new windows by default.
5150 # IMPORTANT: This preference should *never* be checked directly, since any
5151 # session can contain a mix of Fission and non-Fission windows. Instead,
5152 # callers should check whether the relevant nsILoadContext has the
5153 # `useRemoteSubframes` flag set.
5154 # Callers which cannot use `useRemoteSubframes` must use
5155 # `Services.appinfo.fissionAutostart` or `mozilla::FissionAutostart()` to check
5156 # whether fission is enabled by default.
5157 - name: fission.autostart
5159 value: @IS_NOT_ANDROID@
5162 # Disable storing the session history in the parent process, and accessing it
5163 # over IPC from the child processes.
5164 - name: fission.disableSessionHistoryInParent
5168 do_not_use_directly: true
5170 # If session history is stored in the parent process, enable bfcache for it.
5171 - name: fission.bfcacheInParent
5175 do_not_use_directly: true
5177 # Allow renaming of processes from Private Windows to the eTLD+1 on nightly
5178 # Setting this pref creates a privacy leak, but helps greatly with
5180 - name: fission.processPrivateWindowSiteNames
5185 # Allow renaming of process names to the eTLD+1 on all versions, NOT
5186 # including processes from Private Windows
5187 # Setting this pref creates a privacy leak, but helps greatly with
5189 - name: fission.processSiteNames
5194 # Allow showing of current profile along with process names, NOT
5195 # including processes from Private Windows
5196 # Setting this pref creates a privacy leak, but helps greatly with
5198 - name: fission.processProfileName
5203 # The strategy used to control how sites are isolated into separate processes
5204 # when Fisison is enabled. This pref has no effect if Fission is disabled.
5205 # See the `WebContentIsolationStrategy` enum in `ProcessIsolation.cpp`.
5206 - name: fission.webContentIsolationStrategy
5211 # Time in seconds before a site loaded with the Cross-Origin-Opener-Policy
5212 # header is no longer considered high-value and isolated in the "highValueCOOP"
5214 - name: fission.highValue.coop.expiration
5216 value: 2592000 # 30 days (in seconds)
5219 # Time in seconds before a site are considered high-value by the login detection
5220 # service is no longer considered high-value and isolated in the "highValueHasSavedLogin"
5221 # or "highValueIsLoggedIn" configuration.
5222 - name: fission.highValue.login.expiration
5224 value: 2592000 # 30 days (in seconds)
5227 # If true, capture login attemp, and add "highValueIsLoggedIn" permission to
5228 # the permission manager no matter whether fission is enabled and
5229 # WebContentIsolationStrateg is set to IsolateHighvalue.
5230 - name: fission.highValue.login.monitor
5235 # If true, do not send blocklisted preference values to the subprocess
5236 - name: fission.omitBlocklistedPrefsInSubprocesses
5237 type: RelaxedAtomicBool
5241 # If true, crash when a blocklisted preference is accessed in a subprocess
5242 - name: fission.enforceBlocklistedPrefsInSubprocesses
5243 type: RelaxedAtomicBool
5244 value: @IS_EARLY_BETA_OR_EARLIER@
5247 #---------------------------------------------------------------------------
5248 # Prefs starting with "font."
5249 #---------------------------------------------------------------------------
5251 # A value greater than zero enables font size inflation for
5252 # pan-and-zoom UIs, so that the fonts in a block are at least the size
5253 # that, if a block's width is scaled to match the device's width, the
5254 # fonts in the block are big enough that at most the pref value ems of
5255 # text fit in *the width of the device*.
5257 # When both this pref and the next are set, the larger inflation is used.
5258 - name: font.size.inflation.emPerLine
5263 # A value greater than zero enables font size inflation for
5264 # pan-and-zoom UIs, so that if a block's width is scaled to match the
5265 # device's width, the fonts in a block are at least the given font size.
5266 # The value given is in twips, i.e., 1/20 of a point, or 1/1440 of an inch.
5268 # When both this pref and the previous are set, the larger inflation is used.
5269 - name: font.size.inflation.minTwips
5274 # In products with multi-mode pan-and-zoom and non-pan-and-zoom UIs,
5275 # this pref forces font inflation to always be enabled in all modes.
5276 # That is, any heuristics used to detect pan-and-zoom
5277 # vs. non-pan-and-zoom modes are disabled and all content is treated
5278 # as pan-and-zoom mode wrt font inflation.
5280 # This pref has no effect if font inflation is not enabled through
5281 # either of the prefs above. It has no meaning in single-mode UIs.
5282 - name: font.size.inflation.forceEnabled
5287 # In products with multi-mode pan-and-zoom and non-pan-and-zoom UIs,
5288 # this pref disables font inflation in master-process contexts where
5289 # existing heuristics can't be used determine enabled-ness.
5291 # This pref has no effect if font inflation is not enabled through
5292 # either of the prefs above. The "forceEnabled" pref above overrides
5294 - name: font.size.inflation.disabledInMasterProcess
5299 # Defines the font size inflation mapping intercept parameter.
5301 # Font size inflation computes a minimum font size, m, based on
5302 # other preferences (see font.size.inflation.minTwips and
5303 # font.size.inflation.emPerLine, above) and the width of the
5304 # frame in which the text resides. Using this minimum, a specified
5305 # font size, s, is mapped to an inflated font size, i, using an
5306 # equation that varies depending on the value of the font size
5307 # inflation mapping intercept parameter, P.
5309 # If the intercept parameter is negative, then the following mapping
5314 # If the intercept parameter is non-negative, then the mapping function
5315 # is a function such that its graph meets the graph of i = s at the
5316 # point where both i and s are (1 + P/2) * m for values of s that are
5317 # large enough. This means that when s=0, i is always equal to m.
5318 - name: font.size.inflation.mappingIntercept
5323 # Since the goal of font size inflation is to avoid having to
5324 # repeatedly scroll side to side to read a block of text, and there are
5325 # a number of page layouts where a relatively small chunk of text is
5326 # better off not being inflated according to the same algorithm we use
5327 # for larger chunks of text, we want a threshold for an amount of text
5328 # that triggers font size inflation. This preference controls that
5331 # It controls the threshold used within an *approximation* of the
5332 # number of lines of text we use. In particular, if we assume that
5333 # each character (collapsing collapsible whitespace) has a width the
5334 # same as the em-size of the font (when, normally, it's actually quite
5335 # a bit smaller on average), this preference gives the percentage of a
5336 # number of lines of text we'd need to trigger inflation. This means
5337 # that a percentage of 100 means that we'd need a number of characters
5338 # (we know the font size and the width) equivalent to one line of
5339 # square text (which is actually a lot less than a real line of text).
5341 # A value of 0 means there's no character length threshold.
5342 - name: font.size.inflation.lineThreshold
5347 # This controls the percentage that fonts will be inflated, if font
5348 # size inflation is enabled. Essentially, if we have a specified font
5349 # size, s, and an inflated font size, i, this specifies that the ratio
5350 # i/s * 100 should never exceed the value of this preference. In order
5351 # for this preference to have any effect, its value must be greater
5352 # than 100, since font inflation can never decrease the ratio i/s.
5353 - name: font.size.inflation.maxRatio
5358 #---------------------------------------------------------------------------
5359 # Prefs starting with "full-screen-api."
5360 #---------------------------------------------------------------------------
5362 - name: full-screen-api.enabled
5367 - name: full-screen-api.allow-trusted-requests-only
5372 - name: full-screen-api.mouse-event-allow-left-button-only
5377 - name: full-screen-api.exit-on.windowOpen
5382 - name: full-screen-api.exit-on.windowRaise
5387 - name: full-screen-api.pointer-lock.enabled
5392 # whether to prevent the top level widget from going fullscreen
5393 - name: full-screen-api.ignore-widgets
5398 #---------------------------------------------------------------------------
5399 # Prefs starting with "fuzzing.". It's important that these can only be
5400 # checked in fuzzing builds (when FUZZING is defined), otherwise you could
5401 # enable the fuzzing stuff on your regular build which would be bad :)
5402 #---------------------------------------------------------------------------
5405 - name: fuzzing.enabled
5407 #ifdef FUZZING_SNAPSHOT
5414 - name: fuzzing.necko.enabled
5415 type: RelaxedAtomicBool
5419 - name: fuzzing.necko.http3
5420 type: RelaxedAtomicBool
5425 # This configures a virtual authenticator for WebAuthn. The value encodes the
5426 # arguments to the WebDriver "Add Virtual Authenticator" extension command.
5427 # Bits 0, 1, 2, and 3 encode "is_user_verified", "is_user_consenting",
5428 # "has_user_verification", and "has_resident_key" in that order. Bit 5 encodes
5429 # the transport, either "usb" (0) or "internal" (1). Bits 6 and 7 encode the
5430 # protocol, either "ctap1/u2f" (1), "ctap2" (2), or "ctap2_1" (3). Note that
5431 # the valid protocol values are non-zero---an authenticator will not be
5432 # configured if this pref is set to zero. Changing this pref requires
5434 - name: fuzzing.webauthn.authenticator_config
5435 type: RelaxedAtomicUint32
5441 #---------------------------------------------------------------------------
5442 # Prefs starting with "general."
5443 #---------------------------------------------------------------------------
5445 - name: general.aboutConfig.enable
5450 # Limits the depth of recursive conversion of data when opening
5451 # a content to view. This is mostly intended to prevent infinite
5452 # loops with faulty converters involved.
5453 - name: general.document_open_conversion_depth_limit
5458 - name: general.smoothScroll
5459 type: RelaxedAtomicBool
5463 # This pref and general.smoothScroll.stopDecelerationWeighting determine
5464 # the timing function.
5465 - name: general.smoothScroll.currentVelocityWeighting
5470 # To connect consecutive scroll events into a continuous flow, the animation's
5471 # duration should be longer than scroll events intervals (or else the scroll
5472 # will stop before the next event arrives - we're guessing the next interval
5473 # by averaging recent intervals).
5474 # This defines how much longer the duration is compared to the events
5475 # interval (percentage).
5476 - name: general.smoothScroll.durationToIntervalRatio
5477 type: RelaxedAtomicInt32
5481 - name: general.smoothScroll.lines
5482 type: RelaxedAtomicBool
5486 - name: general.smoothScroll.lines.durationMaxMS
5487 type: RelaxedAtomicInt32
5491 - name: general.smoothScroll.lines.durationMinMS
5492 type: RelaxedAtomicInt32
5496 - name: general.smoothScroll.mouseWheel
5497 type: RelaxedAtomicBool
5501 - name: general.smoothScroll.mouseWheel.durationMaxMS
5502 type: RelaxedAtomicInt32
5506 - name: general.smoothScroll.mouseWheel.durationMinMS
5507 type: RelaxedAtomicInt32
5511 - name: general.smoothScroll.other
5512 type: RelaxedAtomicBool
5516 - name: general.smoothScroll.other.durationMaxMS
5517 type: RelaxedAtomicInt32
5521 - name: general.smoothScroll.other.durationMinMS
5522 type: RelaxedAtomicInt32
5526 - name: general.smoothScroll.pages
5527 type: RelaxedAtomicBool
5531 - name: general.smoothScroll.pages.durationMaxMS
5532 type: RelaxedAtomicInt32
5536 - name: general.smoothScroll.pages.durationMinMS
5537 type: RelaxedAtomicInt32
5541 - name: general.smoothScroll.scrollbars
5542 type: RelaxedAtomicBool
5546 - name: general.smoothScroll.scrollbars.durationMaxMS
5547 type: RelaxedAtomicInt32
5551 - name: general.smoothScroll.scrollbars.durationMinMS
5552 type: RelaxedAtomicInt32
5556 - name: general.smoothScroll.pixels
5557 type: RelaxedAtomicBool
5561 - name: general.smoothScroll.pixels.durationMaxMS
5562 type: RelaxedAtomicInt32
5566 - name: general.smoothScroll.pixels.durationMinMS
5567 type: RelaxedAtomicInt32
5571 # This pref and general.smoothScroll.currentVelocityWeighting determine
5572 # the timing function.
5573 - name: general.smoothScroll.stopDecelerationWeighting
5578 # Alternative smooth scroll physics. ("MSD" = Mass-Spring-Damper)
5579 - name: general.smoothScroll.msdPhysics.enabled
5580 type: RelaxedAtomicBool
5581 value: @IS_NIGHTLY_BUILD@
5584 - name: general.smoothScroll.msdPhysics.continuousMotionMaxDeltaMS
5585 type: RelaxedAtomicInt32
5589 - name: general.smoothScroll.msdPhysics.motionBeginSpringConstant
5590 type: RelaxedAtomicInt32
5594 - name: general.smoothScroll.msdPhysics.slowdownMinDeltaMS
5595 type: RelaxedAtomicInt32
5599 - name: general.smoothScroll.msdPhysics.slowdownMinDeltaRatio
5604 - name: general.smoothScroll.msdPhysics.slowdownSpringConstant
5605 type: RelaxedAtomicInt32
5609 - name: general.smoothScroll.msdPhysics.regularSpringConstant
5610 type: RelaxedAtomicInt32
5614 #---------------------------------------------------------------------------
5615 # Prefs starting with "geo."
5616 #---------------------------------------------------------------------------
5618 # Is support for Navigator.geolocation enabled?
5624 # Time, in milliseconds, to wait for the location provider to spin up.
5630 #ifdef MOZ_ENABLE_DBUS
5631 # Whether to use Geoclue location provider (if available on the system).
5632 - name: geo.provider.use_geoclue
5637 # Whether to always provide high location accuracy, even if site
5638 # doesn't actually request this level of accuracy.
5639 # Almost no site correctly requests high accuracy so force it by default
5640 # for compatibility with other geolocation providers.
5641 - name: geo.provider.geoclue.always_high_accuracy
5647 #---------------------------------------------------------------------------
5648 # Prefs starting with "gfx."
5649 #---------------------------------------------------------------------------
5651 # Allow 24-bit colour when the hardware supports it.
5652 - name: gfx.android.rgb16.force
5657 - name: gfx.apitrace.enabled
5662 - name: gfx.blithelper.precision
5663 type: RelaxedAtomicUint32
5664 value: 2 # { 0: lowp, 1: mediump, 2: highp }
5667 - name: gfx.blithelper.lut-size.rgb.b
5668 type: RelaxedAtomicUint32
5671 - name: gfx.blithelper.lut-size.rgb.g
5672 type: RelaxedAtomicUint32
5675 - name: gfx.blithelper.lut-size.rgb.r
5676 type: RelaxedAtomicUint32
5680 - name: gfx.blithelper.lut-size.ycbcr.cb
5681 type: RelaxedAtomicUint32
5684 - name: gfx.blithelper.lut-size.ycbcr.cr
5685 type: RelaxedAtomicUint32
5688 - name: gfx.blithelper.lut-size.ycbcr.y
5689 type: RelaxedAtomicUint32
5693 # Nb: we ignore this pref on release and beta.
5694 - name: gfx.blocklist.all
5699 #if defined(XP_DARWIN)
5700 - name: gfx.cairo_quartz_cg_layer.enabled
5706 - name: gfx.canvas.accelerated
5708 #if defined(XP_MACOSX) || defined(XP_LINUX) && !defined(ANDROID)
5710 #elif defined(MOZ_WIDGET_ANDROID)
5717 # Whether to attempt to enable Accelerated Canvas2D regardless of blocklisting.
5718 - name: gfx.canvas.accelerated.force-enabled
5723 - name: gfx.canvas.accelerated.async-present
5724 type: RelaxedAtomicBool
5728 - name: gfx.canvas.accelerated.cache-items
5729 type: RelaxedAtomicUint32
5733 - name: gfx.canvas.accelerated.cache-size
5734 type: RelaxedAtomicUint32
5738 - name: gfx.canvas.accelerated.reserve-empty-cache
5739 type: RelaxedAtomicUint32
5743 - name: gfx.canvas.accelerated.max-draw-target-count
5744 type: RelaxedAtomicUint32
5748 - name: gfx.canvas.accelerated.max-size
5749 type: RelaxedAtomicInt32
5753 - name: gfx.canvas.accelerated.min-size
5754 type: RelaxedAtomicInt32
5758 - name: gfx.canvas.accelerated.max-surface-size
5759 type: RelaxedAtomicUint32
5763 - name: gfx.canvas.accelerated.shared-page-size
5764 type: RelaxedAtomicUint32
5768 # The minimum number of frames before acting on performance profile info
5769 - name: gfx.canvas.accelerated.profile-frames
5770 type: RelaxedAtomicUint32
5774 # The ratio of failed frames to total frames when to fall back from acceleration
5775 - name: gfx.canvas.accelerated.profile-fallback-ratio
5780 # The ratio of cache misses at which to fail a profile frame
5781 - name: gfx.canvas.accelerated.profile-cache-miss-ratio
5786 # The maximum size of the GPU path cache in MB.
5787 - name: gfx.canvas.accelerated.gpu-path-size
5788 type: RelaxedAtomicUint32
5792 # The maximum allowed complexity of a GPU path.
5793 - name: gfx.canvas.accelerated.gpu-path-complexity
5794 type: RelaxedAtomicUint32
5798 # Whether to accelerate stroked paths by converting them to fill paths.
5799 - name: gfx.canvas.accelerated.stroke-to-fill-path
5800 type: RelaxedAtomicBool
5804 # Whether to use aa-stroke to accelerate stroked paths.
5805 - name: gfx.canvas.accelerated.aa-stroke.enabled
5806 type: RelaxedAtomicBool
5810 # Draws an indicator if acceleration is used.
5811 - name: gfx.canvas.accelerated.debug
5812 type: RelaxedAtomicBool
5816 # 0x7fff is the maximum supported xlib surface size and is more than enough for canvases.
5817 - name: gfx.canvas.max-size
5818 type: RelaxedAtomicInt32
5822 - name: gfx.canvas.remote
5831 - name: gfx.canvas.remote.allow-in-parent
5836 # Whether OffscreenCanvas can use remote canvas
5837 - name: gfx.canvas.remote.allow-offscreen
5838 type: RelaxedAtomicBool
5842 # How many worker threads spawned for remote canvas
5843 # -1 - Calculate based on processor cores
5844 # 0 - No worker threads spawned, will do work on CanvasRenderThread
5845 # >0 - Create worker thread pool with given size
5846 - name: gfx.canvas.remote.worker-threads
5855 # Default size of the shmem buffers used for recording
5856 - name: gfx.canvas.remote.default-buffer-size
5857 type: RelaxedAtomicUint32
5861 # Maximum number of Default size shmem buffers to use
5862 - name: gfx.canvas.remote.max_default_buffers
5863 type: RelaxedAtomicUint32
5867 # How many times to spin before waiting in remote canvas
5868 - name: gfx.canvas.remote.max-spin-count
5869 type: RelaxedAtomicUint32
5873 # How long to wait in milliseconds for the next event while in a transaction
5874 - name: gfx.canvas.remote.event-timeout-ms
5875 type: RelaxedAtomicUint32
5879 # How many times we have a spare buffer before we drop one
5880 - name: gfx.canvas.remote.drop-buffer-limit
5881 type: RelaxedAtomicUint32
5885 # Delay in milliseconds to drop buffers when there have been no non-empty transactions
5886 - name: gfx.canvas.remote.drop-buffer-milliseconds
5887 type: RelaxedAtomicUint32
5891 - name: gfx.canvas.remote.use-draw-image-fast-path
5892 type: RelaxedAtomicBool
5896 - name: gfx.canvas.remote.recycle-used-data-surface
5897 type: RelaxedAtomicBool
5901 - name: gfx.canvas.remote.use-canvas-translator-event
5903 value: @IS_NIGHTLY_BUILD@
5906 - name: gfx.canvas.willreadfrequently.enabled
5916 - name: gfx.color_management.display_profile
5917 type: DataMutexString
5919 mirror: always # But be warned: We cache the result.
5921 - name: gfx.color_management.force_srgb
5922 type: RelaxedAtomicBool
5926 - name: gfx.color_management.native_srgb
5927 type: RelaxedAtomicBool
5928 #if defined(XP_MACOSX)
5935 - name: gfx.color_management.enablev4
5936 type: RelaxedAtomicBool
5940 # 0 = Off, 1 = Full, 2 = Tagged Images Only.
5941 # See CMSMode in gfx/thebes/gfxPlatform.h.
5942 - name: gfx.color_management.mode
5943 type: RelaxedAtomicInt32
5947 # The zero default here should match QCMS_INTENT_DEFAULT from qcms.h
5948 - name: gfx.color_management.rendering_intent
5949 type: RelaxedAtomicInt32
5953 - name: gfx.color_management.rec709_gamma_as_srgb
5954 type: RelaxedAtomicBool
5955 value: true # Tragic backwards compat.
5958 - name: gfx.color_management.rec2020_gamma_as_rec709
5959 type: RelaxedAtomicBool
5960 value: true # Match naive behavior, but hopefully we can stop soon!
5963 # Whether GL contexts can be migrated to a different GPU (to match the one the
5964 # OS is using for composition).
5966 # 0 = force disable migration
5967 # 1 = use migration where in safe configurations (the default)
5968 # 2 = force enable migration (for testing)
5969 - name: gfx.compositor.gpu-migration
5970 type: RelaxedAtomicInt32
5974 - name: gfx.core-animation.tint-opaque
5975 type: RelaxedAtomicBool
5980 # Create specialized video-only layers for video content in
5981 # fullscreen windows. Consistently works well on Apple Silicon,
5982 # some issues remain on Intel hardware.
5983 - name: gfx.core-animation.specialize-video
5984 type: RelaxedAtomicBool
5985 #if defined(MOZ_AARCH64)
5993 #if defined(XP_DARWIN) && defined(NIGHTLY_BUILD)
5994 # Spoof the timing of the video sample instead of marking the untimed
5995 # sample to be displayed immediately.
5996 - name: gfx.core-animation.specialize-video.spoof-timing
5997 type: RelaxedAtomicBool
6001 # Check that the sample has a color space and if it doesn't, log that
6002 # and supply the default color space from the main display.
6003 - name: gfx.core-animation.specialize-video.check-color-space
6004 type: RelaxedAtomicBool
6008 # Log properties of the video surface, buffer, and format.
6009 - name: gfx.core-animation.specialize-video.log
6010 type: RelaxedAtomicBool
6016 - name: gfx.core-animation.low-power-telemetry-frames
6022 #if defined(MOZ_WIDGET_ANDROID)
6023 # Overrides the glClear color used when the surface origin is not (0, 0)
6024 # Used for drawing a border around the content.
6025 - name: gfx.compositor.override.clear-color.r
6030 - name: gfx.compositor.override.clear-color.g
6035 - name: gfx.compositor.override.clear-color.b
6040 - name: gfx.compositor.override.clear-color.a
6044 #endif # defined(MOZ_WIDGET_ANDROID)
6046 - name: gfx.content.always-paint
6047 type: RelaxedAtomicBool
6052 - name: gfx.content.skia-font-cache-size
6057 - name: gfx.device-reset.limit
6062 - name: gfx.device-reset.threshold-ms
6068 # Whether to disable the automatic detection and use of direct2d.
6069 - name: gfx.direct2d.disabled
6074 # Whether to attempt to enable Direct2D regardless of automatic detection or
6076 - name: gfx.direct2d.force-enabled
6081 - name: gfx.direct2d.target-independent-rasterization.disabled
6086 - name: gfx.direct3d11.reuse-decoder-device
6090 # Enable reuse decoder device even when it is blocked.
6091 - name: gfx.direct3d11.reuse-decoder-device-force-enabled
6096 - name: gfx.direct3d11.allow-keyed-mutex
6097 type: RelaxedAtomicBool
6101 - name: gfx.direct3d11.use-double-buffering
6102 type: RelaxedAtomicBool
6106 - name: gfx.direct3d11.enable-debug-layer
6111 - name: gfx.direct3d11.break-on-error
6116 - name: gfx.direct3d11.sleep-on-create-device
6121 # Rate by which the frame rate is divided. I.e. at a number higher than 1 we
6122 # will only refresh every <x> frames.
6123 - name: gfx.display.frame-rate-divisor
6124 type: RelaxedAtomicInt32
6128 - name: gfx.display.max-frame-rate
6129 type: RelaxedAtomicInt32
6133 # Whether to disable downloadable font cache so that behavior is consistently
6134 # the uncached load behavior across pages (useful for testing reflow problems)
6135 - name: gfx.downloadable_fonts.disable_cache
6136 type: RelaxedAtomicBool
6140 # Whether to preserve color bitmap tables in fonts (bypassing OTS).
6141 # Currently these are supported only on platforms where we use Freetype
6142 # to render fonts (Linux/Gtk and Android).
6143 - name: gfx.downloadable_fonts.keep_color_bitmaps
6144 type: RelaxedAtomicBool
6148 # Whether to validate OpenType variation tables in fonts.
6149 - name: gfx.downloadable_fonts.validate_variation_tables
6150 type: RelaxedAtomicBool
6154 # Whether OTS validation should be applied to OpenType Layout (OTL) tables.
6155 - name: gfx.downloadable_fonts.otl_validation
6156 type: RelaxedAtomicBool
6157 value: @IS_NOT_RELEASE_OR_BETA@
6160 - name: gfx.e10s.font-list.shared
6165 # Do we fire a notification about missing fonts, so the front-end can decide
6166 # whether to try and do something about it (e.g. download additional fonts)?
6167 - name: gfx.missing_fonts.notify
6168 type: RelaxedAtomicBool
6172 #if !defined(MOZ_WIDGET_ANDROID)
6173 - name: gfx.egl.prefer-gles.enabled
6175 #if defined(MOZ_WIDGET_GTK) && defined(MOZ_AARCH64)
6183 # [Windows] Whether registry FontSubstitutes entries are used unconditionally,
6184 # or only if the original font is not available.
6186 - name: gfx.windows-font-substitutes.always
6192 - name: gfx.font-list-omt.enabled
6194 #if defined(XP_MACOSX)
6201 # [Android] OPPO, realme and OnePlus device seem to crash when using Font
6202 # Match API. We turn off this feature on these devices. Set true if you want to
6203 # turn on it at force.
6204 #if defined(MOZ_WIDGET_ANDROID)
6205 - name: gfx.font-list.use_font_match_api.force-enabled
6211 # Whether to load fonts (e.g. Twemoji Mozilla) bundled with the application:
6212 # -1 - Auto behavior based on OS version (currently, disables loading on
6213 # "low-memory" Android devices)
6214 # 0 - Skip loading any bundled fonts
6215 # 1 - Always load bundled fonts
6216 - name: gfx.bundled-fonts.activate
6221 - name: gfx.font_loader.delay
6222 type: RelaxedAtomicUint32
6230 # Disable antialiasing of Ahem, for use in tests.
6231 - name: gfx.font_rendering.ahem_antialias_none
6232 type: RelaxedAtomicBool
6236 #if defined(XP_DARWIN)
6237 # Set to true to revert from HarfBuzz AAT shaping to the old Core Text
6239 - name: gfx.font_rendering.coretext.enabled
6240 type: RelaxedAtomicBool
6245 - name: gfx.font_rendering.colr_v1.enabled
6246 type: RelaxedAtomicBool
6250 - name: gfx.font_rendering.opentype_svg.enabled
6251 type: RelaxedAtomicBool
6256 - name: gfx.font_rendering.fallback.async
6257 type: RelaxedAtomicBool
6261 # whether to always search all font cmaps during system font fallback
6262 - name: gfx.font_rendering.fallback.always_use_cmaps
6263 type: RelaxedAtomicBool
6267 # whether to do font fallback for codepoints with General Category = Unassigned
6268 - name: gfx.font_rendering.fallback.unassigned_chars
6269 type: RelaxedAtomicBool
6273 #ifdef MOZ_WIDGET_GTK
6274 - name: gfx.font_rendering.fontconfig.max_generic_substitutions
6275 type: RelaxedAtomicUint32
6281 # Whether the DirectWrite bold simulation should be used when a bold font-weight
6282 # is requested but no bold face available in the family. This renders poorly with
6283 # some third-party fonts, so by default we disable it for webfonts and allow it
6284 # only with locally-installed fonts.
6286 # 0 - never use DWrite bold simulation; always multi-strike instead
6287 # 1 - use DWrite bold for installed fonts, multi-strike for webfont resources
6288 # 2 - use DWrite bold for all fonts
6289 - name: gfx.font_rendering.directwrite.bold_simulation
6290 type: RelaxedAtomicUint32
6295 - name: gfx.font_rendering.graphite.enabled
6296 type: RelaxedAtomicBool
6300 # Cache shaped word results
6301 - name: gfx.font_rendering.wordcache.charlimit
6302 type: RelaxedAtomicUint32
6306 # Cache shaped word results
6307 - name: gfx.font_rendering.wordcache.maxentries
6308 type: RelaxedAtomicUint32
6312 # The level of logging:
6315 # - 2: adds warnings;
6316 # - 3 or 4: adds debug logging.
6317 # If you set the value to 4, you will also need to set the environment
6318 # variable MOZ_LOG to gfx:4. See mozilla/Logging.h for details.
6319 - name: gfx.logging.level
6320 type: RelaxedAtomicInt32
6321 value: mozilla::gfx::LOG_DEFAULT
6323 include: mozilla/gfx/LoggingConstants.h
6325 - name: gfx.logging.crash.length
6330 # The maximums here are quite conservative, we can tighten them if problems show up.
6331 - name: gfx.logging.texture-usage.enabled
6336 - name: gfx.logging.peak-texture-usage.enabled
6341 - name: gfx.logging.slow-frames.enabled
6346 # Use gfxPlatform::MaxAllocSize instead of the pref directly.
6347 - name: gfx.max-alloc-size
6349 value: (int32_t)0x7FFFFFFF
6351 do_not_use_directly: true
6353 # Use gfxPlatform::MaxTextureSize instead of the pref directly.
6354 - name: gfx.max-texture-size
6356 value: (int32_t)32767
6358 do_not_use_directly: true
6360 # Enable OffscreenCanvas everywhere.
6361 - name: gfx.offscreencanvas.enabled
6362 type: RelaxedAtomicBool
6366 - name: gfx.offscreencanvas.shared-provider
6367 type: RelaxedAtomicBool
6371 - name: gfx.offscreencanvas.snapshot-timeout-ms
6376 - name: gfx.omta.background-color
6381 - name: gfx.partialpresent.force
6382 type: RelaxedAtomicInt32
6387 - name: gfx.swap-interval.glx
6388 type: RelaxedAtomicBool
6392 - name: gfx.swap-interval.egl
6393 type: RelaxedAtomicBool
6395 #ifdef MOZ_WIDGET_ANDROID
6402 # Log severe performance warnings to the error console and profiles.
6403 # This should be use to quickly find which slow paths are used by test cases.
6404 - name: gfx.perf-warnings.enabled
6405 type: RelaxedAtomicBool
6410 # Whether to force using GLX over EGL.
6411 - name: gfx.x11-egl.force-disabled
6416 # Whether to force using EGL over GLX.
6417 - name: gfx.x11-egl.force-enabled
6422 - name: gfx.x11.glx_sgi_video_sync
6428 - name: gfx.testing.device-fail
6429 type: RelaxedAtomicBool
6433 - name: gfx.testing.device-reset
6434 type: RelaxedAtomicInt32
6438 # Meant to be used for tests only. If greater than 0 then we assert that the
6439 # number of active render textures increases by this amount or less.
6441 - name: gfx.testing.assert-render-textures-increase
6442 type: RelaxedAtomicInt32
6447 - name: gfx.text.disable-aa
6452 - name: gfx.text.subpixel-position.force-enabled
6457 - name: gfx.text.subpixel-position.force-disabled
6462 - name: gfx.use-iosurface-textures
6467 - name: gfx.use-mutex-on-present
6472 # Use SurfaceTextures as preferred backend for TextureClient/Host.
6473 - name: gfx.use-surfacetexture-textures
6478 - name: gfx.vsync.compositor.unobserve-count
6483 - name: gfx.vsync.force-disable-waitforvblank
6484 type: RelaxedAtomicBool
6488 - name: gfx.will-change.ignore-opacity
6489 type: RelaxedAtomicBool
6493 # Should we override the blocklist to enable WebGPU?
6494 - name: gfx.webgpu.ignore-blocklist
6499 # Whether to use the WebRender hardware backend
6500 - name: gfx.webrender.all
6506 - name: gfx.webrender.force-angle
6512 # WebRender is not enabled when there is no GPU process on window when
6513 # WebRender uses ANGLE. It is for avoiding that WebGL and WebRender use ANGLE
6514 # at once. But there is a case that we want to enable WebRender for testing.
6516 - name: gfx.webrender.enabled-no-gpu-process-with-angle-win
6522 - name: gfx.webrender.svg-images
6523 type: RelaxedAtomicBool
6527 - name: gfx.webrender.svg-shapes
6528 type: RelaxedAtomicBool
6532 - name: gfx.webrender.debug.blob.paint-flashing
6533 type: RelaxedAtomicBool
6537 - name: gfx.webrender.debug.enable-capture
6542 - name: gfx.webrender.debug.dl.dump-parent
6543 type: RelaxedAtomicBool
6547 - name: gfx.webrender.debug.dl.dump-content
6548 type: RelaxedAtomicBool
6552 - name: gfx.webrender.debug.dl.dump-content-serialized
6553 type: RelaxedAtomicBool
6557 # When true, we output warning messages when rejecting surface promotion
6558 # when it has been requested. This is important for color correctness of
6559 # wide color videos, as well as for GPU performance for all videos.
6560 - name: gfx.webrender.debug.surface-promotion-logging
6561 type: RelaxedAtomicBool
6565 #ifdef MOZ_WIDGET_GTK
6566 - name: gfx.webrender.reject-software-driver
6572 - name: gfx.webrender.debug.highlight-painted-layers
6573 type: RelaxedAtomicBool
6577 - name: gfx.webrender.debug.slow-cpu-frame-threshold
6582 - name: gfx.webrender.late-scenebuild-threshold
6583 type: RelaxedAtomicInt32
6587 - name: gfx.webrender.max-filter-ops-per-chain
6588 type: RelaxedAtomicUint32
6592 - name: gfx.webrender.batching.lookback
6597 - name: gfx.webrender.blob-tile-size
6602 - name: gfx.webrender.batched-upload-threshold
6604 #if defined(MOZ_WIDGET_ANDROID)
6611 - name: gfx.webrender.compositor
6613 #if defined(XP_WIN) || defined(XP_MACOSX)
6620 - name: gfx.webrender.scissored-cache-clears.enabled
6625 - name: gfx.webrender.scissored-cache-clears.force-enabled
6630 - name: gfx.webrender.compositor.force-enabled
6635 - name: gfx.webrender.compositor.max_update_rects
6640 - name: gfx.webrender.compositor.surface-pool-size
6645 # Number of damage rects we can give to the compositor for a new frame with
6646 # partial present. This controls whether partial present is used or not.
6647 - name: gfx.webrender.max-partial-present-rects
6649 #if defined(XP_WIN) || defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GTK)
6656 # Whether or not we can reuse the buffer contents using the GL buffer age
6657 # extension, if supported by the platform. This requires partial present
6659 - name: gfx.webrender.allow-partial-present-buffer-age
6664 # Whether or not we should force partial present on.
6665 - name: gfx.webrender.force-partial-present
6670 - name: gfx.webrender.enable-gpu-markers
6679 - name: gfx.webrender.enable-item-cache
6684 # Whether or not to fallback from WebRender to Software WebRender.
6685 - name: gfx.webrender.fallback.software
6691 # Whether to use an overlay of hardware decoded video with DirectComposition
6692 - name: gfx.webrender.dcomp-video-hw-overlay-win
6696 # Enable hardware decoded video overlay even when it is blocked.
6697 - name: gfx.webrender.dcomp-video-hw-overlay-win-force-enabled
6701 # Whether to use a yuv video overlay layers with DirectComposition
6702 - name: gfx.webrender.dcomp-video-yuv-overlay-win
6706 - name: gfx.webrender.dcomp-video-vp-scaling-win
6710 # Whether to use virtual surfaces, as opposed to each tile owning a surface.
6711 - name: gfx.webrender.dcomp-use-virtual-surfaces
6715 # Whether to use an overlay of software decoded video with DirectComposition
6716 - name: gfx.webrender.dcomp-video-sw-overlay-win
6720 # Enable software decoded video overlay even when it is blocked.
6721 - name: gfx.webrender.dcomp-video-sw-overlay-win-force-enabled
6725 - name: gfx.webrender.dcomp-video-check-slow-present
6726 type: RelaxedAtomicBool
6729 # Force triple buffering in overlay's video swap chain
6730 - name: gfx.webrender.dcomp-video-force-triple-buffering
6731 type: RelaxedAtomicBool
6734 - name: gfx.webrender.dcomp-video-swap-chain-present-interval-0
6735 type: RelaxedAtomicBool
6738 - name: gfx.video.convert-yuv-to-nv12.image-host-win
6739 type: RelaxedAtomicBool
6744 # Whether or not fallback to Software WebRender requires the GPU process.
6745 - name: gfx.webrender.fallback.software.requires-gpu-process
6750 - name: gfx.webrender.program-binary-disk
6752 #if defined(XP_WIN) || defined(ANDROID)
6759 - name: gfx.webrender.use-optimized-shaders
6764 - name: gfx.webrender.precache-shaders
6769 # When gl debug message is a high severity message, forwward it to gfx critical
6771 - name: gfx.webrender.gl-debug-message-critical-note
6773 #if defined(XP_WIN) && defined(NIGHTLY_BUILD)
6780 # Enable printing gl debug messages
6781 - name: gfx.webrender.gl-debug-message-print
6786 #ifdef NIGHTLY_BUILD
6787 # Keep this pref hidden on non-nightly builds to avoid people accidentally
6789 - name: gfx.webrender.panic-on-gl-error
6796 # Enables display of performance debugging counters when DirectComposition
6798 # Performance counters are displayed on the top-right corner of the screen.
6799 - name: gfx.webrender.debug.dcomp-counter
6800 type: RelaxedAtomicBool
6803 # Enables highlighting redraw regions of DCompositionVisual
6804 - name: gfx.webrender.debug.dcomp-redraw-regions
6805 type: RelaxedAtomicBool
6811 # Files show up in $HOME/Desktop/nativelayerdumps-PID/frame-123.html
6812 - name: gfx.webrender.debug.dump-native-layer-tree-to-file
6813 type: RelaxedAtomicBool
6818 - name: gfx.webrender.enable-low-priority-pool
6819 type: RelaxedAtomicBool
6820 #if defined(ANDROID)
6827 # Force subpixel anti-aliasing as much as possible, despite performance cost.
6828 - name: gfx.webrender.quality.force-subpixel-aa-where-possible
6833 - name: gfx.webrender.enable-subpixel-aa
6836 #ifdef MOZ_WIDGET_ANDROID
6843 - name: gfx.webrender.enable-client-storage
6849 # Width of WebRender tile size
6850 - name: gfx.webrender.picture-tile-width
6851 type: RelaxedAtomicInt32
6855 # Width of WebRender tile size
6856 - name: gfx.webrender.picture-tile-height
6857 type: RelaxedAtomicInt32
6861 # WebRender upper bound for shared surface size
6862 # According to apitrace, textures larger than 2048 break fast clear
6863 # optimizations on some intel drivers. We sometimes need to go larger, but
6864 # we try to avoid it.
6865 - name: gfx.webrender.max-shared-surface-size
6870 # Whether to use EGL robustness or not.
6871 - name: gfx.webrender.prefer-robustness
6873 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
6880 # Whether to use the WebRender software backend
6881 - name: gfx.webrender.software
6886 # Whether to use the D3D11 RenderCompositor when using WebRender software backend
6887 - name: gfx.webrender.software.d3d11
6892 - name: gfx.webrender.software.opengl
6894 #if defined(MOZ_WIDGET_ANDROID)
6901 - name: gfx.webrender.software.d3d11.upload-mode
6902 type: RelaxedAtomicInt32
6906 # Whether to force widgets to don't support acceleration to use WebRender
6908 - name: gfx.webrender.unaccelerated-widget.force
6909 type: RelaxedAtomicBool
6913 # Enable a lower quality, but higher performance pinch-zoom mode. Primarily
6914 # for devices with weak GPUs, or when running SWGL.
6915 - name: gfx.webrender.low-quality-pinch-zoom
6917 #if defined(MOZ_WIDGET_ANDROID) && defined(NIGHTLY_BUILD)
6924 # Disable wait of GPU execution completion
6925 - name: gfx.webrender.wait-gpu-finished.disabled
6934 # Enable VideoProcessor Super Resolution for video overlay
6935 - name: gfx.webrender.overlay-vp-super-resolution
6944 # Enable VideoProcessor-HDR on SDR content for video overlay
6945 - name: gfx.webrender.overlay-vp-auto-hdr
6954 # Use vsync events generated by hardware
6955 - name: gfx.work-around-driver-bugs
6960 - name: gfx.ycbcr.accurate-conversion
6961 type: RelaxedAtomicBool
6965 - name: gfx.remote-texture.recycle.disabled
6966 type: RelaxedAtomicBool
6970 - name: gfx.remote-texture.wait-owner-at-image-host
6971 type: RelaxedAtomicBool
6972 value: @IS_NOT_NIGHTLY_BUILD@
6975 #---------------------------------------------------------------------------
6976 # Prefs starting with "gl." (OpenGL)
6977 #---------------------------------------------------------------------------
6979 - name: gl.allow-high-power
6980 type: RelaxedAtomicBool
6984 - name: gl.ignore-dx-interop2-blacklist
6985 type: RelaxedAtomicBool
6989 - name: gl.use-tls-is-current
6990 type: RelaxedAtomicInt32
6994 #---------------------------------------------------------------------------
6995 # Prefs starting with "html5."
6996 #---------------------------------------------------------------------------
6998 # Time in milliseconds between the time a network buffer is seen and the timer
6999 # firing when the timer hasn't fired previously in this parse in the
7000 # off-the-main-thread HTML5 parser.
7001 - name: html5.flushtimer.initialdelay
7002 type: RelaxedAtomicInt32
7006 # Time in milliseconds between the time a network buffer is seen and the timer
7007 # firing when the timer has already fired previously in this parse.
7008 - name: html5.flushtimer.subsequentdelay
7009 type: RelaxedAtomicInt32
7013 #---------------------------------------------------------------------------
7014 # Prefs starting with "idle_period."
7015 #---------------------------------------------------------------------------
7017 - name: idle_period.min
7022 - name: idle_period.during_page_load.min
7027 - name: idle_period.cross_process_scheduling
7028 type: RelaxedAtomicBool
7032 #---------------------------------------------------------------------------
7033 # Prefs starting with "image."
7034 #---------------------------------------------------------------------------
7036 # The maximum size (in kB) that the aggregate frames of an animation can use
7037 # before it starts to discard already displayed frames and redecode them as
7039 - name: image.animated.decode-on-demand.threshold-kb
7040 type: RelaxedAtomicUint32
7044 # The minimum number of frames we want to have buffered ahead of an
7045 # animation's currently displayed frame.
7046 - name: image.animated.decode-on-demand.batch-size
7047 type: RelaxedAtomicUint32
7051 # Whether we should recycle already displayed frames instead of discarding
7052 # them. This saves on the allocation itself, and may be able to reuse the
7053 # contents as well. Only applies if generating full frames.
7054 - name: image.animated.decode-on-demand.recycle
7059 # Resume an animated image from the last displayed frame rather than
7060 # advancing when out of view.
7061 - name: image.animated.resume-from-last-displayed
7062 type: RelaxedAtomicBool
7066 # Maximum number of surfaces for an image before entering "factor of 2" mode.
7067 # This in addition to the number of "native" sizes of an image. A native size
7068 # is a size for which we can decode a frame without up or downscaling. Most
7069 # images only have 1, but some (i.e. ICOs) may have multiple frames for the
7070 # same data at different sizes.
7071 - name: image.cache.factor2.threshold-surfaces
7072 type: RelaxedAtomicInt32
7076 # Maximum size of a surface in KB we are willing to produce when rasterizing
7078 - name: image.cache.max-rasterized-svg-threshold-kb
7079 type: RelaxedAtomicInt32
7083 # The maximum size, in bytes, of the decoded images we cache.
7084 - name: image.cache.size
7089 # A weight, from 0-1000, to place on time when comparing to size.
7090 # Size is given a weight of 1000 - timeweight.
7091 - name: image.cache.timeweight
7096 # Decode all images automatically on load, ignoring our normal heuristics.
7097 - name: image.decode-immediately.enabled
7098 type: RelaxedAtomicBool
7102 # Decode all images synchronously, intended to be used for reftests.
7103 - name: image.testing.decode-sync.enabled
7108 # Whether we attempt to downscale images during decoding.
7109 - name: image.downscale-during-decode.enabled
7110 type: RelaxedAtomicBool
7114 # Whether we use EXIF metadata for image density.
7115 - name: image.exif-density-correction.enabled
7116 type: RelaxedAtomicBool
7120 # Whether EXIF density metadata is sanity checked against PixelXDimension and PixelYDimension
7121 - name: image.exif-density-correction.sanity-check.enabled
7122 type: RelaxedAtomicBool
7126 # The threshold for inferring that changes to an <img> element's |src|
7127 # attribute by JavaScript represent an animation, in milliseconds. If the |src|
7128 # attribute is changing more frequently than this value, then we enter a
7129 # special "animation mode" which is designed to eliminate flicker. Set to 0 to
7131 - name: image.infer-src-animation.threshold-ms
7132 type: RelaxedAtomicUint32
7136 # Whether the network request priority should be adjusted according
7137 # the layout and view frame position of each particular image.
7138 - name: image.layout_network_priority
7139 type: RelaxedAtomicBool
7143 # Chunk size for calls to the image decoders.
7144 - name: image.mem.decode_bytes_at_a_time
7149 # Discards inactive image frames and re-decodes them on demand from
7151 - name: image.mem.discardable
7152 type: RelaxedAtomicBool
7156 # Discards inactive image frames of _animated_ images and re-decodes them on
7157 # demand from compressed data. Has no effect if image.mem.discardable is false.
7158 - name: image.mem.animated.discardable
7163 # Enable extra information for debugging in the image memory reports.
7164 - name: image.mem.debug-reporting
7165 type: RelaxedAtomicBool
7169 # Force unmapping of unused shared surfaces after a timeout period or when we
7170 # encounter virtual memory pressure. By default this is only enabled on 32-bit
7172 - name: image.mem.shared.unmap.force-enabled
7177 # Minimum timeout to unmap shared surfaces since they have been last used,
7179 - name: image.mem.shared.unmap.min_expiration_ms
7184 # Mininum size for shared surfaces to consider unmapping, in kilobytes.
7185 - name: image.mem.shared.unmap.min_threshold_kb
7190 # How much of the data in the surface cache is discarded when we get a memory
7191 # pressure notification, as a fraction. The discard factor is interpreted as a
7192 # reciprocal, so a discard factor of 1 means to discard everything in the
7193 # surface cache on memory pressure, a discard factor of 2 means to discard half
7194 # of the data, and so forth. The default should be a good balance for desktop
7195 # and laptop systems, where we never discard visible images.
7196 - name: image.mem.surfacecache.discard_factor
7201 # Maximum size for the surface cache, in kilobytes.
7202 - name: image.mem.surfacecache.max_size_kb
7207 # Minimum timeout for expiring unused images from the surface cache, in
7208 # milliseconds. This controls how long we store cached temporary surfaces.
7209 - name: image.mem.surfacecache.min_expiration_ms
7214 # The surface cache's size, within the constraints of the maximum size set
7215 # above, is determined as a fraction of main memory size. The size factor is
7216 # interpreted as a reciprocal, so a size factor of 4 means to use no more than
7217 # 1/4 of main memory. The default should be a good balance for most systems.
7218 - name: image.mem.surfacecache.size_factor
7223 # Maximum size in kilobytes that we allow to allocate an imgFrame, meant for
7224 # testing/fuzzing purposes. -1 disables this limit (there are other limits in
7226 - name: image.mem.max_legal_imgframe_size_kb
7227 type: RelaxedAtomicInt32
7231 # Whether we record SVG images as blobs or not.
7232 - name: image.svg.blob-image
7233 type: RelaxedAtomicBool
7237 # Whether to set the incremental attribute in the Priority header for images
7238 - name: image.priority.incremental
7239 type: RelaxedAtomicBool
7243 # Whether we attempt to decode AVIF images or not.
7244 - name: image.avif.enabled
7245 type: RelaxedAtomicBool
7246 #if defined(MOZ_AV1)
7253 # How strict we are in accepting/rejecting AVIF inputs according to whether they
7254 # conform to the specification
7255 # 0 = Permissive: accept whatever we can simply, unambiguously interpret
7256 # 1 = Normal: reject violations of "shall" specification directives
7257 # 2 = Strict: reject violations of "should" specification directives
7258 - name: image.avif.compliance_strictness
7259 type: RelaxedAtomicInt32
7263 # Whether we apply container-level transforms like mirroring and rotation
7264 - name: image.avif.apply_transforms
7265 type: RelaxedAtomicBool
7269 # Whether we use dav1d (true) or libaom (false) to decode AVIF image
7270 - name: image.avif.use-dav1d
7271 type: RelaxedAtomicBool
7275 # Whether to allow decoding of animated AVIF sequences.
7276 - name: image.avif.sequence.enabled
7277 type: RelaxedAtomicBool
7281 # Whether AVIF files containing sequences should be animated even when the
7282 # major brand is set to 'avif'.
7283 - name: image.avif.sequence.animate_avif_major_branded_images
7284 type: RelaxedAtomicBool
7288 # Whether we attempt to decode JXL images or not.
7289 - name: image.jxl.enabled
7290 type: RelaxedAtomicBool
7294 #---------------------------------------------------------------------------
7295 # Prefs starting with "intl."
7296 #---------------------------------------------------------------------------
7299 # Whether making Gecko TSF-aware or only working with IMM. TSF is a modern
7300 # IME API set of Windows which replaces IMM APIs. Unless you can avoid the
7301 # problem which you see with enabling TSF, you shouldn't change this pref
7302 # to false since IMM handler is now not maintained nor tested with latest
7303 # Windows. If you need to change this pref to false, please file a bug to
7304 # <https://bugzilla.mozilla.org>.
7305 # Restart required to apply this pref change.
7306 - name: intl.tsf.enabled
7311 # Whether Gecko creates or does not create native caret for legacy ATOK
7313 - name: intl.tsf.hack.atok.create_native_caret
7318 # Whether Gecko returns available composition string rect or TS_E_NOLAYOUT
7319 # from ITextStoreACP::GetTextExt() when the specified range is same as the
7320 # range of composition string but some character rects in it are still
7321 # dirty if and only if ATOK is active TIP.
7322 # Note that this is ignored if active ATOK is or older than 2016 and
7323 # create_native_caret is true.
7324 - name: intl.tsf.hack.atok.do_not_return_no_layout_error_of_composition_string
7329 # Whether Gecko sets input scope of ATOK to "search" or never does it.
7330 # When "search" is set to the input scope, ATOK may stop their suggestions.
7331 # To avoid it, turn this pref on, or changing the settings in ATOK.
7332 # Note that if you enable this pref and you use the touch keyboard for touch
7333 # screens, you cannot access some specific features for a "search" input
7335 - name: intl.tsf.hack.atok.search_input_scope_disabled
7340 # Whether Gecko returns caret rect before composition string or TS_E_NOLAYOUT
7341 # from ITextStoreACP::GetTextExt() when the specified range is larger than
7342 # composition start offset if and only if Free ChangJie is active TIP.
7343 - name: intl.tsf.hack.free_chang_jie.do_not_return_no_layout_error
7348 # Whether Gecko returns available composition string rect or TS_E_NOLAYOUT
7349 # from ITextStoreACP::GetTextExt() when the specified range is same as the
7350 # range of composition string but some character rects in it are still
7351 # dirty if and only if Japanist 10 is active TIP.
7352 - name: intl.tsf.hack.japanist10.do_not_return_no_layout_error_of_composition_string
7357 # Whether Gecko returns previous character rect or TS_E_NOLAYOUT from
7358 # ITfContextView::GetTextExt() when the specified range is the first
7359 # character of selected clause of composition string if and only if Japanese TIP
7360 # of Microsoft is active.
7361 - name: intl.tsf.hack.ms_japanese_ime.do_not_return_no_layout_error_at_first_char
7366 # Whether Gecko returns previous character rect or TS_E_NOLAYOUT from
7367 # ITfContextView::GetTextExt() when the specified range is the caret of
7368 # composition string if and only if Japanese TIP of Microsoft is active.
7369 - name: intl.tsf.hack.ms_japanese_ime.do_not_return_no_layout_error_at_caret
7374 # Whether Gecko returns caret rect before composition string or TS_E_NOLAYOUT
7375 # from ITfContextView::GetTextExt() when the specified range is larger than
7376 # composition start offset if and only Simplified Chinese TIP of Microsoft
7378 - name: intl.tsf.hack.ms_simplified_chinese.do_not_return_no_layout_error
7383 # Whether Geckos hacks ITextStoreACP::QueryInsert() or not. The method should
7384 # return new selection after specified length text is inserted at specified
7385 # range. However, Microsoft Pinyin and Microsoft Wubi expect that the result
7386 # is same as specified range. If following prefs are true,
7387 # ITextStoreACP::QueryInsert() returns specified range only when one of the
7389 - name: intl.tsf.hack.ms_simplified_chinese.query_insert_result
7394 # Whether Gecko returns caret rect before composition string or TS_E_NOLAYOUT
7395 # from ITfContextView::GetTextExt() when the specified range is larger than
7396 # composition start offset if and only Traditional Chinese TIP of Microsoft
7398 - name: intl.tsf.hack.ms_traditional_chinese.do_not_return_no_layout_error
7403 # Whether Geckos hacks ITextStoreACP::QueryInsert() or not. The method should
7404 # return new selection after specified length text is inserted at specified
7405 # range. However, Microsoft ChangJie and Microsoft Quick expect that the
7406 # result is same as specified range. If following prefs are true,
7407 # ITextStoreACP::QueryInsert() returns specified range only when one of the
7409 - name: intl.tsf.hack.ms_traditional_chinese.query_insert_result
7414 # Whether Gecko sets input scope of the URL bar to IS_DEFAULT when black
7415 # listed IMEs are active or does not. If you use tablet mode mainly and you
7416 # want to use touch keyboard for URL when you set focus to the URL bar, you
7417 # can set this to false. Then, you'll see, e.g., ".com" key on the keyboard.
7418 # However, if you set this to false, such IMEs set its open state to "closed"
7419 # when you set focus to the URL bar. I.e., input mode is automatically
7420 # changed to English input mode.
7421 # Known buggy IME list:
7422 # - Microsoft IME for Japanese
7423 # - Google Japanese Input
7424 # - Microsoft Bopomofo
7425 # - Microsoft ChangJie
7426 # - Microsoft Phonetic
7428 # - Microsoft New ChangJie
7429 # - Microsoft New Phonetic
7430 # - Microsoft New Quick
7431 # - Microsoft Pinyin
7432 # - Microsoft Pinyin New Experience Input Style
7434 # - Microsoft IME for Korean (except on Win7)
7435 # - Microsoft Old Hangul
7436 - name: intl.ime.hack.set_input_scope_of_url_bar_to_default
7441 # On Windows 10 Build 17643 (an Insider Preview build of RS5), Microsoft
7442 # have fixed the caller of ITextACPStore::GetTextExt() to return
7443 # TS_E_NOLAYOUT to TIP as-is, rather than converting to E_FAIL.
7444 # Therefore, if TIP supports asynchronous layout computation perfectly, we
7445 # can return TS_E_NOLAYOUT and TIP waits next OnLayoutChange()
7446 # notification. However, some TIPs still have some bugs of asynchronous
7447 # layout support. We keep hacking the result of GetTextExt() like running
7448 # on Windows 10, however, there could be unknown TIP bugs if we stop
7449 # hacking the result. So, user can stop checking build ID to make Gecko
7450 # hack the result forcibly.
7451 - name: intl.tsf.hack.allow_to_stop_hacking_on_build_17643_or_later
7453 value: @IS_EARLY_BETA_OR_EARLIER@
7456 # If true, automatically extend selection to cluster boundaries when
7457 # TSF/TIP requests to select from/by middle of a cluster.
7458 - name: intl.tsf.hack.extend_setting_selection_range_to_cluster_boundaries
7460 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
7463 # Whether Gecko supports IMM even if TSF is enabled. This pref exists
7464 # only for check TSF behavior of new versions. Therefore, users should
7465 # not set this to false for daily use.
7466 - name: intl.tsf.support_imm
7471 # If true, TSF and TIP (IME) can retrieve URL of the document containing
7472 # the focused element. When this is set to true, Gecko exposes the spec
7474 # And Gecko exposes only "http" and "https" URLs. E.g., "data", "blob",
7475 # "file" URLs are never exposed.
7476 - name: intl.tsf.expose_url.allowed
7481 # If true, TSF and TIP (IME) can retrieve URL of the document containing
7482 # the focused element in the private browsing mode too.
7483 - name: intl.tsf.expose_url_in_private_browsing.allowed
7488 #if defined(ENABLE_TESTS)
7489 # If true, NS_GetComplexLineBreaks compares the line breaks produced in the
7490 # content process using the Uniscribe line breaker, with those from a
7491 # brokered call to the parent.
7492 - name: intl.compare_against_brokered_complex_line_breaks
7499 # If you use legacy Chinese IME which puts an ideographic space to composition
7500 # string as placeholder, this pref might be useful. If this is true and when
7501 # web contents forcibly commits composition (e.g., moving focus), the
7502 # ideographic space will be ignored (i.e., commits with empty string).
7503 - name: intl.ime.remove_placeholder_character_at_commit
7509 #if defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK) || defined(ANDROID)
7510 # Whether text input without keyboard press nor IME composition should cause a
7511 # set of composition events or not. E.g., when you use Emoji picker on macOS,
7512 # it inserts an Emoji character directly. If set to true, `compositionstart`,
7513 # `compositionupdate` and `compositionend` events will be fired, and the
7514 # correspnding `beforeinput` events are not cancelable. Otherwise, if set to
7515 # false, any user input events are not exposed to web apps but only
7516 # `beforeinput` event is fired as "insert text" as a cancelable event.
7517 - name: intl.ime.use_composition_events_for_insert_text
7523 # If true, we use UAX14/29 compatible segmenter rules using ICU4X
7524 - name: intl.icu4x.segmenter.enabled
7525 type: RelaxedAtomicBool
7529 #---------------------------------------------------------------------------
7530 # Prefs starting with "javascript."
7532 # NOTE: SpiderMonkey starts up before `mirror: once` preferences are sealed and
7533 # we cannot use them (Bug 1698311). Instead, we use `mirror: always`
7534 # prefs but mark as `do_not_use_directly` and `LoadStartupJSPrefs` will
7535 # mirror them into SpiderMonkey.
7536 #---------------------------------------------------------------------------
7538 # The JavaScript JIT compilers. These are read once on startup so a browser may
7539 # need to be restarted if toggling them. In general each subsequent JIT depends
7540 # on the ones before it being enabled.
7541 - name: javascript.options.blinterp
7544 mirror: always # LoadStartupJSPrefs
7545 do_not_use_directly: true
7547 - name: javascript.options.baselinejit
7550 mirror: always # LoadStartupJSPrefs
7551 do_not_use_directly: true
7553 - name: javascript.options.ion
7556 mirror: always # LoadStartupJSPrefs
7557 do_not_use_directly: true
7559 # The irregexp JIT for regex evaluation.
7560 - name: javascript.options.native_regexp
7563 mirror: always # LoadStartupJSPrefs
7564 do_not_use_directly: true
7566 # Jit Hints Cache - An in-process cache for the
7567 # content process to accelerate repeated baseline
7569 - name: javascript.options.jithints
7572 mirror: always # LoadStartupJSPrefs
7573 do_not_use_directly: true
7575 # "Warm-up" thresholds at which we attempt to compile a script/function with
7576 # the next JIT tier.
7578 # NOTE: These must match JitOptions defaults.
7579 - name: javascript.options.blinterp.threshold
7582 mirror: always # LoadStartupJSPrefs
7583 do_not_use_directly: true
7585 - name: javascript.options.baselinejit.threshold
7588 mirror: always # LoadStartupJSPrefs
7589 do_not_use_directly: true
7591 - name: javascript.options.ion.threshold
7594 mirror: always # LoadStartupJSPrefs
7595 do_not_use_directly: true
7597 # Enable off-main-thread Warp compilation.
7598 - name: javascript.options.ion.offthread_compilation
7601 mirror: always # LoadStartupJSPrefs
7602 do_not_use_directly: true
7605 # Enable extra correctness checks in the JITs that are slow and only available
7607 - name: javascript.options.jit.full_debug_checks
7610 mirror: always # LoadStartupJSPrefs
7611 do_not_use_directly: true
7614 # Heuristic threshold for Warp/Ion to decide that too many bailouts are
7615 # happening and an IonScript should be discarded.
7617 # NOTE: This must match JitOptions defaults.
7618 - name: javascript.options.ion.frequent_bailout_threshold
7621 mirror: always # LoadStartupJSPrefs
7622 do_not_use_directly: true
7624 # A threshold for Warp to decide whether a function can be inlined.
7625 # If the size of a function is smaller than this threshold, then it
7628 # NOTE: These must match JitOptions defaults.
7629 - name: javascript.options.inlining_bytecode_max_length
7633 do_not_use_directly: true
7635 - name: javascript.options.use_emulates_undefined_fuse
7639 do_not_use_directly: true
7640 set_spidermonkey_pref: startup
7642 - name: javascript.options.compact_on_user_inactive
7647 # No-op pref for testing the SpiderMonkey pref system.
7648 - name: javascript.options.tests.uint32-pref
7652 set_spidermonkey_pref: always
7654 # Enable fuse based destructuring
7655 - name: javascript.options.destructuring_fuse
7659 set_spidermonkey_pref: startup
7661 # The default amount of time to wait from the user being idle to starting a
7662 # shrinking GC. Measured in milliseconds.
7663 - name: javascript.options.compact_on_user_inactive_delay
7665 #ifdef NIGHTLY_BUILD
7672 # Use better error message when accessing property of null or undefined.
7673 - name: javascript.options.property_error_message_fix
7675 value: @IS_NIGHTLY_OR_DEV_EDITION@
7677 set_spidermonkey_pref: startup
7679 # Support for weak references in JavaScript (WeakRef and FinalizationRegistry).
7680 - name: javascript.options.weakrefs
7684 set_spidermonkey_pref: startup
7686 # Whether to expose the FinalizationRegistry.prototype.cleanupSome method.
7687 - name: javascript.options.experimental.weakrefs.expose_cleanupSome
7691 set_spidermonkey_pref: startup
7693 # ShadowRealms: https://github.com/tc39/proposal-shadowrealm
7694 - name: javascript.options.experimental.shadow_realms
7695 # Atomic, as we assert the preference, and that assertion may happen
7697 type: RelaxedAtomicBool
7700 # Non-startup pref because the WPT test harness sets prefs after startup.
7701 set_spidermonkey_pref: always
7703 # Support for String.prototype.{is,to}WellFormed in JavaScript.
7704 - name: javascript.options.well_formed_unicode_strings
7708 set_spidermonkey_pref: startup
7710 # Support for Object.groupBy/Map.groupBy in JavaScript.
7711 - name: javascript.options.array_grouping
7715 set_spidermonkey_pref: startup
7717 # Experimental support for ArrayBuffer.prototype.transfer{,ToFixedLength}() in JavaScript.
7718 - name: javascript.options.arraybuffer_transfer
7722 set_spidermonkey_pref: startup
7724 # Experimental support for New Set methods
7725 - name: javascript.options.experimental.new_set_methods
7729 set_spidermonkey_pref: startup
7731 # Experimental support for resizable ArrayBuffers in JavaScript.
7732 - name: javascript.options.experimental.arraybuffer_resizable
7736 set_spidermonkey_pref: startup
7738 # Experimental support for growable SharedArrayBuffers in JavaScript.
7739 - name: javascript.options.experimental.sharedarraybuffer_growable
7743 set_spidermonkey_pref: startup
7745 # Experimental support for Duplicate Named Capture Groups in JavaScript.
7746 - name: javascript.options.experimental.regexp_duplicate_named_groups
7750 set_spidermonkey_pref: startup
7752 #ifdef NIGHTLY_BUILD
7753 # Experimental support for Iterator Helpers in JavaScript.
7754 - name: javascript.options.experimental.iterator_helpers
7758 set_spidermonkey_pref: startup
7760 # Experimental support for Async Iterator Helpers in JavaScript.
7761 - name: javascript.options.experimental.async_iterator_helpers
7765 set_spidermonkey_pref: startup
7767 # Experimental support for Symbols as WeakMap keys in JavaScript.
7768 - name: javascript.options.experimental.symbols_as_weakmap_keys
7772 set_spidermonkey_pref: startup
7774 # Experimental support for Uint8Array base64/hex in JavaScript.
7775 - name: javascript.options.experimental.uint8array_base64
7779 set_spidermonkey_pref: startup
7781 # Experimental support for Float16Array in JavaScript.
7782 - name: javascript.options.experimental.float16array
7786 set_spidermonkey_pref: startup
7788 # Experimental support for Import Assertions in JavaScript.
7789 - name: javascript.options.experimental.import_attributes
7793 # Import attributes were developed under the 'assert' keyword.
7794 # We have that keyword under a pref, as we'd rather not ship it if we
7795 # can avoid it, but in the case we can't, we'd like access to it quickly.
7796 - name: javascript.options.experimental.import_attributes.assert_syntax
7800 #endif // NIGHTLY_BUILD
7802 #ifdef ENABLE_JSON_PARSE_WITH_SOURCE
7803 - name: javascript.options.experimental.json_parse_with_source
7807 set_spidermonkey_pref: startup
7808 #endif // ENABLE_JSON_PARSE_WITH_SOURCE
7810 - name: javascript.options.wasm_caching
7815 # The amount of time we wait between a request to GC (due to leaving a page) and doing the actual GC, in ms.
7816 - name: javascript.options.gc_delay
7821 # The amount of time we wait from the first request to GC to actually doing the first GC, in ms.
7822 - name: javascript.options.gc_delay.first
7827 # After doing a zonal GC, wait this much time (in ms) and then do a full GC,
7828 # unless one is already pending.
7829 - name: javascript.options.gc_delay.full
7834 # Maximum amount of time that should elapse between incremental GC slices, in ms.
7835 - name: javascript.options.gc_delay.interslice
7840 # nsJSEnvironmentObserver observes the memory-pressure notifications and
7841 # forces a garbage collection and cycle collection when it happens, if the
7842 # appropriate pref is set.
7843 - name: javascript.options.gc_on_memory_pressure
7845 # Disable the JS engine's GC on memory pressure, since we do one in the
7846 # mobile browser (bug 669346).
7847 # XXX: this value possibly should be changed, or the pref removed entirely.
7849 value: @IS_NOT_ANDROID@
7852 # We allow at most MIN(max, MAX(NUM_CPUS / cpu_divisor, 1)) concurrent GCs
7854 - name: javascript.options.concurrent_multiprocess_gcs.cpu_divisor
7855 type: RelaxedAtomicUint32
7859 # See 'cpu_divisor' above, 0 means UINT_32_MAX.
7860 - name: javascript.options.concurrent_multiprocess_gcs.max
7861 type: RelaxedAtomicUint32
7865 - name: javascript.options.mem.log
7870 - name: javascript.options.mem.notify
7875 # Whether the Parent process allocates and shares memory with all content
7876 # processes. This is mirrored once, as the parent process will do this
7877 # allocation early on.
7878 - name: javascript.options.self_hosted.use_shared_memory
7881 mirror: always # LoadStartupJSPrefs
7882 do_not_use_directly: true
7884 - name: javascript.options.main_thread_stack_quota_cap
7886 #if defined(MOZ_ASAN)
7887 value: 6 * 1024 * 1024
7889 value: 2 * 1024 * 1024
7893 - name: javascript.options.wasm_optimizingjit
7898 - name: javascript.options.wasm_relaxed_simd
7900 #if defined(ENABLE_WASM_RELAXED_SIMD)
7901 value: @IS_NIGHTLY_BUILD@
7906 set_spidermonkey_pref: startup
7908 - name: javascript.options.wasm_moz_intgemm
7910 #if defined(ENABLE_WASM_MOZ_INTGEMM)
7911 value: @IS_NIGHTLY_BUILD@
7916 set_spidermonkey_pref: startup
7918 - name: javascript.options.wasm_exnref
7920 value: @IS_EARLY_BETA_OR_EARLIER@
7922 set_spidermonkey_pref: startup
7924 - name: javascript.options.wasm_gc
7926 #if defined(ENABLE_WASM_GC)
7932 set_spidermonkey_pref: startup
7934 - name: javascript.options.wasm_memory_control
7938 set_spidermonkey_pref: startup
7940 - name: javascript.options.wasm_branch_hinting
7942 #if defined(ENABLE_WASM_BRANCH_HINTING)
7943 value: @IS_NIGHTLY_BUILD@
7948 set_spidermonkey_pref: startup
7950 #if defined(ENABLE_WASM_SIMD)
7951 #if defined(JS_CODEGEN_X64) || defined(JS_CODEGEN_X86)
7952 # Enables AVX instructions support on X86/X64 platforms.
7953 # Changing these prefs requires a restart.
7954 - name: javascript.options.wasm_simd_avx
7961 - name: javascript.options.wasm_memory64
7963 #if defined(ENABLE_WASM_MEMORY64)
7964 value: @IS_NIGHTLY_BUILD@
7969 set_spidermonkey_pref: startup
7971 - name: javascript.options.wasm_multi_memory
7973 #if defined(ENABLE_WASM_MULTI_MEMORY)
7979 set_spidermonkey_pref: startup
7981 - name: javascript.options.wasm_js_string_builtins
7985 set_spidermonkey_pref: startup
7987 - name: javascript.options.wasm_tail_calls
7989 #if defined(ENABLE_WASM_TAIL_CALLS)
7995 set_spidermonkey_pref: startup
7997 - name: javascript.options.wasm_js_promise_integration
8001 set_spidermonkey_pref: startup
8003 - name: javascript.options.wasm_test_serialization
8007 set_spidermonkey_pref: startup
8009 - name: javascript.options.wasm_experimental_compile_pipeline
8013 set_spidermonkey_pref: startup
8015 # Support for pretenuring allocations based on their allocation site.
8016 - name: javascript.options.site_based_pretenuring
8020 do_not_use_directly: true
8021 set_spidermonkey_pref: startup
8023 #if defined(DEBUG) || defined(NIGHTLY_BUILD) || defined(JS_GC_ZEAL)
8024 # Enable extra poisoning of GC memory.
8025 - name: javascript.options.extra_gc_poisoning
8033 set_spidermonkey_pref: startup
8036 #if !defined(JS_CODEGEN_MIPS32) && !defined(JS_CODEGEN_MIPS64) && !defined(JS_CODEGEN_LOONG64)
8037 # Spectre security vulnerability mitigations for the JS JITs.
8039 # NOTE: The MIPS and LoongArch backends do not support these mitigations (and generally
8040 # do not need them). In that case, leave the pref unlisted with its
8041 # default value of false.
8042 - name: javascript.options.spectre.index_masking
8045 mirror: always # LoadStartupJSPrefs
8046 do_not_use_directly: true
8048 - name: javascript.options.spectre.object_mitigations
8051 mirror: always # LoadStartupJSPrefs
8052 do_not_use_directly: true
8054 - name: javascript.options.spectre.string_mitigations
8057 mirror: always # LoadStartupJSPrefs
8058 do_not_use_directly: true
8060 - name: javascript.options.spectre.value_masking
8063 mirror: always # LoadStartupJSPrefs
8064 do_not_use_directly: true
8066 - name: javascript.options.spectre.jit_to_cxx_calls
8069 mirror: always # LoadStartupJSPrefs
8070 do_not_use_directly: true
8071 #endif // !defined(JS_CODEGEN_MIPSXX) && !defined(JS_CODEGEN_LOONG64)
8073 # Separate pref to override the values of the Spectre-related prefs above for
8074 # isolated web content processes, where we don't need these mitigations.
8075 - name: javascript.options.spectre.disable_for_isolated_content
8080 # Whether the W^X policy is enforced to mark JIT code pages as either writable
8081 # or executable but never both at the same time. OpenBSD defaults to W^X.
8082 - name: javascript.options.content_process_write_protect_code
8084 #if defined(XP_OPENBSD)
8091 # Whether to use the XPCOM thread pool for JS helper tasks.
8092 - name: javascript.options.external_thread_pool
8096 do_not_use_directly: true
8098 # Whether to use the off-thread script compilation and decoding.
8099 - name: javascript.options.parallel_parsing
8104 # Whether to use fdlibm for Math.sin, Math.cos, and Math.tan. When
8105 # privacy.resistFingerprinting is true, this pref is ignored and fdlibm is used
8107 - name: javascript.options.use_fdlibm_for_sin_cos_tan
8109 value: @IS_EARLY_BETA_OR_EARLIER@
8111 set_spidermonkey_pref: always
8113 # Whether to support parsing '//(#@) source(Mapping)?URL=' pragmas.
8114 - name: javascript.options.source_pragmas
8120 - name: javascript.options.asmjs
8125 # Whether to throw a TypeError if asm.js code hits validation failure.
8126 - name: javascript.options.throw_on_asmjs_validation_failure
8131 # Whether to disable the jit within the main process
8132 - name: javascript.options.main_process_disable_jit
8141 #---------------------------------------------------------------------------
8142 # Prefs starting with "layers."
8143 #---------------------------------------------------------------------------
8145 # Whether to disable acceleration for all widgets.
8146 - name: layers.acceleration.disabled
8150 do_not_use_directly: true
8151 # Instead, use gfxConfig::IsEnabled(Feature::HW_COMPOSITING).
8153 # Whether to force acceleration on, ignoring blacklists.
8155 # bug 838603 -- on Android, accidentally blacklisting OpenGL layers
8156 # means a startup crash for everyone.
8157 # Temporarily force-enable GL compositing. This is default-disabled
8158 # deep within the bowels of the widgetry system. Remove me when GL
8159 # compositing isn't default disabled in widget/android.
8160 - name: layers.acceleration.force-enabled
8164 do_not_use_directly: true
8166 # Whether we allow AMD switchable graphics.
8167 - name: layers.amd-switchable-gfx.enabled
8172 # Whether to use async panning and zooming.
8173 - name: layers.async-pan-zoom.enabled
8177 do_not_use_directly: true
8179 - name: layers.child-process-shutdown
8180 type: RelaxedAtomicBool
8184 - name: layers.d3d11.force-warp
8189 - name: layers.d3d11.enable-blacklist
8194 # Enable DEAA antialiasing for transformed layers in the compositor.
8195 - name: layers.deaa.enabled
8196 type: RelaxedAtomicBool
8197 #if defined(MOZ_WIDGET_ANDROID)
8204 # Force all possible layers to be always active layers.
8205 - name: layers.force-active
8210 - name: layers.draw-mask-debug
8211 type: RelaxedAtomicBool
8215 - name: layers.force-synchronous-resize
8216 type: RelaxedAtomicBool
8218 # We want to control it by nsWindow::SynchronouslyRepaintOnResize() on Linux/Wayland.
8225 - name: layers.gpu-process.allow-software
8234 - name: layers.gpu-process.enabled
8236 #if defined(XP_WIN) || defined(MOZ_WIDGET_ANDROID)
8243 - name: layers.gpu-process.force-enabled
8248 - name: layers.gpu-process.ipc_reply_timeout_ms
8253 # How many unstable GPU process restarts we allow for a given configuration.
8254 - name: layers.gpu-process.max_restarts
8255 type: RelaxedAtomicInt32
8256 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_ANDROID)
8263 # How many frames we must render before declaring the GPU process stable, and
8264 # allow restarts without it counting against our maximum restarts.
8265 - name: layers.gpu-process.stable.frame-threshold
8266 type: RelaxedAtomicUint32
8270 # How many milliseconds the GPU process must have lived before we accept that
8271 # it is stable, and allow restarts without it counting against our maximum
8273 - name: layers.gpu-process.stable.min-uptime-ms
8274 type: RelaxedAtomicInt32
8278 # Note: This pref will only be used if it is less than layers.gpu-process.max_restarts.
8279 - name: layers.gpu-process.max_restarts_with_decoder
8280 type: RelaxedAtomicInt32
8284 - name: layers.gpu-process.startup_timeout_ms
8289 - name: layers.gpu-process.crash-also-crashes-browser
8294 # Whether to animate simple opacity and transforms on the compositor.
8295 - name: layers.offmainthreadcomposition.async-animations
8300 # Whether to log information about off main thread animations to stderr.
8301 - name: layers.offmainthreadcomposition.log-animations
8306 - name: layers.offmainthreadcomposition.force-disabled
8311 # Compositor target frame rate. NOTE: If vsync is enabled the compositor
8312 # frame rate will still be capped.
8313 # -1 -> default (match layout.frame_rate or 60 FPS)
8314 # 0 -> full-tilt mode: Recomposite even if not transaction occured.
8315 - name: layers.offmainthreadcomposition.frame-rate
8316 type: RelaxedAtomicInt32
8321 - name: layers.prefer-opengl
8327 # Copy-on-write canvas.
8328 - name: layers.shared-buffer-provider.enabled
8329 type: RelaxedAtomicBool
8333 - name: layers.recycle-allocator-rdd
8338 - name: layers.iosurfaceimage.recycle-limit
8339 type: RelaxedAtomicUint32
8343 - name: layers.iosurfaceimage.use-nv12
8348 #---------------------------------------------------------------------------
8349 # Prefs starting with "layout."
8350 #---------------------------------------------------------------------------
8352 # Debug-only pref to force enable the AccessibleCaret. If you want to
8353 # control AccessibleCaret by mouse, you'll need to set
8354 # "layout.accessiblecaret.hide_carets_for_mouse_input" to false.
8355 - name: layout.accessiblecaret.enabled
8360 # Enable the accessible caret on platforms/devices
8361 # that we detect have touch support. Note that this pref is an
8362 # additional way to enable the accessible carets, rather than
8363 # overriding the layout.accessiblecaret.enabled pref.
8364 - name: layout.accessiblecaret.enabled_on_touch
8369 # By default, carets become tilt only when they are overlapping.
8370 - name: layout.accessiblecaret.always_tilt
8375 # Show caret in cursor mode when long tapping on an empty content. This
8376 # also changes the default update behavior in cursor mode, which is based
8377 # on the emptiness of the content, into something more heuristic. See
8378 # AccessibleCaretManager::UpdateCaretsForCursorMode() for the details.
8379 - name: layout.accessiblecaret.caret_shown_when_long_tapping_on_empty_content
8384 # 0 = by default, always hide carets for selection changes due to JS calls.
8385 # 1 = update any visible carets for selection changes due to JS calls,
8386 # but don't show carets if carets are hidden.
8387 # 2 = always show carets for selection changes due to JS calls.
8388 - name: layout.accessiblecaret.script_change_update_mode
8393 # Allow one caret to be dragged across the other caret without any limitation.
8394 # This matches the built-in convention for all desktop platforms.
8395 - name: layout.accessiblecaret.allow_dragging_across_other_caret
8400 # Optionally provide haptic feedback on long-press selection events.
8401 - name: layout.accessiblecaret.hapticfeedback
8406 # Smart phone-number selection on long-press is not enabled by default.
8407 - name: layout.accessiblecaret.extend_selection_for_phone_number
8412 # Keep the accessible carets hidden when the user is using mouse input (as
8413 # opposed to touch/pen/etc.).
8414 - name: layout.accessiblecaret.hide_carets_for_mouse_input
8419 # CSS attributes (width, height, margin-left) of the AccessibleCaret in CSS
8421 - name: layout.accessiblecaret.width
8426 - name: layout.accessiblecaret.height
8431 - name: layout.accessiblecaret.margin-left
8436 - name: layout.accessiblecaret.transition-duration
8441 # Simulate long tap events to select words. Mainly used in manual testing
8443 - name: layout.accessiblecaret.use_long_tap_injector
8448 # To support magnify glass, whether we dispatch additional chrome event such as
8450 - name: layout.accessiblecaret.magnifier.enabled
8455 # One of several prefs affecting the maximum area to pre-render when animating
8456 # a large element on the compositor.
8457 # This pref enables transform (and transform like properties) animations on a
8458 # large element run on the compositor with rendering partial area of the
8459 # element on the main thread instead of rendering the whole area. Once the
8460 # animation tried to composite out of the partial rendered area, the animation
8461 # is rendered again with the latest visible partial area.
8462 - name: layout.animation.prerender.partial
8463 type: RelaxedAtomicBool
8467 # One of several prefs affecting the maximum area to pre-render when animating
8468 # a large element on the compositor.
8469 # This value is applied to both x and y axes and a perfect square contructed
8470 # by the greater axis value which will be capped by the absolute limits is used
8471 # for the partial pre-render area.
8472 - name: layout.animation.prerender.viewport-ratio-limit
8477 # One of several prefs affecting the maximum area to pre-render when animating
8478 # a large element on the compositor.
8479 - name: layout.animation.prerender.absolute-limit-x
8480 type: RelaxedAtomicUint32
8484 # One of several prefs affecting the maximum area to pre-render when animating
8485 # a large element on the compositor.
8486 - name: layout.animation.prerender.absolute-limit-y
8487 type: RelaxedAtomicUint32
8491 # Test-only pref, if this is true, partial pre-rendered transform animations
8492 # get stuck when it reaches to the pre-rendered boundaries and the pre-render
8493 # region is never updated.
8494 - name: layout.animation.prerender.partial.jank
8495 type: RelaxedAtomicBool
8499 # Whether to enable CSS Anchor Positioning support.
8500 # https://drafts.csswg.org/css-anchor-position-1/
8501 - name: layout.css.anchor-positioning.enabled
8502 type: RelaxedAtomicBool
8507 # Override DPI. A value of -1 means use the maximum of 96 and the system DPI.
8508 # A value of 0 means use the system DPI. A positive value is used as the DPI.
8509 # This sets the physical size of a device pixel and thus controls the
8510 # interpretation of physical units such as "pt".
8511 - name: layout.css.dpi
8516 # Whether to always underline links.
8517 - name: layout.css.always_underline_links
8518 type: RelaxedAtomicBool
8523 # Whether to respect align-content on blocks.
8524 - name: layout.css.align-content.blocks.enabled
8525 type: RelaxedAtomicBool
8530 # Whether content-box and stroke-box are enabled for transform-box.
8531 - name: layout.css.transform-box-content-stroke.enabled
8532 type: RelaxedAtomicBool
8537 # Whether transition-behavior property is enabled?
8538 - name: layout.css.transition-behavior.enabled
8539 type: RelaxedAtomicBool
8540 value: @IS_NIGHTLY_BUILD@
8544 # Whether @starting-style is enabled?
8545 - name: layout.css.starting-style-at-rules.enabled
8546 type: RelaxedAtomicBool
8547 value: @IS_NIGHTLY_BUILD@
8551 # Should we look for counter ancestor scopes first?
8552 - name: layout.css.counter-ancestor-scope.enabled
8557 # Whether the `-moz-control-character-visibility` property is exposed to
8560 # Only for testing purposes.
8561 - name: layout.css.moz-control-character-visibility.enabled
8562 type: RelaxedAtomicBool
8567 # This pref controls whether the `prefers-color-scheme` value of iframes images
8568 # reacts to the embedder `color-scheme` in content.
8569 - name: layout.css.iframe-embedder-prefers-color-scheme.content.enabled
8570 type: RelaxedAtomicBool
8574 # Controls the transparency of the initial about:blank document. Generally you
8575 # don't ever want a white flash in dark mode, but due to backwards compat we
8576 # have some extra control over this, for now at least.
8578 # See https://github.com/w3c/csswg-drafts/issues/9624 for iframes.
8581 # 1: content-inaccessible top-level only.
8582 # 2: frames and content-inaccessible top-level only.
8584 # Others: don't treat this document specially.
8585 - name: layout.css.initial-document-transparency
8586 type: RelaxedAtomicInt32
8590 # The minimum contrast ratio between the accent color foreground and background
8593 # We don't use this for text, so we need a contrast of at least AA (for user
8594 # interface components and graphical objects), which per WCAG is 3:1
8595 - name: layout.css.accent-color.min-contrast-ratio
8600 # The target contrast ratio between the accent color foreground and background
8601 # colors when darkening.
8603 # We aim a bit further than the minimum contrast ratio, which seems to provide
8604 # nice results in practice.
8605 - name: layout.css.accent-color.darkening-target-contrast-ratio
8610 # Whether the `animation-composition` in css-animations-2 is enabled.
8611 - name: layout.css.animation-composition.enabled
8616 # Is the codepath for using cached scrollbar styles enabled?
8617 - name: layout.css.cached-scrollbar-styles.enabled
8622 # Whether we cache inline styles in a document unconditionally or not.
8623 - name: layout.css.inline-style-caching.always-enabled
8628 # Whether computed local-fragment-only image urls serialize using the same
8629 # rules as filter/mask/etc (not resolving the URL for local refs).
8631 # See https://github.com/w3c/csswg-drafts/issues/3195
8632 - name: layout.css.computed-style.dont-resolve-image-local-refs
8633 type: RelaxedAtomicBool
8638 # Are implicit tracks in computed grid templates serialized?
8639 - name: layout.css.serialize-grid-implicit-tracks
8640 type: RelaxedAtomicBool
8644 # Whether the system-ui generic family is enabled.
8645 - name: layout.css.system-ui.enabled
8646 type: RelaxedAtomicBool
8651 # Set the number of device pixels per CSS pixel. A value <= 0 means choose
8652 # automatically based on user settings for the platform (e.g., "UI scale factor"
8653 # on Mac). If browser.display.os-zoom-behavior == 1, then a positive value
8654 # will be multiplied by the text scale factor; otherwise a positive value is
8655 # used as-is. This controls the size of a CSS "px" at 100% full-zoom.
8656 # The size of system fonts is also changed in proportion with the change in
8657 # "px" sizes. Use "ui.textScaleFactor" instead to only change the size of "px".
8658 # This is only used for windows on the screen, not for printing.
8659 - name: layout.css.devPixelsPerPx
8664 # Is support for CSS backdrop-filter enabled?
8665 - name: layout.css.backdrop-filter.enabled
8670 # Do we override the blocklist for CSS backdrop-filter?
8671 - name: layout.css.backdrop-filter.force-enabled
8676 # Is support for rect() enabled?
8677 - name: layout.css.basic-shape-rect.enabled
8678 type: RelaxedAtomicBool
8683 # Is support for shape() enabled?
8684 - name: layout.css.basic-shape-shape.enabled
8685 type: RelaxedAtomicBool
8686 value: @IS_NIGHTLY_BUILD@
8690 # Is support for xywh() enabled?
8691 - name: layout.css.basic-shape-xywh.enabled
8692 type: RelaxedAtomicBool
8697 # Whether alt text in content is enabled.
8698 - name: layout.css.content.alt-text.enabled
8699 type: RelaxedAtomicBool
8704 # Should stray control characters be rendered visibly?
8705 - name: layout.css.control-characters.visible
8706 type: RelaxedAtomicBool
8707 value: @IS_NOT_RELEASE_OR_BETA@
8711 # Whether the `content-visibility` CSS property is enabled
8712 - name: layout.css.content-visibility.enabled
8713 type: RelaxedAtomicBool
8718 # Whether the `contain-intrinsic-size` CSS property is enabled
8719 - name: layout.css.contain-intrinsic-size.enabled
8720 type: RelaxedAtomicBool
8725 # Is support for GeometryUtils.convert*FromNode enabled?
8726 - name: layout.css.convertFromNode.enabled
8728 value: @IS_NOT_RELEASE_OR_BETA@
8731 - name: layout.css.cross-fade.enabled
8732 type: RelaxedAtomicBool
8737 # Is support for light-dark() on content enabled?
8738 - name: layout.css.light-dark.enabled
8739 type: RelaxedAtomicBool
8744 # Is support for fit-content() enabled?
8745 - name: layout.css.fit-content-function.enabled
8746 type: RelaxedAtomicBool
8751 # Whether to use tight bounds for floating ::first-letter (legacy Gecko behavior)
8752 # or loose bounds based on overall font metrics (WebKit/Blink-like behavior)?
8754 # 1 legacy Gecko behavior (tight bounds)
8755 # 0 loose typographic bounds (similar to webkit/blink)
8756 # -1 auto behavior: use loose bounds if reduced line-height (<1em) or negative
8757 # block-start margin is present; otherwise use tight bounds.
8758 - name: layout.css.floating-first-letter.tight-glyph-bounds
8760 #ifdef NIGHTLY_BUILD
8767 # Is support for the @font-palette-values rule and font-palette property enabled?
8768 - name: layout.css.font-palette.enabled
8769 type: RelaxedAtomicBool
8774 # Is support for variation fonts enabled?
8775 - name: layout.css.font-variations.enabled
8776 type: RelaxedAtomicBool
8781 # Is support for the size-adjust @font-face descriptor enabled?
8782 - name: layout.css.size-adjust.enabled
8783 type: RelaxedAtomicBool
8788 # Is support for the tech() function in the @font-face src descriptor enabled?
8789 - name: layout.css.font-tech.enabled
8790 type: RelaxedAtomicBool
8795 # Is support for font-variant-emoji enabled?
8796 - name: layout.css.font-variant-emoji.enabled
8797 type: RelaxedAtomicBool
8798 value: @IS_NIGHTLY_BUILD@
8802 # Visibility level of font families available to CSS font-matching:
8803 # 1 - only base system fonts
8804 # 2 - also fonts from optional language packs
8805 # 3 - also user-installed fonts
8806 - name: layout.css.font-visibility
8811 # Is support for GeometryUtils.getBoxQuads enabled?
8812 - name: layout.css.getBoxQuads.enabled
8814 value: @IS_NOT_RELEASE_OR_BETA@
8817 # Is support for (linear|radial|conic)-gradient color interpolation methods enabled?
8818 - name: layout.css.gradient-color-interpolation-method.enabled
8819 type: RelaxedAtomicBool
8824 # Should we propagate baseline alignment information from a parent grid into
8826 - name: layout.css.grid-subgrid-baselines.enabled
8827 type: RelaxedAtomicBool
8828 value: @IS_NIGHTLY_BUILD@
8831 # Is support for CSS masonry layout enabled?
8832 - name: layout.css.grid-template-masonry-value.enabled
8833 type: RelaxedAtomicBool
8834 value: @IS_NIGHTLY_BUILD@
8838 # Is support for :has() enabled?
8839 - name: layout.css.has-selector.enabled
8840 type: RelaxedAtomicBool
8845 # Is support for CSS initial-letter property enabled?
8846 - name: layout.css.initial-letter.enabled
8851 # Is eager first-letter processing during intrinsic size computation enabled?
8852 - name: layout.css.intrinsic-size-first-letter.enabled
8857 # Which model to use for CSS letter-spacing:
8858 # 0 - Gecko legacy model, spacing added to trailing side of letter
8859 # 1 - WebKit/Blink-compatible, spacing always added to right-hand side
8860 # 2 - Symmetrical spacing, half added to each side
8861 - name: layout.css.letter-spacing.model
8863 #ifdef NIGHTLY_BUILD
8870 # Is support for motion-path url enabled?
8871 - name: layout.css.motion-path-url.enabled
8872 type: RelaxedAtomicBool
8877 # Pref to control whether the ::marker property restrictions defined in [1]
8880 # [1]: https://drafts.csswg.org/css-pseudo-4/#selectordef-marker
8881 - name: layout.css.marker.restricted
8882 type: RelaxedAtomicBool
8887 # Is -moz-osx-font-smoothing enabled? (Only supported in OSX builds)
8888 - name: layout.css.osx-font-smoothing.enabled
8890 #if defined(XP_MACOSX)
8897 # Is support for CSS overflow-clip-box enabled for non-UA sheets?
8898 - name: layout.css.overflow-clip-box.enabled
8903 # Is support for CSS overflow: -moz-hidden-unscrollable enabled
8904 - name: layout.css.overflow-moz-hidden-unscrollable.enabled
8905 type: RelaxedAtomicBool
8906 value: @IS_NOT_NIGHTLY_BUILD@
8910 # Is support for overscroll-behavior enabled?
8911 - name: layout.css.overscroll-behavior.enabled
8916 # Enables support for the page-orientation property inside of CSS @page rules.
8917 - name: layout.css.page-orientation.enabled
8918 type: RelaxedAtomicBool
8923 # Enables support for different CSS page sizes on each page when printing.
8924 - name: layout.css.allow-mixed-page-sizes
8925 type: RelaxedAtomicBool
8929 # Enables support for @margin rules.
8930 - name: layout.css.margin-rules.enabled
8931 type: RelaxedAtomicBool
8936 # Whether Properties and Values is enabled
8937 - name: layout.css.properties-and-values.enabled
8938 type: RelaxedAtomicBool
8943 # Whether @scope rule is enabled
8944 - name: layout.css.at-scope.enabled
8945 type: RelaxedAtomicBool
8950 # Dictates whether or not the prefers contrast media query will be
8952 # true: prefers-contrast will toggle based on OS and browser settings.
8953 # false: prefers-contrast will only parse and toggle in the browser
8955 - name: layout.css.prefers-contrast.enabled
8956 type: RelaxedAtomicBool
8961 # An override for prefers-color-scheme for content documents.
8964 # 2: Auto (system color scheme unless overridden by browser theme)
8965 - name: layout.css.prefers-color-scheme.content-override
8966 type: RelaxedAtomicInt32
8970 # Dictates whether or not the forced-colors media query is enabled.
8971 - name: layout.css.forced-colors.enabled
8972 type: RelaxedAtomicBool
8977 # Dictates whether or not the prefers-reduced-transparency media query is enabled.
8978 - name: layout.css.prefers-reduced-transparency.enabled
8979 type: RelaxedAtomicBool
8984 # Dictates whether or not the inverted-colors media query is enabled.
8985 - name: layout.css.inverted-colors.enabled
8986 type: RelaxedAtomicBool
8991 # Is support for forced-color-adjust properties enabled?
8992 - name: layout.css.forced-color-adjust.enabled
8993 type: RelaxedAtomicBool
8998 # Is support for -moz-prefixed animation properties enabled?
8999 - name: layout.css.prefixes.animations
9004 # Is support for -moz-border-image enabled?
9005 - name: layout.css.prefixes.border-image
9010 # Is support for -moz-box-sizing enabled?
9011 - name: layout.css.prefixes.box-sizing
9016 # Is support for -moz-prefixed font feature properties enabled?
9017 - name: layout.css.prefixes.font-features
9022 # Is support for -moz-prefixed transform properties enabled?
9023 - name: layout.css.prefixes.transforms
9028 # Is support for -moz-prefixed transition properties enabled?
9029 - name: layout.css.prefixes.transitions
9034 # Enable relative color syntax: https://drafts.csswg.org/css-color-5/#relative-colors
9035 - name: layout.css.relative-color-syntax.enabled
9036 type: RelaxedAtomicBool
9041 # Is CSS error reporting enabled?
9042 - name: layout.css.report_errors
9047 # Are inter-character ruby annotations enabled?
9048 - name: layout.css.ruby.intercharacter.enabled
9053 - name: layout.css.scroll-behavior.damping-ratio
9058 # Tuning of the smooth scroll motion used by CSSOM-View scroll-behavior.
9059 # Spring-constant controls the strength of the simulated MSD
9060 # (Mass-Spring-Damper).
9061 - name: layout.css.scroll-behavior.spring-constant
9066 # Whether the scroll-driven animations generated by CSS is enabled. This
9067 # also include animation-timeline property.
9068 - name: layout.css.scroll-driven-animations.enabled
9069 type: RelaxedAtomicBool
9074 # When selecting the snap point for CSS scroll snapping, the velocity of the
9075 # scroll frame is clamped to this speed, in CSS pixels / s.
9076 - name: layout.css.scroll-snap.prediction-max-velocity
9077 type: RelaxedAtomicInt32
9081 # When selecting the snap point for CSS scroll snapping, the velocity of the
9082 # scroll frame is integrated over this duration, in seconds. The snap point
9083 # best suited for this position is selected, enabling the user to perform fling
9085 - name: layout.css.scroll-snap.prediction-sensitivity
9090 # Stylo thread-pool size.
9091 # Negative means auto, 0 disables the thread-pool (main-thread styling), other
9092 # numbers override as specified.
9093 # Note that 1 still creates a thread-pool of one thread!
9094 - name: layout.css.stylo-threads
9095 type: RelaxedAtomicInt32
9100 # Stylo work unit size. This is the amount of nodes we'll process in a single
9101 # unit of work of the thread-pool.
9103 # Larger values will increase style sharing cache hits and general DOM locality
9104 # at the expense of decreased opportunities for parallelism. There are some
9105 # measurements in bug 1385982 comments 11, 12, 13 that investigate some
9106 # slightly different values for the work unit size.
9108 # If the size is significantly increased, make sure to also review
9109 # stylo-local-work-queue prefs, since we might end up doing too much work
9112 # A value of 0 disables parallelism altogether.
9113 - name: layout.css.stylo-work-unit-size
9114 type: RelaxedAtomicUint32
9119 # The minimum amount of work that a thread doing styling will try to keep
9120 # locally before sending work to other threads, in a worker.
9121 - name: layout.css.stylo-local-work-queue.in-worker
9122 type: RelaxedAtomicUint32
9127 # As above but for the main thread. The main thread can't really steal from
9128 # other threads so it might want a bigger min queue size before giving work to
9130 - name: layout.css.stylo-local-work-queue.in-main-thread
9131 type: RelaxedAtomicUint32
9136 # Are counters for implemented CSS properties enabled?
9137 - name: layout.css.use-counters.enabled
9142 # Are counters for unimplemented CSS properties enabled?
9143 - name: layout.css.use-counters-unimplemented.enabled
9144 type: RelaxedAtomicBool
9149 # Should the :visited selector ever match (otherwise :link matches instead)?
9150 - name: layout.css.visited_links_enabled
9155 # The margin used for detecting relevancy for `content-visibility: auto`.
9156 - name: layout.css.content-visibility-relevant-content-margin
9161 # Whether the `hanging` and `each-line` keywords are supported by `text-indent`
9162 - name: layout.css.text-indent-keywords.enabled
9163 type: RelaxedAtomicBool
9168 # Whether the "modern" uppercase mapping of ß to ẞ (rather than SS) is used.
9169 - name: layout.css.text-transform.uppercase-eszett.enabled
9174 - name: layout.css.text-wrap-balance.enabled
9179 # Maximum number of lines to try balancing.
9180 - name: layout.css.text-wrap-balance.limit
9185 - name: layout.css.text-wrap-balance-after-clamp.enabled
9190 - name: layout.css.text-align.justify-only-after-last-tab
9195 # Support for the css Zoom property.
9196 - name: layout.css.zoom.enabled
9197 type: RelaxedAtomicBool
9202 # UA styles for h1 in article/aside/nav/section. See bug 1883896.
9203 - name: layout.css.h1-in-section-ua-styles.enabled
9204 type: RelaxedAtomicBool
9205 value: @IS_NOT_NIGHTLY_BUILD@
9208 # The maximum width or height of the cursor we should allow when intersecting
9209 # the UI, in CSS pixels.
9210 - name: layout.cursor.block.max-size
9215 - name: layout.cursor.disable-for-popups
9220 - name: layout.display-list.build-twice
9221 type: RelaxedAtomicBool
9225 # Toggle retaining display lists between paints.
9226 - name: layout.display-list.retain
9227 type: RelaxedAtomicBool
9231 # Toggle retaining display lists between paints.
9232 - name: layout.display-list.retain.chrome
9233 type: RelaxedAtomicBool
9237 - name: layout.display-list.retain.sc
9238 type: RelaxedAtomicBool
9242 # Set the maximum number of modified frames allowed before doing a full
9243 # display list rebuild.
9244 - name: layout.display-list.rebuild-frame-limit
9245 type: RelaxedAtomicUint32
9249 # Pref to dump the display list to the log. Useful for debugging drawing.
9250 - name: layout.display-list.dump
9251 type: RelaxedAtomicBool
9255 # Pref to dump the display list to the log. Useful for debugging drawing.
9256 - name: layout.display-list.dump-content
9257 type: RelaxedAtomicBool
9261 # Pref to dump the display list to the log. Useful for debugging drawing.
9262 - name: layout.display-list.dump-parent
9263 type: RelaxedAtomicBool
9267 - name: layout.display-list.show-rebuild-area
9268 type: RelaxedAtomicBool
9272 - name: layout.display-list.improve-fragmentation
9273 type: RelaxedAtomicBool
9277 # Are dynamic reflow roots enabled?
9278 - name: layout.dynamic-reflow-roots.enabled
9280 value: @IS_EARLY_BETA_OR_EARLIER@
9283 # Enables the mechanism to optimize away flex item's final reflow.
9284 # Warning: Disabling the pref will impact the performance. This is useful only for
9285 # debugging flexbox issues.
9286 - name: layout.flexbox.item-final-reflow-optimization.enabled
9291 # Enables the <input type=search> custom layout frame with a clear icon.
9292 # Still needs tests and a web-exposed way to remove that icon, see bug 1654288.
9293 - name: layout.forms.input-type-search.enabled
9298 # Enables the Reveal Password button inside a <input type=password>.
9299 - name: layout.forms.reveal-password-button.enabled
9304 # Enables the Reveal Password context-menu entry.
9305 - name: layout.forms.reveal-password-context-menu.enabled
9310 # If enabled, textareas won't include 'overflow:auto' scrollbars in their
9311 # block-axis size (usually height).
9312 - name: layout.forms.textarea-sizing-excludes-auto-scrollbar.enabled
9317 # Pref to control browser frame rate, in Hz. A value <= 0 means choose
9318 # automatically based on knowledge of the platform (or 60Hz if no platform-
9319 # specific information is available).
9320 - name: layout.frame_rate
9321 type: RelaxedAtomicInt32
9325 # If it has been this many frame periods since a refresh, assume that painting
9326 # is quiescent (will not happen again soon).
9327 - name: layout.idle_period.required_quiescent_frames
9332 # The amount of time (milliseconds) needed between an idle period's
9333 # end and the start of the next tick to avoid jank.
9334 - name: layout.idle_period.time_limit
9339 # The minimum amount of time (milliseconds) required to be remaining
9340 # in the current vsync interval for us to attempt an extra tick, or
9341 # <0 to disable extra ticks entirely.
9342 - name: layout.extra-tick.minimum-ms
9347 # Whether to load the broken image icon eagerly. This is mostly needed for
9348 # reftests, since the broken image icon doesn't block the load event and thus
9349 # there's no easy way to guarantee it's loaded.
9350 - name: layout.image.eager_broken_image_icon
9355 # Enable/disable interruptible reflow, which allows reflows to stop
9356 # before completion (and display the partial results) when user events
9358 - name: layout.interruptible-reflow.enabled
9363 # On Android, don't synth mouse move events after scrolling, as they cause
9364 # unexpected user-visible behaviour. Can remove this after bug 1633450 is
9365 # satisfactorily resolved.
9366 - name: layout.reflow.synthMouseMove
9368 value: @IS_NOT_ANDROID@
9371 # This pref determines which side vertical scrollbars should be on.
9372 # 0 = end-side in UI direction
9373 # 1 = end-side in document/content direction
9376 - name: layout.scrollbar.side
9381 # This pref is to be set by test code only.
9382 - name: layout.scrollbars.always-layerize-track
9383 type: RelaxedAtomicBool
9387 - name: layout.scrollbars.click_and_hold_track.continue_to_end
9389 # On Linux, click-and-hold on the scrollbar track should continue scrolling
9390 # until the mouse is released. On the other platforms we want to stop
9391 # scrolling as soon as the scrollbar thumb has reached the current mouse
9393 #ifdef MOZ_WIDGET_GTK
9400 # Whether anchor is kept selected.
9401 - name: layout.selectanchor
9406 # Controls caret style and word-delete during text selection.
9407 # 0: Use platform default
9408 # 1: Caret moves and blinks as when there is no selection; word
9409 # delete deselects the selection and then deletes word.
9410 # 2: Caret moves to selection edge and is not visible during selection;
9411 # word delete deletes the selection (Mac and Linux default).
9412 # 3: Caret moves and blinks as when there is no selection; word delete
9413 # deletes the selection.
9414 # Windows default is 1 for word delete behavior, the rest as for 2.
9415 - name: layout.selection.caret_style
9420 # If layout.show_previous_page is true then during loading of a new page we
9421 # will draw the previous page if the new page has painting suppressed.
9422 - name: layout.show_previous_page
9427 # Pref to stop overlay scrollbars from fading out, for testing purposes.
9428 - name: layout.testing.overlay-scrollbars.always-visible
9433 # Throttled frame rate, in frames per second.
9434 - name: layout.throttled_frame_rate
9439 # Whether we should throttle in-process iframes in the active tab.
9440 - name: layout.throttle_in_process_iframes
9445 - name: layout.lower_priority_refresh_driver_during_load
9450 # If > 0, nsRefreshDriver will keep ticking this amount of milliseconds after
9451 # top level page load.
9452 - name: layout.keep_ticking_after_load_ms
9457 # Pref to control enabling scroll anchoring.
9458 - name: layout.css.scroll-anchoring.enabled
9463 # Pref to control whether to suspend also RefreshDriver::Tick when the page
9464 # itself is suspended because of some synchronous operation, like sync XHR.
9465 - name: layout.skip_ticks_while_page_suspended
9470 # Pref to control how many consecutive scroll-anchoring adjustments (since the
9471 # most recent user scroll or timeout) we'll average, before we consider whether
9472 # to automatically turn off scroll anchoring. When we hit this threshold, the
9473 # actual decision to disable also depends on the
9474 # min-average-adjustment-threshold pref, see below for more details.
9476 # Zero disables the heuristic.
9477 - name: layout.css.scroll-anchoring.max-consecutive-adjustments
9482 # Whether to reset counting the consecutive scroll-anchoring adjustments during
9483 # running async scrolling by APZ.
9484 - name: layout.css.scroll-anchoring.reset-heuristic-during-animation
9489 # The time after which we reset the max-consecutive-adjustments period, in
9492 # This prevents sporadic back-and-forth scroll anchoring to trigger the
9493 # max-consecutive-adjustments heuristic.
9494 - name: layout.css.scroll-anchoring.max-consecutive-adjustments-timeout-ms
9499 # Pref to control whether we should disable scroll anchoring on a scroller
9500 # where at least max-consecutive-adjustments have happened, and which the
9501 # average adjustment ends up being less than this number, in CSS pixels.
9503 # So, for example, given max-consecutive-adjustments=10 and
9504 # min-average-adjustment-treshold=3, we'll block scroll anchoring if there have
9505 # been 10 consecutive adjustments without a user scroll or more, and the
9506 # average offset difference between them amount to less than 3 CSS pixels.
9507 - name: layout.css.scroll-anchoring.min-average-adjustment-threshold
9512 # Pref to control disabling scroll anchoring suppression triggers, see
9514 # https://drafts.csswg.org/css-scroll-anchoring/#suppression-triggers
9516 # Those triggers should be unnecessary after bug 1561450.
9517 - name: layout.css.scroll-anchoring.suppressions.enabled
9522 - name: layout.css.scroll-anchoring.highlight
9527 # Pref to control whether we reselect scroll anchors if sub-optimal
9529 # See https://github.com/w3c/csswg-drafts/issues/6787
9530 - name: layout.css.scroll-anchoring.reselect-if-suboptimal
9535 # Are shared memory User Agent style sheets enabled?
9536 - name: layout.css.shared-memory-ua-sheets.enabled
9541 # Is support for -webkit-line-clamp on regular blocks enabled?
9542 - name: layout.css.webkit-line-clamp.block.enabled
9547 # Is 'content:none' supported on (non-pseudo) elements?
9548 - name: layout.css.element-content-none.enabled
9549 type: RelaxedAtomicBool
9554 # Whether we want scrollbar-width: thin to behave as scrollbar-width: auto.
9555 - name: layout.css.scrollbar-width-thin.disabled
9556 type: RelaxedAtomicBool
9560 # field-sizing CSS property
9561 - name: layout.css.field-sizing.enabled
9562 type: RelaxedAtomicBool
9566 # Whether supports() conditions in @import is enabled
9567 - name: layout.css.import-supports.enabled
9568 type: RelaxedAtomicBool
9573 # Whether :-moz-broken is supported in content.
9574 - name: layout.css.moz-broken.content.enabled
9575 type: RelaxedAtomicBool
9580 # Whether the modern ::slider-* pseudos are enabled.
9581 - name: layout.css.modern-range-pseudos.enabled
9582 type: RelaxedAtomicBool
9587 # Is matching video-dynamic-range: high allowed?
9588 - name: layout.css.video-dynamic-range.allows-high
9589 type: RelaxedAtomicBool
9590 #if defined(XP_MACOSX)
9597 # Whether frame visibility tracking is enabled globally.
9598 - name: layout.framevisibility.enabled
9603 # The fraction of the scrollport we allow to horizontally scroll by before we
9604 # schedule an update of frame visibility.
9605 - name: layout.framevisibility.amountscrollbeforeupdatehorizontal
9610 # The fraction of the scrollport we allow to vertically scroll by before we
9611 # schedule an update of frame visibility.
9612 - name: layout.framevisibility.amountscrollbeforeupdatevertical
9617 # The number of scrollports wide to expand when tracking frame visibility.
9618 - name: layout.framevisibility.numscrollportwidths
9627 # The number of scrollports high to expand when tracking frame visibility.
9628 - name: layout.framevisibility.numscrollportheights
9634 - name: layout.dynamic-toolbar-max-height
9635 type: RelaxedAtomicInt32
9639 # Whether outlines should include all overflowing descendants, or just the
9640 # border-box of a given element.
9642 # Historically we have included descendants but other browsers have not.
9643 - name: layout.outline.include-overflow
9648 # Enable/disable overflow/underflow events in content
9649 - name: layout.overflow-underflow.content.enabled
9651 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
9654 # Enable/disable overflow/underflow events in addon content
9655 - name: layout.overflow-underflow.content.enabled_in_addons
9660 - name: layout.visibility.min-recompute-interval-ms
9665 # Controls double click and Alt+Arrow word selection behavior.
9666 - name: layout.word_select.eat_space_to_next_word
9675 - name: layout.word_select.stop_at_punctuation
9676 type: RelaxedAtomicBool
9680 # Whether underscore should be treated as a word-breaking character for
9681 # word selection/arrow-key movement purposes.
9682 - name: layout.word_select.stop_at_underscore
9687 # Whether to draw images in CSS backgrounds if we only have a partial frame.
9688 - name: layout.display_partial_background_images
9693 # Controls whether nsRefreshDriver::IsInHighRateMode() may ever return true.
9694 - name: layout.expose_high_rate_mode_from_refreshdriver
9699 # Whether <details> is forced to be a block, see bug 1856374
9700 - name: layout.details.force-block-layout
9705 # Whether table cells can generate scroll boxes.
9706 - name: layout.tables.scrollable-cells
9708 value: @IS_NIGHTLY_BUILD@
9711 # Whether to disable layer pixel alignment in scroll related stuff.
9712 - name: layout.scroll.disable-pixel-alignment
9713 type: RelaxedAtomicBool
9717 #---------------------------------------------------------------------------
9718 # Prefs starting with "logging."
9719 #---------------------------------------------------------------------------
9721 # If this pref is true, prefs in the logging.config branch will be cleared on
9722 # startup. This prevents unadvertedly creating huge log files that fill the disk
9723 # when forgetting to remove the logging preferences.
9724 - name: logging.config.clear_on_startup
9729 # Allow setting log modules at runtimes easily with a MOZ_LOG string.
9730 # This preference is empty by default but defined, this makes it easy to use
9731 # especially on mobile by searching for it in about:config.
9732 - name: logging.config.modules
9737 #---------------------------------------------------------------------------
9738 # Prefs starting with "mathml."
9739 #---------------------------------------------------------------------------
9741 # Whether to disable legacy names "thickmathspace", "mediummathspace",
9742 # "thickmathspace" etc for length attributes.
9743 - name: mathml.mathspace_names.disabled
9745 value: @IS_NIGHTLY_BUILD@
9748 # Whether to disable support for stretching operators with STIXGeneral fonts.
9749 # macos still has the deprecated STIXGeneral font pre-installed.
9750 - name: mathml.stixgeneral_operator_stretching.disabled
9752 #if defined(XP_MACOSX)
9753 value: @IS_NIGHTLY_BUILD@
9759 # Whether to disable fallback for mathvariant=italic/bold/bold-italic via
9760 # styling when lacking proper fonts for Mathematical Alphanumeric Symbols.
9761 # We expect all OSes to have relevant fonts, except Android, see bug 1789083.
9762 - name: mathml.mathvariant_styling_fallback.disabled
9764 #if defined(ANDROID)
9771 # Whether to disable the MathML3 support for the mathvariant attribute. For
9772 # MathML Core, support is restricted to the <mi> element and to value "normal".
9773 # Corresponding automatic italicization on single-char <mi> element is also
9774 # implemented via text-transform: auto when that flag is enabled.
9775 - name: mathml.legacy_mathvariant_attribute.disabled
9777 value: @IS_NIGHTLY_BUILD@
9781 # Whether to disable forced centering of binary operators (+, =, ...).
9782 - name: mathml.centered_operators.disabled
9788 # Whether to disable extra top/bottom spacing for stretchy operators.
9789 - name: mathml.top_bottom_spacing_for_stretchy_operators.disabled
9795 #---------------------------------------------------------------------------
9796 # Prefs starting with "media."
9797 #---------------------------------------------------------------------------
9800 # This pref defines what the blocking policy would be used in blocking autoplay.
9801 # 0 : use sticky activation (default)
9802 # https://html.spec.whatwg.org/multipage/interaction.html#sticky-activation
9803 # 1 : use transient activation (the transient activation duration can be
9804 # adjusted by the pref `dom.user_activation.transient.timeout`)
9805 # https://html.spec.whatwg.org/multipage/interaction.html#transient-activation
9806 # 2 : user input depth (allow autoplay when the play is trigged by user input
9807 # which is determined by the user input depth)
9808 - name: media.autoplay.blocking_policy
9813 # Whether to allow autoplay on extension background pages.
9814 - name: media.autoplay.allow-extension-background-pages
9819 # Block autoplay, asking for permission by default.
9820 # 0=Allowed, 1=Blocked, 5=All Blocked
9821 - name: media.autoplay.default
9826 # File-backed MediaCache size.
9827 - name: media.cache_size
9828 type: RelaxedAtomicUint32
9829 value: 512000 # Measured in KiB
9832 # Size of file backed MediaCache while on a connection which is cellular (3G,
9833 # etc), and thus assumed to be "expensive".
9834 - name: media.cache_size.cellular
9835 type: RelaxedAtomicUint32
9836 value: 32768 # Measured in KiB
9839 # Multiplier to change the sample rate at which input-only streams run, so as
9840 # to similate clock drift.
9841 - name: media.cubeb.input_drift_factor
9846 # Multiplier to change the sample rate at which output-only streams run, so as
9847 # to similate clock drift.
9848 - name: media.cubeb.output_drift_factor
9853 # Whether cubeb is sandboxed (AudioIPC)
9854 - name: media.cubeb.sandbox
9857 #if defined(XP_LINUX) || defined(XP_WIN) || defined(XP_MACOSX)
9863 # Whether or not to pass AUDCLNT_STREAMOPTIONS_RAW when initializing audio
9864 # streams when using WASAPI.
9865 # 0 - don't use RAW streams
9866 # 1 - use RAW streams for input streams only
9867 # 2 - use RAW streams for output streams only
9868 # 3 - use RAW streams for input and output streams
9869 #if defined (XP_WIN)
9870 - name: media.cubeb.wasapi-raw
9871 type: RelaxedAtomicUint32
9876 # Whether to make the start of cubeb stream slower, and by how many
9878 - name: media.cubeb.slow_stream_init_ms
9879 type: RelaxedAtomicUint32
9883 # If a resource is known to be smaller than this size (in kilobytes), a
9884 # memory-backed MediaCache may be used; otherwise the (single shared global)
9885 # file-backed MediaCache is used.
9886 - name: media.memory_cache_max_size
9888 value: 8192 # Measured in KiB
9891 # Don't create more memory-backed MediaCaches if their combined size would go
9892 # above this absolute size limit.
9893 - name: media.memory_caches_combined_limit_kb
9898 # Don't create more memory-backed MediaCaches if their combined size would go
9899 # above this relative size limit (a percentage of physical memory).
9900 - name: media.memory_caches_combined_limit_pc_sysmem
9902 value: 5 # A percentage
9905 # When a network connection is suspended, don't resume it until the amount of
9906 # buffered data falls below this threshold (in seconds).
9907 - name: media.cache_resume_threshold
9908 type: RelaxedAtomicUint32
9911 - name: media.cache_resume_threshold.cellular
9912 type: RelaxedAtomicUint32
9916 # Stop reading ahead when our buffered data is this many seconds ahead of the
9917 # current playback position. This limit can stop us from using arbitrary
9918 # amounts of network bandwidth prefetching huge videos.
9919 - name: media.cache_readahead_limit
9920 type: RelaxedAtomicUint32
9923 - name: media.cache_readahead_limit.cellular
9924 type: RelaxedAtomicUint32
9929 - name: media.mediacapabilities.drop-threshold
9930 type: RelaxedAtomicInt32
9934 - name: media.mediacapabilities.from-database
9935 type: RelaxedAtomicBool
9936 value: @IS_NIGHTLY_BUILD@
9940 - name: media.resampling.enabled
9941 type: RelaxedAtomicBool
9945 # libcubeb backend implements .get_preferred_channel_layout
9946 - name: media.forcestereo.enabled
9947 type: RelaxedAtomicBool
9948 #if defined(XP_WIN) || defined(XP_DARWIN) || defined(MOZ_PULSEAUDIO)
9957 # Whether to enable MediaSource support.
9958 - name: media.mediasource.enabled
9959 type: RelaxedAtomicBool
9963 - name: media.mediasource.mp4.enabled
9964 type: RelaxedAtomicBool
9968 - name: media.mediasource.webm.enabled
9969 type: RelaxedAtomicBool
9973 # Check if vp9 is enabled by default in mediasource. False on Android.
9974 # If disabled, vp9 will only be enabled under some conditions:
9975 # - h264 HW decoding is not supported
9976 # - mp4 is not enabled
9977 # - Device was deemed fast enough to decode VP9 via the VP9Benchmark utility
9978 # - A VP9 HW decoder is present.
9979 - name: media.mediasource.vp9.enabled
9980 type: RelaxedAtomicBool
9981 value: @IS_NOT_ANDROID@
9984 # Whether to enable MediaSource v2 support.
9985 - name: media.mediasource.experimental.enabled
9986 type: RelaxedAtomicBool
9991 - name: media.ruin-av-sync.enabled
9992 type: RelaxedAtomicBool
9996 # Encrypted Media Extensions
9997 - name: media.eme.enabled
9999 #if defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID)
10000 # On Linux EME is visible but disabled by default. This is so that the "Play
10001 # DRM content" checkbox in the Firefox UI is unchecked by default. DRM
10002 # requires downloading and installing proprietary binaries, which users on an
10003 # open source operating systems didn't opt into. The first time a site using
10004 # EME is encountered, the user will be prompted to enable DRM, whereupon the
10005 # EME plugin binaries will be downloaded if permission is granted.
10012 # Whether we expose the functionality proposed in
10013 # https://w3c.github.io/encrypted-media/#ref-for-dom-mediakeysystemmediacapability-encryptionscheme-2
10014 # I.e. if true, apps calling navigator.requestMediaKeySystemAccess() can pass
10015 # an optional encryption scheme as part of MediaKeySystemMediaCapability
10016 # objects. If a scheme is present when we check for support, we must ensure we
10017 # support that scheme in order to provide key system access.
10018 - name: media.eme.encrypted-media-encryption-scheme.enabled
10023 # Do we need explicit approval from the application to allow access to EME?
10024 # If true, Gecko will ask for permission before allowing MediaKeySystemAccess.
10025 # At time of writing this is aimed at GeckoView, and setting this to true
10026 # outside of GeckoView or test environments will likely break EME.
10027 - name: media.eme.require-app-approval
10032 - name: media.eme.audio.blank
10033 type: RelaxedAtomicBool
10037 - name: media.eme.video.blank
10038 type: RelaxedAtomicBool
10042 - name: media.eme.chromium-api.video-shmems
10043 type: RelaxedAtomicUint32
10047 # Is support for MediaKeys.getStatusForPolicy enabled?
10048 - name: media.eme.hdcp-policy-check.enabled
10053 - name: media.eme.max-throughput-ms
10054 type: RelaxedAtomicUint32
10058 - name: media.clearkey.persistent-license.enabled
10063 # Are test specific clearkey key systems enabled and exposed?
10064 - name: media.clearkey.test-key-systems.enabled
10065 type: RelaxedAtomicBool
10069 - name: media.cloneElementVisually.testing
10074 # Does the GMPlugin process initialize minimal XPCOM
10075 - name: media.gmp.use-minimal-xpcom
10076 type: RelaxedAtomicBool
10080 # Does the GMPlugin process use native event processing
10081 - name: media.gmp.use-native-event-processing
10082 type: RelaxedAtomicBool
10083 value: @IS_NOT_XP_MACOSX@
10086 #if defined(XP_LINUX) && defined(MOZ_SANDBOX)
10087 # Whether to allow, on a Linux system that doesn't support the necessary
10088 # sandboxing features, loading Gecko Media Plugins unsandboxed. However, EME
10089 # CDMs will not be loaded without sandboxing even if this pref is changed.
10090 - name: media.gmp.insecure.allow
10091 type: RelaxedAtomicBool
10096 # (When reading the next line, know that preprocessor.py doesn't
10097 # understand parentheses, but && is higher precedence than ||.)
10098 #if defined(XP_WIN) && defined(_ARM64_) || defined(XP_MACOSX)
10099 # These prefs control whether or not we will allow x86/x64 plugins
10100 # to run on Windows ARM or Apple Silicon machines. This requires
10101 # launching the GMP child process executable in x86/x64 mode. We
10102 # expect to allow this for Widevine until an arm64 version of
10103 # Widevine and Clearkey is made available. We don't expect to need
10104 # to allow this for OpenH264.
10106 # For Apple Silicon and OSX, it will be for universal builds and
10107 # whether or not it can use the x64 Widevine plugin.
10109 # For Windows ARM, it will be for ARM builds and whether or not it
10110 # can use x86 Widevine or Clearkey plugins.
10112 # May a Widevine GMP x64 process be executed on ARM builds.
10113 - name: media.gmp-widevinecdm.allow-x64-plugin-on-arm64
10114 type: RelaxedAtomicBool
10118 # May an OpenH264 GMP x64 process be executed on ARM builds.
10119 - name: media.gmp-gmpopenh264.allow-x64-plugin-on-arm64
10120 type: RelaxedAtomicBool
10124 # May a Clearkey GMP x64 process be executed on ARM builds.
10125 - name: media.gmp-gmpclearkey.allow-x64-plugin-on-arm64
10126 type: RelaxedAtomicBool
10131 # Specifies whether the PDMFactory can create a test decoder that just outputs
10132 # blank frames/audio instead of actually decoding. The blank decoder works on
10134 - name: media.use-blank-decoder
10135 type: RelaxedAtomicBool
10139 - name: media.gpu-process-decoder
10140 type: RelaxedAtomicBool
10141 #if defined(XP_WIN)
10148 # The codecs in the vendored ffmpeg copy are usually prefered to the other
10149 # codecs. This allows changing this policy for testing purposes.
10150 - name: media.prefer-non-ffvpx
10151 type: RelaxedAtomicBool
10155 - name: media.rdd-process.enabled
10156 type: RelaxedAtomicBool
10157 #if defined(XP_WIN)
10159 #elif defined(XP_MACOSX)
10161 #elif defined(XP_LINUX) && !defined(ANDROID)
10163 #elif defined(XP_FREEBSD)
10165 #elif defined(XP_OPENBSD)
10172 - name: media.rdd-retryonfailure.enabled
10173 type: RelaxedAtomicBool
10177 - name: media.rdd-process.startup_timeout_ms
10178 type: RelaxedAtomicInt32
10182 # Specifies how many times we restart RDD process after crash till we give up.
10183 # After first RDD restart we disable HW acceleration on Linux.
10184 - name: media.rdd-process.max-crashes
10185 type: RelaxedAtomicInt32
10190 - name: media.rdd-ffmpeg.enabled
10191 type: RelaxedAtomicBool
10197 - name: media.rdd-ffvpx.enabled
10198 type: RelaxedAtomicBool
10199 #if defined(XP_WIN)
10201 #elif defined(XP_MACOSX)
10203 #elif defined(XP_LINUX) && !defined(ANDROID)
10205 #elif defined(XP_FREEBSD)
10207 #elif defined(XP_OPENBSD)
10215 - name: media.rdd-wmf.enabled
10216 type: RelaxedAtomicBool
10221 #ifdef MOZ_APPLEMEDIA
10222 - name: media.rdd-applemedia.enabled
10223 type: RelaxedAtomicBool
10228 - name: media.rdd-theora.enabled
10229 type: RelaxedAtomicBool
10230 #if defined(XP_WIN)
10232 #elif defined(XP_MACOSX)
10234 #elif defined(XP_LINUX) && !defined(ANDROID)
10236 #elif defined(XP_FREEBSD)
10238 #elif defined(XP_OPENBSD)
10245 - name: media.rdd-vorbis.enabled
10246 type: RelaxedAtomicBool
10247 #if defined(XP_WIN)
10249 #elif defined(XP_MACOSX)
10251 #elif defined(XP_LINUX) && !defined(ANDROID)
10253 #elif defined(XP_FREEBSD)
10255 #elif defined(XP_OPENBSD)
10262 - name: media.rdd-vpx.enabled
10263 type: RelaxedAtomicBool
10264 #if defined(XP_WIN)
10266 #elif defined(XP_MACOSX)
10268 #elif defined(XP_LINUX) && !defined(ANDROID)
10270 #elif defined(XP_FREEBSD)
10272 #elif defined(XP_OPENBSD)
10279 - name: media.rdd-wav.enabled
10280 type: RelaxedAtomicBool
10281 #if defined(XP_WIN)
10283 #elif defined(XP_MACOSX)
10285 #elif defined(XP_LINUX) && !defined(ANDROID)
10287 #elif defined(XP_FREEBSD)
10289 #elif defined(XP_OPENBSD)
10296 - name: media.rdd-opus.enabled
10297 type: RelaxedAtomicBool
10298 #if defined(XP_WIN)
10300 #elif defined(XP_MACOSX)
10302 #elif defined(XP_LINUX) && !defined(ANDROID)
10304 #elif defined(XP_FREEBSD)
10306 #elif defined(XP_OPENBSD)
10313 - name: media.rdd-webaudio.batch.size
10314 type: RelaxedAtomicInt32
10318 # This pref is here to control whether we want to perform audio decoding by
10319 # using the IPC actor within the Utility process rather than the RDD process.
10320 # When it is set to true, then the utility process will take precedence over RDD
10321 # to perform audio decoding.
10322 # TODO: Enabling for Isolated Processes builds on Android
10323 - name: media.utility-process.enabled
10324 type: RelaxedAtomicBool
10325 #if defined(XP_WIN)
10327 #elif defined(XP_MACOSX)
10329 #elif defined(XP_LINUX) && !defined(ANDROID)
10331 #elif defined(ANDROID) && !defined(MOZ_ANDROID_CONTENT_SERVICE_ISOLATED_PROCESS)
10333 #elif defined(XP_FREEBSD)
10335 #elif defined(XP_OPENBSD)
10342 # Specifies how many times we restart Utility process after crash till we give
10344 - name: media.utility-process.max-crashes
10345 type: RelaxedAtomicInt32
10350 - name: media.utility-ffmpeg.enabled
10351 type: RelaxedAtomicBool
10356 - name: media.utility-ffvpx.enabled
10357 type: RelaxedAtomicBool
10362 - name: media.utility-wmf.enabled
10363 type: RelaxedAtomicBool
10368 #ifdef MOZ_APPLEMEDIA
10369 - name: media.utility-applemedia.enabled
10370 type: RelaxedAtomicBool
10375 - name: media.utility-vorbis.enabled
10376 type: RelaxedAtomicBool
10380 - name: media.utility-wav.enabled
10381 type: RelaxedAtomicBool
10385 - name: media.utility-opus.enabled
10386 type: RelaxedAtomicBool
10391 # Enable the MediaCodec PlatformDecoderModule by default.
10392 - name: media.android-media-codec.enabled
10393 type: RelaxedAtomicBool
10398 # Dont yet enable AndroidDecoderModule on Utility
10399 - name: media.utility-android-media-codec.enabled
10400 type: RelaxedAtomicBool
10404 - name: media.android-media-codec.preferred
10405 type: RelaxedAtomicBool
10410 # Now we will completely disable the ability to perform audio decoding outside
10412 - name: media.allow-audio-non-utility
10413 type: RelaxedAtomicBool
10418 - name: media.omx.enabled
10424 # Allow ffmpeg decoder to decode directly onto shmem buffer
10425 - name: media.ffmpeg.customized-buffer-allocation
10426 type: RelaxedAtomicBool
10431 - name: media.ffmpeg.enabled
10432 type: RelaxedAtomicBool
10433 #if defined(XP_MACOSX)
10440 - name: media.libavcodec.allow-obsolete
10444 #endif # MOZ_FFMPEG
10446 # Allow using ffmpeg encoder
10447 - name: media.ffmpeg.encoder.enabled
10448 type: RelaxedAtomicBool
10449 #if defined(MOZ_WIDGET_GTK) || defined(XP_WIN)
10450 value: @IS_NIGHTLY_BUILD@
10456 # Allow using openh264 decoding with ffmpeg
10457 - name: media.ffmpeg.allow-openh264
10458 type: RelaxedAtomicBool
10459 value: @IS_NOT_NIGHTLY_BUILD@
10462 #ifdef MOZ_WIDGET_GTK
10463 # Use VA-API for ffmpeg video playback on Linux
10464 - name: media.ffmpeg.vaapi.enabled
10469 # Force to copy dmabuf video frames
10470 # Used for debugging/troubleshooting only
10471 # 0 - force disable
10474 - name: media.ffmpeg.vaapi.force-surface-zero-copy
10478 #endif # MOZ_WIDGET_GTK
10480 # Set to true in marionette tests to disable the sanity test
10481 # which would lead to unnecessary start of the RDD process.
10482 - name: media.sanity-test.disabled
10483 type: RelaxedAtomicBool
10489 - name: media.wmf.enabled
10490 type: RelaxedAtomicBool
10494 # Whether DD should consider WMF-disabled a WMF failure, useful for testing.
10495 - name: media.decoder-doctor.wmf-disabled-is-failure
10496 type: RelaxedAtomicBool
10500 - name: media.wmf.dxva.d3d11.enabled
10501 type: RelaxedAtomicBool
10505 - name: media.wmf.dxva.max-videos
10506 type: RelaxedAtomicUint32
10510 - name: media.wmf.use-nv12-format
10511 type: RelaxedAtomicBool
10515 - name: media.wmf.zero-copy-nv12-textures
10519 # Enable hardware decoded video no copy even when it is blocked.
10520 - name: media.wmf.zero-copy-nv12-textures-force-enabled
10525 - name: media.wmf.force.allow-p010-format
10526 type: RelaxedAtomicBool
10530 - name: media.wmf.use-sync-texture
10535 - name: media.wmf.low-latency.enabled
10536 type: RelaxedAtomicBool
10540 - name: media.wmf.skip-blacklist
10541 type: RelaxedAtomicBool
10545 - name: media.wmf.amd.highres.enabled
10546 type: RelaxedAtomicBool
10550 - name: media.wmf.allow-unsupported-resolutions
10551 type: RelaxedAtomicBool
10555 - name: media.wmf.vp9.enabled
10556 type: RelaxedAtomicBool
10560 - name: media.wmf.av1.enabled
10561 type: RelaxedAtomicBool
10565 # Using Windows Media Foundation Media Engine for encrypted playback
10566 # 0 : disable, 1 : enable for encrypted and clear,
10567 # 2 : enable for encrypted only, 3 : enable for clear only
10568 - name: media.wmf.media-engine.enabled
10569 type: RelaxedAtomicUint32
10570 #if defined(DEV_EDITION_OR_EARLY_BETA_OR_EARLIER)
10577 # Testing purpose, enable media engine on channel decoder as well.
10578 - name: media.wmf.media-engine.channel-decoder.enabled
10579 type: RelaxedAtomicBool
10583 # The amount of video raw data the engine stream will queue
10584 - name: media.wmf.media-engine.raw-data-threshold.video
10585 type: RelaxedAtomicInt32
10589 # The amount of audio raw data the engine stream will queue
10590 - name: media.wmf.media-engine.raw-data-threshold.audio
10591 type: RelaxedAtomicInt32
10595 # Specifies how many times we restart MFCDM process after crash till we give up.
10596 - name: media.wmf.media-engine.max-crashes
10597 type: RelaxedAtomicInt32
10601 # Bypass the gfx block list check for the media engine playback.
10602 - name: media.wmf.media-engine.bypass-gfx-blocklist
10603 type: RelaxedAtomicBool
10607 # [TEST-ONLY] Use Media Foundation Clearkey CDM for EME related testing.
10608 - name: media.eme.wmf.clearkey.enabled
10609 type: RelaxedAtomicBool
10613 # [TEST-ONLY] use Media Foundation clearkey CDM dll to mock as an external CDM,
10614 # external CDM like Widevine and PlayReady so that we won't be interfered by
10615 # unexpected behaviors caused by the external library.
10616 - name: media.eme.wmf.use-mock-cdm-for-external-cdms
10617 type: RelaxedAtomicBool
10621 # Enable PlayReady DRM for EME
10622 - name: media.eme.playready.enabled
10623 type: RelaxedAtomicBool
10624 #if defined(MOZ_WMF_CDM) && defined(DEV_EDITION_OR_EARLY_BETA_OR_EARLIER)
10631 # Use IsTypeSupportedEx for PlayReady
10632 - name: media.eme.playready.istypesupportedex
10633 type: RelaxedAtomicBool
10637 # Enable HEVC support via the windows media foundation
10638 # 0 : disable, 1 : enable for media engine and MFT,
10639 # 2 : enable for media engine only
10640 - name: media.wmf.hevc.enabled
10641 type: RelaxedAtomicUint32
10642 #if defined(NIGHTLY_BUILD)
10644 #elif defined(MOZ_DEV_EDITION) || defined(EARLY_BETA_OR_EARLIER)
10651 # Enable Widevine experiment DRM for EME
10652 - name: media.eme.widevine.experiment.enabled
10653 type: RelaxedAtomicBool
10657 # Enable origin filter for MFCDM support
10658 # 0 : disabled, 1 : enabled allowed list, 2 : enabled blocked list
10659 - name: media.eme.mfcdm.origin-filter.enabled
10660 type: RelaxedAtomicUint32
10661 #if defined(NIGHTLY_BUILD)
10670 - name: media.decoder-doctor.testing
10675 - name: media.hardware-video-decoding.enabled
10680 - name: media.hardware-video-decoding.force-enabled
10685 # Whether to check the decoder supports recycling.
10686 - name: media.decoder.recycle.enabled
10687 type: RelaxedAtomicBool
10688 value: @IS_ANDROID@
10691 # Should MFR try to skip to the next key frame?
10692 - name: media.decoder.skip-to-next-key-frame.enabled
10693 type: RelaxedAtomicBool
10697 # When video continues later than the current media time for this period of
10698 # time, then it will trigger skip-to-next-keyframe mechanism. As this aims to
10699 # solve the drop frames issue where video decoding too slow for high
10700 # resolution videos. eg. 4k+. Therefore, the value is is determined by the
10701 # telemetry probe `video_inter_keyframe_max_ms` in the key of `AV,h>2160` which
10702 # shows that 95% video's key frame interval are less than ~5000. We use its
10703 # half value as a threashold to decide whether we should keep decoding in the
10704 # current video position or jump to the next keyframe in order to decode future
10705 # frames in advance.
10706 - name: media.decoder.skip_when_video_too_slow_ms
10707 type: RelaxedAtomicInt32
10711 # True if we want to decode in batches.
10712 - name: media.gmp.decoder.decode_batch
10713 type: RelaxedAtomicBool
10717 # True if we allow use of any decoders found in GMP plugins.
10718 - name: media.gmp.decoder.enabled
10719 type: RelaxedAtomicBool
10723 # True if we want to request the multithreaded GMP decoder.
10724 - name: media.gmp.decoder.multithreaded
10725 type: RelaxedAtomicBool
10729 # True if we want to try using the GMP plugin decoders first.
10730 - name: media.gmp.decoder.preferred
10731 type: RelaxedAtomicBool
10735 # True if we want to reorder frames from the decoder based on the timestamp.
10736 - name: media.gmp.decoder.reorder_frames
10737 type: RelaxedAtomicBool
10741 # True if we allow use of any encoders found in GMP plugins.
10742 - name: media.gmp.encoder.enabled
10743 type: RelaxedAtomicBool
10747 # True if we want to request the multithreaded GMP encoder.
10748 - name: media.gmp.encoder.multithreaded
10749 type: RelaxedAtomicBool
10753 # True if we want to try using the GMP plugin encoders first.
10754 - name: media.gmp.encoder.preferred
10755 type: RelaxedAtomicBool
10759 # Whether to suspend decoding of videos in background tabs.
10760 - name: media.suspend-background-video.enabled
10761 type: RelaxedAtomicBool
10765 # Delay, in ms, from time window goes to background to suspending
10766 # video decoders. Defaults to 10 seconds.
10767 - name: media.suspend-background-video.delay-ms
10768 type: RelaxedAtomicUint32
10772 - name: media.dormant-on-pause-timeout-ms
10773 type: RelaxedAtomicInt32
10777 # AudioTrack and VideoTrack support
10778 - name: media.track.enabled
10784 # This pref disables the reception of RTCP. It is used for testing.
10785 - name: media.webrtc.net.force_disable_rtcp_reception
10786 type: ReleaseAcquireAtomicBool
10790 # This pref controls whether dispatch testing-only events.
10791 - name: media.webvtt.testing.events
10796 - name: media.webspeech.synth.force_global_queue
10801 - name: media.webspeech.test.enable
10806 - name: media.webspeech.test.fake_fsm_events
10811 - name: media.webspeech.test.fake_recognition_service
10816 #ifdef MOZ_WEBSPEECH
10817 - name: media.webspeech.recognition.enable
10823 - name: media.webspeech.recognition.force_enable
10828 #ifdef MOZ_WEBSPEECH
10829 - name: media.webspeech.synth.enabled
10833 #endif # MOZ_WEBSPEECH
10835 - name: media.encoder.webm.enabled
10836 type: RelaxedAtomicBool
10840 - name: media.audio-max-decode-error
10842 #if defined(RELEASE_OR_BETA)
10845 # Zero tolerance in pre-release builds to detect any decoder regression.
10850 - name: media.video-max-decode-error
10852 #if defined(RELEASE_OR_BETA)
10855 # Zero tolerance in pre-release builds to detect any decoder regression.
10860 # Are video stats enabled? (Disabling can help prevent fingerprinting.)
10861 - name: media.video_stats.enabled
10866 # forces the number of dropped frames to 0
10867 - name: media.video.dropped_frame_stats.enabled
10873 - name: media.opus.enabled
10874 type: RelaxedAtomicBool
10879 - name: media.wave.enabled
10880 type: RelaxedAtomicBool
10885 - name: media.ogg.enabled
10886 type: RelaxedAtomicBool
10891 - name: media.webm.enabled
10892 type: RelaxedAtomicBool
10897 - name: media.av1.enabled
10898 type: RelaxedAtomicBool
10899 #if defined(XP_WIN) && !defined(_ARM64_)
10901 #elif defined(XP_MACOSX)
10903 #elif defined(MOZ_WIDGET_ANDROID)
10905 #elif defined(XP_UNIX)
10912 - name: media.av1.use-dav1d
10913 type: RelaxedAtomicBool
10914 #if defined(XP_WIN) && !defined(_ARM64_)
10916 #elif defined(XP_MACOSX)
10918 #elif defined(XP_UNIX)
10925 - name: media.av1.new-thread-count-strategy
10926 type: RelaxedAtomicBool
10930 - name: media.av1.force-thread-count
10931 type: RelaxedAtomicInt32
10935 - name: media.flac.enabled
10936 type: RelaxedAtomicBool
10941 - name: media.hls.enabled
10942 type: RelaxedAtomicBool
10943 #if defined(ANDROID) && !defined(NIGHTLY_BUILD)
10950 # Max number of HLS players that can be created concurrently. Used only on
10951 # Android and when "media.hls.enabled" is true.
10953 - name: media.hls.max-allocations
10959 - name: media.mp4.enabled
10960 type: RelaxedAtomicBool
10964 - name: media.mp4.sniff_iso_brand
10965 type: RelaxedAtomicBool
10969 # Error/warning handling, Decoder Doctor.
10971 # Set to true to force demux/decode warnings to be treated as errors.
10972 - name: media.playback.warnings-as-errors
10973 type: RelaxedAtomicBool
10977 # Resume video decoding when the cursor is hovering on a background tab to
10978 # reduce the resume latency and improve the user experience.
10979 - name: media.resume-background-video-on-tabhover
10984 # Media Seamless Looping
10985 - name: media.seamless-looping
10986 type: RelaxedAtomicBool
10990 - name: media.seamless-looping-video
10991 type: RelaxedAtomicBool
10995 - name: media.autoplay.block-event.enabled
11000 - name: media.media-capabilities.screen.enabled
11001 type: RelaxedAtomicBool
11005 - name: media.benchmark.vp9.fps
11006 type: RelaxedAtomicUint32
11010 - name: media.benchmark.vp9.threshold
11011 type: RelaxedAtomicUint32
11015 - name: media.benchmark.vp9.versioncheck
11016 type: RelaxedAtomicUint32
11020 - name: media.benchmark.frames
11021 type: RelaxedAtomicUint32
11025 - name: media.benchmark.timeout
11026 type: RelaxedAtomicUint32
11030 - name: media.test.video-suspend
11031 type: RelaxedAtomicBool
11035 # MediaCapture prefs follow
11037 # Enables navigator.mediaDevices and getUserMedia() support. See also
11038 # media.peerconnection.enabled
11039 - name: media.navigator.enabled
11044 # This pref turns off window-focus checks on the navigator.mediaDevices methods,
11045 # for partner testing frameworks.
11046 # Prefer "focusmanager.testmode", which is already set by default for
11047 # web-platform tests.
11048 - name: media.devices.unfocused.enabled
11053 # This pref turns off [SecureContext] on the navigator.mediaDevices object, for
11054 # more compatible legacy behavior.
11055 - name: media.devices.insecure.enabled
11060 # If the above pref is also enabled, this pref enabled getUserMedia() support
11061 # in http, bypassing the instant NotAllowedError you get otherwise.
11062 - name: media.getusermedia.insecure.enabled
11067 # Enable tab sharing
11068 - name: media.getusermedia.browser.enabled
11069 type: RelaxedAtomicBool
11073 # The getDisplayMedia method is always SecureContext regardless of the above two
11074 # prefs. But it is not implemented on android, and can be turned off elsewhere.
11075 - name: media.getdisplaymedia.enabled
11077 value: @IS_NOT_ANDROID@
11080 # The getDisplayMedia prompt uses getDisplayMedia under the hood to show previews.
11081 # This can be turned off if, e.g. on systems with known issues like X11, or if
11082 # previews are not desired.
11083 - name: media.getdisplaymedia.previews.enabled
11085 value: @IS_NOT_ANDROID@
11088 # Turn off any cameras (but not mics) while in the background. This is desirable
11090 - name: media.getusermedia.camera.background.mute.enabled
11092 value: @IS_ANDROID@
11095 # Use the libwebrtc AVFoundation camera backend on Mac by default. When
11096 # disabled, an older forked capture module is used.
11097 - name: media.getusermedia.camera.macavf.enabled
11102 # Tell the audio backend to prefer a stream adapted for voice when processing is
11103 # enabled through constraints (possibly defaults). Whether it has any effect
11104 # depends on the backend.
11105 - name: media.getusermedia.microphone.prefer_voice_stream_with_processing.enabled
11106 type: RelaxedAtomicBool
11110 # Tell the audio backend to create a voice stream for later re-use before asking
11111 # the user for microphone permissions, if approving those permissions would
11112 # result in a voice stream when created later on.
11113 - name: media.getusermedia.microphone.voice_stream_priming.enabled
11114 type: RelaxedAtomicBool
11115 value: @IS_XP_MACOSX@
11118 # This pref turns on legacy (non-spec) exposure of camera and microphone
11119 # information from enumerateDevices and devicechange ahead of successful
11120 # getUserMedia calls. Should only be turned on to resolve web compat issues,
11121 # since doing so reveals more user fingerprinting information to trackers.
11123 # In this mode, camera and microphone device labels are exposed if the site has a
11124 # persisted permission to either kind, as well as while actively capturing either
11125 # kind (temporary and tab-specific grace-period permissions do not count).
11127 # Planned next steps: true → @IS_NOT_NIGHTLY_BUILD@ → false
11128 - name: media.devices.enumerate.legacy.enabled
11133 # WebRTC prefs follow
11135 # Enables auto refresh of peerconnection stats by default
11136 - name: media.aboutwebrtc.auto_refresh.peerconnection_section
11138 value: @IS_NOT_NIGHTLY_BUILD@
11141 # Enables auto refresh of the transport connection log by default
11142 - name: media.aboutwebrtc.auto_refresh.connection_log_section
11147 # Enables auto refresh of user config by default
11148 - name: media.aboutwebrtc.auto_refresh.user_modified_config_section
11153 # Enables auto refresh of media context by default
11154 - name: media.aboutwebrtc.auto_refresh.media_ctx_section
11159 # Enables RTCPeerConnection support. Note that, when true, this pref enables
11160 # navigator.mediaDevices and getUserMedia() support as well.
11161 # See also media.navigator.enabled
11162 - name: media.peerconnection.enabled
11163 type: RelaxedAtomicBool
11167 - name: media.peerconnection.scripttransform.enabled
11168 type: RelaxedAtomicBool
11173 # Use MediaDataDecoder API for VP8/VP9 in WebRTC. This includes hardware
11174 # acceleration for decoding.
11175 - name: media.navigator.mediadatadecoder_vpx_enabled
11176 type: RelaxedAtomicBool
11177 #if defined(NIGHTLY_BUILD) || defined(MOZ_WIDGET_GTK)
11184 # Use MediaDataDecoder API for H264 in WebRTC. This includes hardware
11185 # acceleration for decoding.
11186 - name: media.navigator.mediadatadecoder_h264_enabled
11187 type: RelaxedAtomicBool
11188 #if defined(_ARM64_) && defined(XP_WIN)
11195 #if defined(MOZ_WIDGET_GTK)
11196 # Use hardware acceleration for VP8 decoding on Linux.
11197 - name: media.navigator.mediadatadecoder_vp8_hardware_enabled
11198 type: RelaxedAtomicBool
11203 # Interval in milliseconds at which to gather WebRTC stats for use in about:webrtc.
11204 - name: media.aboutwebrtc.hist.poll_interval_ms
11205 type: RelaxedAtomicUint32
11209 # History time depth in seconds to keep for webrtc:stats for use in about:webrtc.
11210 - name: media.aboutwebrtc.hist.storage_window_s
11211 type: RelaxedAtomicUint32
11215 # Time in minutes to retain peer connection stats after closing.
11216 - name: media.aboutwebrtc.hist.prune_after_m
11217 type: RelaxedAtomicUint32
11221 # Max number of closed PC stats histories to retain
11222 - name: media.aboutwebrtc.hist.closed_stats_to_retain
11223 type: RelaxedAtomicUint32
11227 # Gather PeerConnection stats history for display in about:webrtc. If
11228 # disabled history will only gather when about:webrtc is open. Additionally,
11229 # if disabled and when about:webrtc is not in the foreground history data
11230 # will become sparse.
11231 - name: media.aboutwebrtc.hist.enabled
11232 type: RelaxedAtomicBool
11233 #if defined(MOZ_WIDGET_ANDROID)
11236 value: @IS_NIGHTLY_BUILD@
11240 #endif # MOZ_WEBRTC
11242 # HTMLMediaElement.allowedToPlay should be exposed to web content when
11243 # block autoplay rides the trains to release. Until then, Nightly only.
11244 - name: media.allowed-to-play.enabled
11246 value: @IS_NIGHTLY_BUILD@
11249 # Is support for MediaDevices.ondevicechange enabled?
11250 - name: media.ondevicechange.enabled
11255 # Is support for HTMLMediaElement.seekToNextFrame enabled?
11256 - name: media.seekToNextFrame.enabled
11261 # Is the Audio Output Devices API enabled?
11262 - name: media.setsinkid.enabled
11264 #if defined(MOZ_WIDGET_ANDROID)
11265 value: false # bug 1473346
11271 # Turn on this pref can enable test-only events for media element.
11272 - name: media.testing-only-events
11277 - name: media.useAudioChannelService.testing
11282 - name: media.audioFocus.management
11284 #if defined(MOZ_WIDGET_ANDROID)
11291 - name: media.hardwaremediakeys.enabled
11296 # If this pref is on, then `media.mediacontrol.stopcontrol.timer.ms` would take
11297 # effect and determine the timing to stop controlling media.
11298 - name: media.mediacontrol.stopcontrol.timer
11303 # If media is being paused after a certain period, then we would think that
11304 # media doesn't need to be controlled anymore. Therefore, that media would stop
11305 # listening to the media control key events. The value of this pref is how long
11306 # media would stop listening to the event after it's paused. The default value
11307 # is set to 24 hrs (24*60*60*1000)
11308 - name: media.mediacontrol.stopcontrol.timer.ms
11309 type: RelaxedAtomicUint32
11313 # If this pref is on, we would stop controlling media after it reaches to the
11315 - name: media.mediacontrol.stopcontrol.aftermediaends
11320 # We would only use media control to control media which duration is longer
11322 - name: media.mediacontrol.eligible.media.duration.s
11327 # Encoder creation strategy for WebRTC
11328 # 0: prefer builtin WebRTC encoder (including OpenH264 via GMP)
11329 # 1: prefer PlatformEncoderModule
11330 - name: media.webrtc.encoder_creation_strategy
11331 type: RelaxedAtomicUint32
11339 #if defined(XP_MACOSX)
11340 - name: media.webrtc.capture.allow-iosurface
11341 type: RelaxedAtomicBool
11346 #if defined(XP_WIN)
11347 - name: media.webrtc.capture.allow-directx
11348 type: RelaxedAtomicBool
11352 - name: media.webrtc.capture.screen.allow-wgc
11353 type: RelaxedAtomicBool
11357 - name: media.webrtc.capture.window.allow-wgc
11358 type: RelaxedAtomicBool
11362 - name: media.webrtc.capture.wgc.allow-zero-hertz
11363 type: RelaxedAtomicBool
11368 #if defined(MOZ_WIDGET_GTK)
11369 - name: media.webrtc.capture.allow-pipewire
11370 type: RelaxedAtomicBool
11374 - name: media.webrtc.camera.allow-pipewire
11380 - name: media.block-autoplay-until-in-foreground
11382 #if !defined(MOZ_WIDGET_ANDROID)
11389 - name: media.webrtc.hw.h264.enabled
11391 #if defined(MOZ_WIDGET_ANDROID)
11398 - name: media.webrtc.tls_tunnel_for_all_proxy
11403 # If true, then we require explicit approval from the embedding app (ex. Fenix)
11404 # on GeckoView to know if we can allow audible, inaudible media or both kinds
11405 # of media to autoplay.
11406 - name: media.geckoview.autoplay.request
11411 # This is used in testing only, in order to skip the prompting process. This
11412 # pref works only when enabling the pref `media.geckoview.autoplay.request`.
11413 # 0=prompt as normal, 1=allow all, 2=deny all, 3=allow audible request,
11414 # 4=deny audible request, 5=allow inaudible request, 6=deny inaudible request.
11415 # 7=leave all requests pending.
11416 - name: media.geckoview.autoplay.request.testing
11421 - name: media.mediacontrol.testingevents.enabled
11426 #if defined(XP_MACOSX)
11427 - name: media.macos.screenrecording.oscheck.enabled
11433 # When the playback rate of an HTMLMediaElement is greater than this value, or
11434 # lower than the inverse of this value, the audio is muted.
11435 - name: media.audio.playbackrate.muting_threshold
11440 # The interval of time in milliseconds between attempts to reopen any
11441 # previously unavailable audio device.
11442 - name: media.audio.device.retry.ms
11443 type: RelaxedAtomicInt32
11447 # Time-stretch algorithm single processing sequence length in milliseconds.
11448 # This determines to how long sequences the original sound is chopped in the
11449 # time-stretch algorithm.
11450 - name: media.audio.playbackrate.soundtouch_sequence_ms
11451 type: RelaxedAtomicInt32
11455 # Time-stretch algorithm seeking window length in milliseconds for algorithm
11456 # that finds the best possible overlapping location. This determines from how
11457 # wide window the algorithm may look for an optimal joining location when mixing
11458 # the sound sequences back together.
11459 - name: media.audio.playbackrate.soundtouch_seekwindow_ms
11460 type: RelaxedAtomicInt32
11464 # Time-stretch algorithm overlap length in milliseconds. When the chopped sound
11465 # sequences are mixed back together, to form a continuous sound stream, this
11466 # parameter defines over how long period the two consecutive sequences are let
11467 # to overlap each other.
11468 - name: media.audio.playbackrate.soundtouch_overlap_ms
11469 type: RelaxedAtomicInt32
11473 # The duration, in milliseconds, of decoded audio to keep around in the
11474 # AudioSink ring-buffer. New decoding operations are started when this limit is
11475 # reached. The total size of the ring-buffer is slightly bigger than this.
11476 - name: media.audio.audiosink.threshold_ms
11478 #if defined(XP_MACOSX) && defined(MOZ_AARCH64)
11485 - name: media.video-wakelock
11486 type: RelaxedAtomicBool
11490 # On Mac, enables using the `<Brand> Media Plugin Helper` executable as the
11491 # GMP child process instead of the plugin-container executable.
11492 #if defined(XP_MACOSX)
11493 - name: media.plugin_helper_process.enabled
11494 type: RelaxedAtomicBool
11499 # Bug 1860492 - Deprecate and remove theora
11500 - name: media.theora.enabled
11501 type: RelaxedAtomicBool
11502 value: @IS_NOT_NIGHTLY_BUILD@
11505 # When this is true, the protection mask that Firefox replies to Widevine API
11506 # QueryOutputProtectionStatus is `kProtectionHDCP` when no potential capturing.
11507 - name: media.widevine.hdcp-protection-mask
11508 type: RelaxedAtomicBool
11512 #---------------------------------------------------------------------------
11513 # Prefs starting with "memory."
11514 #---------------------------------------------------------------------------
11516 - name: memory.phc.enabled
11518 value: @IS_EARLY_BETA_OR_EARLIER@
11521 - name: memory.phc.min_ram_mb
11526 - name: memory.phc.avg_delay.first
11531 - name: memory.phc.avg_delay.normal
11536 - name: memory.phc.avg_delay.page_reuse
11541 - name: memory.phc.avg_delay.content.first
11546 - name: memory.phc.avg_delay.content.normal
11551 - name: memory.phc.avg_delay.content.page_reuse
11556 #---------------------------------------------------------------------------
11557 # Prefs starting with "midi."
11558 #---------------------------------------------------------------------------
11560 - name: midi.testing
11561 type: RelaxedAtomicBool
11565 #---------------------------------------------------------------------------
11566 # Prefs starting with "mousewheel."
11567 #---------------------------------------------------------------------------
11569 # This affects how line scrolls from wheel events will be accelerated.
11570 # Factor to be multiplied for constant acceleration.
11571 - name: mousewheel.acceleration.factor
11572 type: RelaxedAtomicInt32
11576 # This affects how line scrolls from wheel events will be accelerated.
11577 # Number of mousewheel clicks when acceleration starts.
11578 # Acceleration can be turned off if pref is set to -1.
11579 - name: mousewheel.acceleration.start
11580 type: RelaxedAtomicInt32
11584 # Auto-dir is a feature which treats any single-wheel scroll as a scroll in the
11585 # only one scrollable direction if the target has only one scrollable
11586 # direction. For example, if the user scrolls a vertical wheel inside a target
11587 # which is horizontally scrollable but vertical unscrollable, then the vertical
11588 # scroll is converted to a horizontal scroll for that target.
11589 # Note that auto-dir only takes effect for |mousewheel.*.action|s and
11590 # |mousewheel.*.action.override_x|s whose values are 1.
11591 - name: mousewheel.autodir.enabled
11596 # When a wheel scroll is converted due to auto-dir, which side the converted
11597 # scroll goes towards is decided by one thing called "honoured target". If the
11598 # content of the honoured target horizontally starts from right to left, then
11599 # an upward scroll maps to a rightward scroll and a downward scroll maps to a
11600 # leftward scroll; otherwise, an upward scroll maps to a leftward scroll and a
11601 # downward scroll maps to a rightward scroll.
11602 # If this pref is set to false, then consider the scrolling target as the
11604 # If set to true, then consider the root element in the document where the
11605 # scrolling target is as the honoured target. But note that there's one
11606 # exception: for targets in an HTML document, the real root element(I.e. the
11607 # <html> element) is typically not considered as a root element, but the <body>
11608 # element is typically considered as a root element. If there is no <body>
11609 # element, then consider the <html> element instead.
11610 - name: mousewheel.autodir.honourroot
11615 - name: mousewheel.system_scroll_override.enabled
11616 type: RelaxedAtomicBool
11617 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
11624 # Prefs for overriding the system mouse wheel scrolling speed on
11625 # content of the web pages. When
11626 # "mousewheel.system_scroll_override.enabled" is true and the
11627 # system scrolling speed isn't customized by the user, the content scrolling
11628 # speed is multiplied by the following factors. The value will be used as
11629 # 1/100. E.g., 200 means 2.00.
11630 # NOTE: Even if "mousewheel.system_scroll_override.enabled" is
11631 # true, when Gecko detects the user customized the system scrolling speed
11632 # settings, the override isn't executed.
11633 - name: mousewheel.system_scroll_override.horizontal.factor
11634 type: RelaxedAtomicInt32
11637 - name: mousewheel.system_scroll_override.vertical.factor
11638 type: RelaxedAtomicInt32
11642 # Mouse wheel scroll transaction is held even if the mouse cursor is moved.
11643 - name: mousewheel.transaction.ignoremovedelay
11644 type: RelaxedAtomicInt32
11648 # Mouse wheel scroll transaction period of time (in milliseconds).
11649 - name: mousewheel.transaction.timeout
11650 type: RelaxedAtomicInt32
11654 # Mouse wheel scroll position is determined by GetMessagePos rather than
11656 - name: mousewheel.ignore_cursor_position_in_lparam
11657 type: RelaxedAtomicBool
11661 # If line-height is lower than this value (in device pixels), 1 line scroll
11662 # scrolls this height.
11663 - name: mousewheel.min_line_scroll_amount
11668 # Timeout period (in milliseconds) when the mouse wheel event is no longer
11669 # handled as the same series.
11670 - name: mousewheel.scroll_series_timeout
11671 type: RelaxedAtomicInt32
11675 #---------------------------------------------------------------------------
11676 # Prefs starting with "mozilla."
11677 #---------------------------------------------------------------------------
11679 - name: mozilla.widget.raise-on-setfocus
11684 #---------------------------------------------------------------------------
11685 # Prefs starting with "network."
11686 #---------------------------------------------------------------------------
11688 # Force less-secure NTLMv1 when needed (NTLMv2 is the default).
11689 - name: network.auth.force-generic-ntlm-v1
11690 type: RelaxedAtomicBool
11694 # Sub-resources HTTP-authentication:
11695 # 0 - don't allow sub-resources to open HTTP authentication credentials
11697 # 1 - allow sub-resources to open HTTP authentication credentials dialogs,
11698 # but don't allow it for cross-origin sub-resources
11699 # 2 - allow the cross-origin authentication as well.
11700 - name: network.auth.subresource-http-auth-allow
11705 # Sub-resources HTTP-authentication for cross-origin images:
11706 # - true: It is allowed to present http auth. dialog for cross-origin images.
11707 # - false: It is not allowed.
11708 # If network.auth.subresource-http-auth-allow has values 0 or 1 this pref does
11709 # not have any effect.
11710 - name: network.auth.subresource-img-cross-origin-http-auth-allow
11715 # Resources that are triggered by some non-web-content:
11716 # - true: They are allow to present http auth. dialog
11717 # - false: They are not allow to present http auth. dialog.
11718 - name: network.auth.non-web-content-triggered-resources-http-auth-allow
11723 # Whether to show anti-spoof confirmation prompts when navigating to a url
11725 - name: network.auth.confirmAuth.enabled
11730 # Whether to display auth prompts if X-Frame-Options header will block loading
11732 - name: network.auth.supress_auth_prompt_for_XFO_failures
11737 # whether to redirect the channel for auth redirects. See Bug 1820807
11738 - name: network.auth.use_redirect_for_retries
11739 type: RelaxedAtomicBool
11743 # When true, authentication challenges will be sorted even if
11744 # an authentication is already in progress. This may cause issues sometimes.
11745 - name: network.auth.sort_challenge_in_progress
11746 type: RelaxedAtomicBool
11750 # Whether to allow truncated brotli with empty output. This also fixes
11751 # throwing an erroring when receiving highly compressed brotli files when
11752 # no content type is specified (Bug 1715401). This pref can be removed after
11753 # some time (Bug 1841061)
11754 - name: network.compress.allow_truncated_empty_brotli
11755 type: RelaxedAtomicBool
11759 # See the full list of values in nsICookieService.idl.
11760 - name: network.cookie.cookieBehavior
11761 type: RelaxedAtomicInt32
11762 value: 0 # accept all cookies
11765 # The cookieBehavior to be used in Private Browsing mode.
11766 - name: network.cookie.cookieBehavior.pbmode
11767 type: RelaxedAtomicInt32
11768 value: 0 # accept all cookies
11771 # Changes cookieBehavior=5 to block third-party cookies by default
11772 - name: network.cookie.cookieBehavior.optInPartitioning
11777 # Changes cookieBehavior=5 to block third-party cookies in the private browsing
11779 - name: network.cookie.cookieBehavior.optInPartitioning.pbmode
11781 value: @IS_NIGHTLY_BUILD@
11784 # Whether to support CHIPS(Cookies Having Independent Partitioned State).
11785 - name: network.cookie.CHIPS.enabled
11787 value: @IS_NIGHTLY_BUILD@
11790 # Stale threshold for cookies in seconds.
11791 - name: network.cookie.staleThreshold
11796 - name: network.cookie.sameSite.laxByDefault
11797 type: RelaxedAtomicBool
11801 # lax-by-default 2 minutes tollerance for unsafe methods. The value is in seconds.
11802 - name: network.cookie.sameSite.laxPlusPOST.timeout
11807 # For lax-by-default cookies ignore cross-site redirects when the final
11808 # redirect is same-site again.
11809 # https://github.com/httpwg/http-extensions/issues/2104
11810 - name: network.cookie.sameSite.laxByDefault.allowBoomerangRedirect
11815 - name: network.cookie.sameSite.noneRequiresSecure
11817 value: @IS_NIGHTLY_BUILD@
11820 - name: network.cookie.sameSite.schemeful
11825 - name: network.cookie.sameSite.crossSiteIframeSetCheck
11830 - name: network.cookie.thirdparty.sessionOnly
11835 - name: network.cookie.thirdparty.nonsecureSessionOnly
11840 # If we should not store "persistent" cookies at all, i.e., make the
11841 # "persistent" storage be like "private" storage. This value is only read when
11842 # instantiating persistent storage for the cookie service, which usually only
11843 # happens when the cookie service singleton is created.
11844 - name: network.cookie.noPersistentStorage
11849 # If true then any cookies containing unicode will be rejected
11850 - name: network.cookie.blockUnicode
11851 type: RelaxedAtomicBool
11855 # If true cookies loaded from the sqlite DB that have a creation or
11856 # last accessed time that is in the future will be fixed and the
11857 # timestamps will be set to the current time.
11858 - name: network.cookie.fixup_on_db_load
11859 type: RelaxedAtomicBool
11863 # If true content types of multipart/x-mixed-replace cannot set a cookie
11864 - name: network.cookie.prevent_set_cookie_from_multipart
11865 type: RelaxedAtomicBool
11869 # If we should attempt to race the cache and network.
11870 - name: network.http.rcwn.enabled
11875 - name: network.http.rcwn.cache_queue_normal_threshold
11880 - name: network.http.rcwn.cache_queue_priority_threshold
11885 # We might attempt to race the cache with the network only if a resource
11886 # is smaller than this size.
11887 - name: network.http.rcwn.small_resource_size_kb
11892 - name: network.http.rcwn.min_wait_before_racing_ms
11897 - name: network.http.rcwn.max_wait_before_racing_ms
11902 # false=real referer, true=spoof referer (use target URI as referer).
11903 - name: network.http.referer.spoofSource
11908 # Check whether we need to hide referrer when leaving a .onion domain.
11909 # false=allow onion referer, true=hide onion referer (use empty referer).
11910 - name: network.http.referer.hideOnionSource
11915 # Include an origin header on non-GET and non-HEAD requests regardless of CORS.
11916 # 0=never send, 1=send when same-origin only, 2=always send.
11917 - name: network.http.sendOriginHeader
11922 # Whether to respect the redirected-tainted origin flag
11923 # https://fetch.spec.whatwg.org/#concept-request-tainted-origin
11924 - name: network.http.origin.redirectTainted
11929 # If true, cross origin fetch (or XHR) requests would be keyed
11930 # with a different cache key.
11931 - name: network.fetch.cache_partition_cross_origin
11932 type: RelaxedAtomicBool
11936 # If true, when browser code itself makes network requests, default to
11937 # omitting credentials.
11938 - name: network.fetch.systemDefaultsToOmittingCredentials
11939 type: RelaxedAtomicBool
11943 # Prefs allowing granular control of referers.
11944 # 0=don't send any, 1=send only on clicks, 2=send on image requests as well
11945 - name: network.http.sendRefererHeader
11949 do_not_use_directly: true
11951 # Whether to add urgency and incremental to request headers
11952 - name: network.http.priority_header.enabled
11953 type: RelaxedAtomicBool
11957 # The maximum allowed length for a referrer header - 4096 default.
11958 # 0 means no limit.
11959 - name: network.http.referer.referrerLengthLimit
11964 # 0=always send, 1=send iff base domains match, 2=send iff hosts match.
11965 - name: network.http.referer.XOriginPolicy
11969 do_not_use_directly: true
11971 # 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port.
11972 - name: network.http.referer.trimmingPolicy
11976 do_not_use_directly: true
11978 # 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port.
11979 - name: network.http.referer.XOriginTrimmingPolicy
11983 do_not_use_directly: true
11985 # Set the default Referrer Policy; to be used unless overriden by the site.
11986 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
11987 # 3=no-referrer-when-downgrade.
11988 - name: network.http.referer.defaultPolicy
11993 # Set the default Referrer Policy applied to third-party trackers when the
11994 # default cookie policy is set to reject third-party trackers, to be used
11995 # unless overriden by the site.
11996 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
11997 # 3=no-referrer-when-downgrade.
11998 # Trim referrers from trackers to origins by default.
11999 - name: network.http.referer.defaultPolicy.trackers
12004 # Set the Private Browsing Default Referrer Policy, to be used
12005 # unless overriden by the site.
12006 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
12007 # 3=no-referrer-when-downgrade.
12008 - name: network.http.referer.defaultPolicy.pbmode
12013 # Set to ignore referrer policies which is less restricted than the default for
12014 # cross-site requests, including 'unsafe-url', 'no-referrer-when-downgrade' and
12015 # 'origin-when-cross-origin'.
12016 - name: network.http.referer.disallowCrossSiteRelaxingDefault
12021 # Whether we ignore less restricted referrer policies for top navigations.
12022 - name: network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation
12028 # Set to ignore referrer policies which is less restricted than the default for
12029 # cross-site requests in the private browsing mode, including 'unsafe-url',
12030 # 'no-referrer-when-downgrade' and 'origin-when-cross-origin'.
12031 - name: network.http.referer.disallowCrossSiteRelaxingDefault.pbmode
12036 # Whether we ignore less restricted referrer policies for top navigations in the
12037 # private browsing mode.
12038 - name: network.http.referer.disallowCrossSiteRelaxingDefault.pbmode.top_navigation
12043 # Set the Private Browsing Default Referrer Policy applied to third-party
12044 # trackers when the default cookie policy is set to reject third-party
12045 # trackers, to be used unless overriden by the site.
12046 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
12047 # 3=no-referrer-when-downgrade.
12048 # No need to change this pref for trimming referrers from trackers since in
12049 # private windows we already trim all referrers to origin only.
12050 - name: network.http.referer.defaultPolicy.trackers.pbmode
12055 # Whether certain http header values should be censored out in logs.
12056 # Specifically filters out "authorization" and "proxy-authorization".
12057 - name: network.http.sanitize-headers-in-logs
12058 type: RelaxedAtomicBool
12062 # Hard code the User-Agent string's CPU architecture. This pref can be removed
12063 # after we're confident there are no webcompat problems.
12066 # * Android (any architecture)
12067 # * Linux (any architecture)
12068 # * Other Unix-like platforms except macOS (any architecture)
12069 - name: network.http.useragent.freezeCpu
12071 #if defined(XP_UNIX) && !defined(XP_MACOSX)
12078 # Whether or not we use Windows for SSO to Microsoft sites.
12079 - name: network.http.windows-sso.enabled
12080 type: RelaxedAtomicBool
12084 # Whether windows-sso is enabled for the default (0) container.
12085 # To enable SSO for additional containers, add a new pref like
12086 # `network.http.windows-sso.container-enabled.${containerId}` = true
12087 - name: network.http.windows-sso.container-enabled.0
12092 # The factor by which to increase the keepalive timeout when the
12093 # NS_HTTP_LARGE_KEEPALIVE flag is used for a connection
12094 - name: network.http.largeKeepaliveFactor
12095 type: RelaxedAtomicUint32
12099 # Max size, in bytes, for received HTTP response header.
12100 - name: network.http.max_response_header_size
12101 type: RelaxedAtomicUint32
12105 # This preference, if true, causes all UTF-8 domain names to be normalized to
12106 # punycode. The intention is to allow UTF-8 domain names as input, but never
12107 # generate them from punycode.
12108 - name: network.IDN_show_punycode
12109 type: RelaxedAtomicBool
12113 # If set to true, IOService.offline depends on IOService.connectivity.
12114 - name: network.offline-mirrors-connectivity
12115 type: RelaxedAtomicBool
12119 # If set to true, disallow localhost connections when offline.
12120 - name: network.disable-localhost-when-offline
12121 type: RelaxedAtomicBool
12125 # Enables the predictive service.
12126 - name: network.predictor.enabled
12131 # Set true to allow resolving proxy for localhost
12132 - name: network.proxy.allow_hijacking_localhost
12133 type: RelaxedAtomicBool
12137 # This pref will still treat localhost URLs as secure even when hijacked
12138 # during testing. This is necessary for automated testing to check that we
12139 # actually treat localhost as a secure origin.
12140 - name: network.proxy.testing_localhost_is_secure_when_hijacked
12141 type: RelaxedAtomicBool
12145 # Allow CookieJarSettings to be unblocked for channels without a document.
12146 # This is for testing only.
12147 - name: network.cookieJarSettings.unblocked_for_testing
12152 - name: network.predictor.enable-hover-on-ssl
12157 - name: network.predictor.enable-prefetch
12159 value: @IS_EARLY_BETA_OR_EARLIER@
12162 - name: network.predictor.page-degradation.day
12166 - name: network.predictor.page-degradation.week
12170 - name: network.predictor.page-degradation.month
12174 - name: network.predictor.page-degradation.year
12178 - name: network.predictor.page-degradation.max
12183 - name: network.predictor.subresource-degradation.day
12187 - name: network.predictor.subresource-degradation.week
12191 - name: network.predictor.subresource-degradation.month
12195 - name: network.predictor.subresource-degradation.year
12199 - name: network.predictor.subresource-degradation.max
12204 - name: network.predictor.prefetch-rolling-load-count
12209 - name: network.predictor.prefetch-min-confidence
12213 - name: network.predictor.preconnect-min-confidence
12217 - name: network.predictor.preresolve-min-confidence
12222 - name: network.predictor.prefetch-force-valid-for
12227 - name: network.predictor.max-resources-per-entry
12232 # This is selected in concert with max-resources-per-entry to keep memory
12233 # usage low-ish. The default of the combo of the two is ~50k.
12234 - name: network.predictor.max-uri-length
12240 - name: network.predictor.doing-tests
12245 # Indicates whether the `fetchpriority` attribute for elements which support it
12246 # (e.g. `<script>`) is enabled.
12247 - name: network.fetchpriority.enabled
12248 type: RelaxedAtomicBool
12249 value: @IS_NIGHTLY_BUILD@
12252 # When true, the channel's urgency will be adjusted based on the
12253 # channel's nsISupportsPriority.
12254 - name: network.fetchpriority.adjust_urgency
12255 type: RelaxedAtomicBool
12259 # Adjustments to apply to the internal priority of <link rel=preload as=script
12260 # fetchpriority=low/high/auto> and equivalent Link header with respect to the
12261 # case when network.fetchpriority is disabled.
12262 # - When the flag is disabled, Gecko currently sets priority to HIGHEST.
12263 # - When the flag is enabled, it respectively maps to LOW/HIGHEST/HIGHEST.
12264 - name: network.fetchpriority.adjustments.link-preload-script.low
12268 - name: network.fetchpriority.adjustments.link-preload-script.high
12272 - name: network.fetchpriority.adjustments.link-preload-script.auto
12277 # Adjustments to apply to the internal priority of <script type="module"
12278 # fetchpriority=low/high/auto> with respect to the case when
12279 # network.fetchpriority is disabled.
12280 # - When the flag is disabled, Gecko currently sets priority to NORMAL.
12281 # - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL.
12282 - name: network.fetchpriority.adjustments.module-script.low
12286 - name: network.fetchpriority.adjustments.module-script.high
12290 - name: network.fetchpriority.adjustments.module-script.auto
12295 # Adjustments to apply to the internal priority of async or defer <script
12296 # fetchpriority=low/high/auto> with respect to the case when
12297 # network.fetchpriority is disabled.
12298 # - When the flag is disabled, Gecko currently sets priority to NORMAL.
12299 # - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL.
12300 - name: network.fetchpriority.adjustments.async-or-defer-script.low
12304 - name: network.fetchpriority.adjustments.async-or-defer-script.high
12308 - name: network.fetchpriority.adjustments.async-or-defer-script.auto
12313 # Adjustments to apply to the internal priority of <script
12314 # fetchpriority=low/high/auto> inside the <head>, with respect to the case when
12315 # network.fetchpriority is disabled.
12316 # - When the flag is disabled, Gecko currently sets priority to NORMAL.
12317 # - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL.
12318 - name: network.fetchpriority.adjustments.script-in-head.low
12322 - name: network.fetchpriority.adjustments.script-in-head.high
12326 - name: network.fetchpriority.adjustments.script-in-head.auto
12331 # Adjustments to apply to the internal priority of <script
12332 # fetchpriority=low/high/auto> (other than the scripts handled above) with
12333 # respect to the case when network.fetchpriority is disabled.
12334 # - When the flag is disabled, Gecko currently sets priority to NORMAL.
12335 # - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL.
12336 - name: network.fetchpriority.adjustments.other-script.low
12340 - name: network.fetchpriority.adjustments.other-script.high
12344 - name: network.fetchpriority.adjustments.other-script.auto
12349 # Adjustments to apply to the internal priority of <link rel=preload as=font
12350 # fetchpriority=low/high/auto> with respect to the case when
12351 # network.fetchpriority is disabled.
12352 # - When the flag is disabled, Gecko currently sets priority to HIGH.
12353 # - When the flag is enabled, it respectively maps to LOW/HIGH/HIGH.
12354 - name: network.fetchpriority.adjustments.link-preload-font.low
12358 - name: network.fetchpriority.adjustments.link-preload-font.high
12362 - name: network.fetchpriority.adjustments.link-preload-font.auto
12367 # Adjustments to apply to the internal priority of <link rel=preload as=fetch
12368 # fetchpriority=low/high/auto> with respect to the case when
12369 # network.fetchpriority is disabled.
12370 # - When the flag is disabled, Gecko currently sets priority to NORMAL.
12371 # - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL.
12372 - name: network.fetchpriority.adjustments.link-preload-fetch.low
12376 - name: network.fetchpriority.adjustments.link-preload-fetch.high
12380 - name: network.fetchpriority.adjustments.link-preload-fetch.auto
12385 # Adjustments to apply to the internal priority of deferred style for
12386 # fetchpriority=low/high/auto> with respect to the case when
12387 # network.fetchpriority is disabled.
12388 # - When the flag is disabled, Gecko currently sets priority to NORMAL.
12389 # - When the flag is enabled, it respectively maps to LOW/NORMAL/NORMAL.
12390 - name: network.fetchpriority.adjustments.deferred-style.low
12394 - name: network.fetchpriority.adjustments.deferred-style.high
12398 - name: network.fetchpriority.adjustments.deferred-style.auto
12403 # Adjustments to apply to the internal priority of <link rel=preload as=style
12404 # fetchpriority=low/high/auto> with respect to the case when
12405 # network.fetchpriority is disabled.
12406 # - When the flag is disabled, Gecko currently sets priority to HIGHEST.
12407 # - When the flag is enabled, it respectively maps to HIGH/HIGHEST/HIGHEST.
12408 - name: network.fetchpriority.adjustments.link-preload-style.low
12412 - name: network.fetchpriority.adjustments.link-preload-style.high
12416 - name: network.fetchpriority.adjustments.link-preload-style.auto
12421 # Adjustments to apply to the internal priority of other non-deferred
12422 # stylesheet load for fetchpriority=low/high/auto with respect to the case when
12423 # network.fetchpriority is disabled.
12424 # - When the flag is disabled, Gecko currently sets priority to NORMAL.
12425 # - When the flag is enabled, it respectively maps to HIGH/HIGHEST/NORMAL.
12426 - name: network.fetchpriority.adjustments.non-deferred-style.low
12430 - name: network.fetchpriority.adjustments.non-deferred-style.high
12434 - name: network.fetchpriority.adjustments.non-deferred-style.auto
12439 # Adjustments to apply to the internal priority of global fetch API
12440 # for fetchpriority=low/high/auto with respect to the case when
12441 # network.fetchpriority is disabled.
12442 # - When the flag is disabled, Gecko currently sets priority to NORMAL.
12443 # - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL.
12444 - name: network.fetchpriority.adjustments.global-fetch-api.low
12445 type: RelaxedAtomicInt32
12448 - name: network.fetchpriority.adjustments.global-fetch-api.high
12449 type: RelaxedAtomicInt32
12452 - name: network.fetchpriority.adjustments.global-fetch-api.auto
12453 type: RelaxedAtomicInt32
12457 # Adjustments to apply to the internal priority of <link rel=preload as=images
12458 # fetchpriority=low/high/auto> and <img fetchpriority=low/high/auto> with
12459 # respect to the case when network.fetchpriority is disabled.
12460 # - When the flag is disabled, Gecko currently sets priority to LOW.
12461 # - When the flag is enabled, it respectively maps to LOW/LOW/HIGH.
12462 # The image code can currently further adjust the priority for image load, see
12463 # imgRequest::BoostPriority and AdjustPriorityForImages.
12464 - name: network.fetchpriority.adjustments.images.low
12468 - name: network.fetchpriority.adjustments.images.high
12472 - name: network.fetchpriority.adjustments.images.auto
12477 # Adjustments to apply to the internal priority of <audio>, <track>, <video>,
12478 # or <link rel=preload as=audio/track/video> with respect to the case when
12479 # network.fetchpriority is disabled.
12480 # - When the flag is disabled, Gecko currently sets priority to NORMAL.
12481 # - When the flag is enabled, it respectively maps to LOW/LOW/HIGH.
12482 - name: network.fetchpriority.adjustments.media.low
12486 - name: network.fetchpriority.adjustments.media.high
12490 - name: network.fetchpriority.adjustments.media.auto
12495 # Enables `<link rel="preconnect">` tag and `Link: rel=preconnect` response header
12497 - name: network.preconnect
12498 type: RelaxedAtomicBool
12502 # Enables `<link rel="modulepreload">` tag and `Link: rel=modulepreload`
12503 # response header handling.
12504 - name: network.modulepreload
12505 type: RelaxedAtomicBool
12509 # Enable 103 Early Hint status code (RFC 8297)
12510 - name: network.early-hints.enabled
12511 type: RelaxedAtomicBool
12515 # Enable sending 103 (Early Hints) responses over HTTP/1.1
12516 - name: network.early-hints.over-http-v1-1.enabled
12517 type: RelaxedAtomicBool
12521 # Enable `Link: rel=preconnect` in 103 Early Hint response.
12522 - name: network.early-hints.preconnect.enabled
12523 type: RelaxedAtomicBool
12527 # The max number of speculative connections we allow for `Link: rel=preconnect`.
12528 # When 0, the speculative connection created due to `Link: rel=preconnect` will
12529 # be limited by "network.http.speculative-parallel-limit".
12530 - name: network.early-hints.preconnect.max_connections
12535 # How long we should wait for EarlyHintPreloader to be used.
12536 # Under normal circumstances it should be used immidiately.
12537 - name: network.early-hints.parent-connect-timeout
12542 # Whether to use the network process or not
12543 # Start a separate socket process. Performing networking on the socket process
12544 # is control by a sepparate pref
12545 # ("network.http.network_access_on_socket_process.enabled").
12546 # Changing these prefs requires a restart.
12547 - name: network.process.enabled
12548 type: RelaxedAtomicBool
12550 #if defined(ANDROID) || defined(MOZ_THUNDERBIRD)
12551 value: false # see bug 1641427
12556 # Whether we can send OnDataAvailable to content process directly.
12557 - name: network.send_ODA_to_content_directly
12558 type: RelaxedAtomicBool
12562 # Whether we can send OnDataFinished to html5parser in content process directly
12563 - name: network.send_OnDataFinished.html5parser
12564 type: RelaxedAtomicBool
12568 # Whether we can send OnDataFinished in the content process
12569 - name: network.send_OnDataFinished
12570 type: RelaxedAtomicBool
12574 # Whether we can send OnDataFinished to content process directly.
12575 - name: network.send_OnDataFinished.nsInputStreamPump
12576 type: RelaxedAtomicBool
12580 # Whether we can send OnDataFinished to cssLoader in content process.
12581 - name: network.send_OnDataFinished.cssLoader
12582 type: RelaxedAtomicBool
12583 value: @IS_EARLY_BETA_OR_EARLIER@
12586 # Whether we can send send OnDataFinished only after dispatching
12587 # all the progress events on the main thread
12588 - name: network.send_OnDataFinished_after_progress_updates
12589 type: RelaxedAtomicBool
12593 # Perform all network access on the socket process.
12594 # The pref requires "network.process.enabled" to be true.
12595 # Changing these prefs requires a restart.
12596 - name: network.http.network_access_on_socket_process.enabled
12597 type: RelaxedAtomicBool
12601 # Telemetry of traffic categories. Whether or not to enable HttpTrafficAnalyzer.
12602 - name: network.traffic_analyzer.enabled
12603 type: RelaxedAtomicBool
12607 # Whether DNS resolution is limited to literals and cached entries.
12608 - name: network.dns.disabled
12609 type: RelaxedAtomicBool
12613 - name: network.dns.disablePrefetchFromHTTPS
12618 # For testing purpose only: allow dns prefetch through proxies
12619 - name: network.dns.prefetch_via_proxy
12624 # Max time to shutdown the resolver threads
12625 - name: network.dns.resolver_shutdown_timeout_ms
12630 # When true on Windows DNS resolutions for single label domains
12631 # (domains that don't contain a dot) will be resolved using the DnsQuery
12632 # API instead of PR_GetAddrInfoByName
12633 - name: network.dns.dns_query_single_label
12634 type: RelaxedAtomicBool
12638 # Use platform DNS APIs (where available) to resolve HTTPS queries
12639 - name: network.dns.native_https_query
12640 type: RelaxedAtomicBool
12641 #if defined(EARLY_BETA_OR_EARLIER) && !defined(XP_MACOSX)
12648 # DnsQuery_A is broken for HTTPS queries on Windows 10.
12649 # Once it gets fixed, we can flip this pref to enable it.
12650 # Changes might not take effect until restart.
12651 - name: network.dns.native_https_query_win10
12652 type: RelaxedAtomicBool
12656 # When true, the HTTPS query will actually call the native
12657 # platform API. When false it will return before the call
12658 # to the platform API
12659 # This pref is necessary because having a HTTPS record
12660 # could cause channels to connect to a different port,
12661 # which is not desirable in automation.
12662 - name: network.dns.native_https_query_in_automation
12663 type: RelaxedAtomicBool
12667 # When resolving a native HTTPS query with native APIs
12668 # the Android implementation has a max timeout
12669 - name: network.dns.native_https_timeout_android
12670 type: RelaxedAtomicInt32
12674 # When this pref is true, we copy the host name to a fresh string before
12675 # calling into getaddrinfo.
12676 - name: network.dns.copy_string_before_call
12677 type: RelaxedAtomicBool
12681 - name: network.dns.max_high_priority_threads
12682 type: RelaxedAtomicUint32
12686 - name: network.dns.max_any_priority_threads
12687 type: RelaxedAtomicUint32
12691 # This makes it so NS_HTTP_REFRESH_DNS is only
12692 # set on DNS resolutions when LOAD_FRESH_CONNECTION is set.
12693 # That's because we don't need to refresh DNS on
12694 # every page reload.
12695 - name: network.dns.only_refresh_on_fresh_connection
12696 type: RelaxedAtomicBool
12700 # The proxy type. See nsIProtocolProxyService.idl
12701 # PROXYCONFIG_DIRECT = 0
12702 # PROXYCONFIG_MANUAL = 1
12703 # PROXYCONFIG_PAC = 2
12704 # PROXYCONFIG_WPAD = 4
12705 # PROXYCONFIG_SYSTEM = 5
12706 - name: network.proxy.type
12707 type: RelaxedAtomicUint32
12711 # Whether to use WPAD while configuring proxy with system settings
12712 - name: network.proxy.system_wpad
12717 # Whether to allow the use of WPAD while configuring proxy with system settings
12718 - name: network.proxy.system_wpad.allowed
12723 # Whether the SOCKS5 proxy should be in charge of DNS resolution. Making it a
12724 # SOCKS5h proxy by convention
12725 - name: network.proxy.socks5_remote_dns
12726 type: RelaxedAtomicBool
12730 # Whether the SOCKS4 proxy should be in charge of DNS resolution. Making it a
12732 - name: network.proxy.socks_remote_dns
12733 type: RelaxedAtomicBool
12737 # When receiving a network change event, the time (in ms) we wait to reload the
12739 - name: network.proxy.reload_pac_delay
12740 type: RelaxedAtomicUint32
12744 # When parsing "SOCKS" in PAC string, the default version of SOCKS that will be
12746 - name: network.proxy.default_pac_script_socks_version
12747 type: RelaxedAtomicUint32
12751 # Whether to force failover to direct for system requests.
12752 #ifdef MOZ_PROXY_DIRECT_FAILOVER
12753 - name: network.proxy.failover_direct
12759 # Whether to allow a bypass flag to be set on httpChannel that will
12760 # prevent proxies from being used for that specific request.
12761 - name: network.proxy.allow_bypass
12763 #ifdef MOZ_PROXY_BYPASS_PROTECTION
12770 - name: network.proxy.parse_pac_on_socket_process
12771 type: RelaxedAtomicBool
12775 - name: network.proxy.detect_system_proxy_changes
12776 type: RelaxedAtomicBool
12780 # If all non-direct proxies have failed, we retry all of them in case they
12782 - name: network.proxy.retry_failed_proxies
12783 type: RelaxedAtomicBool
12787 # Some requests during a page load are marked as "tail", mainly trackers, but not only.
12788 # This pref controls whether such requests are put to the tail, behind other requests
12789 # emerging during page loading process.
12790 - name: network.http.tailing.enabled
12795 # Whether to run proxy checks when processing Alt-Svc headers.
12796 - name: network.http.altsvc.proxy_checks
12801 - name: network.http.stale_while_revalidate.enabled
12802 type: RelaxedAtomicBool
12806 # Capacity of the above cache, in kilobytes.
12807 - name: network.ssl_tokens_cache_capacity
12808 type: RelaxedAtomicUint32
12812 # How many records we store per entry
12813 - name: network.ssl_tokens_cache_records_per_entry
12814 type: RelaxedAtomicUint32
12818 # The maximum allowed length for a URL - 1MB default.
12819 - name: network.standard-url.max-length
12820 type: RelaxedAtomicUint32
12824 # DNS Trusted Recursive Resolver
12825 # 0 - default off, 1 - reserved/off, 2 - TRR first, 3 - TRR only,
12826 # 4 - reserved/off, 5 off by choice
12827 - name: network.trr.mode
12828 type: RelaxedAtomicUint32
12832 # Default global TRR provider
12833 - name: network.trr.default_provider_uri
12835 value: "https://mozilla.cloudflare-dns.com/dns-query"
12838 # If true, retry TRR for recoverable errors once.
12839 - name: network.trr.retry_on_recoverable_errors
12840 type: RelaxedAtomicBool
12844 # If true, don't fallback to native DNS upon network errors.
12845 - name: network.trr.strict_native_fallback
12846 type: RelaxedAtomicBool
12850 # If true, we'll fallback to native if the retry also times out.
12851 - name: network.trr.strict_native_fallback_allow_timeouts
12852 type: RelaxedAtomicBool
12856 # Single TRR request timeout (ms) when strict native fallback is enabled.
12857 - name: network.trr.strict_fallback_request_timeout_ms
12858 type: RelaxedAtomicUint32
12862 # If false, the temporary blocklisting feature is disabled.
12863 # This is useful for tests to prevent bleeding extra reqs
12864 # between tasks, since we may attempt to look up the
12865 # parent domain in the background when blocklisting a host.
12866 - name: network.trr.temp_blocklist
12867 type: RelaxedAtomicBool
12871 # TRR blocklist entry expire time (in seconds). Default is one minute.
12872 # Meant to survive basically a page load.
12873 - name: network.trr.temp_blocklist_duration_sec
12874 type: RelaxedAtomicUint32
12878 # Single TRR request timeout, in milliseconds
12879 - name: network.trr.request_timeout_ms
12880 type: RelaxedAtomicUint32
12884 # Single TRR request timeout, in milliseconds for mode 3
12885 - name: network.trr.request_timeout_mode_trronly_ms
12886 type: RelaxedAtomicUint32
12890 # Similar to network.http.http2.ping-timeout, but this is used when the
12891 # Http/2 connection is connected to the TRR server.
12892 - name: network.trr.ping_timeout
12893 type: RelaxedAtomicUint32
12897 # The timeout of the TRR confirmation request
12898 - name: network.trr.confirmation_timeout_ms
12899 type: RelaxedAtomicUint32
12903 # The timeout of the TRR confirmation request
12904 - name: network.trr.confirmation_telemetry_enabled
12905 type: RelaxedAtomicBool
12909 # Whether to send the Accept-Language header for TRR requests
12910 - name: network.trr.send_accept-language_headers
12911 type: RelaxedAtomicBool
12915 # Whether to send an empty Accept-Encoding header for TRR requests
12916 - name: network.trr.send_empty_accept-encoding_headers
12917 type: RelaxedAtomicBool
12921 # Whether to send the User-Agent header for TRR requests
12922 - name: network.trr.send_user-agent_headers
12923 type: RelaxedAtomicBool
12927 # If we should wait for captive portal confirmation before enabling TRR
12928 - name: network.trr.wait-for-portal
12929 type: RelaxedAtomicBool
12933 # If we should wait for TRR service confirmation to complete before enabling
12934 # TRR for lookups when fallback is enabled. Confirmation is always skipped when
12935 # global mode is TRR-only (no fallback).
12936 - name: network.trr.wait-for-confirmation
12937 type: RelaxedAtomicBool
12941 # Normally when confirmation fails we wait for the confirmation to succeed
12942 # before attempting to do TRR. When this pref is true, we optimistically
12943 # assume the confirmation will succeed and might attempt TRR anyway.
12944 # If network.trr.wait-for-confirmation is true, this pref is ignored.
12945 - name: network.trr.attempt-when-retrying-confirmation
12946 type: RelaxedAtomicBool
12950 # Use GET (rather than POST)
12951 - name: network.trr.useGET
12952 type: RelaxedAtomicBool
12956 # Allow RFC1918 address in responses?
12957 - name: network.trr.allow-rfc1918
12958 type: RelaxedAtomicBool
12962 # When true, it only sends AAAA when the system has IPv6 connectivity
12963 - name: network.trr.skip-AAAA-when-not-supported
12964 type: RelaxedAtomicBool
12968 # Whether to apply split horizon mitigations when using TRR.
12969 # These include adding the DNS suffix to the excluded domains
12970 - name: network.trr.split_horizon_mitigations
12971 type: RelaxedAtomicBool
12975 # Explicitly disable ECS (EDNS Client Subnet, RFC 7871)
12976 - name: network.trr.disable-ECS
12977 type: RelaxedAtomicBool
12981 # When true, the DNS+TRR cache will be cleared when a relevant TRR pref
12982 # changes. (uri, bootstrapAddress, excluded-domains)
12983 - name: network.trr.clear-cache-on-pref-change
12984 type: RelaxedAtomicBool
12988 # After this many failed TRR requests in a row, consider TRR borked
12989 - name: network.trr.max-fails
12990 type: RelaxedAtomicUint32
12994 # When the TRR confirmation is set to CONFIRM_FAILED due to many failures in
12995 # a row, we set a timer to retry. This has an exponential backoff up to
12997 - name: network.trr.retry-timeout-ms
12998 type: RelaxedAtomicUint32
13002 # Retry with no TRR when the response contained only 0.0.0.0 or ::
13003 - name: network.trr.fallback-on-zero-response
13004 type: RelaxedAtomicBool
13008 # If true we parse the /etc/hosts file and exclude any host names from TRR.
13009 # Reading the file is only done once, when TRR is first enabled - this could be
13010 # soon after startup or when the pref is flipped.
13011 - name: network.trr.exclude-etc-hosts
13012 type: RelaxedAtomicBool
13016 # Whether to add padding in the doh dns queries (rfc 7830)
13017 - name: network.trr.padding
13018 type: RelaxedAtomicBool
13022 # The block size to pad to. Capped at 1024 bytes.
13023 # Setting it to 0 doesn't add additional padding, but allows the server to
13024 # respond with padding (RFC7930 Sec 4)
13025 - name: network.trr.padding.length
13026 type: RelaxedAtomicUint32
13030 # Whether to skip the NS check for the blocked host.
13031 # Note this is used for test only.
13032 - name: network.trr.skip-check-for-blocked-host
13033 type: RelaxedAtomicBool
13037 # Whether to use the connection info that is generated asynchronously.
13038 - name: network.trr.async_connInfo
13039 type: RelaxedAtomicBool
13043 # If true, a failed TRR request that contains an extended DNS error
13044 # matching the hardFail condition in DNSPacket.cpp will not be
13045 # retried with native DNS
13046 - name: network.trr.hard_fail_on_extended_error
13047 type: RelaxedAtomicBool
13051 # The base URL of the `Learn more` button for skip reasons
13052 - name: network.trr_ui.skip_reason_learn_more_url
13054 value: "https://firefox-source-docs.mozilla.org/networking/dns/trr-skip-reasons.html#"
13057 # If true, display a warning before fallback to native
13058 - name: network.trr.display_fallback_warning
13059 type: RelaxedAtomicBool
13063 # Heuristics in this list will trigger the fallback to native warning
13064 - name: network.trr.fallback_warning_heuristic_list
13069 # Use Oblivious HTTP when making TRR requests.
13070 - name: network.trr.use_ohttp
13071 type: RelaxedAtomicBool
13075 # Oblivious HTTP relay URI for TRR requests.
13076 - name: network.trr.ohttp.relay_uri
13081 # URI from which to fetch the configuration for the Oblivious HTTP gateway for TRR requests.
13082 - name: network.trr.ohttp.config_uri
13087 # The URI used for the target DoH server when network.trr.use_ohttp is true
13088 - name: network.trr.ohttp.uri
13093 # Allow the network changed event to get sent when a network topology or setup
13094 # change is noticed while running.
13095 - name: network.notify.changed
13096 type: RelaxedAtomicBool
13100 # Allow network detection of IPv6 related changes (bug 1245059)
13101 - name: network.notify.IPv6
13102 type: RelaxedAtomicBool
13110 # Whether to check the dnsSuffix on network changes
13111 - name: network.notify.dnsSuffixList
13112 type: RelaxedAtomicBool
13116 # Whether to check the registry for proxies on network changes that indicate
13117 # that TRR should not be used.
13118 - name: network.notify.checkForProxies
13119 type: RelaxedAtomicBool
13123 # Whether to check the registry for NRPT rules on network changes that
13124 # indicate that TRR should not be used.
13125 - name: network.notify.checkForNRPT
13126 type: RelaxedAtomicBool
13130 # Whether NotifyIpInterfaceChange should be called immediately after
13131 # registration in order to record the initial state of the network adapters.
13132 - name: network.notify.initial_call
13133 type: RelaxedAtomicBool
13137 # Whether to check for DNS resolvers
13138 - name: network.notify.resolvers
13139 type: RelaxedAtomicBool
13143 # Whether to use the rust implemented DefaultURI for unknown scheme types
13144 - name: network.url.useDefaultURI
13145 type: RelaxedAtomicBool
13149 # Allows use of a protocol exception list that will bypass defaultURI parser
13150 - name: network.url.some_schemes_bypass_defaultURI_fallback
13151 type: RelaxedAtomicBool
13155 # A list of schemes to allow for bypassing defaultURI as default
13156 # This is only used when network.url.some_schemes_bypass_defaultURI_fallback is true
13157 - name: network.url.simple_uri_schemes
13162 # The maximum allowed length for a URL - 32MB default.
13163 # If 0 that means no limit.
13164 - name: network.url.max-length
13165 type: RelaxedAtomicUint32
13166 value: 32 * 1024 * 1024
13169 # If true, will be more strict with status code parsing
13170 - name: network.url.strict_data_url_base64_placement
13171 type: RelaxedAtomicBool
13175 - name: network.url.strict_protocol_setter
13176 type: RelaxedAtomicBool
13180 # Force remapping of remote port numbers to allow reaching local testing
13181 # servers or port forwarders listening on non-standard ports. Note that
13182 # this is not changing the origin URL in the addressbar, only internally
13183 # the port number used. This is intended to be used along with the
13184 # `network.dns.forceResolve` preference.
13187 # "80,443,808-888=8080; 563=8081"
13188 # this will remap ports for HTTP, HTTPS and the range of 808-888 included
13189 # to use port 8080, and port 563 to go to 8081.
13190 - name: network.socket.forcePort
13195 # Try and use HTTP2 when using SSL
13196 - name: network.http.http2.enabled
13197 type: RelaxedAtomicBool
13201 - name: network.http.http2.enabled.deps
13202 type: RelaxedAtomicBool
13206 - name: network.http.http2.enforce-tls-profile
13207 type: RelaxedAtomicBool
13211 - name: network.http.http2.chunk-size
13212 type: RelaxedAtomicInt32
13216 - name: network.http.http2.timeout
13217 type: RelaxedAtomicInt32
13221 - name: network.http.http2.coalesce-hostnames
13222 type: RelaxedAtomicBool
13226 # When true, origin A and origin B will be coalesced if they have an overlap
13227 # in IP addresses as advertized by DNS, regardless if the existing connection
13228 # to origin A is not to an IP present in B's DNS response.
13229 # When false, an existing connection will only be reused if the
13230 # connection's remote IP is also present in B's DNS response.
13231 - name: network.http.http2.aggressive_coalescing
13232 type: RelaxedAtomicBool
13236 - name: network.http.http2.ping-threshold
13237 type: RelaxedAtomicInt32
13241 - name: network.http.http2.ping-timeout
13242 type: RelaxedAtomicInt32
13246 - name: network.http.http2.send-buffer-size
13247 type: RelaxedAtomicInt32
13251 - name: network.http.http2.allow-push
13252 type: RelaxedAtomicBool
13256 - name: network.http.http2.push-allowance
13257 type: RelaxedAtomicInt32
13258 value: 131072 # 128KB
13261 - name: network.http.http2.pull-allowance
13262 type: RelaxedAtomicInt32
13263 value: 12582912 # 12MB
13266 - name: network.http.http2.default-concurrent
13267 type: RelaxedAtomicInt32
13271 - name: network.http.http2.default-hpack-buffer
13272 type: RelaxedAtomicInt32
13276 - name: network.http.http2.websockets
13277 type: RelaxedAtomicBool
13281 - name: network.http.http2.enable-hpack-dump
13282 type: RelaxedAtomicBool
13286 - name: network.http.http2.move_to_pending_list_after_network_change
13287 type: RelaxedAtomicBool
13292 - name: network.http.http3.enable
13293 type: RelaxedAtomicBool
13297 # Receive buffer size of QUIC socket
13298 - name: network.http.http3.recvBufferSize
13299 type: RelaxedAtomicInt32
13303 - name: network.http.http3.enable_qlog
13304 type: RelaxedAtomicBool
13308 - name: network.http.http3.enable_0rtt
13309 type: RelaxedAtomicBool
13313 # When a h3 transaction is inserted in the pending queue, the time (ms) we wait
13314 # to create a TCP backup connection.
13315 - name: network.http.http3.backup_timer_delay
13316 type: RelaxedAtomicUint32
13320 # The global half open sockets allowed for creating a backup connection.
13321 - name: network.http.http3.parallel_fallback_conn_limit
13322 type: RelaxedAtomicUint32
13326 # Receive buffer size of QUIC socket
13327 - name: network.http.http3.max_data
13328 type: RelaxedAtomicUint32
13332 # Receive buffer size of QUIC socket
13333 - name: network.http.http3.max_stream_data
13334 type: RelaxedAtomicUint32
13338 # Enable http3 network priority as described in
13339 # <https://www.rfc-editor.org/rfc/rfc9218.html>.
13340 - name: network.http.http3.priority
13341 type: RelaxedAtomicBool
13345 # Depriorizing background tabs notifies websites when switching to or from the
13346 # tab while still loading resources for the website. On one hand it might
13347 # improve performance when switching to an tab with a website using the same
13348 # QUIC connection. On the other hand it sends more data to the website and
13349 # might be a privacy concern.
13350 - name: network.http.http3.send_background_tabs_deprioritization
13351 type: RelaxedAtomicBool
13355 - name: network.http.http3.version_negotiation.enabled
13356 type: RelaxedAtomicBool
13360 # When a Http/3 connection failed, whether to retry with a different IP address.
13361 - name: network.http.http3.retry_different_ip_family
13362 type: RelaxedAtomicBool
13363 value: @IS_EARLY_BETA_OR_EARLIER@
13366 # This is for testing purpose. When true, nsUDPSocket::SendWithAddress will
13367 # return NS_ERROR_CONNECTION_REFUSED for address "::1".
13368 - name: network.http.http3.block_loopback_ipv6_addr
13369 type: RelaxedAtomicBool
13373 # The congestion control algorithm with which to configure neqo.
13376 - name: network.http.http3.cc_algorithm
13377 type: RelaxedAtomicUint32
13382 # It represents the maximum duration that we used to accumulate
13383 # callback timeouts before we set a timer and break out of the loop.
13384 - name: network.http.http3.max_accumlated_time_ms
13385 type: RelaxedAtomicUint32
13390 # Whether to send a Xyber768 key share in HTTP/3 TLS handshakes.
13391 # Has no effect unless security.tls.enable_kyber is true.
13392 - name: network.http.http3.enable_kyber
13393 type: RelaxedAtomicBool
13397 value: @IS_NIGHTLY_BUILD@
13402 # When true, a http request will be upgraded to https when HTTPS RR is
13404 - name: network.dns.upgrade_with_https_rr
13405 type: RelaxedAtomicBool
13409 # Whether to use HTTPS RR as AltSvc
13410 - name: network.dns.use_https_rr_as_altsvc
13411 type: RelaxedAtomicBool
13415 # Whether to check for NAT64 using the system resolver
13416 - name: network.connectivity-service.nat64-check
13421 # Manually enter the NAT64 prefix that will be used if IPv4 is unavailable.
13422 # The value is formatted as IPv6 with the least significant bits to be dropped.
13423 # For example, 64:ff9b:: is a common prefix. This will not disable
13424 # the NAT64 check, although the value of this pref will be prioritized.
13425 - name: network.connectivity-service.nat64-prefix
13430 # Whether to enable echconfig.
13431 - name: network.dns.echconfig.enabled
13432 type: RelaxedAtomicBool
13436 # Whether to enable echconfig for http3.
13437 - name: network.dns.http3_echconfig.enabled
13438 type: RelaxedAtomicBool
13442 # This pref needs to be worked together with network.dns.echconfig.enabled
13443 # being true and there is no record without ECHConfig.
13444 # When we try all records with ECHConfig in HTTPS RRs and still can't connect,
13445 # this pref indicate whether we can fallback to the origin server.
13446 - name: network.dns.echconfig.fallback_to_origin_when_all_failed
13447 type: RelaxedAtomicBool
13451 # When true, reset the exclusion list when all records are excluded.
13452 - name: network.dns.httpssvc.reset_exclustion_list
13453 type: RelaxedAtomicBool
13457 # If the http3 connection cannot be ready after the timeout value here, the
13458 # transaction will start another non-http3 conneciton.
13459 # Setting this value to 0 indicates this feature is disabled.
13460 - name: network.dns.httpssvc.http3_fast_fallback_timeout
13461 type: RelaxedAtomicUint32
13465 # The TTL for negative responses of TXT and HTTPS records.
13466 - name: network.dns.negative_ttl_for_type_record
13467 type: RelaxedAtomicUint32
13468 value: 300 # 5 minutes (in seconds)
13471 # Whether to use port prefixed QNAME for HTTPS RR
13472 - name: network.dns.port_prefixed_qname_https_rr
13473 type: RelaxedAtomicBool
13477 # Whether to use HTTPS RR and ignore NS_HTTP_DISALLOW_HTTPS_RR
13478 # This pref is only set when running tests
13479 - name: network.dns.force_use_https_rr
13480 type: RelaxedAtomicBool
13484 # This preference can be used to turn off IPv6 name lookups. See bug 68796.
13485 - name: network.dns.disableIPv6
13486 type: RelaxedAtomicBool
13490 # Whether to prefer IPv6 name lookups.
13491 - name: network.dns.preferIPv6
13492 type: RelaxedAtomicBool
13496 # Only used for testing
13497 - name: network.dns.mock_HTTPS_RR_domain
13502 # Whether to add additional record IPs to the cache
13503 - name: network.trr.add_additional_records
13504 type: RelaxedAtomicBool
13508 # When this pref is true, AddStorageEntry will return an error if the
13509 # OPEN_READONLY & OPEN_SECRETLY flags are passed and no entry exists.
13510 # If no regressions occur this pref should be removed.
13511 - name: network.cache.bug1708673
13512 type: RelaxedAtomicBool
13516 # How much progress we want to do minimum when purging under pressure.
13517 # On disk, we may see blocking I/O, so for now we keep 0 here.
13518 - name: network.cache.purge_minprogress_disk
13519 type: RelaxedAtomicUint32
13523 # How much progress we want to do minimum when purging under pressure.
13524 # In memory, purging is cheap and memory is precious.
13525 - name: network.cache.purge_minprogress_memory
13526 type: RelaxedAtomicUint32
13530 # When true we will dispatch a background task (separate process) to
13531 # delete the cache folder at shutdown in order to avoid shutdown hangs.
13532 - name: network.cache.shutdown_purge_in_background_task
13533 type: RelaxedAtomicBool
13534 #if defined(XP_WIN)
13541 # Number of seconds to wait for the cache folder to be renamed before
13542 # the background task forcefully exists.
13543 - name: network.cache.shutdown_purge_folder_wait_seconds
13544 type: RelaxedAtomicUint32
13548 - name: network.cache.persist_permanent_redirects_http
13553 # This is used for a temporary workaround for a web-compat issue. If pref is
13554 # true CORS preflight requests are allowed to send client certificates.
13555 - name: network.cors_preflight.allow_client_cert
13556 type: RelaxedAtomicBool
13560 # Whether to record the telemetry event when a JAR channel is failed to load.
13561 - name: network.jar.record_failure_reason
13562 type: RelaxedAtomicBool
13563 value: @IS_EARLY_BETA_OR_EARLIER@
13566 # nsJARInputStream::Available returns the size indicated by the archived entry
13567 # so we need a limit so we don't OOM if the archive is corrupted.
13568 - name: network.jar.max_available_size
13569 type: RelaxedAtomicUint32
13570 value: 256*1024*1024 # 256 Mb
13573 # When decompressing an archived entry we need to allocate a buffer
13574 # large enough to hold the uncompressed entry. This pref specifies the max
13575 # size of such a buffer.
13576 # When set to 0 there is no limit.
13577 - name: network.jar.max_entry_size
13578 type: RelaxedAtomicUint32
13579 value: 256*1024*1024 # 256 Mb
13582 # When this pref is true, we will use the HTTPS acceptable content encoding
13583 # list for trustworthy domains such as http://localhost
13584 - name: network.http.encoding.trustworthy_is_https
13585 type: RelaxedAtomicBool
13589 # Support http3 version1
13590 - name: network.http.http3.support_version1
13591 type: RelaxedAtomicBool
13595 # Disable early data on an origin if SSL_ERROR_PROTOCOL_VERSION_ALERT is received
13596 - name: network.http.early_data_disable_on_error
13597 type: RelaxedAtomicBool
13601 # Disable early data if it fails for more than this number of origins
13602 - name: network.http.early_data_max_error
13603 type: RelaxedAtomicUint32
13607 # If true, requests will be canceled if any of the response headers values has a NUL character
13608 - name: network.http.reject_NULs_in_response_header_values
13609 type: RelaxedAtomicBool
13613 # If true, will be more strict with status code parsing
13614 - name: network.http.strict_response_status_line_parsing
13615 type: RelaxedAtomicBool
13619 # If true, remove the resumption token when 0RTT failed.
13620 - name: network.http.remove_resumption_token_when_early_data_failed
13621 type: RelaxedAtomicBool
13625 # The length of cnonce string used in HTTP digest auth.
13626 - name: network.http.digest_auth_cnonce_length
13631 # If true, HTTP response content-type headers will be parsed using the standards-compliant MimeType parser
13632 - name: network.standard_content_type_parsing.response_headers
13633 type: RelaxedAtomicBool
13637 # The maximum count that we allow socket prrocess to crash. If this count is
13638 # reached, we won't use networking over socket process.
13639 - name: network.max_socket_process_failed_count
13640 type: RelaxedAtomicUint32
13644 - name: network.allow_redirect_to_data
13645 type: RelaxedAtomicBool
13649 - name: network.allow_raw_sockets_in_content_processes
13654 - name: network.allow_large_stack_size_for_socket_thread
13655 type: RelaxedAtomicBool
13660 - name: network.webtransport.enabled
13661 type: RelaxedAtomicBool
13665 # WebTransport Datagram support
13666 - name: network.webtransport.datagrams.enabled
13667 type: RelaxedAtomicBool
13671 # WebTransport Datagram size
13672 - name: network.webtransport.datagram_size
13673 type: RelaxedAtomicUint32
13677 # WebTransport Redirect support
13678 - name: network.webtransport.redirect.enabled
13679 type: RelaxedAtomicBool
13683 # Wifi-scan polling period, in ms, when on a mobile network.
13684 # A value of 0 indicates that no polling should be done.
13685 - name: network.wifi.scanning_period
13686 type: RelaxedAtomicUint32
13690 # When the Access-Control-Allow-Headers is wildcard (*), whether to allow
13691 # CORS-protected requests with the Authorization request header.
13692 - name: network.cors_preflight.authorization_covered_by_wildcard
13697 # Inner schemes that are allowed to display application/http-index-format.
13698 # Set to * to allow all schemes.
13699 - name: network.http_index_format.allowed_schemes
13701 value: "file,moz-gio"
13704 # Enable off-main-thread decompression of network streams
13705 # Note:network.decompression_off_mainthread triggered a bug, so
13706 # we switched to a new pref that can be turned off safely
13707 - name: network.decompression_off_mainthread2
13712 # Minimum content-length to use off-main-thread decompression of network streams
13713 - name: network.decompression_off_mainthread_min_size
13718 #---------------------------------------------------------------------------
13719 # Prefs starting with "nglayout."
13720 #---------------------------------------------------------------------------
13722 # Enable/disable display list invalidation logging --- useful for debugging.
13723 - name: nglayout.debug.invalidation
13728 - name: nglayout.debug.disable_xul_cache
13733 - name: nglayout.initialpaint.delay
13738 - name: nglayout.initialpaint.delay_in_oopif
13743 #---------------------------------------------------------------------------
13744 # Prefs starting with "page_load."
13745 #---------------------------------------------------------------------------
13747 # Time in milliseconds during which certain tasks are deprioritized during
13749 - name: page_load.deprioritization_period
13750 type: RelaxedAtomicUint32
13754 #---------------------------------------------------------------------------
13755 # Prefs starting with "pdfjs."
13756 #---------------------------------------------------------------------------
13758 - name: pdfjs.disabled
13763 #---------------------------------------------------------------------------
13764 # Prefs starting with "permissions."
13765 #---------------------------------------------------------------------------
13767 # 1-Accept, 2-Deny, Any other value: Accept
13768 - name: permissions.default.image
13769 type: RelaxedAtomicUint32
13773 - name: permissions.default.screen-wake-lock
13774 type: RelaxedAtomicUint32
13778 - name: permissions.isolateBy.userContext
13779 type: RelaxedAtomicBool
13783 - name: permissions.isolateBy.privateBrowsing
13784 type: RelaxedAtomicBool
13788 #---------------------------------------------------------------------------
13789 # Prefs starting with "places."
13790 #---------------------------------------------------------------------------
13792 # Whether pages alternative frecency is enabled. This and the following related
13793 # prefs only apply at restart.
13794 - name: places.frecency.pages.alternative.featureGate
13799 - name: places.frecency.pages.alternative.highWeight
13804 - name: places.frecency.pages.alternative.mediumWeight
13809 - name: places.frecency.pages.alternative.lowWeight
13814 - name: places.frecency.pages.alternative.halfLifeDays
13819 - name: places.frecency.pages.alternative.numSampledVisits
13824 # Whether flooding prevention feature is enabled or not.
13825 - name: places.history.floodingPrevention.enabled
13827 value: @IS_NIGHTLY_BUILD@
13830 # Maximum elapsed time betwen a user interaction and a visit before starting to
13831 # apply flooding prevention.
13832 - name: places.history.floodingPrevention.maxSecondsFromLastUserInteraction
13837 # Number of consecutive accesses to an origin in a short timeframe before
13838 # starting to restrict storing visits for it.
13839 - name: places.history.floodingPrevention.restrictionCount
13844 # Duration of the timeframe where consecutive visits to an origin should happen
13845 # before starting to restrict storing visits for it.
13846 - name: places.history.floodingPrevention.restrictionExpireSeconds
13851 #---------------------------------------------------------------------------
13852 # Prefs starting with "plain_text."
13853 #---------------------------------------------------------------------------
13855 # When false, text in plaintext documents does not wrap long lines.
13856 - name: plain_text.wrap_long_lines
13861 #---------------------------------------------------------------------------
13862 # Prefs starting with "preferences."
13863 #---------------------------------------------------------------------------
13865 - name: preferences.allow.omt-write
13871 # If set to true, setting a Preference matched to a `Once` StaticPref will
13872 # assert that the value matches. Such assertion being broken is a clear flag
13873 # that the Once policy shouldn't be used.
13874 - name: preferences.check.once.policy
13879 # If set to true, StaticPrefs Once policy check will be skipped during
13880 # automation regression test. Use with care. This pref must be set back to
13881 # false as soon as specific test has completed.
13882 - name: preferences.force-disable.check.once.policy
13888 #---------------------------------------------------------------------------
13889 # Prefs starting with "print."
13890 #---------------------------------------------------------------------------
13892 # Variation fonts can't always be embedded in certain output formats
13893 # such as PDF. To work around this, draw the variation fonts using
13894 # paths instead of using font embedding.
13895 - name: print.font-variations-as-paths
13896 type: RelaxedAtomicBool
13900 # Whether we always print silently (without a print dialog).
13901 - name: print.always_print_silent
13902 type: RelaxedAtomicBool
13906 # Whether we attempt to generate links in Save As PDF output.
13907 - name: print.save_as_pdf.links.enabled
13908 type: RelaxedAtomicBool
13912 # Whether we attempt to generate and use document-internal PDF destinations.
13913 - name: print.save_as_pdf.internal_destinations.enabled
13914 type: RelaxedAtomicBool
13918 # Whether we use the CSS @page size as the paper size in PDF output.
13919 - name: print.save_as_pdf.use_page_rule_size_as_paper_size.enabled
13920 type: RelaxedAtomicBool
13921 value: @IS_NOT_ANDROID@
13924 # The default DPI for printing.
13926 # For PDF-based output, DPI should ideally be irrelevant, but in fact it is not
13927 # for multiple reasons:
13929 # * Layout code that tries to respect device pixels (e.g. for snapping glyph
13930 # positions and baselines, and especially for the "GDI Classic"
13931 # rendering-mode threshold for certain fonts).
13933 # * The limitations of the PDF format mean that we can't natively represent
13934 # certain effects, such as filters, in PDF output, so we need to rasterize
13935 # the parts of the document with these applied.
13937 # * Other rasterized things like images and such are also affected by DPI
13938 # (both in the output, and the images we select via srcset, for example).
13940 # Therefore, using a high DPI is preferable. For now, we use 144dpi to match
13941 # physical printer output on Windows, but higher (e.g. 300dpi) might be better,
13942 # but only if it does not lead to issues such as excessive memory use.
13943 - name: print.default_dpi
13948 # Whether support for monochrome printing is enabled for CUPS.
13949 - name: print.cups.monochrome.enabled
13950 type: RelaxedAtomicBool
13954 # Disabling this will no-op window.print()
13955 - name: print.enabled
13956 type: RelaxedAtomicBool
13960 # Determines if and when to center pages on a sheet horiontally when printing.
13961 # With a setting of 2, it's guaranteed that A4 on US Letter will be centered.
13964 # 2: when the ratio of sheet to page size after content scaling is near 1.0
13965 - name: print.center_page_on_sheet
13966 type: RelaxedAtomicUint32
13970 #---------------------------------------------------------------------------
13971 # Prefs starting with "privacy."
13972 #---------------------------------------------------------------------------
13974 # Annotate trackers using the strict list. If set to false, the basic list will
13976 - name: privacy.annotate_channels.strict_list.enabled
13978 value: @IS_EARLY_BETA_OR_EARLIER@
13981 # Annotate trackers using the strict list in the private browsing mode. If set
13982 # to false, the basic list will be used instead.
13983 - name: privacy.annotate_channels.strict_list.pbmode.enabled
13988 # First Party Isolation (double keying), disabled by default.
13989 - name: privacy.firstparty.isolate
13990 type: RelaxedAtomicBool
13994 # If false, two windows in the same domain with different first party domains
13995 # (top level URLs) can access resources through window.opener. This pref is
13996 # effective only when "privacy.firstparty.isolate" is true.
13997 - name: privacy.firstparty.isolate.restrict_opener_access
13998 type: RelaxedAtomicBool
14002 - name: privacy.firstparty.isolate.block_post_message
14003 type: RelaxedAtomicBool
14007 - name: privacy.firstparty.isolate.use_site
14008 type: RelaxedAtomicBool
14012 # Enforce tracking protection in all modes.
14013 - name: privacy.trackingprotection.enabled
14018 # Enforce tracking protection in Private Browsing mode.
14019 - name: privacy.trackingprotection.pbmode.enabled
14024 # Annotate channels based on the tracking protection list in all modes
14025 - name: privacy.trackingprotection.annotate_channels
14030 # Block 3rd party fingerprinting resources.
14031 - name: privacy.trackingprotection.fingerprinting.enabled
14036 # Block 3rd party cryptomining resources.
14037 - name: privacy.trackingprotection.cryptomining.enabled
14042 # Block 3rd party socialtracking resources.
14043 - name: privacy.trackingprotection.socialtracking.enabled
14048 # Consider socialtracking annotation as trackers (see ETP).
14049 - name: privacy.socialtracking.block_cookies.enabled
14054 # Block 3rd party emailtracking resources in all mode.
14055 - name: privacy.trackingprotection.emailtracking.enabled
14060 # Block 3rd party emailtracking resources in Private Browsing mode.
14061 - name: privacy.trackingprotection.emailtracking.pbmode.enabled
14066 # Collecting 3rd party emailtracking telemetry.
14067 - name: privacy.trackingprotection.emailtracking.data_collection.enabled
14072 - name: privacy.trackingprotection.testing.report_blocked_node
14073 type: RelaxedAtomicBool
14077 # Whether to spoof user locale to English (used as part of Resist
14082 - name: privacy.spoof_english
14083 type: RelaxedAtomicUint32
14087 # Send "do not track" HTTP header, disabled by default.
14088 - name: privacy.donottrackheader.enabled
14093 # Potentially send "global privacy control" HTTP header and set navigator
14094 # property accordingly. Communicates user's desire to opt-out/in of
14095 # websites or services selling or sharing the user's information, false by
14097 # true - Send the header with a value of 1 to indicate opting-out
14098 # false - Do not send header to indicate opting-in
14099 - name: privacy.globalprivacycontrol.enabled
14100 type: RelaxedAtomicBool
14104 # Controls whether or not GPC signals are sent in private browsing mode.
14105 # This can be overridden by `privacy.globalprivacycontrol.enabled` as true.
14106 - name: privacy.globalprivacycontrol.pbmode.enabled
14107 type: RelaxedAtomicBool
14111 # Controls whether or not GPC signals are sent. Meant to act as a third option
14112 # of 'undecided' by leaving the navigator property undefined and not attaching
14113 # the Sec-GPC HTTP header.
14114 - name: privacy.globalprivacycontrol.functionality.enabled
14115 type: RelaxedAtomicBool
14119 # Lower the priority of network loads for resources on the tracking protection
14120 # list. Note that this requires the
14121 # privacy.trackingprotection.annotate_channels pref to be on in order to have
14123 - name: privacy.trackingprotection.lower_network_priority
14125 value: @IS_NIGHTLY_BUILD@
14128 # A subset of Resist Fingerprinting protections focused specifically on timers.
14129 # This affects the Animation API, the performance APIs, Date.getTime,
14130 # Event.timestamp, File.lastModified, audioContext.currentTime,
14131 # canvas.captureStream.currentTime.
14132 - name: privacy.reduceTimerPrecision
14133 type: RelaxedAtomicBool
14137 # If privacy.reduceTimerPrecision is false, this pref controls whether or not
14138 # to clamp all timers at a fixed 20 microsconds. It should always be enabled,
14139 # and is only specified as a pref to enable an emergency disabling in the event
14140 # of catastrophic failure.
14141 - name: privacy.reduceTimerPrecision.unconditional
14142 type: RelaxedAtomicBool
14146 # The resistFingerprinting variables are marked with 'Relaxed' memory ordering.
14147 # We don't particurally care that threads have a percently consistent view of
14148 # the values of these prefs. They are not expected to change often, and having
14149 # an outdated view is not particurally harmful. They will eventually become
14152 # The variables will, however, be read often (specifically .microseconds on
14153 # each timer rounding) so performance is important.
14154 - name: privacy.resistFingerprinting
14155 type: RelaxedAtomicBool
14158 do_not_use_directly: true
14160 # When the .pbmode pref is on, RFP or FPP will be enabled in PBM
14161 # When the non-pbm pref is on, they will be enabled in PBM and non-PBM
14162 - name: privacy.resistFingerprinting.pbmode
14163 type: RelaxedAtomicBool
14166 do_not_use_directly: true
14168 # privacy.fingerprintingProtection enables a set of fingerprinting protections
14169 # designed to minimize breakage while maximizing protection.
14170 - name: privacy.fingerprintingProtection
14171 type: RelaxedAtomicBool
14174 do_not_use_directly: true
14176 - name: privacy.fingerprintingProtection.pbmode
14177 type: RelaxedAtomicBool
14180 do_not_use_directly: true
14182 # Disables FPP Remote settings bucket. Allows user to stop overriding
14184 - name: privacy.fingerprintingProtection.remoteOverrides.enabled
14185 type: RelaxedAtomicBool
14189 # We automatically decline canvas permission requests if they are not initiated
14190 # from user input. Just in case that breaks something, we allow the user to
14191 # revert this behavior with this obscure pref. We do not intend to support this
14192 # long term. If you do set it, to work around some broken website, please file
14193 # a bug with information so we can understand why it is needed.
14194 - name: privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts
14199 # This pref can be used to disable mozAddonManager entirely for fingerprinting
14200 # reasons. Someone like Tor browser will use this pref.
14201 # NOTE: We'd like this to be a "hidden" pref once StaticPrefs supports it.
14202 - name: privacy.resistFingerprinting.block_mozAddonManager
14203 type: RelaxedAtomicBool
14207 # Whether canvas extraction should result in random data. If false, canvas
14208 # extraction results in all-white, opaque pixel data.
14209 - name: privacy.resistFingerprinting.randomDataOnCanvasExtract
14210 type: RelaxedAtomicBool
14214 # The log level for browser console messages logged in RFPHelper.sys.mjs. Change to
14215 # 'All' and restart to see the messages.
14216 - name: privacy.resistFingerprinting.jsmloglevel
14221 # Enable jittering the clock one precision value forward.
14222 - name: privacy.resistFingerprinting.reduceTimerPrecision.jitter
14223 type: RelaxedAtomicBool
14227 # Dynamically tune the resolution of the timer reduction for
14228 # `privacy.reduceTimerPrecision` and `privacy.resistFingerprinting`.
14229 - name: privacy.resistFingerprinting.reduceTimerPrecision.microseconds
14230 type: RelaxedAtomicUint32
14234 - name: privacy.resistFingerprinting.target_video_res
14239 # Enable resetting the fingerprinting randomization key daily for normal windwos.
14240 - name: privacy.resistFingerprinting.randomization.daily_reset.enabled
14241 type: RelaxedAtomicBool
14245 # Enable resetting the fingerprinting randomization key daily for private windwos.
14246 - name: privacy.resistFingerprinting.randomization.daily_reset.private.enabled
14247 type: RelaxedAtomicBool
14252 # Anti-tracking permission expiration.
14253 - name: privacy.restrict3rdpartystorage.expiration
14255 value: 2592000 # 30 days (in seconds)
14258 # Report Anti-tracking warnings to console lazily
14259 - name: privacy.restrict3rdpartystorage.console.lazy
14264 # Enable the heuristic to allow storage access for windows opened using window.open() after user interaction
14265 - name: privacy.restrict3rdpartystorage.heuristic.opened_window_after_interaction
14270 # Enable the heuristic to allow storage access for windows opened using window.open()
14271 - name: privacy.restrict3rdpartystorage.heuristic.window_open
14276 # Enable the heuristic to allow storage access for windows opened using window.open()
14277 - name: privacy.restrict3rdpartystorage.heuristic.redirect
14279 value: @IS_NOT_NIGHTLY_BUILD@
14282 # Anti-tracking permission expiration.
14283 - name: privacy.restrict3rdpartystorage.expiration_redirect
14285 value: 2592000 # 30 days (in seconds)
14288 # Anti-tracking user-interaction expiration.
14289 - name: privacy.userInteraction.expiration
14291 value: 3888000 # 45 days (in seconds)
14294 # Anti-tracking user-interaction document interval.
14295 - name: privacy.userInteraction.document.interval
14297 value: 1800 # 30 minutes (in seconds)
14300 # Enable Anti-tracking testing. When it enables, it will notify the observers
14301 # when user-interaction permission or storage access permission is added. This
14302 # is for testing only.
14303 - name: privacy.antitracking.testing
14308 # Controls the anti-tracking webcompat features. This includes:
14309 # - All URL-Classifier and state partitioning skip lists (prefs and remote
14311 # - Storage access heuristics (opener, redirect, etc.)
14312 # - StorageAccessAPI automatic grants (skips the prompt)
14313 # - Allowing specific tracking channels on user opt-in (e.g. facebook login
14315 - name: privacy.antitracking.enableWebcompat
14316 type: RelaxedAtomicBool
14320 # Enable the heuristic to allow storage access for recent visited pages
14321 - name: privacy.restrict3rdpartystorage.heuristic.recently_visited
14326 # Valid time gap since last visit
14327 - name: privacy.restrict3rdpartystorage.heuristic.recently_visited_time
14329 value: 600 # 10 minutes
14332 # Recent visited pages redirection permission expiration.
14333 - name: privacy.restrict3rdpartystorage.expiration_visited
14335 value: 2592000 # 30 days (in seconds)
14338 # Maximum client-side cookie life-time cap. Measured in seconds, set to 0 to
14340 - name: privacy.documentCookies.maxage
14345 - name: privacy.window.maxInnerWidth
14350 - name: privacy.window.maxInnerHeight
14355 - name: privacy.sanitize.useOldClearHistoryDialog
14356 type: RelaxedAtomicBool
14360 - name: privacy.sanitize.sanitizeOnShutdown
14361 type: RelaxedAtomicBool
14365 - name: privacy.clearOnShutdown.cache
14366 type: RelaxedAtomicBool
14370 - name: privacy.clearOnShutdown_v2.cache
14371 type: RelaxedAtomicBool
14375 - name: privacy.dynamic_firstparty.limitForeign
14376 type: RelaxedAtomicBool
14380 - name: privacy.dynamic_firstparty.use_site
14381 type: RelaxedAtomicBool
14385 - name: privacy.partition.network_state
14386 type: RelaxedAtomicBool
14390 # Partition the OCSP cache by the partitionKey.
14391 - name: privacy.partition.network_state.ocsp_cache
14392 type: RelaxedAtomicBool
14396 # Partition the OCSP cache by the partitionKey for private browsing mode.
14397 - name: privacy.partition.network_state.ocsp_cache.pbmode
14398 type: RelaxedAtomicBool
14402 # Always partition web storage APIs except cookies.
14403 - name: privacy.partition.always_partition_third_party_non_cookie_storage
14404 type: RelaxedAtomicBool
14408 # Exclude session storage from the above preference.
14409 - name: privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage
14410 type: RelaxedAtomicBool
14414 - name: privacy.partition.bloburl_per_partition_key
14419 - name: privacy.window.name.update.enabled
14424 # By default, the network state isolation is not active when there is a proxy
14425 # setting. This pref forces the network isolation even in these scenarios.
14426 - name: privacy.partition.network_state.connection_with_proxy
14431 # Partition the service workers unconditionally when dFPI is enabled.
14432 - name: privacy.partition.serviceWorkers
14433 type: RelaxedAtomicBool
14437 # Enables / disables the strip on share feature which strips query parameters
14438 # when copying/sharing in-content links or from the url bar.
14439 - name: privacy.query_stripping.strip_on_share.enabled
14440 type: RelaxedAtomicBool
14444 # Enables / disables the URL query string stripping in normal browsing mode
14445 # which strips query parameters from loading URIs to prevent bounce (redirect)
14447 - name: privacy.query_stripping.enabled
14448 type: RelaxedAtomicBool
14452 # Same as the pref above, but controls query stripping for private browsing
14454 - name: privacy.query_stripping.enabled.pbmode
14455 type: RelaxedAtomicBool
14459 # The list which contains query parameters that are needed to be stripped from
14460 # URIs. The query parameters are separated by a space.
14461 - name: privacy.query_stripping.strip_list
14466 # This controls if we will do the query string stripping for redirects.
14467 - name: privacy.query_stripping.redirect
14472 # the list which contains sites where should exempt from query stripping
14473 - name: privacy.query_stripping.allow_list
14478 # Main pref to enable / disable the feature.
14479 - name: privacy.bounceTrackingProtection.enabled
14484 # How long to wait for a client redirect after a navigation ends.
14485 - name: privacy.bounceTrackingProtection.clientBounceDetectionTimerPeriodMS
14490 # How long user activations will protect a site host from storage deletion.
14491 - name: privacy.bounceTrackingProtection.bounceTrackingActivationLifetimeSec
14496 # How long to wait for interaction after a possible bounce tracking event before
14497 # deleting a site host's storage.
14498 - name: privacy.bounceTrackingProtection.bounceTrackingGracePeriodSec
14503 # How often to run the bounce tracking timer algorithm which purges bounce
14504 # tracker state periodically. Set to 0 to disable purging.
14505 - name: privacy.bounceTrackingProtection.bounceTrackingPurgeTimerPeriodSec
14510 # Whether only bounces that access storage should be considered trackers.
14511 - name: privacy.bounceTrackingProtection.requireStatefulBounces
14516 # Enables a mode where if bounce tracking protection is enabled it classifies
14517 # but does not purge trackers. This mode is helpful for testing the feature
14518 # without risking data loss. Telemetry is still collected normally.
14519 - name: privacy.bounceTrackingProtection.enableDryRunMode
14521 value: @IS_NOT_NIGHTLY_BUILD@
14524 # To be used in automated test environments to enable observer messages.
14525 - name: privacy.bounceTrackingProtection.enableTestMode
14530 # Whether the migration ran to import user activation flags into the BTP user
14531 # activation store. Set to false to trigger a new migration.
14532 - name: privacy.bounceTrackingProtection.hasMigratedUserActivationData
14537 #---------------------------------------------------------------------------
14538 # Prefs starting with "prompts."
14539 #---------------------------------------------------------------------------
14541 # Prompt modal type prefs
14542 # See nsIPromptService::MODAL_TYPE fields for possible values.
14544 # Insecure form submit warning.
14545 - name: prompts.modalType.insecureFormSubmit
14550 # nsHttpChannelAuthProvider#ConfirmAuth anti-phishing prompts.
14551 - name: prompts.modalType.confirmAuth
14556 #---------------------------------------------------------------------------
14557 # Prefs starting with "security."
14558 #---------------------------------------------------------------------------
14560 # Mochitests that need to load resource:// URIs not declared content-accessible
14561 # in manifests should set this pref.
14562 - name: security.all_resource_uri_content_accessible
14567 - name: security.bad_cert_domain_error.url_fix_enabled
14572 - name: security.csp.reporting.script-sample.max-length
14577 - name: security.csp.truncate_blocked_uri_for_frame_navigations
14582 # Limit the number of CSP reports that are send in a specific timespan.
14583 - name: security.csp.reporting.limit.count
14588 # Time span in seconds for reporting limit.
14589 - name: security.csp.reporting.limit.timespan
14594 # If true, all toplevel data: URI navigations will be blocked.
14595 # Please note that manually entering a data: URI in the
14596 # URL-Bar will not be blocked when flipping this pref.
14597 - name: security.data_uri.block_toplevel_data_uri_navigations
14602 # Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but
14603 # not allowed for Firefox Desktop in firefox.js
14604 - name: security.allow_parent_unrestricted_js_loads
14605 type: RelaxedAtomicBool
14609 # Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but
14610 # not allowed for Firefox Desktop in firefox.js
14611 - name: security.allow_eval_with_system_principal
14612 type: RelaxedAtomicBool
14616 # Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but
14617 # not allowed for Firefox Desktop in firefox.js
14618 - name: security.allow_eval_in_parent_process
14619 type: RelaxedAtomicBool
14623 # Disallowed by default, ensure not disallowed content is loaded in the parent
14625 - name: security.allow_unsafe_parent_loads
14630 # Pref to block mixed scripts (fonts, plugin content, scripts, stylesheets,
14631 # iframes, websockets, XHR).
14632 - name: security.mixed_content.block_active_content
14634 value: @IS_ANDROID@
14637 # Pref to block sub requests that happen within an object.
14638 - name: security.mixed_content.block_object_subrequest
14643 # Pref for mixed display content blocking (images, audio, video).
14644 - name: security.mixed_content.block_display_content
14649 # Prerequisite pref for mixed display content upgrading (images, audio, video).
14650 - name: security.mixed_content.upgrade_display_content
14655 # Upgrade images when the upgrading is enabled.
14656 - name: security.mixed_content.upgrade_display_content.image
14661 # Upgrade audio when the upgrading is enabled.
14662 - name: security.mixed_content.upgrade_display_content.audio
14667 # Upgrade videos when the upgrading is enabled.
14668 - name: security.mixed_content.upgrade_display_content.video
14673 # Whether strict file origin policy is in effect. "False" is traditional.
14674 - name: security.fileuri.strict_origin_policy
14675 type: RelaxedAtomicBool
14679 # The level to which we sandbox the content process. firefox.js sets the
14680 # default to different values on a per-OS basis, and has documentation
14681 # on what the defaults are and what the numbers mean.
14682 - name: security.sandbox.content.level
14686 do_not_use_directly: true # Consumers should use SandboxSettings to ask.
14688 - name: security.sandbox.socket.process.level
14692 do_not_use_directly: true # Consumers should use SandboxSettings to ask.
14694 # This controls the strength of the Windows GPU process sandbox. Changes
14695 # will require restart.
14696 # For information on what the level number means, see
14697 # SetSecurityLevelForGPUProcess() in
14698 # security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp
14699 - name: security.sandbox.gpu.level
14701 #if defined(XP_WIN)
14708 # Enrollment preferences for the win32k experiment, set and managed by Normandy
14709 - name: security.sandbox.content.win32k-experiment.enrollmentStatus
14714 - name: security.sandbox.content.win32k-experiment.startupEnrollmentStatus
14719 #if defined(XP_WIN) && defined(MOZ_SANDBOX)
14721 # Whether win32k is disabled for content processes.
14722 # true means win32k system calls are not permitted.
14723 - name: security.sandbox.content.win32k-disable
14724 type: RelaxedAtomicBool
14728 # Note: win32k is currently _not_ disabled for GMP due to intermittent test
14729 # failures, where the GMP process fails very early. See bug 1449348.
14730 - name: security.sandbox.gmp.win32k-disable
14731 type: RelaxedAtomicBool
14735 # Whether win32k is disabled for socket processes.
14736 # true means win32k system calls are not permitted.
14737 - name: security.sandbox.socket.win32k-disable
14738 type: RelaxedAtomicBool
14742 # Whether CET User Shadow Stack compatible modules only is enabled for the
14743 # relevant process type.
14744 - name: security.sandbox.content.shadow-stack.enabled
14745 type: RelaxedAtomicBool
14749 - name: security.sandbox.rdd.shadow-stack.enabled
14750 type: RelaxedAtomicBool
14754 - name: security.sandbox.socket.shadow-stack.enabled
14755 type: RelaxedAtomicBool
14759 - name: security.sandbox.gpu.shadow-stack.enabled
14760 type: RelaxedAtomicBool
14764 - name: security.sandbox.gmp.shadow-stack.enabled
14765 type: RelaxedAtomicBool
14769 # Whether a Low Privilege AppContainer (LPAC) is enabled for the relevant
14772 #if defined(MOZ_WMF_MEDIA_ENGINE)
14773 - name: security.sandbox.utility-wmf-cdm.lpac.enabled
14774 type: RelaxedAtomicBool
14779 # Whether Arbitrary Code Guard is enabled for the RDD process.
14780 - name: security.sandbox.rdd.acg.enabled
14781 type: RelaxedAtomicBool
14786 # Whether Arbitrary Code Guard is enabled for the utility WMF audio decoder
14789 - name: security.sandbox.utility-wmf.acg.enabled
14790 type: RelaxedAtomicBool
14795 # This controls the depth of stack trace that is logged when Windows sandbox
14796 # logging is turned on. This is only currently available for the content
14797 # process because the only other sandbox (for GMP) has too strict a policy to
14798 # allow stack tracing. This does not require a restart to take effect.
14799 - name: security.sandbox.windows.log.stackTraceDepth
14800 type: RelaxedAtomicUint32
14805 #if defined(XP_LINUX) && defined(MOZ_SANDBOX)
14806 # Run content processes in headless mode and disallow
14807 # connections to the X server. Requires:
14808 # * `webgl.out-of-process` (or else WebGL breaks)
14809 # Changing it requires a restart because sandbox policy information
14810 # dependent on it is cached. See bug 1640345 for details.
14811 - name: security.sandbox.content.headless
14817 # Pref to show warning when submitting from secure to insecure.
14818 - name: security.warn_submit_secure_to_insecure
14823 # Hardware Origin-bound Second Factor Support
14824 - name: security.webauth.webauthn
14829 # WebAuthn CTAP2 support
14830 - name: security.webauthn.ctap2
14831 type: RelaxedAtomicBool
14836 # WebAuthn JSON serialization methods
14837 - name: security.webauthn.enable_json_serialization_methods
14838 type: RelaxedAtomicBool
14842 # WebAuthn conditional mediation
14843 - name: security.webauthn.enable_conditional_mediation
14844 type: RelaxedAtomicBool
14848 # Dispatch WebAuthn requests to virtual authenticators (mutually exclusive
14849 # with and webauthn_enable_usbtoken)
14850 - name: security.webauth.webauthn_enable_softtoken
14851 type: RelaxedAtomicBool
14856 # residentKey support when using Android platform API
14857 - name: security.webauthn.webauthn_enable_android_fido2.residentkey
14858 type: RelaxedAtomicBool
14862 # Dispatch WebAuthn requests to the macOS platform API
14863 - name: security.webauthn.enable_macos_passkeys
14864 type: RelaxedAtomicBool
14868 # Dispatch WebAuthn requests to authenticator-rs
14869 - name: security.webauth.webauthn_enable_usbtoken
14870 type: RelaxedAtomicBool
14871 value: @IS_NOT_ANDROID@
14875 # Skip direct attestation consent prompts (for tests).
14876 - name: security.webauth.webauthn_testing_allow_direct_attestation
14877 type: RelaxedAtomicBool
14882 # Show the Windows Passkey settings link in about:preferences. This is
14883 # set to true if we find that webauthn.dll is sufficiently recent.
14884 - name: security.webauthn.show_ms_settings_link
14885 type: RelaxedAtomicBool
14889 # Block Worker/SharedWorker scripts with wrong MIME type.
14890 - name: security.block_Worker_with_wrong_mime
14895 # Block the execution of scripts using a wrong type as defined by the file extension
14896 # (OS) mapping when loaded via the file:// protocol.
14897 - name: security.block_fileuri_script_with_wrong_mime
14902 # Cancel outgoing requests from SystemPrincipal:
14903 # but only with scheme http(s) and contentpolicytype subdocument
14904 - name: security.disallow_privileged_https_subdocuments_loads
14909 # but only with scheme data and contentpolicytype subdocument
14910 - name: security.disallow_privileged_data_subdocuments_loads
14915 # Cancel outgoing requests from SystemPrincipal:
14916 # but only with scheme http(s) and contentpolicytype stylesheet
14917 - name: security.disallow_privileged_https_stylesheet_loads
14922 # Cancel outgoing requests from SystemPrincipal:
14923 # but only with scheme http(s) and contentpolicytype script
14924 - name: security.disallow_privileged_https_script_loads
14929 # Cancel outgoing requests from SystemPrincipal:
14930 # where there is no finalURI.
14931 - name: security.disallow_privileged_no_finaluri_loads
14936 # Cancel outgoing requests from privileged about pages:
14937 # but only with scheme http(s) and contentpolicytype script
14938 - name: security.disallow_privilegedabout_remote_script_loads
14943 # Enable preloaded static key pins by default.
14944 - name: security.cert_pinning.enforcement_level
14945 type: RelaxedAtomicUint32
14948 do_not_use_directly: true
14950 # OCSP fetching behavior:
14951 # 0: do not fetch OCSP
14952 # 1: fetch OCSP for DV and EV certificates
14953 # 2: fetch OCSP only for EV certificates
14954 - name: security.OCSP.enabled
14955 type: RelaxedAtomicUint32
14964 # Whether or not OCSP is required.
14965 # true => hard-fail (if an OCSP request times out, stop the connection)
14966 # false => soft-fail (if an OCSP request times out, continue the connection)
14967 - name: security.OCSP.require
14968 type: RelaxedAtomicBool
14972 # How many milliseconds to wait for an OCSP response before assuming it failed
14973 # (when fetching for soft-fail).
14974 - name: security.OCSP.timeoutMilliseconds.soft
14975 type: RelaxedAtomicUint32
14976 #ifdef RELEASE_OR_BETA
14983 # How many milliseconds to wait for an OCSP response before assuming it failed
14984 # (when fetching for hard-fail).
14985 - name: security.OCSP.timeoutMilliseconds.hard
14986 type: RelaxedAtomicUint32
14990 # Whether or not to enable OCSP must-staple (in other words, TLS-feature with
14992 - name: security.ssl.enable_ocsp_must_staple
14993 type: RelaxedAtomicBool
14997 # Whether or not to enable OCSP stapling.
14998 - name: security.ssl.enable_ocsp_stapling
14999 type: RelaxedAtomicBool
15003 # This is checked at startup to see if NSS should be initialized without the
15004 # user's certificate and key databases.
15005 - name: security.nocertdb
15010 # Whether or not to import and trust third party root certificates from the OS.
15011 - name: security.enterprise_roots.enabled
15012 type: RelaxedAtomicBool
15016 - name: security.intermediate_preloading_healer.enabled
15017 type: RelaxedAtomicBool
15018 value: @IS_NOT_ANDROID@
15021 - name: security.intermediate_preloading_healer.timer_interval_ms
15022 type: RelaxedAtomicUint32
15026 # If true, attempt to load the osclientcerts PKCS#11 module at startup on a
15027 # background thread. This module allows Firefox to use client certificates
15028 # stored in OS certificate storage. Currently only available for Windows and
15030 - name: security.osclientcerts.autoload
15031 type: RelaxedAtomicBool
15035 # If true, assume tokens accessed via osclientcerts implement RSA-PSS. If a
15036 # given token does not support RSA-PSS, users may see the error
15037 # 'SEC_ERROR_PKCS11_GENERAL_ERROR' if a server indicates it will accept an
15038 # RSA-PSS signature in the client's certificate verify message.
15039 # Setting this to false may allow such connections to succeed, if the server
15040 # also accepts RSA-PKCS1 signatures.
15041 - name: security.osclientcerts.assume_rsa_pss_support
15042 type: RelaxedAtomicBool
15046 - name: security.pki.cert_short_lifetime_in_days
15047 type: RelaxedAtomicUint32
15051 # security.pki.netscape_step_up_policy controls how the platform handles the
15052 # id-Netscape-stepUp OID in extended key usage extensions of CA certificates.
15053 # 0: id-Netscape-stepUp is always considered equivalent to id-kp-serverAuth
15054 # 1: it is considered equivalent when the notBefore is before 23 August 2016
15055 # 2: similarly, but for 23 August 2015
15056 # 3: it is never considered equivalent
15057 - name: security.pki.netscape_step_up_policy
15058 type: RelaxedAtomicUint32
15059 #ifdef RELEASE_OR_BETA
15066 # Configures Certificate Transparency support mode:
15067 # 0: Fully disabled.
15068 # 1: Only collect telemetry. CT qualification checks are not performed.
15069 - name: security.pki.certificate_transparency.mode
15070 type: RelaxedAtomicUint32
15074 # 0: Disable CRLite entirely.
15075 # 1: Consult CRLite but only collect telemetry.
15076 # 2: Consult CRLite and enforce both "Revoked" and "Not Revoked" results.
15077 # 3: Consult CRLite and enforce "Not Revoked" results, but defer to OCSP for "Revoked".
15078 - name: security.pki.crlite_mode
15079 type: RelaxedAtomicUint32
15083 - name: security.tls.version.min
15084 type: RelaxedAtomicUint32
15088 - name: security.tls.version.max
15089 type: RelaxedAtomicUint32
15093 - name: security.tls.version.enable-deprecated
15094 type: RelaxedAtomicBool
15098 - name: security.tls.version.fallback-limit
15099 type: RelaxedAtomicUint32
15103 # Turn off post-handshake authentication for TLS 1.3 by default,
15104 # until the incompatibility with HTTP/2 is resolved:
15105 # https://tools.ietf.org/html/draft-davidben-http2-tls13-00
15106 - name: security.tls.enable_post_handshake_auth
15107 type: RelaxedAtomicBool
15111 # Probability of GREASEing a TLS connection with ECH (0-100)
15112 # 0 means never GREASE, 100 means always GREASE
15113 - name: security.tls.ech.grease_probability
15114 type: RelaxedAtomicUint32
15118 # Whether to apply ECH GREASE settings to HTTP3/QUIC connections
15119 - name: security.tls.ech.grease_http3
15120 type: RelaxedAtomicBool
15124 # Whether to retry connections without ECH Grease
15125 - name: security.tls.ech.disable_grease_on_fallback
15126 type: RelaxedAtomicBool
15130 # ECH GREASE Padding target (1-255)
15131 - name: security.tls.ech.grease_size
15132 type: RelaxedAtomicUint32
15136 # Whether to apply GREASE settings to HTTP3/QUIC connections
15137 - name: security.tls.grease_http3_enable
15138 type: RelaxedAtomicBool
15143 - name: security.tls.hello_downgrade_check
15144 type: RelaxedAtomicBool
15148 - name: security.tls.enable_delegated_credentials
15149 type: RelaxedAtomicBool
15153 - name: security.tls.enable_0rtt_data
15154 type: RelaxedAtomicBool
15158 - name: security.tls.enable_kyber
15159 type: RelaxedAtomicBool
15163 value: @IS_NIGHTLY_BUILD@
15168 - name: security.tls.client_hello.send_p256_keyshare
15169 type: RelaxedAtomicBool
15174 - name: security.tls.enable_certificate_compression_zlib
15175 type: RelaxedAtomicBool
15176 value: @IS_NIGHTLY_BUILD@
15179 - name: security.tls.enable_certificate_compression_brotli
15180 type: RelaxedAtomicBool
15181 value: @IS_NIGHTLY_BUILD@
15184 - name: security.ssl.treat_unsafe_negotiation_as_broken
15185 type: RelaxedAtomicBool
15189 - name: security.ssl.require_safe_negotiation
15190 type: RelaxedAtomicBool
15194 - name: security.ssl.enable_false_start
15195 type: RelaxedAtomicBool
15199 - name: security.ssl.enable_alpn
15200 type: RelaxedAtomicBool
15204 - name: security.ssl.disable_session_identifiers
15205 type: RelaxedAtomicBool
15209 - name: security.ssl3.ecdhe_rsa_aes_128_gcm_sha256
15210 type: RelaxedAtomicBool
15214 - name: security.ssl3.ecdhe_ecdsa_aes_128_gcm_sha256
15215 type: RelaxedAtomicBool
15219 - name: security.ssl3.ecdhe_ecdsa_chacha20_poly1305_sha256
15220 type: RelaxedAtomicBool
15224 - name: security.ssl3.ecdhe_rsa_chacha20_poly1305_sha256
15225 type: RelaxedAtomicBool
15229 - name: security.ssl3.ecdhe_ecdsa_aes_256_gcm_sha384
15230 type: RelaxedAtomicBool
15234 - name: security.ssl3.ecdhe_rsa_aes_256_gcm_sha384
15235 type: RelaxedAtomicBool
15239 - name: security.ssl3.ecdhe_rsa_aes_128_sha
15240 type: RelaxedAtomicBool
15244 - name: security.ssl3.ecdhe_ecdsa_aes_128_sha
15245 type: RelaxedAtomicBool
15246 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
15249 - name: security.ssl3.ecdhe_rsa_aes_256_sha
15250 type: RelaxedAtomicBool
15254 - name: security.ssl3.ecdhe_ecdsa_aes_256_sha
15255 type: RelaxedAtomicBool
15256 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
15259 - name: security.ssl3.dhe_rsa_aes_128_sha
15260 type: RelaxedAtomicBool
15264 - name: security.ssl3.dhe_rsa_aes_256_sha
15265 type: RelaxedAtomicBool
15269 - name: security.ssl3.rsa_aes_128_sha
15270 type: RelaxedAtomicBool
15274 - name: security.ssl3.rsa_aes_256_sha
15275 type: RelaxedAtomicBool
15279 - name: security.ssl3.rsa_aes_128_gcm_sha256
15280 type: RelaxedAtomicBool
15284 - name: security.ssl3.rsa_aes_256_gcm_sha384
15285 type: RelaxedAtomicBool
15289 - name: security.ssl3.deprecated.rsa_des_ede3_sha
15290 type: RelaxedAtomicBool
15294 - name: security.tls13.aes_128_gcm_sha256
15295 type: RelaxedAtomicBool
15299 - name: security.tls13.chacha20_poly1305_sha256
15300 type: RelaxedAtomicBool
15304 - name: security.tls13.aes_256_gcm_sha384
15305 type: RelaxedAtomicBool
15309 #---------------------------------------------------------------------------
15310 # Prefs starting with "signon."
15311 #---------------------------------------------------------------------------
15312 - name: signon.usernameOnlyForm.enabled
15317 #---------------------------------------------------------------------------
15318 # Prefs starting with "slider."
15319 #---------------------------------------------------------------------------
15321 # Scrollbar snapping region.
15323 # - 1 and higher: slider thickness multiple
15324 - name: slider.snapMultiplier
15333 #---------------------------------------------------------------------------
15334 # Prefs starting with "storage."
15335 #---------------------------------------------------------------------------
15337 # Whether to use a non-exclusive VFS.
15338 # By default we use the unix-excl VFS, for the following reasons:
15339 # 1. It improves compatibility with NFS shares, whose implementation
15340 # is incompatible with SQLite's locking requirements (reliable fcntl), and
15341 # in particular with WAL journaling.
15342 # Bug 433129 attempted to automatically identify such file-systems,
15343 # but a reliable way was not found and the fallback locking is slower than
15344 # POSIX locking, so we do not want to do it by default.
15345 # 2. It allows wal mode to avoid the memory mapped -shm file, reducing the
15346 # likelihood of SIGBUS failures when disk space is exhausted.
15347 # 3. It provides some protection from third party database tampering while a
15348 # connection is open.
15349 # Note there's no win32-excl VFS, so this has no effect on Windows.
15350 - name: storage.sqlite.exclusiveLock.enabled
15351 type: RelaxedAtomicBool
15352 value: @IS_NOT_ANDROID@
15355 #---------------------------------------------------------------------------
15356 # Prefs starting with "svg."
15357 #---------------------------------------------------------------------------
15359 # This pref controls whether the 'context-fill' and 'context-stroke' keywords
15360 # can be used in SVG-as-an-image in the content processes to use the fill/
15361 # stroke specified on the element that embeds the image. (These keywords are
15362 # always enabled in the chrome process, regardless of this pref.) Also, these
15363 # keywords are currently not part of any spec, which is partly why we disable
15364 # them for web content.
15365 - name: svg.context-properties.content.enabled
15366 type: RelaxedAtomicBool
15370 # This pref controls whether the `prefers-color-scheme` value of SVG images
15371 # reacts to the embedder `color-scheme` in content.
15372 - name: svg.embedder-prefers-color-scheme.content.enabled
15373 type: RelaxedAtomicBool
15377 # Enables the 'context-fill' and 'context-stroke' keywords for particular
15378 # domains. We expect this list to be Mozilla-controlled properties, since the
15379 # 'context-*' keywords are not part of any spec. We expect to remove this
15380 # preference and the 'context-` keyword support entirely in the
15381 # not-too-distant future when a standardized alternative ships. This preference
15382 # is _not_ for allowing web content to use these keywords. For performance
15383 # reasons, the list of domains in this preference should remain short in
15385 - name: svg.context-properties.content.allowed-domains
15390 # Is support for the new getBBox method from SVG 2 enabled?
15391 # See https://svgwg.org/svg2-draft/single-page.html#types-SVGBoundingBoxOptions
15392 - name: svg.new-getBBox.enabled
15397 # Whether SVGGraphicsElement.nearestViewportElement and SVGGraphicsElement.farthestViewportElement are enabled.
15398 - name: svg.nearestAndFarthestViewportElement.enabled
15400 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
15403 # Whether SVGAElement.text is enabled.
15404 - name: svg.SVGAElement.text.enabled
15409 # Tweak which elements are allowed in <svg:use> subtrees, and in which
15410 # circumstances. See RemoveForbiddenNodes in SVGUseElement.cpp for the spec
15413 # - 0: Don't restrict ever.
15414 # - 1: Restrict only cross-document.
15415 # - 2/other: restrict always.
15417 # We allow the behavior to be configurable via this pref. Our chosen default
15418 # value forbids non-graphical content in <svg:use> clones of cross-document
15419 # elements. This is a compromise between our more-permissive pre-existing
15420 # behavior (which SVG 2 seems to call for, and maps to pref value 0) and the
15421 # behavior of other UAs (which SVG 1.1 seems to call for, and maps to pref
15423 - name: svg.use-element.graphics-element-restrictions
15428 # Whether to restrict <svg:use> element recursion levels.
15430 # - 0: Don't restrict ever.
15431 # - 1: Restrict everywhere
15432 # - 2/other: Restrict only in the parent process.
15434 - name: svg.use-element.recursive-clone-limit.enabled
15439 # What is the recursion limit for svg use element cloning if enabled.
15440 - name: svg.use-element.recursive-clone-limit
15445 # Whether <svg:use> with a data: URL as href is allowed
15446 - name: svg.use-element.data-url-href.allowed
15451 #---------------------------------------------------------------------------
15452 # Prefs starting with "telemetry."
15453 #---------------------------------------------------------------------------
15455 - name: telemetry.number_of_site_origin.min_interval
15460 - name: telemetry.fog.test.localhost_port
15461 type: RelaxedAtomicInt32
15466 - name: telemetry.fog.test.activity_limit
15467 type: RelaxedAtomicInt32
15472 - name: telemetry.fog.test.inactivity_limit
15473 type: RelaxedAtomicInt32
15478 - name: telemetry.fog.artifact_build
15479 type: RelaxedAtomicBool
15483 #---------------------------------------------------------------------------
15484 # Prefs starting with "test."
15485 #---------------------------------------------------------------------------
15487 - name: test.events.async.enabled
15488 type: RelaxedAtomicBool
15492 - name: test.mousescroll
15493 type: RelaxedAtomicBool
15497 #---------------------------------------------------------------------------
15498 # Prefs starting with "thread."
15499 #---------------------------------------------------------------------------
15501 # If control tasks aren't enabled, they get medium high priority.
15502 - name: threads.control_event_queue.enabled
15503 type: RelaxedAtomicBool
15507 # If the service is available, set threads to low-power mode when in the background.
15508 - name: threads.use_low_power.enabled
15509 type: RelaxedAtomicBool
15510 value: @IS_NIGHTLY_BUILD@
15514 # If the process priority is set to background, put the main thread in the background.
15515 # Currently off by default.
15516 - name: threads.lower_mainthread_priority_in_background.enabled
15518 value: @IS_NIGHTLY_BUILD@
15521 #---------------------------------------------------------------------------
15522 # Prefs starting with "timer."
15523 #---------------------------------------------------------------------------
15525 # Since our timestamp on macOS does not increment while the system is asleep, we
15526 # should ignore sleep/wake notifications to make timer thread process timers.
15527 - name: timer.ignore_sleep_wake_notifications
15528 type: RelaxedAtomicBool
15536 # Amount of time by which it is always acceptable to delay the firing of a timer.
15537 # Any timer may be delayed by up to this amount in order to enable timers to be
15538 # bundled together for efficiency.
15539 - name: timer.minimum_firing_delay_tolerance_ms
15544 # Maximum amount of time by which it is ever acceptable to delay the firing of a timer.
15545 # Setting this to zero will effectively disable timer coalescing.
15546 - name: timer.maximum_firing_delay_tolerance_ms
15552 # Controls whether or not TimerThread will automatically increase the Windows timer
15553 # resolution when appropriate conditions are met.
15554 - name: timer.auto_increase_timer_resolution
15555 type: RelaxedAtomicBool
15556 #ifdef NIGHTLY_BUILD
15564 #---------------------------------------------------------------------------
15565 # Prefs starting with "toolkit."
15566 #---------------------------------------------------------------------------
15568 # Makes removeDirectory background task wait for the given milliseconds before removal.
15569 - name: toolkit.background_tasks.remove_directory.testing.sleep_ms
15570 type: RelaxedAtomicUint32
15574 # Returns true if BHR is disabled.
15575 - name: toolkit.content-background-hang-monitor.disabled
15580 - name: toolkit.scrollbox.smoothScroll
15581 type: RelaxedAtomicBool
15585 - name: toolkit.scrollbox.horizontalScrollDistance
15586 type: RelaxedAtomicInt32
15590 - name: toolkit.scrollbox.verticalScrollDistance
15591 type: RelaxedAtomicInt32
15595 # The maximum overlap between pages when scrolling with
15596 # page-up/page-down/spacebar, as a percentage of scrollport size.
15597 - name: toolkit.scrollbox.pagescroll.maxOverlapPercent
15598 type: RelaxedAtomicInt32
15602 # The maximum overlap between pages when scrolling with
15603 # page-up/page-down/spacebar, in lines.
15604 - name: toolkit.scrollbox.pagescroll.maxOverlapLines
15605 type: RelaxedAtomicInt32
15609 # The lateWriteChecksStage and fastShutdownStage below represent the stage
15610 # of shutdown after which we (for lateWriteChecksStage) crash / gather
15611 # telemetry data on file writes, or (for fastShutdownStage) we call _exit(0).
15612 # Higher values are earlier during shutdown, and the full enumeration can
15613 # be found in AppShutdown.h in the AppShutdownPhase enum.
15614 - name: toolkit.shutdown.lateWriteChecksStage
15616 #ifdef MOZ_CODE_COVERAGE
15623 # See the comment above toolkit.shutdown.lateWriteChecksStage. A higher value
15624 # for this pref means we call _exit(0) earlier during shutdown.
15625 - name: toolkit.shutdown.fastShutdownStage
15627 #if !defined(DEBUG) && !defined(MOZ_ASAN) && !defined(MOZ_TSAN) && !defined(MOZ_CODE_COVERAGE) && !defined(MOZ_VALGRIND) && !defined(MOZ_PROFILE_GENERATE) && !defined(JS_STRUCTURED_SPEW)
15634 # Sending each remote accumulation immediately places undue strain on the IPC
15635 # subsystem. Batch the remote accumulations for a period of time before sending
15636 # them all at once. This value was chosen as a balance between data timeliness
15637 # and performance (see bug 1218576).
15638 - name: toolkit.telemetry.ipcBatchTimeout
15643 - name: toolkit.telemetry.testing.overrideProductsCheck
15644 type: RelaxedAtomicBool
15648 #---------------------------------------------------------------------------
15649 # Prefs starting with "ui."
15650 #---------------------------------------------------------------------------
15652 - name: ui.key.generalAccessKey
15657 # Use 17 for Ctrl, 18 for Alt, 91 or 224 for Meta, 0 for none.
15658 - name: ui.key.accelKey
15667 # See above for the key codes to use.
15668 - name: ui.key.menuAccessKey
15677 # Only used if generalAccessKey is -1.
15678 - name: ui.key.chromeAccess
15681 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 3 = ctrl+shift, 8 = Meta
15684 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 5 = Alt+Shift, 8 = Win
15689 # Only used if generalAccessKey is -1.
15690 - name: ui.key.contentAccess
15693 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 3 = ctrl+shift, 8 = Meta
15696 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 5 = Alt+Shift, 8 = Win
15702 - name: ui.key.layout.load_when_first_needed
15704 value: @IS_EARLY_BETA_OR_EARLIER@
15708 # Does the access key by itself focus the menu bar?
15709 - name: ui.key.menuAccessKeyFocuses
15711 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
15712 # On Windows and Linux, we now default to showing the menu bar only when alt
15720 # Whether native key bindings in the environment or builtin shortcut key
15721 # definitions in Gecko are used first in <input> and <textarea>
15722 - name: ui.key.textcontrol.prefer_native_key_bindings_over_builtin_shortcut_key_definitions
15727 #ifdef MOZ_WIDGET_GTK
15728 # Only GtkTextView (native multiline text viewer/editor) supports "select-all"
15729 # signal so that we cannot know "select-all" key bindings only with GtkEntry.
15730 # When this pref is set to true, if a key combination does not cause any
15731 # signals in GtkEntry, try to check the key combination is mapped to
15732 # "select-all" in GtkTextView or not. If it's mapped to other commands, they
15733 # are just ignored.
15734 - name: ui.key.use_select_all_in_single_line_editor
15740 # Duration of timeout of incremental search in menus (ms). 0 means infinite.
15741 - name: ui.menu.incremental_search.timeout
15746 # If true, all popups won't hide automatically on blur
15747 - name: ui.popup.disable_autohide
15748 type: RelaxedAtomicBool
15752 # Negate scroll, true will make the mouse scroll wheel move the screen the
15753 # same direction as with most desktops or laptops.
15754 - name: ui.scrolling.negate_wheel_scroll
15755 type: RelaxedAtomicBool
15756 value: @IS_ANDROID@
15759 # Delay in milliseconds for tooltips
15760 - name: ui.tooltip.delay_ms
15765 # If the user puts a finger down on an element and we think the user might be
15766 # executing a pan gesture, how long do we wait before tentatively deciding the
15767 # gesture is actually a tap and activating the target element?
15768 - name: ui.touch_activation.delay_ms
15773 # If the user has clicked an element, how long do we keep the :active state
15774 # before it is cleared.
15775 - name: ui.touch_activation.duration_ms
15780 # Prevent system colors from being exposed to CSS or canvas.
15781 - name: ui.use_standins_for_native_colors
15782 type: RelaxedAtomicBool
15786 # Whether context menus should only appear on mouseup instead of mousedown,
15787 # on OSes where they normally appear on mousedown (macOS, *nix).
15788 # Note: ignored on Windows (context menus always use mouseup).
15789 - name: ui.context_menus.after_mouseup
15794 # Whether click-hold context menus are enabled.
15795 - name: ui.click_hold_context_menus
15796 type: RelaxedAtomicBool
15800 # How long to wait for a drag gesture before displaying click-hold context menu,
15802 - name: ui.click_hold_context_menus.delay
15803 type: RelaxedAtomicInt32
15807 # When enabled, the touch.radius and mouse.radius prefs allow events to be
15808 # dispatched to nearby elements that are sensitive to the event. See
15809 # PositionedEventTargeting.cpp. The 'mm' prefs define a rectangle around the
15810 # nominal event target point within which we will search for suitable elements.
15811 # 'visitedWeight' is a percentage weight; a value > 100 makes a visited link be
15812 # treated as further away from the event target than it really is, while a
15813 # value < 100 makes a visited link be treated as closer to the event target
15814 # than it really is.
15816 - name: ui.touch.radius.enabled
15818 value: @IS_ANDROID@
15821 - name: ui.touch.radius.topmm
15830 - name: ui.touch.radius.rightmm
15839 - name: ui.touch.radius.bottommm
15848 - name: ui.touch.radius.leftmm
15857 - name: ui.touch.radius.visitedWeight
15862 - name: ui.mouse.radius.enabled
15864 value: @IS_ANDROID@
15867 - name: ui.mouse.radius.topmm
15876 - name: ui.mouse.radius.rightmm
15885 - name: ui.mouse.radius.bottommm
15894 - name: ui.mouse.radius.leftmm
15903 - name: ui.mouse.radius.visitedWeight
15908 - name: ui.mouse.radius.reposition
15910 value: @IS_ANDROID@
15913 # When true, the ui.mouse.radius.* prefs will only affect simulated mouse
15914 # events generated by touch input. When false, the prefs will be used for all
15916 - name: ui.mouse.radius.inputSource.touchOnly
15921 # When true, selection is not collapsed at the right click point if there is a
15922 # non-collapsed selection.
15923 - name: ui.mouse.right_click.collapse_selection.stop_if_non_collapsed_selection
15928 # When true, selection is not collapsed at the right click point if the clicked
15929 # node is not editable.
15930 - name: ui.mouse.right_click.collapse_selection.stop_if_non_editable_node
15935 # When true, the caret is not moved to the right click point in focused editable
15937 - name: ui.mouse.right_click.move_caret.stop_if_in_focused_editable_node
15942 #---------------------------------------------------------------------------
15943 # Prefs starting with "urlclassifier."
15944 #---------------------------------------------------------------------------
15946 # Update server response timeout for Safe Browsing.
15947 - name: urlclassifier.update.response_timeout_ms
15952 # Download update timeout for Safe Browsing.
15953 - name: urlclassifier.update.timeout_ms
15958 #---------------------------------------------------------------------------
15959 # Prefs starting with "view_source."
15960 #---------------------------------------------------------------------------
15962 - name: view_source.editor.external
15967 - name: view_source.wrap_long_lines
15969 value: @IS_ANDROID@
15972 - name: view_source.syntax_highlight
15977 - name: view_source.tab_size
15982 #---------------------------------------------------------------------------
15983 # Prefs starting with "webgl." (for pref access from Worker threads)
15984 #---------------------------------------------------------------------------
15986 - name: webgl.1.allow-core-profiles
15987 type: RelaxedAtomicBool
15995 - name: webgl.angle.force-d3d11
15996 type: RelaxedAtomicBool
16000 - name: webgl.angle.try-d3d11
16001 type: RelaxedAtomicBool
16009 - name: webgl.angle.force-warp
16010 type: RelaxedAtomicBool
16014 - name: webgl.auto-flush
16015 type: RelaxedAtomicBool
16019 - name: webgl.auto-flush.gl
16020 type: RelaxedAtomicBool
16024 - name: webgl.can-lose-context-in-foreground
16025 type: RelaxedAtomicBool
16029 - name: webgl.cgl.multithreaded
16030 type: RelaxedAtomicBool
16034 - name: webgl.colorspaces.prototype
16035 type: RelaxedAtomicBool
16039 - name: webgl.debug.incomplete-tex-color
16040 type: RelaxedAtomicUint32
16044 - name: webgl.default-antialias
16045 type: RelaxedAtomicBool
16046 value: @IS_NOT_ANDROID@
16049 - name: webgl.default-no-alpha
16050 type: RelaxedAtomicBool
16054 - name: webgl.disable-angle
16055 type: RelaxedAtomicBool
16059 - name: webgl.disable-wgl
16060 type: RelaxedAtomicBool
16064 - name: webgl.dxgl.enabled
16065 type: RelaxedAtomicBool
16073 - name: webgl.dxgl.needs-finish
16074 type: RelaxedAtomicBool
16078 - name: webgl.disable-fail-if-major-performance-caveat
16079 type: RelaxedAtomicBool
16083 - name: webgl.disable-DOM-blit-uploads
16084 type: RelaxedAtomicBool
16085 #if defined(MOZ_AARCH64) && defined(XP_MACOSX)
16092 - name: webgl.disabled
16093 type: RelaxedAtomicBool
16097 - name: webgl.enable-debug-renderer-info
16098 type: RelaxedAtomicBool
16102 - name: webgl.enable-draft-extensions
16103 type: RelaxedAtomicBool
16107 - name: webgl.enable-privileged-extensions
16108 type: RelaxedAtomicBool
16112 - name: webgl.enable-renderer-query
16113 type: RelaxedAtomicBool
16117 - name: webgl.enable-surface-texture
16118 type: RelaxedAtomicBool
16122 - name: webgl.enable-webgl2
16123 type: RelaxedAtomicBool
16127 - name: webgl.fake-verts.max
16128 type: RelaxedAtomicUint32
16129 value: 10*1000*1000 # 10M as vec4 is count*4*4 = 160MB
16132 # Only works on Mac for now.
16133 - name: webgl.forbid-hardware
16134 type: RelaxedAtomicBool
16138 # Only works on Mac for now.
16139 - name: webgl.forbid-software
16140 type: RelaxedAtomicBool
16141 value: true # It's generally better to encourage fallback to e.g. canvas2d.
16144 - name: webgl.force-enabled
16145 type: RelaxedAtomicBool
16149 - name: webgl.force-index-validation
16150 type: RelaxedAtomicInt32
16154 - name: webgl.gl_khr_no_error
16155 type: RelaxedAtomicBool
16158 #elif defined(MOZ_WIDGET_GTK)
16159 # Bug 1862039 - All versions of Mesa as of Nov 2023 have issues with
16160 # GL_CONTEXT_FLAG_NO_ERROR_BIT. We should aspire to reenable it at
16161 # some point when the bugs are fixed.
16162 # See also https://gitlab.freedesktop.org/mesa/mesa/-/issues/10062
16169 - name: webgl.lose-context-on-memory-pressure
16170 type: RelaxedAtomicBool
16174 - name: webgl.max-contexts
16175 type: RelaxedAtomicUint32
16179 - name: webgl.max-contexts-per-principal
16180 type: RelaxedAtomicUint32
16184 - name: webgl.max-size-per-texture-mib
16185 type: RelaxedAtomicUint32
16189 - name: webgl.max-vert-ids-per-draw
16190 type: RelaxedAtomicUint32
16191 value: 30*1000*1000
16194 - name: webgl.max-warnings-per-context
16195 type: RelaxedAtomicUint32
16199 - name: webgl.min_capability_mode
16200 type: RelaxedAtomicBool
16204 - name: webgl.msaa-force
16205 type: RelaxedAtomicBool
16209 - name: webgl.msaa-samples
16210 type: RelaxedAtomicUint32
16214 - name: webgl.out-of-process
16215 type: RelaxedAtomicBool
16219 - name: webgl.out-of-process.worker
16220 type: RelaxedAtomicBool
16224 - name: webgl.out-of-process.force
16225 type: RelaxedAtomicBool
16229 - name: webgl.out-of-process.shmem-size
16230 type: RelaxedAtomicUint32
16231 value: 100000 # 100KB
16234 - name: webgl.out-of-process.async-present
16235 type: RelaxedAtomicBool
16239 # Forces async present to wait for a sync, even while using remote textures.
16240 - name: webgl.out-of-process.async-present.force-sync
16241 type: RelaxedAtomicBool
16245 #if defined(MOZ_WIDGET_ANDROID)
16246 - name: webgl.out-of-process.enable-ahardwarebuffer
16252 # Override the blocklist to assume that GL is threadsafe.
16253 - name: webgl.threadsafe-gl.force-enabled
16258 # Override the blocklist to assume that GL is not threadsafe.
16259 - name: webgl.threadsafe-gl.force-disabled
16264 - name: webgl.use-canvas-render-thread
16269 - name: webgl.override-unmasked-renderer
16270 type: DataMutexString
16274 - name: webgl.override-unmasked-vendor
16275 type: DataMutexString
16279 - name: webgl.power-preference-override
16280 type: RelaxedAtomicInt32
16284 - name: webgl.prefer-16bpp
16285 type: RelaxedAtomicBool
16289 - name: webgl.sanitize-unmasked-renderer
16290 type: RelaxedAtomicBool
16294 - name: webgl.allow-immediate-queries
16295 type: RelaxedAtomicBool
16299 - name: webgl.allow-fb-invalidation
16300 type: RelaxedAtomicBool
16305 - name: webgl.perf.max-warnings
16306 type: RelaxedAtomicInt32
16310 - name: webgl.perf.max-acceptable-fb-status-invals
16311 type: RelaxedAtomicInt32
16315 - name: webgl.perf.spew-frame-allocs
16316 type: RelaxedAtomicBool
16320 #---------------------------------------------------------------------------
16321 # Prefs starting with "widget."
16322 #---------------------------------------------------------------------------
16324 # Whether the non-native theme should always use system colors. Useful mostly
16325 # for testing forced colors mode.
16326 - name: widget.non-native-theme.always-high-contrast
16327 type: RelaxedAtomicBool
16331 # The style of scrollbars to use. Here are the current options:
16333 # 0: Default platform scrollbar style.
16334 # 1: macOS scrollbars
16335 # 2: GTK scrollbars
16336 # 3: Android scrollbars
16337 # 4: Windows 10 scrollbars
16338 # 5: Windows 11 scrollbars
16340 # Note that switching to non-default scrollbars is experimental and other
16341 # scrollbar-related prefs may interfere with the experience. For example,
16342 # setting the GTK thumb size may have no effect when using non-GTK scrollbars
16344 - name: widget.non-native-theme.scrollbar.style
16349 # An override that allows to override the default platform size. The size in CSS
16350 # pixels at full zoom of the minimum scrollbar width.
16351 - name: widget.non-native-theme.scrollbar.size.override
16356 # Whether we should use themed values for dark scrollbars.
16357 - name: widget.non-native-theme.scrollbar.dark-themed
16358 type: RelaxedAtomicBool
16362 # Whether the active thumb color should always use the themed colors, even if
16363 # dark scrollbars are in use.
16364 - name: widget.non-native-theme.scrollbar.active-always-themed
16365 type: RelaxedAtomicBool
16369 # Whether we use the Windows CSS scrollbar sizes, or the scrollbar sizes
16371 - name: widget.non-native-theme.win.scrollbar.use-system-size
16376 # Whether Windows 11 scrollbars are always drawn with the thinner "overlay"
16378 - name: widget.non-native-theme.win11.scrollbar.force-overlay-style
16383 # The amount of space that the thumb should fill the scrollbar, from zero to
16385 - name: widget.non-native-theme.gtk.scrollbar.thumb-size
16390 # The minimum size of the scroll thumb, in the scrollbar direction.
16391 - name: widget.non-native-theme.gtk.scrollbar.thumb-cross-size
16396 # Whether the thumb should be rounded for the non-native scrollbars.
16397 - name: widget.non-native-theme.gtk.scrollbar.round-thumb
16402 # Whether buttons shouldn't be suppressed for non-native scrollbars.
16403 - name: widget.non-native-theme.gtk.scrollbar.allow-buttons
16408 # Whether we should use the default accent color or the theme-provided one for
16409 # content (e.g. for form controls and CSS system colors).
16411 # Turned off on Windows, for now (we always use the default blue-ish
16412 # accent-color there). We might want to turn this on there, though it's worth
16413 # thinking on what the behavior should be for grey-ish accent colors (which are
16414 # a thing on Windows and can cause confusion with things like disabled form
16415 # controls). Maybe it's just fine.
16416 - name: widget.non-native-theme.use-theme-accent
16417 type: RelaxedAtomicBool
16418 #if defined(XP_WIN) && !defined(MOZ_THUNDERBIRD)
16425 # Preference to disable dark scrollbar implementation.
16426 # This is mainly for testing because dark scrollbars have to be semi-
16427 # transparent, but many reftests expect scrollbars to look identical
16428 # among different backgrounds.
16429 # However, some users may want to disable this as well.
16430 - name: widget.disable-dark-scrollbar
16435 - name: widget.disable_file_pickers
16436 type: RelaxedAtomicBool
16440 - name: widget.window-transforms.disabled
16441 type: RelaxedAtomicBool
16447 # Whether to shift by the menubar height on fullscreen mode.
16450 # 2: auto (tries to detect when it is needed)
16451 - name: widget.macos.shift-by-menubar-on-fullscreen
16452 type: RelaxedAtomicUint32
16456 - name: widget.macos.native-context-menus
16457 type: RelaxedAtomicBool
16461 - name: widget.macos.titlebar-blend-mode.behind-window
16462 type: RelaxedAtomicBool
16467 # Whether native GTK global menubar support is enabled.
16468 # Disabled because there are some minor bugs and it needs deeper integration
16469 # with the front-end.
16470 - name: widget.gtk.global-menu.enabled
16471 type: RelaxedAtomicBool
16475 # Whether GTK global menubar support is enabled using wayland's experimental
16476 # dbus_annotation protocol:
16477 # https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/52
16478 # Disabled until it has a final shape and it is available in compositors.
16479 - name: widget.gtk.global-menu.wayland.enabled
16480 type: RelaxedAtomicBool
16484 # Whether native GTK context menus are enabled.
16485 # Disabled because at the very least there's missing custom icon support.
16486 - name: widget.gtk.native-context-menus
16487 type: RelaxedAtomicBool
16491 # Whether we use overlay scrollbars on GTK.
16492 - name: widget.gtk.overlay-scrollbars.enabled
16493 type: RelaxedAtomicBool
16497 # Whether we hide the pointer while typing on Linux
16498 - name: widget.gtk.hide-pointer-while-typing.enabled
16499 type: RelaxedAtomicBool
16503 # Whether we honor the scrollbar colors from the gtk theme.
16504 - name: widget.gtk.theme-scrollbar-colors.enabled
16509 # Whether libadwaita colors are used rather than the default ones.
16510 - name: widget.gtk.libadwaita-colors.enabled
16515 # Whether to use gtk titlebar actions for middle click instead of Firefox
16517 - name: widget.gtk.titlebar-action-middle-click-enabled
16522 # Whether to ignore middle click events on widget level.
16523 - name: widget.gtk.middle-click-enabled
16528 # Whether we enable rounded bottom corners on GTK by default.
16530 # The implementation is a bit hacky (see details in bug 1850827) so behind a
16531 # pref for emergency purposes.
16532 - name: widget.gtk.rounded-bottom-corners.enabled
16538 # Whether non-native titlebar buttons are enabled for lightweight themes.
16539 - name: widget.gtk.non-native-titlebar-buttons.enabled
16540 type: RelaxedAtomicBool
16544 # Whether selection colors for the non-system theme get passed from the system
16546 - name: widget.gtk.alt-theme.selection
16551 # Whether form control accent colors for the non-system theme get passed from
16552 # the system GTK theme.
16553 - name: widget.gtk.alt-theme.accent
16558 # Whether the scrollbar thumb active color from the non-system theme gets
16559 # passed from the system GTK theme.
16560 - name: widget.gtk.alt-theme.scrollbar_active
16565 # Whether we should try to grab the pointer on popups.
16568 # 2: Auto (depending on the system)
16569 - name: widget.gtk.grab-pointer
16574 # Whether we should try ignore bogus leave-notify events from the window
16578 # 2: Auto (depending on the system)
16579 - name: widget.gtk.ignore-bogus-leave-notify
16584 # Whether to use gtk legacy cursor API.
16585 - name: widget.gtk.legacy-cursors.enabled
16590 # Whether to use gtk high contrast themes to disable content styling like on
16591 # windows high contrast mode.
16592 - name: widget.content.gtk-high-contrast.enabled
16598 - name: widget.wayland.fractional-scale.enabled
16603 # Use opaque region for MozContainer wl_surface
16604 - name: widget.wayland.opaque-region.enabled
16609 # Use frame callback based vsync
16610 - name: widget.wayland.vsync.enabled
16615 # Whether to keep firing vsync at layout.throttled_frame_rate after we've been
16617 - name: widget.wayland.vsync.keep-firing-at-idle
16623 #ifdef MOZ_WIDGET_GTK
16624 # Whether to use DMABuf backend.
16625 - name: widget.dmabuf.enabled
16630 # Whether to override the DMABuf blocklist.
16631 - name: widget.dmabuf.force-enabled
16636 #ifdef NIGHTLY_BUILD
16637 # Keep those pref hidden on non-nightly builds to avoid people accidentally
16640 # Use DMABuf for content textures.
16641 # For testing purposes only.
16642 - name: widget.dmabuf-textures.enabled
16643 type: RelaxedAtomicBool
16648 # Use DMABuf backend for WebGL.
16649 - name: widget.dmabuf-webgl.enabled
16650 type: RelaxedAtomicBool
16654 # Use gdk_window_move_to_rect to move Wayland popups when available.
16655 - name: widget.wayland.use-move-to-rect
16660 # The time we should spend on a DBUS call to the FileManager1 interface before
16661 # giving up and trying an alternative method.
16663 # -1 for the default system timeout, INT_MAX for "infinite time".
16665 # This happens right now on the main thread so 1 second should be enough, we
16666 # should consider moving it to a background task and just use the default
16668 - name: widget.gtk.file-manager-show-items-timeout-ms
16673 # The timeout we should spend on a DBUS call to the Settings proxy before
16676 # -1 for the default system timeout, INT_MAX for "infinite time".
16678 # This runs just once, but during startup, so make sure it doesn't take too
16679 # long. Three seconds should be way more than enough, and if we don't get the
16680 # reply on time then the only potential issue is that we use a light instead of
16681 # dark interface or vice versa.
16682 - name: widget.gtk.settings-portal-timeout-ms
16687 # Whether to use gtk portal for the file picker.
16690 # - 2: auto (true for flatpak or GTK_USE_PORTAL=1, false otherwise)
16691 - name: widget.use-xdg-desktop-portal.file-picker
16696 # Whether to use gtk portal for the mime handler.
16699 # - 2: auto (for now only true for flatpak, see bug 1516290)
16700 - name: widget.use-xdg-desktop-portal.mime-handler
16705 # Whether to try to use XDG portal for settings / look-and-feel information.
16706 # https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.Settings
16710 - name: widget.use-xdg-desktop-portal.settings
16715 # Whether to use XDG portal for geolocation.
16716 # https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.Location
16720 - name: widget.use-xdg-desktop-portal.location
16724 # Whether to use XDG portal for opening to a file.
16725 # https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.OpenURI
16728 # - 2: auto (true for flatpak or GTK_USE_PORTAL=1, false otherwise)
16729 - name: widget.use-xdg-desktop-portal.open-uri
16736 # WindowsUIUtils::Share to wait for user action on Windows share dialog
16737 # `true` means the promise resolves when user completes or cancels the share
16738 # action. This can be unsafe since selecting copy action fires no DataPackage
16739 # event as of 21H1.
16740 # `false` means the promise resolves when the share data is passed to
16742 # This affects the behavior of `navigator.share()`.
16743 - name: widget.windows.share.wait_action.enabled
16748 - name: widget.windows.window_occlusion_tracking.enabled
16753 # Whether overlay scrollbars respect the system settings.
16754 # Note that these can be overridden by the ui.useOverlayScrollbars pref.
16755 - name: widget.windows.overlay-scrollbars.enabled
16760 # Whether we allow accessing the UWP system color pallete.
16761 - name: widget.windows.uwp-system-colors.enabled
16766 # Whether we use the accent color for highlight as some other UWP apps do.
16768 # false for now since it can cause some contrast-with-background issues
16769 # specially with grey accents, see bug 1776588.
16770 - name: widget.windows.uwp-system-colors.highlight-accent
16775 - name: widget.windows.window_occlusion_tracking_display_state.enabled
16780 - name: widget.windows.window_occlusion_tracking_session_lock.enabled
16785 # Whether to give explorer.exe a delated nudge to recalculate the fullscreenness
16786 # of a window after maximizing it.
16787 - name: widget.windows.fullscreen_remind_taskbar
16788 type: RelaxedAtomicBool
16792 # Whether to open the Windows file and folder pickers "remotely" (in a utility
16793 # process) or "locally" (in the main process).
16796 # * 0: auto (possibly release-channel-dependent)
16797 # * 1: remotely, falling back to locally
16798 # * 2: remotely, no fallback
16799 # * -1: locally, no fallback
16800 - name: widget.windows.utility_process_file_picker
16801 type: RelaxedAtomicInt32
16805 # The number of messages of each type to keep for display in
16806 # about:windows-messages
16807 - name: widget.windows.messages_to_log
16808 type: RelaxedAtomicUint32
16812 # Whether to flush the Ole clipboard synchronously.
16813 # Possible values are:
16816 # * 2 (or others): when needed
16817 - name: widget.windows.sync-clipboard-flush
16822 # Whether to apply a hack (adjusting the window height by -1px and back again)
16823 # upon first entering fullscreen intended to work around a bug exhibited under
16824 # on some Windows 11 machines under some configurations. (See bug 1763981.)
16830 - name: widget.windows.apply-dwm-resize-hack
16831 type: RelaxedAtomicInt32
16836 # Whether to disable SwipeTracker (e.g. swipe-to-nav).
16837 - name: widget.disable-swipe-tracker
16842 # Various metrics to control SwipeTracker.
16843 - name: widget.swipe.velocity-twitch-tolerance
16848 - name: widget.swipe.success-velocity-contribution
16853 # When using pixel deltas for pan input, how many pixels do we consider a whole
16856 # The values for this pref are derived from trial and error in an effort to
16857 # match the existing behavior on the respective platforms.
16858 - name: widget.swipe.pixel-size
16860 #if defined(XP_MACOSX)
16867 # When using page deltas for pan input, how many pages do we consider a whole
16868 # swipe navigation?
16870 # This is only relevant for GTK which is as of right now the only platform
16871 # which supports page-based pan gestures.
16872 - name: widget.swipe.page-size
16877 - name: widget.transparent-windows
16882 # Whether the clipboard cached are used while getting system clipboard data.
16883 - name: widget.clipboard.use-cached-data.enabled
16885 #if defined(XP_MACOSX)
16892 # Whether to render in to a child SurfaceControl rather than directly into the SurfaceView
16893 - name: widget.android.use-surfacecontrol
16899 # A threshold value for double click by mouse.
16900 - name: widget.double-click.threshold
16901 type: RelaxedAtomicInt32
16905 # A timeout value for double click by mouse.
16906 - name: widget.double-click.timeout
16907 type: RelaxedAtomicInt32
16911 # A min time value for double click by mouse.
16912 - name: widget.double-click.min
16913 type: RelaxedAtomicInt32
16918 #---------------------------------------------------------------------------
16919 # Prefs starting with "zoom."
16920 #---------------------------------------------------------------------------
16922 - name: zoom.maxPercent
16931 - name: zoom.minPercent
16940 #---------------------------------------------------------------------------
16942 #---------------------------------------------------------------------------