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
40 # - `name` is the name of the pref, without double-quotes, as it appears
41 # in about:config. It is used in most libpref API functions (from both C++
44 # - `type` is one of `bool`, `int32_t`, `uint32_t`, `float`, an atomic version
45 # of one of those, `String` or `DataMutexString`. Note that float prefs are
46 # stored internally as strings. The C++ preprocessor doesn't like template
47 # syntax in a macro argument, so use the typedefs defined in
48 # StaticPrefsBase.h; for example, use `RelaxedAtomicBool` instead of
49 # `Atomic<bool, Relaxed>`.
51 # - `value` is the default value. Its type should be appropriate for
52 # <cpp-type>, otherwise the generated code will fail to compile. A complex
53 # C++ numeric expressions like `60 * 60` (which the YAML parser cannot treat
54 # as an integer or float) is treated as a string and passed through without
55 # change, which is useful.
57 # - `mirror` indicates how the pref value is mirrored into a C++ variable.
59 # * `never`: There is no C++ mirror variable. The pref value can only be
60 # accessed via the standard libpref API functions.
62 # * `once`: The pref value is mirrored into a variable at startup; the
63 # mirror variable is left unchanged after that. (The exact point at which
64 # all `once` mirror variables are set is when the first `once` mirror
65 # variable is accessed, via its getter function.) This is mostly useful for
66 # graphics prefs where we often don't want a new pref value to apply until
67 # restart. Otherwise, this update policy is best avoided because its
68 # behaviour can cause confusion and bugs.
70 # * `always`: The mirror variable is always kept in sync with the pref value.
71 # This is the most common choice.
73 # When a mirror variable is present, a getter will be created that can access
74 # it. Using the getter function to read the pref's value has the two
75 # following advantages over the normal API functions.
77 # * A direct variable access is faster than a hash table lookup.
79 # * A mirror variable can be accessed off the main thread. If a pref *is*
80 # accessed off the main thread, it should have an atomic type. Assertions
83 # Note that Rust code must access the mirror variable directly, rather than
84 # via the getter function.
86 # - `do_not_use_directly` indicates if `_DoNotUseDirectly` should be appended to
87 # the name of the getter function. This is simply a naming convention
88 # indicating that there is some other wrapper getter function that should be
89 # used in preference to the normal static pref getter. Defaults to `false` if
90 # not present. Cannot be used with a `never` mirror value, because there is
91 # no getter function in that case.
93 # - `include` names a header file that must be included for the pref value to
94 # compile correctly, e.g. because it refers to a code constant. System
95 # headers should be surrounded with angle brackets, e.g. `<cmath>`.
97 # - `rust` indicates if the mirror variable is used by Rust code. If so, it
98 # will be usable via the `static_prefs::pref!` macro, e.g.
99 # `static_prefs::pref!("layout.css.font-display.enabled")`.
101 # The getter function's base name is the same as the pref's name, but with
102 # '.' or '-' chars converted to '_', to make a valid identifier. For example,
103 # the getter for `foo.bar_baz` is `foo_bar_baz()`. This is ugly but clear,
104 # and you can search for both the pref name and the getter using the regexp
105 # /foo.bar.baz/. Suffixes are added as follows:
107 # - If the `mirror` value is `once`, `_AtStartup` is appended, to indicate the
108 # value was obtained at startup.
110 # - If the `do_not_use_directly` value is true, `_DoNotUseDirectly` is
115 # Note finally that this file is preprocessed by preprocessor.py, not the C++
116 # preprocessor. As a result, the following things may be surprising.
118 # - YAML comments start with a '#', so putting a comment on the same line as a
119 # preprocessor directive is dubious. E.g. avoid lines like `#define X 3 #
120 # three` because the ` # three` will be part of `X`.
122 # - '@' use is required for substitutions to occur. E.g. with `#define FOO 1`,
123 # `FOO` won't be replaced with `1` unless it has '@' chars around it.
125 # - Spaces aren't permitted between the leading '#' and the name of a
126 # directive, e.g. `#ifdef XYZ` works but `# ifdef XYZ` does not.
128 # Please indent all prefs defined within #ifdef/#ifndef conditions. This
129 # improves readability, particular for conditional blocks that exceed a single
130 # screen. But note that the leading '-' in a definition must remain in the
131 # first column for it to be valid YAML.
133 #ifdef RELEASE_OR_BETA
134 #define IS_NOT_RELEASE_OR_BETA false
136 #define IS_NOT_RELEASE_OR_BETA true
140 #define IS_NIGHTLY_BUILD true
141 #define IS_NOT_NIGHTLY_BUILD false
143 #define IS_NIGHTLY_BUILD false
144 #define IS_NOT_NIGHTLY_BUILD true
147 #if defined(NIGHTLY_BUILD) || defined(MOZ_DEV_EDITION)
148 #define IS_NIGHTLY_OR_DEV_EDITION true
150 #define IS_NIGHTLY_OR_DEV_EDITION false
153 #ifdef MOZILLA_OFFICIAL
154 #define IS_NOT_MOZILLA_OFFICIAL false
156 #define IS_NOT_MOZILLA_OFFICIAL true
159 #ifdef EARLY_BETA_OR_EARLIER
160 #define IS_EARLY_BETA_OR_EARLIER true
161 #define IS_NOT_EARLY_BETA_OR_EARLIER false
163 #define IS_EARLY_BETA_OR_EARLIER false
164 #define IS_NOT_EARLY_BETA_OR_EARLIER true
168 #define IS_ANDROID true
169 #define IS_NOT_ANDROID false
171 #define IS_ANDROID false
172 #define IS_NOT_ANDROID true
176 #define IS_XP_WIN true
177 #define IS_NOT_XP_WIN false
179 #define IS_XP_WIN false
180 #define IS_NOT_XP_WIN true
183 #---------------------------------------------------------------------------
184 # Prefs starting with "accessibility."
185 #---------------------------------------------------------------------------
187 - name: accessibility.accesskeycausesactivation
192 - name: accessibility.monoaudio.enable
193 type: RelaxedAtomicBool
197 - name: accessibility.browsewithcaret
198 type: RelaxedAtomicBool
202 - name: accessibility.AOM.enabled
207 - name: accessibility.ARIAReflection.enabled
209 value: @IS_NIGHTLY_BUILD@
212 # Whether form controls and images should be focusable with mouse, in content
215 # This matches historical macOS / Safari behavior.
219 # * 2: on content documents
220 - name: accessibility.mouse_focuses_formcontrol
229 # Whether to avoid accessibility activation on Windows shortly after clipboard
232 # Possible values are:
235 # * 2 (or others): when needed
236 - name: accessibility.windows.suppress-after-clipboard-copy
241 #---------------------------------------------------------------------------
242 # Prefs starting with "alerts."
243 #---------------------------------------------------------------------------
245 # Whether to use platform-specific backends for showing desktop notifications.
246 # If no such backend is available, or if the pref is false, then XUL
247 # notifications are used.
248 - name: alerts.useSystemBackend
254 # On Windows, a COM Surrogate notification server receives notification events
255 # and can relaunch the application after it has been closed.
256 - name: alerts.useSystemBackend.windows.notificationserver.enabled
263 #---------------------------------------------------------------------------
264 # Prefs starting with "android."
265 #---------------------------------------------------------------------------
267 # On Android, we want an opaque background to be visible under the page,
268 # so layout should not force a default background.
269 - name: android.widget_paints_background
270 type: RelaxedAtomicBool
274 - name: android.touch_resampling.enabled
275 type: RelaxedAtomicBool
281 #---------------------------------------------------------------------------
282 # Prefs starting with "apz."
283 # The apz prefs are explained in AsyncPanZoomController.cpp
284 #---------------------------------------------------------------------------
286 # amount we zoom in for a double tap gesture if we couldn't find any content
287 # based rect to zoom to
288 - name: apz.doubletapzoom.defaultzoomin
293 - name: apz.scrollbarbuttonrepeat.enabled
294 type: RelaxedAtomicBool
298 - name: apz.scrollend-event.content.enabled
299 type: RelaxedAtomicBool
303 # After a user has executed a pan gesture, we may receive momentum phase pan
304 # gestures from the OS. This specifies how long we should wait following the
305 # pan end gesture for possible momentum phase pan gestures before sending the
306 # TransformEnd notification.
307 - name: apz.scrollend-event.content.delay_ms
308 type: RelaxedAtomicInt32
312 - name: apz.wr.activate_all_scroll_frames
313 type: RelaxedAtomicBool
317 - name: apz.wr.activate_all_scroll_frames_when_fission
318 type: RelaxedAtomicBool
322 - name: apz.prefer_jank_minimal_displayports
323 type: RelaxedAtomicBool
327 - name: apz.allow_double_tap_zooming
328 type: RelaxedAtomicBool
332 - name: apz.mac.enable_double_tap_zoom_touchpad_gesture
333 type: RelaxedAtomicBool
337 - name: apz.allow_immediate_handoff
338 type: RelaxedAtomicBool
342 - name: apz.allow_zooming
343 type: RelaxedAtomicBool
357 - name: apz.allow_zooming_out
358 type: RelaxedAtomicBool
362 - name: apz.android.chrome_fling_physics.friction
367 - name: apz.android.chrome_fling_physics.inflexion
372 - name: apz.android.chrome_fling_physics.stop_threshold
377 - name: apz.autoscroll.enabled
378 type: RelaxedAtomicBool
382 - name: apz.axis_lock.breakout_angle
384 value: float(M_PI / 8.0) # 22.5 degrees
388 - name: apz.axis_lock.breakout_threshold
393 - name: apz.axis_lock.direct_pan_angle
395 value: float(M_PI / 3.0) # 60 degrees
399 - name: apz.axis_lock.lock_angle
401 value: float(M_PI / 6.0) # 30 degrees
405 # Whether to lock touch scrolling to one axis at a time. When a new
406 # axis lock mode is added, the APZCAxisLockCompatTester GTest shoud
407 # be updated to include the lock mode value.
408 # 0 = FREE (No locking at all)
409 # 1 = STANDARD (Once locked, remain locked until scrolling ends)
410 # 2 = STICKY (Allow lock to be broken, with hysteresis)
411 # 3 = DOMINANT_AXIS (Only allow movement on one axis at a time, only
412 # applies to touchpad scrolling)
413 - name: apz.axis_lock.mode
414 type: RelaxedAtomicInt32
415 #if defined(XP_MACOSX)
422 - name: apz.content_response_timeout
423 type: RelaxedAtomicInt32
427 - name: apz.danger_zone_x
428 type: RelaxedAtomicInt32
432 - name: apz.danger_zone_y
433 type: RelaxedAtomicInt32
437 - name: apz.disable_for_scroll_linked_effects
438 type: RelaxedAtomicBool
442 - name: apz.displayport_expiry_ms
443 type: RelaxedAtomicUint32
447 - name: apz.drag.enabled
448 type: RelaxedAtomicBool
452 - name: apz.drag.initial.enabled
453 type: RelaxedAtomicBool
457 - name: apz.drag.touch.enabled
458 type: RelaxedAtomicBool
462 - name: apz.enlarge_displayport_when_clipped
463 type: RelaxedAtomicBool
468 - name: apz.fixed-margin-override.enabled
469 type: RelaxedAtomicBool
474 - name: apz.fixed-margin-override.bottom
475 type: RelaxedAtomicInt32
480 - name: apz.fixed-margin-override.top
481 type: RelaxedAtomicInt32
485 - name: apz.fling_accel_base_mult
490 - name: apz.fling_accel_supplemental_mult
495 - name: apz.fling_accel_min_fling_velocity
500 - name: apz.fling_accel_min_pan_velocity
505 - name: apz.fling_accel_max_pause_interval_ms
506 type: RelaxedAtomicInt32
510 - name: apz.fling_curve_function_x1
515 - name: apz.fling_curve_function_x2
520 - name: apz.fling_curve_function_y1
525 - name: apz.fling_curve_function_y2
530 - name: apz.fling_curve_threshold_inches_per_ms
535 - name: apz.fling_friction
540 - name: apz.fling_min_velocity_threshold
545 - name: apz.fling_stop_on_tap_threshold
550 - name: apz.fling_stopped_threshold
555 - name: apz.touch_acceleration_factor_x
560 - name: apz.touch_acceleration_factor_y
565 # new scrollbar code for desktop zooming
566 - name: apz.force_disable_desktop_zooming_scrollbars
567 type: RelaxedAtomicBool
571 #ifdef MOZ_WIDGET_GTK
572 - name: apz.gtk.kinetic_scroll.enabled
573 type: RelaxedAtomicBool
577 - name: apz.gtk.pangesture.enabled
578 type: RelaxedAtomicBool
582 # Mode to use when receiving pan gesture input.
584 # * 0: Auto mode (uses the default behavior, subject to change).
585 # * 1: Page mode: Uses gtk deltas as a percentage of the page size to scroll. This mode matches:
587 # https://gitlab.gnome.org/GNOME/gtk/blob/c734c7e9188b56f56c3a504abee05fa40c5475ac/gtk/gtkrange.c#L3063-3074
589 # * 2: Pixel mode: Uses gtk deltas as a fixed pixel multiplier. This mode matches e.g. GNOME web.
591 # https://webkit-search.igalia.com/webkit/rev/215039ef09d6bfd6e088175bfe30788d95b9705d/Source/WebKit/Shared/gtk/WebEventFactory.cpp#265-296
592 # (multiplied then by pixelsPerLineStep which in GNOME-web is 40).
593 - name: apz.gtk.pangesture.delta_mode
598 - name: apz.gtk.pangesture.page_delta_mode_multiplier
603 - name: apz.gtk.pangesture.pixel_delta_mode_multiplier
608 - name: apz.gtk.touchpad_pinch.enabled
609 type: RelaxedAtomicBool
613 - name: apz.gtk.touchpad_pinch.three_fingers.enabled
614 type: RelaxedAtomicBool
619 - name: apz.keyboard.enabled
621 value: @IS_NOT_ANDROID@
624 - name: apz.keyboard.passive-listeners
625 type: RelaxedAtomicBool
626 value: @IS_NOT_ANDROID@
629 - name: apz.max_tap_time
630 type: RelaxedAtomicInt32
634 - name: apz.max_velocity_inches_per_ms
639 - name: apz.max_velocity_queue_size
644 - name: apz.min_skate_speed
649 - name: apz.mvm.force-enabled
650 type: RelaxedAtomicBool
654 - name: apz.one_touch_pinch.enabled
655 type: RelaxedAtomicBool
659 - name: apz.overscroll.enabled
660 type: RelaxedAtomicBool
661 #if defined(XP_MACOSX) || defined(XP_WIN)
668 # The "test async scroll offset" (used via reftest-async-scroll
669 # or nsIDOMWindowUtils.setAsyncScrollOffset()) can be used to
670 # trigger overscroll. Used for tests only.
671 - name: apz.overscroll.test_async_scroll_offset.enabled
672 type: RelaxedAtomicBool
676 - name: apz.overscroll.min_pan_distance_ratio
681 - name: apz.overscroll.stop_distance_threshold
686 - name: apz.overscroll.spring_stiffness
691 - name: apz.overscroll.damping
696 - name: apz.overscroll.max_velocity
701 - name: apz.paint_skipping.enabled
702 type: RelaxedAtomicBool
706 # Fetch displayport updates early from the message queue.
707 - name: apz.pinch_lock.mode
708 type: RelaxedAtomicInt32
712 - name: apz.pinch_lock.scroll_lock_threshold
714 value: 1.0f / 16.0f # 1/16 inches
717 - name: apz.pinch_lock.span_breakout_threshold
719 value: 1.0f / 32.0f # 1/32 inches
722 - name: apz.pinch_lock.span_lock_threshold
724 value: 1.0f / 32.0f # 1/32 inches
727 - name: apz.pinch_lock.buffer_max_age
729 value: 80 # milliseconds
732 - name: apz.popups.enabled
733 type: RelaxedAtomicBool
737 # Whether to print the APZC tree for debugging.
738 - name: apz.printtree
739 type: RelaxedAtomicBool
743 - name: apz.record_checkerboarding
744 type: RelaxedAtomicBool
745 value: @IS_NIGHTLY_BUILD@
748 - name: apz.second_tap_tolerance
753 # If this is true, APZ fully recalculates the scroll thumb size and
754 # position in the compositor. This leads to the size and position
755 # being more accurate in scenarios such as async zooming.
756 - name: apz.scrollthumb.recalc
757 type: RelaxedAtomicBool
761 - name: apz.test.fails_with_native_injection
762 type: RelaxedAtomicBool
766 - name: apz.test.logging_enabled
767 type: RelaxedAtomicBool
771 - name: apz.touch_move_tolerance
776 - name: apz.touch_start_tolerance
781 - name: apz.velocity_bias
786 - name: apz.velocity_relevance_time_ms
787 type: RelaxedAtomicUint32
791 - name: apz.windows.force_disable_direct_manipulation
792 type: RelaxedAtomicBool
796 - name: apz.windows.use_direct_manipulation
797 type: RelaxedAtomicBool
801 - name: apz.windows.check_for_pan_gesture_conversion
802 type: RelaxedAtomicBool
806 - name: apz.x_skate_highmem_adjust
811 - name: apz.x_skate_size_multiplier
816 - name: apz.x_stationary_size_multiplier
821 - name: apz.y_skate_highmem_adjust
826 - name: apz.y_skate_size_multiplier
828 #if defined(MOZ_WIDGET_ANDROID)
835 - name: apz.y_stationary_size_multiplier
837 #if defined(MOZ_WIDGET_ANDROID)
844 - name: apz.zoom_animation_duration_ms
845 type: RelaxedAtomicInt32
846 #if defined(MOZ_WIDGET_ANDROID)
853 - name: apz.scale_repaint_delay_ms
854 type: RelaxedAtomicInt32
858 # Whether to use rounded external scroll offsets.
859 - name: apz.rounded_external_scroll_offset
864 #---------------------------------------------------------------------------
865 # Prefs starting with "beacon."
866 #---------------------------------------------------------------------------
868 # Is support for Navigator.sendBeacon enabled?
869 - name: beacon.enabled
874 #---------------------------------------------------------------------------
875 # Prefs starting with "bidi."
876 #---------------------------------------------------------------------------
878 # Whether delete and backspace should immediately delete characters not
879 # visually adjacent to the caret, or adjust the visual position of the caret
880 # on the first keypress and delete the character on a second keypress
881 - name: bidi.edit.delete_immediately
886 # Bidi caret movement style:
889 # 2 = visual, but logical during selection
890 - name: bidi.edit.caret_movement_style
892 #if !defined(XP_LINUX) && defined(NIGHTLY_BUILD)
895 value: 2 # See Bug 1638240
899 # Bidi numeral style:
900 # 0 = nominalnumeralBidi *
901 # 1 = regularcontextnumeralBidi
902 # 2 = hindicontextnumeralBidi
903 # 3 = arabicnumeralBidi
904 # 4 = hindinumeralBidi
905 # 5 = persiancontextnumeralBidi
906 # 6 = persiannumeralBidi
908 type: RelaxedAtomicUint32
913 # 1 = charsettexttypeBidi *
914 # 2 = logicaltexttypeBidi
915 # 3 = visualtexttypeBidi
916 - name: bidi.texttype
917 type: RelaxedAtomicUint32
922 # 1 = directionLTRBidi *
923 # 2 = directionRTLBidi
924 - name: bidi.direction
925 type: RelaxedAtomicUint32
929 # Setting this pref to |true| forces Bidi UI menu items and keyboard shortcuts
930 # to be exposed, and enables the directional caret hook. By default, only
931 # expose it for bidi-associated system locales.
932 - name: bidi.browser.ui
937 #---------------------------------------------------------------------------
938 # Prefs starting with "browser."
939 #---------------------------------------------------------------------------
941 - name: browser.active_color
946 - name: browser.active_color.dark
951 - name: browser.anchor_color
956 # If you change this, you probably also want to change
957 # nsXPLookAndFeel::GenericDarkColor for MozNativehyperlinktext.
958 - name: browser.anchor_color.dark
963 # See http://dev.w3.org/html5/spec/forms.html#attr-fe-autofocus
964 - name: browser.autofocus
969 - name: browser.cache.disk.enable
970 type: RelaxedAtomicBool
974 - name: browser.cache.memory.enable
975 type: RelaxedAtomicBool
979 # Limit of recent metadata we keep in memory for faster access, in KB.
980 - name: browser.cache.disk.metadata_memory_limit
981 type: RelaxedAtomicUint32
985 # Does the user want smart-sizing?
986 - name: browser.cache.disk.smart_size.enabled
987 type: RelaxedAtomicBool
991 # Disk cache capacity in kilobytes. It's used only when
992 # browser.cache.disk.smart_size.enabled == false
993 - name: browser.cache.disk.capacity
994 type: RelaxedAtomicUint32
998 # -1 = determine dynamically, 0 = none, n = memory capacity in kilobytes.
999 - name: browser.cache.memory.capacity
1000 type: RelaxedAtomicInt32
1004 # When smartsizing is disabled we could potentially fill all disk space by
1005 # cache data when the disk capacity is not set correctly. To avoid that we
1006 # check the free space every time we write some data to the cache. The free
1007 # space is checked against two limits. Once the soft limit is reached we start
1008 # evicting the least useful entries, when we reach the hard limit writing to
1010 - name: browser.cache.disk.free_space_soft_limit
1011 type: RelaxedAtomicUint32
1012 value: 5 * 1024 # 5MB
1015 - name: browser.cache.disk.free_space_hard_limit
1016 type: RelaxedAtomicUint32
1020 # The number of chunks we preload ahead of read. One chunk currently has
1022 - name: browser.cache.disk.preload_chunk_count
1023 type: RelaxedAtomicUint32
1024 value: 4 # 1 MB of read ahead
1027 # Max-size (in KB) for entries in disk cache. Set to -1 for no limit.
1028 # (Note: entries bigger than 1/8 of disk-cache are never cached)
1029 - name: browser.cache.disk.max_entry_size
1030 type: RelaxedAtomicUint32
1031 value: 50 * 1024 # 50 MB
1034 # Max-size (in KB) for entries in memory cache. Set to -1 for no limit.
1035 # (Note: entries bigger than than 90% of the mem-cache are never cached.)
1036 - name: browser.cache.memory.max_entry_size
1037 type: RelaxedAtomicInt32
1041 # Memory limit (in kB) for new cache data not yet written to disk. Writes to
1042 # the cache are buffered and written to disk on background with low priority.
1043 # With a slow persistent storage these buffers may grow when data is coming
1044 # fast from the network. When the amount of unwritten data is exceeded, new
1045 # writes will simply fail. We have two buckets, one for important data
1046 # (priority) like html, css, fonts and js, and one for other data like images,
1048 # Note: 0 means no limit.
1049 - name: browser.cache.disk.max_chunks_memory_usage
1050 type: RelaxedAtomicUint32
1053 - name: browser.cache.disk.max_priority_chunks_memory_usage
1054 type: RelaxedAtomicUint32
1059 # Number of seconds the cache spends writing pending data and closing files
1060 # after shutdown has been signalled. Past that time data is not written and
1061 # files are left open for the OS to clean up.
1062 - name: browser.cache.max_shutdown_io_lag
1063 type: RelaxedAtomicUint32
1067 # After the max_shutdown_io_lag has passed, we will attempt to cancel
1068 # blocking IO (on windows). The CacheIOThread may pick up more blocking
1069 # tasks so we want to cancel those too. The main thread will be woken
1070 # up every shutdown_io_time_between_cancellations_ms to cancel the IO
1071 # on the other thread.
1072 - name: browser.cache.shutdown_io_time_between_cancellations_ms
1073 type: RelaxedAtomicUint32
1077 # A percentage limit for media content type in the disk cache. When some entries
1078 # need to be evicted and media is over the limit, it's evicted first.
1079 - name: browser.cache.disk.content_type_media_limit
1080 type: RelaxedAtomicInt32
1084 # How often to validate document in cache
1085 # 0 = once-per-session,
1088 # 3 = when-appropriate/automatically
1089 - name: browser.cache.check_doc_frequency
1090 type: RelaxedAtomicUint32
1094 # Compression level for cached JavaScript bytecode
1095 # 0 = do not compress,
1096 # 1 = minimal compression,
1097 # 9 = maximal compression
1098 - name: browser.cache.jsbc_compression_level
1099 type: RelaxedAtomicUint32
1103 # Whether tooltips are enabled.
1104 - name: browser.chrome.toolbar_tips
1109 # Whether tooltips are hidden on keydown.
1112 # 2: only on non-modifier keys
1113 - name: browser.chrome.toolbar_tips.hide_on_keydown
1122 - name: browser.contentblocking.database.enabled
1127 # How many recent block/unblock actions per origins we remember in the
1128 # Content Blocking log for each top-level window.
1129 - name: browser.contentblocking.originlog.length
1134 # Min font device pixel size at which to turn on high quality.
1135 - name: browser.display.auto_quality_min_font_size
1136 type: RelaxedAtomicUint32
1140 - name: browser.display.background_color
1145 - name: browser.display.background_color.dark
1150 # This preference is a bit confusing because we use the opposite
1151 # string value in the colors dialog to indicate to users how FF HCM
1153 # With resect to document colors, these values mean:
1154 # 0 = "default" = always, except in high contrast mode
1158 # On windows, we set this to 0, which means FF HCM will mirror OS HCM.
1159 # Everywhere else, we set this to 1, disabling FF HCM.
1160 - name: browser.display.document_color_use
1161 type: RelaxedAtomicUint32
1173 - name: browser.display.windows.non_native_menus
1174 type: RelaxedAtomicUint32
1179 # This pref dictates whether or not backplates and background images
1180 # are to be drawn, when in high-contrast mode:
1181 # false: do not draw backplates or render background images
1182 # true: render background images and draw backplates
1183 # This condition is only considered when high-contrast mode is enabled
1184 # in Firefox, ie. when the user has:
1185 # (1) mUseAccessibilityMode set to true (Widows high-contrast mode is on)
1186 # AND browser.display.document_color_use set to 0
1187 # (only with high-contrast themes) OR
1188 # (2) browser.display.document_color_use set to 2 (always)
1189 - name: browser.display.permit_backplate
1190 type: RelaxedAtomicBool
1195 # Whether we should suppress the background-image of the canvas (the root
1196 # frame) if we're in forced colors mode.
1198 # This is important because some sites use background-image with a plain color
1199 # and it causes undesirable results in high-contrast mode.
1201 # See bug 1614921 for example.
1202 - name: browser.display.suppress_canvas_background_image_on_forced_colors
1207 - name: browser.display.focus_ring_on_anything
1212 - name: browser.display.focus_ring_width
1217 - name: browser.display.focus_background_color
1222 # Focus ring border style.
1223 # 0 = solid border, 1 = dotted border
1224 - name: browser.display.focus_ring_style
1229 - name: browser.display.focus_text_color
1234 - name: browser.display.foreground_color
1239 - name: browser.display.foreground_color.dark
1244 # Determines the behavior of OS zoom settings.
1246 # 0: doesn't affect rendering at all
1247 # 1: affects full zoom (dpi, effectively).
1248 # 2: affects text zoom.
1250 # Default is (1): Historical behavior on Linux, matches other browsers on
1251 # Windows, and generally creates more consistent rendering.
1252 - name: browser.display.os-zoom-behavior
1253 type: RelaxedAtomicInt32
1258 # Whether focus rings are always shown by default.
1260 # This is the initial value of nsWindowRoot::mShowFocusRings, but it can be
1261 # overridden by system preferences.
1262 - name: browser.display.show_focus_rings
1267 # Enable showing image placeholders while image is loading or when image is broken.
1268 - name: browser.display.show_image_placeholders
1273 # Whether we should always enable focus rings after focus was moved by keyboard.
1275 # This behavior matches both historical and GTK / Windows focus behavior.
1277 # :focus-visible is intended to provide better heuristics than this.
1278 - name: browser.display.always_show_rings_after_key_focus
1283 # In theory: 0 = never, 1 = quick, 2 = always, though we always just use it as
1285 - name: browser.display.use_document_fonts
1286 type: RelaxedAtomicInt32
1291 # font-family names for which we'll override use_document_fonts=0, and always
1292 # use the specified font.
1293 # This is to support ligature-icon fonts, which render literal strings like
1294 # "arrow_drop_down" with an icon, even when use_document_fonts is disabled.
1295 # If an author provides & uses such a font, and we decline to use it, we'll end
1296 # up rendering these literal strings where the author intended an icon, which
1297 # can cause all sorts of overlapping/unreadable content.
1298 - name: browser.display.use_document_fonts.icon_font_allowlist
1302 Material Icons Extended,
1303 Material Icons Outlined,
1304 Material Icons Round,
1305 Material Icons Sharp,
1306 Material Icons Two Tone,
1307 Google Material Icons,
1308 Material Symbols Outlined,
1309 Material Symbols Round,
1310 Material Symbols Rounded,
1311 Material Symbols Sharp
1314 - name: browser.display.use_focus_colors
1319 - name: browser.display.use_system_colors
1320 type: RelaxedAtomicBool
1328 - name: browser.dom.window.dump.enabled
1329 type: RelaxedAtomicBool
1330 value: @IS_NOT_MOZILLA_OFFICIAL@
1334 - name: browser.download.start_downloads_in_tmp_dir
1340 - name: browser.download.always_ask_before_handling_new_types
1346 - name: browser.download.enable_spam_prevention
1352 - name: browser.download.open_pdf_attachments_inline
1357 - name: browser.download.sanitize_non_media_extensions
1362 # Image document's automatic image sizing.
1363 - name: browser.enable_automatic_image_resizing
1368 # Image document's click-to-resize.
1369 - name: browser.enable_click_image_resizing
1371 value: @IS_NOT_ANDROID@
1374 - name: browser.find.ignore_ruby_annotations
1379 #if defined(XP_MACOSX)
1380 # Whether pressing Esc will exit fullscreen.
1381 - name: browser.fullscreen.exit_on_escape
1387 # The max url length we'll store in history.
1389 # The default value is mostly a guess based on various facts:
1391 # * IE didn't support urls longer than 2083 chars
1392 # * Sitemaps protocol used to support a maximum of 2048 chars
1393 # * Various SEO guides suggest to not go over 2000 chars
1394 # * Various apps/services are known to have issues over 2000 chars
1395 # * RFC 2616 - HTTP/1.1 suggests being cautious about depending
1396 # on URI lengths above 255 bytes
1398 - name: browser.history.maxUrlLength
1403 # Max size of push/replaceState data parameter
1404 - name: browser.history.maxStateObjectSize
1409 # True to collect wireframes upon navigations / pushState
1410 - name: browser.history.collectWireframes
1415 # The minimum area for a rect to be included in a wireframe, in CSS pixels.
1417 # The current value of 50 is pretty arbitrary, and will be tuned as we refine
1418 # and test the wireframing capability.
1419 - name: browser.history.wireframeAreaThreshold
1424 #if defined(XP_WIN) || defined(XP_LINUX)
1425 # Notify TabUnloader or send the memory pressure if the memory resource
1426 # notification is signaled AND the available commit space is lower than
1428 - name: browser.low_commit_space_threshold_mb
1429 type: RelaxedAtomicUint32
1435 # On Linux we also check available memory in comparison to total memory,
1436 # and use this percent value (out of 100) to determine if we are in a
1437 # low memory scenario.
1438 - name: browser.low_commit_space_threshold_percent
1439 type: RelaxedAtomicUint32
1444 # Render animations and videos as a solid color
1445 - name: browser.measurement.render_anims_and_video_solid
1446 type: RelaxedAtomicBool
1450 - name: browser.navigation.requireUserInteraction
1455 # Indicates if about:newtab shows content (enabled) or just blank.
1456 - name: browser.newtabpage.enabled
1461 # Open PDFs in Edge with the --app flag if it is the default.
1462 - name: browser.pdf.launchDefaultEdgeAsApp
1467 # Maximium delay between keystrokes that will be considered typing (milliseconds).
1468 - name: browser.places.interactions.typing_timeout_ms
1469 type: RelaxedAtomicUint32
1473 # Maximum delay between scroll input events that will be considered a scrolling interaction (milliseconds).
1474 - name: browser.places.interactions.scrolling_timeout_ms
1475 type: RelaxedAtomicUint32
1479 # Number of seconds till the sponsored session is timeout.
1480 - name: browser.places.sponsoredSession.timeoutSecs
1481 type: RelaxedAtomicUint32
1485 # Whether to start the private browsing mode at application startup
1486 - name: browser.privatebrowsing.autostart
1491 # Force usage of in-memory (rather than file on disk) media cache for video streaming when private browsing
1492 - name: browser.privatebrowsing.forceMediaMemoryCache
1497 # Communicates the toolbar color to platform (for e.g., prefers-color-scheme).
1499 # Returns whether the toolbar is dark (0), light (1), or system (2).
1501 # Default to "light" on macOS / Windows, and "system" elsewhere. The theming
1502 # code sets it appropriately.
1503 - name: browser.theme.toolbar-theme
1504 type: RelaxedAtomicUint32
1505 #if defined(XP_WIN) || defined(XP_MACOSX)
1512 # Communicates the preferred content theme color to platform (for e.g.,
1513 # prefers-color-scheme).
1515 # dark (0), light (1), system (2), or toolbar (3).
1517 # Default to "toolbar", the theming code sets it appropriately.
1518 - name: browser.theme.content-theme
1519 type: RelaxedAtomicUint32
1524 # Blocked plugin content
1525 - name: browser.safebrowsing.blockedURIs.enabled
1530 # Malware protection
1531 - name: browser.safebrowsing.malware.enabled
1536 # Password protection
1537 - name: browser.safebrowsing.passwords.enabled
1542 # Phishing protection
1543 - name: browser.safebrowsing.phishing.enabled
1548 # Maximum size for an array to store the safebrowsing prefixset.
1549 - name: browser.safebrowsing.prefixset_max_array_size
1550 type: RelaxedAtomicUint32
1554 # SessionStore prefs
1555 # Maximum number of bytes of DOMSessionStorage data we collect per origin.
1556 - name: browser.sessionstore.dom_storage_limit
1561 # Maximum number of characters of form field data per field we collect.
1562 - name: browser.sessionstore.dom_form_limit
1567 # Maximum number of characters of form data we collect per origin.
1568 - name: browser.sessionstore.dom_form_max_limit
1573 # Minimal interval between two save operations in milliseconds (while the user is active).
1574 - name: browser.sessionstore.interval
1575 type: RelaxedAtomicUint32
1579 # Platform collection of data for session store
1580 - name: browser.sessionstore.platform_collection
1582 #if defined(ANDROID) || defined(MOZ_THUNDERBIRD)
1589 # Platform collection of session storage data for session store
1590 - name: browser.sessionstore.collect_session_storage
1592 value: @IS_NOT_ANDROID@
1595 # Platform collection of zoom data for session store
1596 - name: browser.sessionstore.collect_zoom
1598 value: @IS_NOT_ANDROID@
1601 # Causes SessionStore to ignore non-final update messages from
1602 # browser tabs that were not caused by a flush from the parent.
1603 # This is a testing flag and should not be used by end-users.
1604 - name: browser.sessionstore.debug.no_auto_updates
1605 type: RelaxedAtomicBool
1609 # Whether we should draw the tabs on top of the titlebar.
1611 # no (0), yes (1), or default (2), which is true everywhere except Linux.
1612 - name: browser.tabs.inTitlebar
1617 # If set, use DocumentChannel to directly initiate loads entirely
1618 # from parent-process BrowsingContexts
1619 - name: browser.tabs.documentchannel.parent-controlled
1624 # Testing-only pref which makes data: URIs be loaded in a "web" content process
1625 # instead of within a process based on the URI's loader.
1626 - name: browser.tabs.remote.dataUriInDefaultWebProcess
1631 # Testing-only pref to force system-triggered about:blank loads to not change
1632 # content processes. This is used for performance tests which load an
1633 # about:blank document between navigations for historical reasons to avoid
1634 # unnecessary process switches.
1635 - name: browser.tabs.remote.systemTriggeredAboutBlankAnywhere
1640 # Testing-only pref to cause PBrowser creation for a specific BrowsingContext to
1641 # fail, to test the errored codepath.
1642 - name: browser.tabs.remote.testOnly.failPBrowserCreation.enabled
1647 - name: browser.tabs.remote.force-paint
1652 # When this pref is enabled document loads with a mismatched
1653 # Cross-Origin-Embedder-Policy header will fail to load
1654 - name: browser.tabs.remote.useCrossOriginEmbedderPolicy
1655 type: RelaxedAtomicBool
1659 # This pref makes `credentialless` a valid value for
1660 # Cross-Origin-Embedder-Policy header
1661 - name: browser.tabs.remote.coep.credentialless
1662 type: RelaxedAtomicBool
1663 value: @IS_NIGHTLY_BUILD@
1665 do_not_use_directly: true
1667 # When this pref is enabled top level loads with a mismatched
1668 # Cross-Origin-Opener-Policy header will be loaded in a separate process.
1669 - name: browser.tabs.remote.useCrossOriginOpenerPolicy
1670 type: RelaxedAtomicBool
1674 # When this pref is enabled then we use a separate content process for
1675 # top-level load of file:// URIs
1676 - name: browser.tabs.remote.separateFileUriProcess
1677 type: RelaxedAtomicBool
1678 #if !defined(ANDROID)
1685 # Pref to control whether we use a separate privileged content process
1686 # for certain mozilla webpages (which are listed in the pref
1687 # browser.tabs.remote.separatedMozillaDomains).
1688 - name: browser.tabs.remote.separatePrivilegedMozillaWebContentProcess
1693 # Whether or not process selection for subframes will prefer re-using an
1694 # existing content process over creating a new one. Enabling this pref should
1695 # reduce the number of processes allocated for non-first-party domains if
1696 # dom.ipc.processCount.webIsolated > 1.
1697 - name: browser.tabs.remote.subframesPreferUsed
1702 # When this pref is enabled, opaque response is only allowed to enter the
1703 # content process if it's a response for media (audio, image, video), CSS, or
1705 - name: browser.opaqueResponseBlocking
1706 type: RelaxedAtomicBool
1707 #if defined(ANDROID)
1710 value: @IS_EARLY_BETA_OR_EARLIER@
1714 # When this pref is enabled, the JS validator will be enabled for
1716 - name: browser.opaqueResponseBlocking.javascriptValidator
1718 value: @IS_EARLY_BETA_OR_EARLIER@
1721 # This pref controls how filtering of opaque responses for calls to `Window.fetch`.
1722 # (and similar) is performed in the parent process. This is intended to make sure
1723 # that data that would be filtered in a content process never actually reaches that
1725 # See https://fetch.spec.whatwg.org/#concept-filtered-response-opaque
1726 # 0) Don't filter in the parent process at all, and let content processes handle
1727 # opaque filtering. Regardless of if ORB is enabled or not. N.B. that if ORB
1728 # is enabled opaque responses will be blocked.
1729 # 1) If ORB is enabled, in the parent process, filter the responses that ORB allows.
1730 # N.B. any responses ORB doesn't allow will not send data to a content process
1731 # since they will return a NetworkError. If the request is allowed by ORB, the
1732 # internal response will be intact and sent to the content process as is.
1733 # 2) If ORB is enabled, in the parent process, filter the responses that ORB blocks,
1734 # when they were issued by `Window.fetch` (and similar).
1735 # 3) Filter all responses in the parent, regardless of if ORB is enabled or not.
1736 # This means that opaque responses coming from `Window.fetch` won't even be
1737 # considered for being blocked by ORB.
1738 - name: browser.opaqueResponseBlocking.filterFetchResponse
1742 do_not_use_directly: true
1744 # This pref controls how exceptions to opaque response blocking for the media MIME types
1745 # `audio/*` and `video/*` are handled. This is because step 8 in the spec that performs
1746 # audio or video type pattern matching cannot handle certain MIME types (yet).
1747 # See https://whatpr.org/fetch/1442.html#orb-algorithm
1749 # 1) Some exceptions, explicitly hard coded in `IsOpaqueSafeListedSpecBreakingMIMEType`
1750 # 2) Allow all MIME types beginning with `audio/*` or `video/*`.
1751 - name: browser.opaqueResponseBlocking.mediaExceptionsStrategy
1755 do_not_use_directly: true
1757 # When this pref is enabled, <object> and <embed> elements will create
1758 # synthetic documents when the resource type they're loading is an image.
1759 - name: browser.opaqueResponseBlocking.syntheticBrowsingContext
1764 # When this pref is enabled, <object> and <embed> elements will filter the
1765 # browsing contexts created for the synthetic browsing contexts for the
1766 # synthetic documents when browser.opaqueResponseBlocking.syntheticBrowsingContext
1767 # is enabled from `Window.frames`, `Window.length` and named targeting.
1768 - name: browser.opaqueResponseBlocking.syntheticBrowsingContext.filter
1772 do_not_use_directly: true
1774 # When true, zooming will be enabled on all sites, even ones that declare
1776 - name: browser.ui.zoom.force-user-scalable
1777 type: RelaxedAtomicBool
1781 - name: browser.underline_anchors
1786 - name: browser.viewport.desktopWidth
1787 type: RelaxedAtomicInt32
1791 - name: browser.visited_color
1796 # If you change this, you probably also want to change
1797 # nsXPLookAndFeel::GenericDarkColor for MozNativevisitedhyperlinktext.
1798 - name: browser.visited_color.dark
1803 # When true, soft reloads (including location.reload())
1804 # will only froce validate the top level document, subresources will
1805 # be loaded normally as-if users normally navigated to the page.
1806 - name: browser.soft_reload.only_force_validate_top_level_document
1811 # Whether or not to save and restore zoom levels on a per-site basis.
1812 - name: browser.zoom.siteSpecific
1814 value: @IS_NOT_ANDROID@
1817 #---------------------------------------------------------------------------
1818 # Prefs starting with "canvas."
1819 #---------------------------------------------------------------------------
1821 # Is support for CanvasRenderingContext2D's createConicGradient API enabled?
1822 - name: canvas.createConicGradient.enabled
1823 type: RelaxedAtomicBool
1827 #---------------------------------------------------------------------------
1828 # Prefs starting with "channelclassifier."
1829 #---------------------------------------------------------------------------
1831 - name: channelclassifier.allowlist_example
1836 #---------------------------------------------------------------------------
1837 # Prefs starting with "clipboard."
1838 #---------------------------------------------------------------------------
1840 # Clipboard behavior.
1841 - name: clipboard.autocopy
1843 #if !defined(ANDROID) && !defined(XP_MACOSX) && defined(XP_UNIX)
1851 # allow to copy clipboard data to Clipboard History/Cloud
1852 # (used on sensitive data in about:logins and Private Browsing)
1853 - name: clipboard.copyPrivateDataToClipboardCloudOrHistory
1859 #---------------------------------------------------------------------------
1860 # Prefs starting with "consoleservice."
1861 #---------------------------------------------------------------------------
1863 #if defined(ANDROID)
1864 # Disable sending console to logcat on release builds.
1865 - name: consoleservice.logcat
1866 type: RelaxedAtomicBool
1867 value: @IS_NOT_RELEASE_OR_BETA@
1871 #---------------------------------------------------------------------------
1872 # Prefs starting with "content."
1873 #---------------------------------------------------------------------------
1875 - name: content.cors.disable
1880 # Back off timer notification after count.
1882 - name: content.notify.backoffcount
1887 # Notification interval in microseconds.
1888 # The notification interval has a dramatic effect on how long it takes to
1889 # initially display content for slow connections. The current value
1890 # provides good incremental display of content without causing an increase
1891 # in page load time. If this value is set below 1/10 of a second it starts
1892 # to impact page load performance.
1893 # See bugzilla bug 72138 for more info.
1894 - name: content.notify.interval
1899 # Do we notify based on time?
1900 - name: content.notify.ontimer
1905 # How many times to deflect in interactive mode.
1906 - name: content.sink.interactive_deflect_count
1911 # How many times to deflect in perf mode.
1912 - name: content.sink.perf_deflect_count
1917 # Parse mode for handling pending events.
1918 # 0 = don't check for pending events
1919 # 1 = don't deflect if there are pending events
1920 # 2 = bail if there are pending events
1921 - name: content.sink.pending_event_mode
1930 # How often to probe for pending events. 1 = every token.
1931 - name: content.sink.event_probe_rate
1936 # How long to stay off the event loop in interactive mode (microseconds).
1937 - name: content.sink.interactive_parse_time
1942 # How long to stay off the event loop in perf mode.
1943 - name: content.sink.perf_parse_time
1948 # How long to be in interactive mode after an event.
1949 - name: content.sink.interactive_time
1954 # How long to stay in perf mode after initial loading.
1955 - name: content.sink.initial_perf_time
1960 # Should we switch between perf-mode and interactive-mode?
1962 # 1 = Interactive mode
1964 - name: content.sink.enable_perf_mode
1969 #---------------------------------------------------------------------------
1970 # Prefs starting with "converter."
1971 #---------------------------------------------------------------------------
1973 # Whether we include ruby annotation in the text despite whether it
1974 # is requested. This was true because we didn't explicitly strip out
1975 # annotations. Set false by default to provide a better behavior, but
1976 # we want to be able to pref-off it if user doesn't like it.
1977 - name: converter.html2txt.always_include_ruby
1982 #---------------------------------------------------------------------------
1983 # Prefs starting with "cookiebanners."
1984 #---------------------------------------------------------------------------
1986 # Controls the cookie banner handling mode in normal browsing.
1987 # 0: Disables all cookie banner handling.
1988 # 1: Reject-all if possible, otherwise do nothing.
1989 # 2: Reject-all if possible, otherwise accept-all.
1990 - name: cookiebanners.service.mode
1995 # When set to true, cookie banners are detected and detection events are
1996 # dispatched, but they will not be handled. Requires the service to be enabled
1997 # for the desired mode via pref cookiebanners.service.mode*
1998 - name: cookiebanners.service.detectOnly
2003 # Controls the cookie banner handling mode in private browsing. Same mode
2004 # options as the normal browsing pref above.
2005 - name: cookiebanners.service.mode.privateBrowsing
2010 # Enables use of global CookieBannerRules, which apply to all sites. This is
2011 # used for click rules that can handle common Consent Management Providers
2013 # Enabling this (when the cookie handling feature is enabled) may negatively
2014 # impact site performance since it requires us to run rule-defined query
2015 # selectors for every page.
2016 - name: cookiebanners.service.enableGlobalRules
2021 # Enables the cookie banner cookie injector. The cookie banner cookie injector
2022 # depends on the `cookiebanners.service.mode` pref above.
2023 - name: cookiebanners.cookieInjector.enabled
2029 # By default, how many seconds in the future cookies should expire after they
2030 # have been injected. Defaults to 12 months. Individual cookie rules may
2032 - name: cookiebanners.cookieInjector.defaultExpiryRelative
2037 # Enables the cookie banner auto clicking. The cookie banner auto clicking
2038 # depends on the `cookiebanners.service.mode` pref above.
2039 - name: cookiebanners.bannerClicking.enabled
2044 # The maximum time in ms for detecting banner and button elements for cookie
2045 # banner auto clicking.
2046 - name: cookiebanners.bannerClicking.timeout
2051 # Whether or not banner auto clicking test mode is enabled.
2052 - name: cookiebanners.bannerClicking.testing
2057 #---------------------------------------------------------------------------
2058 # Prefs starting with "datareporting."
2059 #---------------------------------------------------------------------------
2061 - name: datareporting.healthreport.uploadEnabled
2062 type: RelaxedAtomicBool
2067 #---------------------------------------------------------------------------
2068 # Prefs starting with "device."
2069 #---------------------------------------------------------------------------
2071 # Is support for the device sensors API enabled?
2072 - name: device.sensors.enabled
2077 # KaiOS-only, see https://bugzilla.mozilla.org/show_bug.cgi?id=1699707#c10
2078 - name: device.sensors.ambientLight.enabled
2083 - name: device.sensors.motion.enabled
2088 - name: device.sensors.orientation.enabled
2093 # KaiOS-only, see https://bugzilla.mozilla.org/show_bug.cgi?id=1699707#c10
2094 - name: device.sensors.proximity.enabled
2099 - name: device.sensors.test.events
2104 #---------------------------------------------------------------------------
2105 # Prefs starting with "devtools."
2106 #---------------------------------------------------------------------------
2108 - name: devtools.console.stdout.chrome
2109 type: RelaxedAtomicBool
2110 value: @IS_NOT_MOZILLA_OFFICIAL@
2113 - name: devtools.console.stdout.content
2114 type: RelaxedAtomicBool
2118 - name: devtools.toolbox.force-chrome-prefs
2119 type: RelaxedAtomicBool
2123 #---------------------------------------------------------------------------
2124 # Prefs starting with "docshell."
2125 #---------------------------------------------------------------------------
2127 # Used to indicate whether session history listeners should be notified
2128 # about content viewer eviction. Used only for testing.
2129 - name: docshell.shistory.testing.bfevict
2134 # If true, pages with an opener won't be bfcached.
2135 - name: docshell.shistory.bfcache.require_no_opener
2140 # If true, page with beforeunload or unload event listeners can be bfcached.
2141 - name: docshell.shistory.bfcache.allow_unload_listeners
2146 # If true, page with beforeunload event listeners can be bfcached.
2147 # This only works when sessionHistoryInParent is enabled.
2148 - name: docshell.shistory.bfcache.ship_allow_beforeunload_listeners
2153 #---------------------------------------------------------------------------
2154 # Prefs starting with "dom."
2155 #---------------------------------------------------------------------------
2158 - name: dom.allow_cut_copy
2163 # Checks if offscreen animation throttling is enabled.
2164 - name: dom.animations.offscreen-throttling
2169 # Is support for automatically removing replaced filling animations enabled?
2170 - name: dom.animations-api.autoremove.enabled
2175 # Is support for composite operations from the Web Animations API enabled?
2176 - name: dom.animations-api.compositing.enabled
2181 # Is support for the core interfaces of Web Animations API enabled?
2182 - name: dom.animations-api.core.enabled
2187 # Is support for Document.getAnimations() and Element.getAnimations()
2189 - name: dom.animations-api.getAnimations.enabled
2194 # Is support for animations from the Web Animations API without 0%/100%
2195 # keyframes enabled?
2196 - name: dom.animations-api.implicit-keyframes.enabled
2201 # Is support for timelines from the Web Animations API enabled?
2202 - name: dom.animations-api.timelines.enabled
2207 # Synchronize transform animations with geometric animations on the
2209 - name: dom.animations.mainthread-synchronization-with-geometric-animations
2211 value: @IS_NOT_NIGHTLY_BUILD@
2214 # Is support for Navigator.getBattery enabled?
2215 - name: dom.battery.enabled
2220 # Block multiple external protocol URLs in iframes per single event.
2221 - name: dom.block_external_protocol_in_iframes
2226 # Block sandboxed BrowsingContexts from navigating to external protocols.
2227 - name: dom.block_external_protocol_navigation_from_sandbox
2232 # Block Insecure downloads from Secure Origins
2233 - name: dom.block_download_insecure
2238 # Block multiple window.open() per single event.
2239 - name: dom.block_multiple_popups
2244 # The maximum number of popup that is allowed to be opened. Set to -1 for no
2246 - name: dom.popup_maximum
2251 # Whether window.location.reload() and window.history.go(0) should be blocked
2252 # when called directly from a window resize event handler.
2254 # This used to be necessary long ago to prevent terrible UX when using stuff
2255 # like TypeAheadFind (bug 258917), but it also causes compat issues on mobile
2257 - name: dom.block_reload_from_resize_event_handler
2262 # Exposes window.caches and skips SecureContext check.
2263 # dom.serviceWorkers.testing.enabled also includes the same effect.
2264 - name: dom.caches.testing.enabled
2265 type: RelaxedAtomicBool
2269 # Disable capture attribute for input elements; only supported on GeckoView.
2270 - name: dom.capture.enabled
2275 # HTML specification says the level should be 5
2276 # https://html.spec.whatwg.org/#timer-initialisation-steps
2277 - name: dom.clamp.timeout.nesting.level
2282 # Disable custom highlight API; implementation pending.
2283 - name: dom.customHighlightAPI.enabled
2284 type: RelaxedAtomicBool
2285 value: @IS_NIGHTLY_BUILD@
2289 # Allow control characters appear in composition string.
2290 # When this is false, control characters except
2291 # CHARACTER TABULATION (horizontal tab) are removed from
2292 # both composition string and data attribute of compositionupdate
2293 # and compositionend events.
2294 - name: dom.compositionevent.allow_control_characters
2299 # Compression Streams (CompressionStream/DecompressionStream)
2300 - name: dom.compression_streams.enabled
2301 type: RelaxedAtomicBool
2305 # Is support for CSSPseudoElement enabled?
2306 - name: dom.css_pseudo_element.enabled
2311 # After how many seconds we allow external protocol URLs in iframe when not in
2313 - name: dom.delay.block_external_protocol_in_iframes
2315 value: 10 # in seconds
2318 # Whether the above pref has any effect at all.
2319 # Make sure cases like bug 1795380 work before trying to turn this off. See
2320 # bug 1680721 for some other context that might be relevant.
2321 - name: dom.delay.block_external_protocol_in_iframes.enabled
2326 # Only propagate the open window click permission if the setTimeout() is equal
2327 # to or less than this value.
2328 - name: dom.disable_open_click_delay
2333 - name: dom.disable_open_during_load
2338 - name: dom.disable_beforeunload
2343 - name: dom.require_user_interaction_for_beforeunload
2348 # Enable/disable Gecko specific edit commands
2349 - name: dom.document.edit_command.contentReadOnly.enabled
2351 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
2354 - name: dom.document.edit_command.insertBrOnReturn.enabled
2356 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
2359 # If set this to true, `Document.execCommand` may be performed nestedly.
2360 # Otherwise, nested calls just return false.
2361 - name: dom.document.exec_command.nested_calls_allowed
2366 - name: dom.enable_window_print
2371 # Only intended for fuzzing purposes, this will break mozPrintCallback, etc.
2372 - name: dom.window_print.fuzzing.block_while_printing
2377 - name: dom.element.transform-getters.enabled
2382 # Whether the popover attribute implementation is enabled,
2383 # see https://html.spec.whatwg.org/#the-popover-attribute
2384 - name: dom.element.popover.enabled
2385 type: RelaxedAtomicBool
2390 # Controls whether the "focus fixup rule" is enabled. Subject to minor changes
2391 # based on https://github.com/whatwg/html/pull/8392 and
2392 # https://github.com/whatwg/html/issues/8225
2393 - name: dom.focus.fixup
2398 - name: dom.mouse_capture.enabled
2403 # Is support for Performance.mozMemory enabled?
2404 - name: dom.enable_memory_stats
2409 # Enable Performance API
2410 # Whether nonzero values can be returned from performance.timing.*
2411 - name: dom.enable_performance
2412 type: RelaxedAtomicBool
2416 # Enable Performance Observer API
2417 - name: dom.enable_performance_observer
2418 type: RelaxedAtomicBool
2422 # Whether resource timing will be gathered and returned by performance.GetEntries*
2423 - name: dom.enable_resource_timing
2428 # Whether event timing will be gathered and returned by performance observer*
2429 - name: dom.enable_event_timing
2430 type: RelaxedAtomicBool
2434 # Whether the LargestContentfulPaint API will be gathered and returned by performance observer*
2435 - name: dom.enable_largest_contentful_paint
2436 type: RelaxedAtomicBool
2440 # Whether performance.GetEntries* will contain an entry for the active document
2441 - name: dom.enable_performance_navigation_timing
2446 # Whether the scheduler interface will be exposed
2447 - name: dom.enable_web_task_scheduling
2448 type: RelaxedAtomicBool
2449 value: @IS_NIGHTLY_BUILD@
2452 # If this is true, it's allowed to fire "cut", "copy" and "paste" events.
2453 # Additionally, "input" events may expose clipboard content when inputType
2454 # is "insertFromPaste" or something.
2455 - name: dom.event.clipboardevents.enabled
2460 # Whether Shift+Right click force-opens the context menu
2461 - name: dom.event.contextmenu.shift_suppresses_event
2466 # Whether wheel listeners are passive by default.
2467 - name: dom.event.default_to_passive_wheel_listeners
2472 - name: dom.event.dragexit.enabled
2474 value: @IS_NOT_NIGHTLY_BUILD@
2477 # If this pref is set to true, typing a surrogate pair causes one `keypress`
2478 # event whose `charCode` stores the unicode code point over 0xFFFF. This is
2479 # compatible with Safari and Chrome in non-Windows platforms.
2480 # Otherwise, typing a surrogate pair causes two `keypress` events. This is
2481 # compatible with legacy web apps which does
2482 # `String.fromCharCode(event.charCode)`.
2483 - name: dom.event.keypress.dispatch_once_per_surrogate_pair
2488 # This is meaningful only when `dispatch_once_per_surrogate_pair` is false.
2489 # If this pref is set to true, `.key` of the first `keypress` is set to the
2490 # high-surrogate and `.key` of the other is set to the low-surrogate.
2491 # Therefore, setting this exposing ill-formed UTF-16 string with `.key`.
2492 # (And also `InputEvent.data` if pressed in an editable element.)
2493 # Otherwise, `.key` of the first `keypress` is set to the surrogate pair, and
2494 # `.key` of the second `keypress` is set to the empty string.
2495 - name: dom.event.keypress.key.allow_lone_surrogate
2497 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
2500 # Whether wheel event target's should be grouped. When enabled, all wheel
2501 # events that occur in a given wheel transaction have the same event target.
2502 - name: dom.event.wheel-event-groups.enabled
2507 # Whether WheelEvent should return pixels instead of lines for
2508 # WheelEvent.deltaX/Y/Z, when deltaMode hasn't been checked.
2510 # Other browsers don't use line deltas and websites forget to check for it, see
2512 - name: dom.event.wheel-deltaMode-lines.disabled
2517 # Mostly for debugging. Whether we should do the same as
2518 # dom.event.wheel-deltaMode-lines.disabled, but unconditionally rather than
2519 # only when deltaMode hasn't been checked.
2520 - name: dom.event.wheel-deltaMode-lines.always-disabled
2525 # A blocklist (list of domains) for the
2526 # dom.event.wheel-deltaMode-lines.disabled behavior, in case potential
2527 # unforeseen problems with it arrive.
2528 - name: dom.event.wheel-deltaMode-lines.always-enabled
2533 #if defined(XP_MACOSX)
2534 # Whether to disable treating ctrl click as right click
2535 - name: dom.event.treat_ctrl_click_as_right_click.disabled
2537 value: @IS_NIGHTLY_BUILD@
2541 # Whether .offset{X,Y} for events targeted at SVG nodes returns bounds relative
2543 - name: dom.events.offset-in-svg-relative-to-svg-root
2548 # Disable clipboard.read(), clipboard.write() and ClipboardItem by default
2549 - name: dom.events.asyncClipboard.clipboardItem
2554 # Skips checking permission and user activation when accessing the clipboard.
2555 # Should only be enabled in tests.
2556 # Access with Clipboard::IsTestingPrefEnabled().
2557 - name: dom.events.testing.asyncClipboard
2561 do_not_use_directly: true
2563 # Control whether `navigator.clipboard.readText()` is exposed to content.
2564 # Currently not supported by GeckoView, see bug 1776829.
2565 - name: dom.events.asyncClipboard.readText
2569 do_not_use_directly: true
2571 # Guard for bug 1731504, in case fix breaks more websites
2572 # If true, event is first captured then bubbled on target element
2573 - name: dom.events.phases.correctOrderOnTarget
2574 type: RelaxedAtomicBool
2575 value: @IS_NIGHTLY_BUILD@
2578 # This pref controls whether or not the `protected` dataTransfer state is
2579 # enabled. If the `protected` dataTransfer stae is disabled, then the
2580 # DataTransfer will be read-only whenever it should be protected, and will not
2581 # be disconnected after a drag event is completed.
2582 - name: dom.events.dataTransfer.protected.enabled
2587 # Whether to hide normal files (i.e. non-images) in dataTransfer inside
2588 # the content process.
2589 - name: dom.events.dataTransfer.mozFile.enabled
2594 - name: dom.events.dataTransfer.imageAsFile.enabled
2599 # User interaction timer interval, in ms
2600 - name: dom.events.user_interaction_interval
2605 # Whether to try to compress touchmove events on IPC layer.
2606 - name: dom.events.compress.touchmove
2611 # In addition to the above IPC layer compresison, allow touchmove
2612 # events to be further coalesced in the child side after they
2614 - name: dom.events.coalesce.touchmove
2619 # Allow mousemove events to be coalesced in the child side after they are sent.
2620 - name: dom.events.coalesce.mousemove
2625 # Whether to expose test interfaces of various sorts
2626 - name: dom.expose_test_interfaces
2631 - name: dom.fetchObserver.enabled
2632 type: RelaxedAtomicBool
2636 # Allow the content process to create a File from a path. This is allowed just
2637 # on parent process, on 'file' Content process, or for testing.
2638 - name: dom.file.createInChild
2639 type: RelaxedAtomicBool
2643 # Support @autocomplete values for form autofill feature.
2644 - name: dom.forms.autocomplete.formautofill
2649 # Only trusted submit event could trigger form submission.
2650 - name: dom.forms.submit.trusted_event_only
2655 # This pref just controls whether we format the number with grouping separator
2656 # characters when the internal value is set or updated. It does not stop the
2657 # user from typing in a number and using grouping separators.
2658 - name: dom.forms.number.grouping
2663 # Whether the Gamepad API is enabled
2664 - name: dom.gamepad.enabled
2669 # Is Gamepad Extension API enabled?
2670 - name: dom.gamepad.extensions.enabled
2675 # Is LightIndicator API enabled in Gamepad Extension API?
2676 - name: dom.gamepad.extensions.lightindicator
2681 # Is MultiTouch API enabled in Gamepad Extension API?
2682 - name: dom.gamepad.extensions.multitouch
2687 # Is Gamepad vibrate haptic feedback function enabled?
2688 - name: dom.gamepad.haptic_feedback.enabled
2693 - name: dom.gamepad.non_standard_events.enabled
2695 value: @IS_NOT_RELEASE_OR_BETA@
2698 - name: dom.gamepad.test.enabled
2699 type: RelaxedAtomicBool
2703 # W3C draft ImageCapture API
2704 - name: dom.imagecapture.enabled
2709 # <img loading="lazy">
2711 # See https://github.com/whatwg/html/pull/3752
2712 - name: dom.image-lazy-loading.enabled
2713 type: RelaxedAtomicBool
2717 # The root margin for image lazy loading, defined as four (value, percentage)
2719 - name: dom.image-lazy-loading.root-margin.top
2724 - name: dom.image-lazy-loading.root-margin.top.percentage
2729 - name: dom.image-lazy-loading.root-margin.bottom
2734 - name: dom.image-lazy-loading.root-margin.bottom.percentage
2739 - name: dom.image-lazy-loading.root-margin.left
2744 - name: dom.image-lazy-loading.root-margin.left.percentage
2749 - name: dom.image-lazy-loading.root-margin.right
2754 - name: dom.image-lazy-loading.root-margin.right.percentage
2759 # Enable indexedDB in private browsing mode with encryption
2760 - name: dom.indexedDB.privateBrowsing.enabled
2761 type: RelaxedAtomicBool
2765 # Whether or not indexedDB test mode is enabled.
2766 - name: dom.indexedDB.testing
2767 type: RelaxedAtomicBool
2771 # Whether or not indexedDB experimental features are enabled.
2772 - name: dom.indexedDB.experimental
2773 type: RelaxedAtomicBool
2777 # Whether or not indexedDB preprocessing is enabled.
2778 - name: dom.indexedDB.preprocessing
2779 type: RelaxedAtomicBool
2783 # Whether innerWidth / innerHeight return rounded or fractional sizes.
2785 # NOTE(emilio): Fractional sizes are not web-compatible, see the regressions
2786 # from bug 1676843, but we want to expose the fractional sizes (probably in
2787 # another API) one way or another, see [1], so we're keeping the code for the
2790 # [1]: https://github.com/w3c/csswg-drafts/issues/5260
2791 - name: dom.innerSize.rounded
2796 # Whether we conform to Input Events Level 1 or Input Events Level 2.
2797 # true: conforming to Level 1
2798 # false: conforming to Level 2
2799 - name: dom.input_events.conform_to_level_1
2804 # Whether we allow BrowsingContextGroup to suspend input events
2805 - name: dom.input_events.canSuspendInBCG.enabled
2810 # The maximum time (milliseconds) we reserve for handling input events in each
2812 - name: dom.input_event_queue.duration.max
2817 # Enable not moving the cursor to end when a text input or textarea has .value
2818 # set to the value it already has. By default, enabled.
2819 - name: dom.input.skip_cursor_move_for_same_value_set
2824 # How often to check for CPOW timeouts (ms). CPOWs are only timed
2825 # out by the hang monitor.
2826 - name: dom.ipc.cpow.timeout
2831 #ifdef MOZ_ENABLE_FORKSERVER
2832 - name: dom.ipc.forkserver.enable
2838 #ifdef MOZ_WIDGET_GTK
2840 # Avoid the use of GTK in content processes if possible, by running
2841 # them in headless mode, to conserve resources (e.g., connections to
2842 # the X server). See the usage in `ContentParent.cpp` for the full
2843 # definition of "if possible".
2845 # This does not affect sandbox policies; content processes may still
2846 # dynamically connect to the display server for, e.g., WebGL.
2847 - name: dom.ipc.avoid-gtk
2853 # Whether or not to collect a paired minidump when force-killing a
2855 - name: dom.ipc.tabs.createKillHardCrashReports
2857 value: @IS_NOT_RELEASE_OR_BETA@
2860 # Enable e10s hang monitoring (slow script checking and plugin hang detection).
2861 - name: dom.ipc.processHangMonitor
2866 # Whether we report such process hangs
2867 - name: dom.ipc.reportProcessHangs
2868 type: RelaxedAtomicBool
2869 # Don't report hangs in DEBUG builds. They're too slow and often a
2870 # debugger is attached.
2878 # Process launch delay (in milliseconds).
2879 - name: dom.ipc.processPrelaunch.delayMs
2881 # This number is fairly arbitrary ... the intention is to put off
2882 # launching another app process until the last one has finished
2883 # loading its content, to reduce CPU/memory/IO contention.
2887 - name: dom.ipc.processPrelaunch.startupDelayMs
2889 # delay starting content processes for a short time after browser start
2890 # to provide time for the UI to come up
2894 # Process preallocation cache
2895 # Only used in fission; in e10s we use 1 always
2896 - name: dom.ipc.processPrelaunch.fission.number
2901 # Limit preallocated processes below this memory size (in MB)
2902 - name: dom.ipc.processPrelaunch.lowmem_mb
2907 - name: dom.ipc.processPriorityManager.enabled
2912 - name: dom.ipc.processPriorityManager.testMode
2917 - name: dom.ipc.processPriorityManager.backgroundPerceivableGracePeriodMS
2919 #if defined(MOZ_WIDGET_ANDROID) && defined(NIGHTLY_BUILD)
2926 - name: dom.ipc.processPriorityManager.backgroundGracePeriodMS
2928 #if defined(MOZ_WIDGET_ANDROID) && defined(NIGHTLY_BUILD)
2936 - name: dom.ipc.processPriorityManager.backgroundUsesEcoQoS
2942 # Is support for HTMLElement.autocapitalize enabled?
2943 - name: dom.forms.autocapitalize
2948 # Support for input type=month, type=week. By default, disabled.
2949 - name: dom.forms.datetime.others
2954 # Is support for HTMLElement.inputMode enabled?
2955 - name: dom.forms.inputmode
2960 - name: dom.forms.always_allow_pointer_events.enabled
2962 value: @IS_NIGHTLY_BUILD@
2965 # Is support for key events and focus events on disabled elements enabled?
2966 - name: dom.forms.always_allow_key_and_focus_events.enabled
2968 value: @IS_NIGHTLY_BUILD@
2971 # Whether to disable only the descendants or the parent fieldset element too
2972 # Note that this still allows it to be selected by `:disable`.
2973 - name: dom.forms.fieldset_disable_only_descendants.enabled
2975 value: @IS_NIGHTLY_BUILD@
2978 # Whether to allow or disallow web apps to cancel `beforeinput` events caused
2979 # by MozEditableElement#setUserInput() which is used by autocomplete, autofill
2980 # and password manager.
2981 - name: dom.input_event.allow_to_cancel_set_user_input
2986 # How long a content process can take before closing its IPC channel
2987 # after shutdown is initiated. If the process exceeds the timeout,
2988 # we fear the worst and kill it.
2989 - name: dom.ipc.tabs.shutdownTimeoutSecs
2990 type: RelaxedAtomicUint32
2991 #if !defined(DEBUG) && !defined(MOZ_ASAN) && !defined(MOZ_VALGRIND) && !defined(MOZ_TSAN)
2998 # Whether a native event loop should be used in the content process.
2999 - name: dom.ipc.useNativeEventProcessing.content
3000 type: RelaxedAtomicBool
3001 #if defined(XP_WIN) || defined(XP_MACOSX)
3008 # If this is true, TextEventDispatcher dispatches keydown and keyup events
3009 # even during composition (keypress events are never fired during composition
3010 # even if this is true).
3011 - name: dom.keyboardevent.dispatch_during_composition
3016 # Enable/disable KeyboardEvent.initKeyEvent function
3017 - name: dom.keyboardevent.init_key_event.enabled
3022 # Enable/disable KeyboardEvent.initKeyEvent function in addons even if it's
3024 - name: dom.keyboardevent.init_key_event.enabled_in_addons
3026 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
3029 # If this is true, keypress events for non-printable keys are dispatched only
3030 # for event listeners of the system event group in web content.
3031 - name: dom.keyboardevent.keypress.dispatch_non_printable_keys_only_system_group_in_content
3036 # If this is true, "keypress" event's keyCode value and charCode value always
3037 # become same if the event is not created/initialized by JS.
3038 - name: dom.keyboardevent.keypress.set_keycode_and_charcode_to_same_value
3043 # Whether "W3C Web Manifest" processing is enabled
3044 - name: dom.manifest.enabled
3049 # Enable mapped array buffer by default.
3050 - name: dom.mapped_arraybuffer.enabled
3055 # Autoplay Policy Detection https://w3c.github.io/autoplay/
3056 - name: dom.media.autoplay-policy-detection.enabled
3057 type: RelaxedAtomicBool
3062 - name: dom.media.mediasession.enabled
3068 - name: dom.media.webcodecs.enabled
3069 type: RelaxedAtomicBool
3070 value: @IS_NIGHTLY_BUILD@
3073 # Number of seconds of very quiet or silent audio before considering the audio
3075 - name: dom.media.silence_duration_for_audibility
3080 # Inform mozjemalloc that the foreground content processes can keep more dirty
3082 - name: dom.memory.foreground_content_processes_have_larger_page_cache
3087 # Enable meta-viewport support in remote APZ-enabled frames.
3088 - name: dom.meta-viewport.enabled
3089 type: RelaxedAtomicBool
3093 # Timeout clamp in ms for timeouts we clamp.
3094 - name: dom.min_timeout_value
3095 type: RelaxedAtomicInt32
3099 # Timeout clamp in ms for background windows.
3100 - name: dom.min_background_timeout_value
3105 # Timeout clamp in ms for background windows when throttling isn't enabled.
3106 - name: dom.min_background_timeout_value_without_budget_throttling
3111 # Are missing-property use counters for certain DOM attributes enabled?
3112 - name: dom.missing_prop_counters.enabled
3117 # Is support for import maps (<script type="importmap">) enabled for content?
3118 - name: dom.importMaps.enabled
3123 # Whether we disable triggering mutation events for changes to style
3124 # attribute via CSSOM.
3125 # NOTE: This preference is used in unit tests. If it is removed or its default
3126 # value changes, please update test_sharedMap_static_prefs.js accordingly.
3127 - name: dom.mutation-events.cssom.disabled
3132 # Limit of location change caused by content scripts in a time span per
3133 # BrowsingContext. This includes calls to History and Location APIs.
3134 - name: dom.navigation.locationChangeRateLimit.count
3139 # Time span in seconds for location change rate limit.
3140 - name: dom.navigation.locationChangeRateLimit.timespan
3145 # Network Information API
3146 # This feature is not available on Firefox desktop. It exposes too much
3147 # user information. Let's be consistent and disable it on Android.
3148 # But let's keep it around in case it becomes necessary for webcompat
3150 # https://bugzilla.mozilla.org/show_bug.cgi?id=1637922
3151 - name: dom.netinfo.enabled
3152 type: RelaxedAtomicBool
3156 # Whether we should open noopener links in a new process.
3157 - name: dom.noopener.newprocess.enabled
3162 # Whether we shouldn't show an error page for unknown protocols (and should
3163 # show a console warning instead).
3164 - name: dom.no_unknown_protocol_error.enabled
3169 # Whether origin trials are enabled.
3170 - name: dom.origin-trials.enabled
3175 # Whether we use the test key to verify tokens.
3176 - name: dom.origin-trials.test-key.enabled
3181 # Origin trial state for "TestTrial".
3182 # 0: normal, 1: always-enabled, 2: always-disabled
3183 - name: dom.origin-trials.test-trial.state
3184 type: RelaxedAtomicInt32
3188 # Origin trial state for COEP: Credentialless.
3189 # 0: normal, 1: always-enabled, 2: always-disabled
3190 - name: dom.origin-trials.coep-credentialless.state
3191 type: RelaxedAtomicInt32
3195 # Is support for Window.paintWorklet enabled?
3196 - name: dom.paintWorklet.enabled
3201 # Enable/disable the PaymentRequest API
3202 - name: dom.payments.request.enabled
3207 # Whether a user gesture is required to call PaymentRequest.prototype.show().
3208 - name: dom.payments.request.user_interaction_required
3213 # Time in milliseconds for PaymentResponse to wait for
3214 # the Web page to call complete().
3215 - name: dom.payments.response.timeout
3220 # Enable printing performance marks/measures to log
3221 - name: dom.performance.enable_user_timing_logging
3222 type: RelaxedAtomicBool
3226 # Enable notification of performance timing
3227 - name: dom.performance.enable_notify_performance_timing
3232 # Is support for PerformanceTiming.timeToContentfulPaint enabled?
3233 - name: dom.performance.time_to_contentful_paint.enabled
3238 # Is support for PerformanceTiming.timeToDOMContentFlushed enabled?
3239 - name: dom.performance.time_to_dom_content_flushed.enabled
3244 # Is support for PerformanceTiming.timeToFirstInteractive enabled?
3245 - name: dom.performance.time_to_first_interactive.enabled
3250 # Is support for PerformanceTiming.timeToNonBlankPaint enabled?
3251 - name: dom.performance.time_to_non_blank_paint.enabled
3256 # Is support for Permissions.revoke enabled?
3257 - name: dom.permissions.revoke.enable
3262 # This enables width and height attributes and map these attributes to img
3264 - name: dom.picture_source_dimension_attributes.enabled
3269 # Is support for Element.requestPointerLock enabled?
3270 # This is added for accessibility purpose. When user has no way to exit
3271 # pointer lock (e.g. no keyboard available), they can use this pref to
3272 # disable the Pointer Lock API altogether.
3273 - name: dom.pointer-lock.enabled
3278 # re-SAB: Whether to allow postMessage of a SharedArrayBuffer if various
3279 # preconditions related to COOP and COEP are met
3280 - name: dom.postMessage.sharedArrayBuffer.withCOOP_COEP
3285 # Overridden in all.js on RELEASE_OR_BETA in order to add the locked attribute.
3286 - name: dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled
3287 type: RelaxedAtomicBool
3291 # This currently only affects XHTML. For XUL the cache is always allowed.
3292 - name: dom.prototype_document_cache.enabled
3298 - name: dom.push.enabled
3299 type: RelaxedAtomicBool
3303 # This enables the SVGPathSeg APIs
3304 - name: dom.svg.pathSeg.enabled
3309 # Preference that is primarily used for testing of problematic file paths.
3310 # It can also be used for switching between different storage directories, but
3311 # such feature is not officially supported.
3312 - name: dom.quotaManager.storageName
3317 # An upper limit for the "age" of an origin. Any origin which is older than the
3318 # threshold is considered as unaccessed. That doesn't necessarily mean that
3319 # such origins will be immediatelly archived. They will be archived only when
3320 # dom.quotaManager.checkQuotaInfoLoadTime is true and loading of quota info
3321 # takes a long time (dom.quotaManager.longQuotaInfoLoadTimeThresholdMs is used
3322 # to decide what is a long quota info load time).
3323 - name: dom.quotaManager.unaccessedForLongTimeThresholdSec
3324 type: RelaxedAtomicUint32
3325 value: 33696000 # 13 months
3328 # Should we try to load origin information from the cache?
3329 # See bug 1563023 for more details.
3330 - name: dom.quotaManager.loadQuotaFromCache
3331 type: RelaxedAtomicBool
3335 # Should we check build ID as part of the cache validation?
3336 # When enabled, the cache is invalidated on any upgrade (or downgrade),
3337 # ensuring that changes in how quota usage is calculated can't cause
3338 # inconsistencies at the cost of a slower initialization. Currently, this
3339 # should only be set to false in tests using a packaged profile that inherently
3340 # includes a build id different from the building running the tests. In the
3341 # future this may be set to false if we are confident that we have sufficiently
3342 # thorough schema versioning.
3343 - name: dom.quotaManager.caching.checkBuildId
3344 type: RelaxedAtomicBool
3348 # Should we check quota info load time and eventually archive some unaccessed
3349 # origins if loading of quota info takes a long time ?
3350 - name: dom.quotaManager.checkQuotaInfoLoadTime
3351 type: RelaxedAtomicBool
3355 # An upper limit for quota info load time, anything which takes longer than the
3356 # threshold is considered as long quota info load time.
3357 - name: dom.quotaManager.longQuotaInfoLoadTimeThresholdMs
3358 type: RelaxedAtomicUint32
3359 value: 21000 # 21 seconds
3362 # Preference that users can set to override temporary storage smart limit
3364 - name: dom.quotaManager.temporaryStorage.fixedLimit
3365 type: RelaxedAtomicInt32
3369 # A pref that is used to enable testing features.
3370 - name: dom.quotaManager.testing
3371 type: SequentiallyConsistentAtomicBool
3376 # Preference that is used to set nsILocalFileWin::useDOSDevicePathSyntax
3377 # attribute for all local file instances created by QuotaManager and its
3378 # clients. The value of this preference is cached so changing the preference
3379 # during runtime has no effect.
3380 # See bug 1626846 for setting this to false by default.
3381 - name: dom.quotaManager.useDOSDevicePathSyntax
3382 type: RelaxedAtomicBool
3385 do_not_use_directly: true
3387 # Preference that is used to enable the hack for overrriding xFullPathname in
3389 - name: dom.quotaManager.overrideXFullPathname
3390 type: RelaxedAtomicBool
3393 #elif defined(XP_UNIX)
3394 # Preference that is used to enable the overriding of Unix xFullPathname
3395 # implementation in QuotaVFS.
3396 - name: dom.quotaManager.overrideXFullPathnameUnix
3397 type: RelaxedAtomicBool
3402 # How many times we should retry directory removal or renaming if access was
3404 - name: dom.quotaManager.directoryRemovalOrRenaming.maxRetries
3405 type: RelaxedAtomicUint32
3413 # How long we should wait between retries (in milliseconds)?
3414 - name: dom.quotaManager.directoryRemovalOrRenaming.delayMs
3415 type: RelaxedAtomicUint32
3419 #ifdef MOZ_BACKGROUNDTASKS
3420 # Use a Background Task to delete files at shutdown.
3421 - name: dom.quotaManager.backgroundTask.enabled
3424 # Needs to figure out how to prevent bug 1827486.
3432 # Use to control to dump CheckedUnsafePtr creation stack and assignment stacks.
3433 - name: dom.checkedUnsafePtr.dumpStacks.enabled
3434 type: RelaxedAtomicBool
3438 # Determines within what distance of a tick mark, in pixels, dragging an input
3439 # range range will snap the range's value to that tick mark. By default, this is
3440 # half the default width of the range thumb.
3441 - name: dom.range_element.magnet_effect_threshold
3447 - name: dom.reporting.enabled
3448 type: RelaxedAtomicBool
3452 - name: dom.reporting.testing.enabled
3453 type: RelaxedAtomicBool
3457 - name: dom.reporting.featurePolicy.enabled
3458 type: RelaxedAtomicBool
3462 - name: dom.reporting.crash.enabled
3463 type: RelaxedAtomicBool
3467 - name: dom.reporting.header.enabled
3468 type: RelaxedAtomicBool
3472 # In seconds. The timeout to remove not-active report-to endpoints.
3473 - name: dom.reporting.cleanup.timeout
3478 # Any X seconds the reports are dispatched to endpoints.
3479 - name: dom.reporting.delivering.timeout
3484 # How many times the delivering of a report should be tried.
3485 - name: dom.reporting.delivering.maxFailures
3490 # How many reports should be stored in the report queue before being delivered.
3491 - name: dom.reporting.delivering.maxReports
3496 # Enable Screen Orientation lock
3497 - name: dom.screenorientation.allow-lock
3499 value: @IS_NIGHTLY_BUILD@
3502 # Whether to enable the JavaScript start-up cache. This causes one of the first
3503 # execution to record the bytecode of the JavaScript function used, and save it
3504 # in the existing cache entry. On the following loads of the same script, the
3505 # bytecode would be loaded from the cache instead of being generated once more.
3506 - name: dom.script_loader.bytecode_cache.enabled
3511 # Ignore the heuristics of the bytecode cache, and always record on the first
3512 # visit. (used for testing purposes).
3514 # Choose one strategy to use to decide when the bytecode should be encoded and
3515 # saved. The following strategies are available right now:
3516 # * -2 : (reader mode) The bytecode cache would be read, but it would never
3518 # * -1 : (eager mode) The bytecode would be saved as soon as the script is
3519 # seen for the first time, independently of the size or last access
3521 # * 0 : (default) The bytecode would be saved in order to minimize the
3524 # Other values might lead to experimental strategies. For more details, have a
3525 # look at: ScriptLoader::ShouldCacheBytecode function.
3526 - name: dom.script_loader.bytecode_cache.strategy
3531 # Select which parse/delazification strategy should be used while parsing
3532 # scripts off-main-thread. (see CompileOptions.h, DelazificationOption enum)
3534 # 0: On-demand only. Delazification will be triggered only on the main thread
3535 # before the execution of the function.
3537 # 1: Compare on-demand delazification (= 0) with concurrent depth-first
3538 # delazification (= 2).
3540 # 2: Depth-first. Delazify all functions off-thread in the order of appearance
3543 # 3: Large-first. Delazify all functions off-thread starting with the largest
3544 # functions first, and the smallest as the last one to be delazified, where
3545 # the size of function is measured in bytes between the start to the end of
3548 # 255: Parse everything eagerly, from the first parse. All functions are parsed
3549 # at the same time as the top-level of a file.
3550 - name: dom.script_loader.delazification.strategy
3555 # Maximum total size after which the delazification strategy, specified by
3556 # `dom.script_loader.delazification.strategy`, is no longer applied, and the
3557 # on-demand strategy is used by default.
3559 # -1 disable the threshold, and delazification strategy is applied to all
3562 # Default value is 10MB for utf8 scripts.
3563 - name: dom.script_loader.delazification.max_size
3568 # Minimum memory, in GB, required to enable delazification strategy, specified
3569 # by `dom.script_loader.delazification.strategy`. Otherwise, the on-demand
3570 # delazification strategy is used.
3571 - name: dom.script_loader.delazification.min_mem
3576 # Enable speculative off main thread parsing of external scripts as
3577 # soon as they are fetched.
3578 - name: dom.script_loader.external_scripts.speculative_omt_parse.enabled
3583 # Speculatively compile non parser inserted scripts
3584 - name: dom.script_loader.external_scripts.speculate_non_parser_inserted.enabled
3589 # Speculatively compile async scripts
3590 - name: dom.script_loader.external_scripts.speculate_async.enabled
3595 # Speculatively compile link preload scripts
3596 - name: dom.script_loader.external_scripts.speculate_link_preload.enabled
3601 - name: dom.securecontext.allowlist_onions
3606 # This pref enables the featurePolicy header support.
3607 - name: dom.security.featurePolicy.header.enabled
3612 - name: dom.security.featurePolicy.experimental.enabled
3617 # Expose the 'featurePolicy' attribute in document and HTMLIFrameElement
3618 - name: dom.security.featurePolicy.webidl.enabled
3623 # Perform IPC based Principal vetting in ContentParent
3624 - name: dom.security.enforceIPCBasedPrincipalVetting
3625 type: RelaxedAtomicBool
3629 # For testing purposes only: Flipping this pref to true allows
3630 # to skip the allowlist for about: pages and do not ship with a
3631 # CSP and NS_ASSERT right away.
3632 - name: dom.security.skip_about_page_csp_allowlist_and_assert
3633 type: RelaxedAtomicBool
3637 # For testing purposes only: Flipping this pref to true allows
3638 # to skip the assertion that every about page ships with a CSP.
3639 - name: dom.security.skip_about_page_has_csp_assert
3640 type: RelaxedAtomicBool
3644 # For testing purposes only: Flipping this pref to true allows
3645 # to skip the assertion that HTML fragments (e.g. innerHTML) can
3646 # not be used within chrome code or about: pages.
3647 - name: dom.security.skip_html_fragment_assertion
3648 type: RelaxedAtomicBool
3652 # For testing purposes only; Flipping this pref to true allows
3653 # to skip the assertion that remote scripts can not be loaded
3654 # in system privileged contexts.
3655 - name: dom.security.skip_remote_script_assertion_in_system_priv_context
3656 type: RelaxedAtomicBool
3660 # If true, all content requests will get upgraded to HTTPS://
3661 # (some Firefox functionality requests, like OCSP will not be affected)
3662 - name: dom.security.https_only_mode
3663 type: RelaxedAtomicBool
3667 # If true, all content requests in Private Browsing Mode will get
3668 # upgraded to HTTPS://. (If dom.security.https_only_mode is set
3669 # to true then this pref has no effect)
3670 - name: dom.security.https_only_mode_pbm
3671 type: RelaxedAtomicBool
3675 # If true, sends http background request for top-level sites to
3676 # counter long timeouts.
3677 - name: dom.security.https_only_mode_send_http_background_request
3678 type: RelaxedAtomicBool
3682 # Time limit, in milliseconds, before sending the http background
3683 # request for HTTPS-Only and HTTPS-First
3684 - name: dom.security.https_only_fire_http_request_background_timer_ms
3685 type: RelaxedAtomicUint32
3689 # If true, tries to break upgrade downgrade cycles where https-only tries
3690 # to upgrad ethe connection, but the website tries to downgrade again.
3691 - name: dom.security.https_only_mode_break_upgrade_downgrade_endless_loop
3692 type: RelaxedAtomicBool
3696 # If true, when checking if it's upgrade downgrade cycles, the URI path will be
3698 - name: dom.security.https_only_check_path_upgrade_downgrade_endless_loop
3699 type: RelaxedAtomicBool
3703 # If true and HTTPS-only mode is enabled, requests
3704 # to local IP addresses are also upgraded
3705 - name: dom.security.https_only_mode.upgrade_local
3706 type: RelaxedAtomicBool
3710 # If true and HTTPS-only mode is enabled, requests
3711 # to .onion hosts are also upgraded
3712 - name: dom.security.https_only_mode.upgrade_onion
3713 type: RelaxedAtomicBool
3717 # WARNING: Don't ever update that pref manually! It is only used
3718 # for telemetry purposes and allows to reason about retention of
3719 # the pref dom.security.https_only_mode from above.
3720 - name: dom.security.https_only_mode_ever_enabled
3721 type: RelaxedAtomicBool
3725 # WARNING: Don't ever update that pref manually! It is only used
3726 # for telemetry purposes and allows to reason about retention of
3727 # the pref dom.security.https_only_mode_pbm from above.
3728 - name: dom.security.https_only_mode_ever_enabled_pbm
3729 type: RelaxedAtomicBool
3733 # If true checks for secure www connections when https fails
3734 # and gives the user suggestions on the error page
3735 - name: dom.security.https_only_mode_error_page_user_suggestions
3736 type: RelaxedAtomicBool
3740 # If true, top-level request will get upgraded to HTTPS and
3741 # downgraded again if the request failed.
3742 - name: dom.security.https_first
3743 type: RelaxedAtomicBool
3747 # If true, top-level requests in Private Browsing Mode will get
3748 # upgraded to HTTPS. (If dom.security.https_first
3749 # is set to true then this pref has no effect)
3750 - name: dom.security.https_first_pbm
3751 type: RelaxedAtomicBool
3755 - name: dom.security.unexpected_system_load_telemetry_enabled
3760 # pref controls `Sanitizer` API being exposed
3761 # https://wicg.github.io/sanitizer-api/
3762 - name: dom.security.sanitizer.enabled
3767 # Pref that controls the Element.setHTML API idenpendetly of the sanitizer
3769 - name: dom.security.setHTML.enabled
3774 # Logs elements and attributes removed by the Sanitizer API to the console.
3775 - name: dom.security.sanitizer.logging
3780 # pref controls `identity` credentials being exposed
3781 - name: dom.security.credentialmanagement.identity.enabled
3786 # pref controls `identity` credential UI for testing. When true, UI is not shown and
3787 # the first option in the account and provider lists are chosen
3788 - name: dom.security.credentialmanagement.identity.select_first_in_ui_lists
3793 # pref controls `identity` credential platform behavior for testing. When true,
3794 # the .well-known file check is not performed.
3795 - name: dom.security.credentialmanagement.identity.test_ignore_well_known
3800 # pref controls whether we should delay identity credential rejections at all
3801 - name: dom.security.credentialmanagement.identity.reject_delay.enabled
3806 # pref controls how long we should delay identity credential rejections if enabled
3807 - name: dom.security.credentialmanagement.identity.reject_delay.duration_ms
3812 # Whether or not selection events on text controls are enabled.
3813 - name: dom.select_events.textcontrols.selectionchange.enabled
3818 - name: dom.select_events.textcontrols.selectstart.enabled
3823 - name: dom.separate_event_queue_for_post_message.enabled
3828 - name: dom.arena_allocator.enabled
3833 - name: dom.serviceWorkers.enabled
3834 type: RelaxedAtomicBool
3838 - name: dom.serviceWorkers.navigationPreload.enabled
3839 type: RelaxedAtomicBool
3843 # Mitigates ServiceWorker navigation faults by bypassing the ServiceWorker on
3844 # navigation faults. This is more extensive than just resetting interception
3845 # because we also mark the page as uncontrolled so that subresources will not
3846 # go to the ServiceWorker either.
3847 - name: dom.serviceWorkers.mitigations.bypass_on_fault
3852 # Additional ServiceWorker navigation mitigation control to unregister the
3853 # ServiceWorker after multiple faults are encountered. The mitigation is
3854 # disabled when this is set to zero, otherwise this is the number of faults that
3855 # need to occur for a specific ServiceWorker before it will be unregistered.
3856 - name: dom.serviceWorkers.mitigations.navigation_fault_threshold
3861 # This is the group usage head room for service workers.
3862 # The quota usage mitigation algorithm uses this preference to determine if the
3863 # origin or also group data should be cleared or not.
3864 # The default value is 400 MiB.
3865 - name: dom.serviceWorkers.mitigations.group_usage_headroom_kb
3870 - name: dom.serviceWorkers.testing.enabled
3871 type: RelaxedAtomicBool
3875 # Whether ServiceWorkerManager should persist the service worker
3876 # registered by temporary installed extension (only meant to be used
3877 # for testing purpose, to make it easier to test some particular scenario
3878 # with a temporary installed addon, which doesn't need to be signed to be
3879 # installed on release channel builds).
3880 - name: dom.serviceWorkers.testing.persistTemporarilyInstalledAddons
3881 type: RelaxedAtomicBool
3885 - name: dom.storage.enabled
3886 type: RelaxedAtomicBool
3890 # ReadableStream.from(asyncIterable)
3891 - name: dom.streams.from.enabled
3892 type: RelaxedAtomicBool
3896 - name: dom.workers.pFetch.enabled
3897 type: RelaxedAtomicBool
3901 - name: dom.workers.importScripts.enforceStrictMimeType
3902 type: RelaxedAtomicBool
3903 value: @IS_EARLY_BETA_OR_EARLIER@
3906 # Is support for modules (new Worker(..., {type: "module"})) enabled for workers?
3907 - name: dom.workers.modules.enabled
3908 type: RelaxedAtomicBool
3912 - name: dom.workers.requestAnimationFrame
3913 type: RelaxedAtomicBool
3917 - name: dom.workers.serialized-sab-access
3918 type: RelaxedAtomicBool
3922 # Enable stronger diagnostics on worker shutdown.
3923 # If this is true, we will potentially run an extra GCCC when a worker should
3924 # exit its DoRunLoop but holds any WorkerRef and we will MOZ_DIAGNOSTIC_ASSERT
3925 # when during that extra GCCC such a WorkerRef is freed.
3926 - name: dom.workers.GCCC_on_potentially_last_event
3927 type: RelaxedAtomicBool
3928 #if defined(FUZZING) || defined(DEBUG)
3935 - name: dom.sitepermsaddon-provider.enabled
3937 value: @IS_NOT_ANDROID@
3940 # Whether automatic storage access granting heuristics should be turned on.
3941 - name: dom.storage_access.auto_grants
3946 - name: dom.storage_access.auto_grants.delayed
3951 # Storage-access API.
3952 - name: dom.storage_access.enabled
3957 # Forward-Declared Storage-access API.
3958 - name: dom.storage_access.forward_declared.enabled
3963 # How long the Forward-Declared Storage-access API allows between pair requests
3965 - name: dom.storage_access.forward_declared.lifetime
3970 # The maximum number of origins that a given third-party tracker is allowed
3971 # to have concurrent access to before the user is presented with a storage
3972 # access prompt. Only effective when the auto_grants pref is turned on.
3973 - name: dom.storage_access.max_concurrent_auto_grants
3978 - name: dom.storage_access.frame_only
3983 # Only grant storage access to secure contexts.
3984 - name: dom.storage_access.dont_grant_insecure_contexts
3985 type: RelaxedAtomicBool
3989 # Whether the Storage API is enabled.
3990 - name: dom.storageManager.enabled
3991 type: RelaxedAtomicBool
3995 # Whether the File System API is enabled
3996 - name: dom.fs.enabled
3997 type: RelaxedAtomicBool
4001 # Whether the WritableFileStream is enabled or disabled.
4002 - name: dom.fs.writable_file_stream.enabled
4003 type: RelaxedAtomicBool
4007 # LocalStorage data limit as determined by summing up the lengths of all string
4008 # keys and values. This is consistent with the legacy implementation and other
4009 # browser engines. This value should really only ever change in unit testing
4010 # where being able to lower it makes it easier for us to test certain edge
4011 # cases. Measured in KiBs.
4012 - name: dom.storage.default_quota
4013 type: RelaxedAtomicUint32
4014 # Only allow relatively small amounts of data since performance of the
4015 # synchronous IO is very bad. We are enforcing simple per-origin quota only.
4019 # Per-site quota for legacy LocalStorage implementation.
4020 - name: dom.storage.default_site_quota
4021 type: RelaxedAtomicUint32
4025 # Whether or not the unsupported legacy implemenation should be enabled. Please
4026 # don't advertise this pref as a way for disabling LSNG. This pref is intended
4027 # for internal testing only and will be removed in near future. Accidental
4028 # disabling of LSNG can lead to a data loss in a combination with disabled
4029 # shadow writes. Disabling of shadow writes is the initial step towards
4030 # removing legacy implementation and will be done soon.
4031 - name: dom.storage.enable_unsupported_legacy_implementation
4032 type: RelaxedAtomicBool
4035 do_not_use_directly: true
4037 # The amount of snapshot peak usage which is attempted to be pre-incremented
4038 # during snapshot creation.
4039 - name: dom.storage.snapshot_peak_usage.initial_preincrement
4040 type: RelaxedAtomicUint32
4044 # The amount of snapshot peak usage which is attempted to be pre-incremented
4045 # during snapshot creation if the LocalStorage usage was already close to the
4046 # limit (a fallback for dom.storage.snapshot_peak_usage.initial_preincrement).
4047 - name: dom.storage.snapshot_peak_usage.reduced_initial_preincrement
4048 type: RelaxedAtomicUint32
4052 # The amount of snapshot peak usage which is attempted to be pre-incremented
4053 # beyond the specific values which are subsequently requested after snapshot
4055 - name: dom.storage.snapshot_peak_usage.gradual_preincrement
4056 type: RelaxedAtomicUint32
4060 # The amount of snapshot peak usage which is attempted to be pre-incremented
4061 # beyond the specific values which are subsequently requested after snapshot
4062 # creation if the LocalStorage total usage was already close to the limit
4063 # (a fallback for dom.storage.snapshot_peak_usage.gradual_preincrement).
4064 - name: dom.storage.snapshot_peak_usage.reduced_gradual_preincrement
4065 type: RelaxedAtomicUint32
4069 # How long between a snapshot becomes idle and when we actually finish the
4070 # snapshot. This preference is only used when "dom.storage.snapshot_reusing"
4072 - name: dom.storage.snapshot_idle_timeout_ms
4077 # Is support for Storage test APIs enabled?
4078 - name: dom.storage.testing
4083 # For area and anchor elements with target=_blank and no rel set to
4085 - name: dom.targetBlankNoOpener.enabled
4090 # Is support for Selection.GetRangesForInterval enabled?
4091 - name: dom.testing.selection.GetRangesForInterval
4096 - name: dom.testing.structuredclonetester.enabled
4097 type: RelaxedAtomicBool
4101 - name: dom.testing.sync-content-blocking-notifications
4106 # To enable TestUtils interface on WPT
4107 - name: dom.testing.testutils.enabled
4108 type: RelaxedAtomicBool
4112 - name: dom.textMetrics.actualBoundingBox.enabled
4113 type: RelaxedAtomicBool
4117 - name: dom.textMetrics.baselines.enabled
4118 type: RelaxedAtomicBool
4122 - name: dom.textMetrics.emHeight.enabled
4123 type: RelaxedAtomicBool
4127 - name: dom.textMetrics.fontBoundingBox.enabled
4128 type: RelaxedAtomicBool
4132 # Time (in ms) that it takes to regenerate 1ms.
4133 - name: dom.timeout.background_budget_regeneration_rate
4138 # Time (in ms) that it takes to regenerate 1ms.
4139 - name: dom.timeout.foreground_budget_regeneration_rate
4144 # Maximum value (in ms) for the background budget. Only valid for
4145 # values greater than 0.
4146 - name: dom.timeout.background_throttling_max_budget
4151 # Maximum value (in ms) for the foreground budget. Only valid for
4152 # values greater than 0.
4153 - name: dom.timeout.foreground_throttling_max_budget
4158 # The maximum amount a timeout can be delayed by budget throttling.
4159 - name: dom.timeout.budget_throttling_max_delay
4164 # Turn on budget throttling by default.
4165 - name: dom.timeout.enable_budget_timer_throttling
4170 # Should we defer timeouts and intervals while loading a page. Released
4171 # on Idle or when the page is loaded.
4172 - name: dom.timeout.defer_during_load
4177 # Maximum amount of time in milliseconds consecutive setTimeout()/setInterval()
4178 # callback are allowed to run before yielding the event loop.
4179 - name: dom.timeout.max_consecutive_callbacks_ms
4184 # Maximum deferral time for setTimeout/Interval in milliseconds
4185 - name: dom.timeout.max_idle_defer_ms
4190 # Delay in ms from document load until we start throttling background timeouts.
4191 - name: dom.timeout.throttling_delay
4197 - name: dom.udpsocket.enabled
4202 # Whether to dump worker use counters
4203 - name: dom.use_counters.dump.worker
4204 type: RelaxedAtomicBool
4208 # Whether to dump document use counters
4209 - name: dom.use_counters.dump.document
4214 # Whether to dump page use counters
4215 - name: dom.use_counters.dump.page
4220 # Time limit, in milliseconds, for user gesture transient activation.
4221 - name: dom.user_activation.transient.timeout
4226 # Whether to treat the clicks on scrollbars as user interaction with web content.
4227 - name: dom.user_activation.ignore_scrollbars
4232 # Whether to shim a Components object on untrusted windows.
4233 - name: dom.use_components_shim
4235 value: @IS_NOT_NIGHTLY_BUILD@
4238 - name: dom.vibrator.enabled
4243 - name: dom.vibrator.max_vibrate_ms
4244 type: RelaxedAtomicUint32
4248 - name: dom.vibrator.max_vibrate_list_len
4249 type: RelaxedAtomicUint32
4253 # Is support for Window.visualViewport enabled?
4254 - name: dom.visualviewport.enabled
4259 # Is support for WebVR APIs enabled?
4260 # Disabled everywhere, but not removed.
4261 - name: dom.vr.enabled
4262 type: RelaxedAtomicBool
4266 # Should VR sessions always be reported as supported, without first
4267 # checking for VR runtimes? This will prevent permission prompts
4268 # from being suppressed on machines without VR runtimes and cause
4269 # navigator.xr.isSessionSupported to always report that immersive-vr
4271 - name: dom.vr.always_support_vr
4272 type: RelaxedAtomicBool
4276 # Should AR sessions always be reported as supported, without first
4277 # checking for AR runtimes? This will prevent permission prompts
4278 # from being suppressed on machines without AR runtimes and cause
4279 # navigator.xr.isSessionSupported to always report that immersive-ar
4281 - name: dom.vr.always_support_ar
4282 type: RelaxedAtomicBool
4286 # It is often desirable to automatically start vr presentation when
4287 # a user puts on the VR headset. This is done by emitting the
4288 # Window.vrdisplayactivate event when the headset's sensors detect it
4289 # being worn. This can result in WebVR content taking over the headset
4290 # when the user is using it outside the browser or inadvertent start of
4291 # presentation due to the high sensitivity of the proximity sensor in some
4292 # headsets, so it is off by default.
4293 - name: dom.vr.autoactivate.enabled
4294 type: RelaxedAtomicBool
4298 # Minimum number of milliseconds that the browser will wait before
4299 # attempting to poll again for connected VR controllers. The browser
4300 # will not attempt to poll for VR controllers until it needs to use them.
4301 - name: dom.vr.controller.enumerate.interval
4302 type: RelaxedAtomicInt32
4306 # The threshold value of trigger inputs for VR controllers.
4307 - name: dom.vr.controller_trigger_threshold
4312 # Minimum number of milliseconds that the browser will wait before
4313 # attempting to poll again for connected VR displays. The browser
4314 # will not attempt to poll for VR displays until it needs to use
4315 # them, such as when detecting a WebVR site.
4316 - name: dom.vr.display.enumerate.interval
4317 type: RelaxedAtomicInt32
4321 # The number of milliseconds since last frame start before triggering a new
4322 # frame. When content is failing to submit frames on time or the lower level
4323 # VR platform APIs are rejecting frames, it determines the rate at which RAF
4324 # callbacks will be called.
4325 - name: dom.vr.display.rafMaxDuration
4326 type: RelaxedAtomicUint32
4330 # Minimum number of milliseconds the browser will wait before attempting
4331 # to re-start the VR service after an enumeration returned no devices.
4332 - name: dom.vr.external.notdetected.timeout
4333 type: RelaxedAtomicInt32
4337 # Minimum number of milliseconds the browser will wait before attempting
4338 # to re-start the VR service after a VR API (eg, OpenVR or Oculus)
4339 # requests that we shutdown and unload its libraries.
4340 # To ensure that we don't interfere with VR runtime software auto-updates,
4341 # we will not attempt to re-load the service until this timeout has elapsed.
4342 - name: dom.vr.external.quit.timeout
4343 type: RelaxedAtomicInt32
4347 # Minimum number of milliseconds that the VR session will be kept
4348 # alive after the browser and content no longer are using the
4349 # hardware. If a VR multitasking environment, this should be set
4350 # very low or set to 0.
4351 - name: dom.vr.inactive.timeout
4352 type: RelaxedAtomicInt32
4356 # Maximum number of milliseconds the browser will wait for content to call
4357 # VRDisplay.requestPresent after emitting vrdisplayactivate during VR
4358 # link traversal. This prevents a long running event handler for
4359 # vrdisplayactivate from later calling VRDisplay.requestPresent, which would
4360 # result in a non-responsive browser in the VR headset.
4361 - name: dom.vr.navigation.timeout
4362 type: RelaxedAtomicInt32
4367 - name: dom.vr.oculus.enabled
4368 type: RelaxedAtomicBool
4369 #if defined(HAVE_64BIT_BUILD) && !defined(ANDROID)
4370 # We are only enabling WebVR by default on 64-bit builds (Bug 1384459).
4373 # On Android, this pref is irrelevant.
4378 # When enabled, Oculus sessions may be created with the ovrInit_Invisible
4379 # flag if a page is using tracking but not presenting. When a page
4380 # begins presenting VR frames, the session will be re-initialized without
4381 # the flag. This eliminates the "Firefox not responding" warnings in
4382 # the headset, but might not be compatible with all versions of the Oculus
4384 - name: dom.vr.oculus.invisible.enabled
4385 type: RelaxedAtomicBool
4389 # Minimum number of milliseconds after content has stopped VR presentation
4390 # before the Oculus session is re-initialized to an invisible / tracking
4391 # only mode. If this value is too high, users will need to wait longer
4392 # after stopping WebVR presentation before automatically returning to the
4393 # Oculus home interface. (They can immediately return to the Oculus Home
4394 # interface through the Oculus HUD without waiting this duration)
4395 # If this value is too low, the Oculus Home interface may be visible
4396 # momentarily during VR link navigation.
4397 - name: dom.vr.oculus.present.timeout
4398 type: RelaxedAtomicInt32
4403 - name: dom.vr.openvr.enabled
4404 type: RelaxedAtomicBool
4405 #if !defined(HAVE_64BIT_BUILD) && !defined(ANDROID)
4406 # We are only enabling WebVR by default on 64-bit builds (Bug 1384459).
4408 #elif defined(XP_WIN) || defined(XP_MACOSX)
4409 # We enable OpenVR by default for Windows and macOS.
4412 # See Bug 1310663 (Linux). On Android, this pref is irrelevant.
4418 - name: dom.vr.osvr.enabled
4419 type: RelaxedAtomicBool
4423 # Pose prediction reduces latency effects by returning future predicted HMD
4424 # poses to callers of the WebVR API. This currently only has an effect for
4425 # Oculus Rift on SDK 0.8 or greater.
4426 - name: dom.vr.poseprediction.enabled
4427 type: RelaxedAtomicBool
4431 # Enable a separate process for VR module.
4432 - name: dom.vr.process.enabled
4441 - name: dom.vr.process.startup_timeout_ms
4446 # Puppet device, used for simulating VR hardware within tests and dev tools.
4447 - name: dom.vr.puppet.enabled
4448 type: RelaxedAtomicBool
4452 # Starting VR presentation is only allowed within a user gesture or event such
4453 # as VRDisplayActivate triggered by the system. dom.vr.require-gesture allows
4454 # this requirement to be disabled for special cases such as during automated
4455 # tests or in a headless kiosk system.
4456 - name: dom.vr.require-gesture
4457 type: RelaxedAtomicBool
4461 # Is support for WebXR APIs enabled?
4462 - name: dom.vr.webxr.enabled
4463 type: RelaxedAtomicBool
4467 # Points in the native bounds geometry are required to be quantized
4468 # sufficiently to prevent fingerprinting. The WebXR spec suggests
4469 # quantizing to the nearest 5 centimeters.
4470 - name: dom.vr.webxr.quantization
4475 # Whether MouseEvent.region is exposed as a property.
4476 - name: dom.mouse_event.region.enabled
4482 # Control firing WidgetMouseEvent by handling Windows pointer messages or
4484 - name: dom.w3c_pointer_events.dispatch_by_pointer_messages
4489 - name: dom.w3c_pointer_events.scroll_by_pen.enabled
4495 # If the value is >= 0, it will be used for max touch points in child processes.
4496 - name: dom.maxtouchpoints.testing.value
4501 # Maximum value of navigator.hardwareConcurrency.
4502 - name: dom.maxHardwareConcurrency
4503 type: RelaxedAtomicUint32
4504 #ifdef NIGHTLY_BUILD
4511 # W3C pointer events draft.
4512 - name: dom.w3c_pointer_events.implicit_capture
4517 # In case Touch API is enabled, this pref controls whether to support
4518 # ontouch* event handlers, document.createTouch, document.createTouchList and
4519 # document.createEvent("TouchEvent").
4520 - name: dom.w3c_touch_events.legacy_apis.enabled
4526 # 0 - disabled, 1 - enabled, 2 - autodetect
4527 # Autodetection is currently only supported on Windows and GTK3 (and assumed on
4529 - name: dom.w3c_touch_events.enabled
4531 #if defined(XP_MACOSX)
4538 # Is support for the Web Audio API enabled?
4539 - name: dom.webaudio.enabled
4544 - name: dom.webkitBlink.dirPicker.enabled
4545 type: RelaxedAtomicBool
4546 value: @IS_NOT_ANDROID@
4549 # Is the 'assign' API for slot element enabled?
4550 - name: dom.shadowdom.slot.assign.enabled
4555 # NOTE: This preference is used in unit tests. If it is removed or its default
4556 # value changes, please update test_sharedMap_static_prefs.js accordingly.
4557 - name: dom.webcomponents.shadowdom.report_usage
4562 # Is support for the Web GPU API enabled?
4563 - name: dom.webgpu.enabled
4564 type: RelaxedAtomicBool
4565 value: @IS_NIGHTLY_BUILD@
4568 # Are WebGPU indirect draws/dispatches enabled?
4569 - name: dom.webgpu.indirect-dispatch.enabled
4570 type: RelaxedAtomicBool
4574 # Comma-separated list of wgpu backend names to permit in WebGPU adapters.
4576 # If non-empty, this is parsed by `wgpu_core::instance::parse_backends_from_comma_list` to
4577 # produce a `wgpu_types::Backends` bitset used to create a `wgpu_core::hub::Global`. As of
4578 # 2023-3-22, recognized names are:
4580 # "vulkan" | "vk" => Backends::VULKAN,
4581 # "dx12" | "d3d12" => Backends::DX12,
4582 # "dx11" | "d3d11" => Backends::DX11,
4583 # "metal" | "mtl" => Backends::METAL,
4584 # "opengl" | "gles" | "gl" => Backends::GL,
4585 # "webgpu" => Backends::BROWSER_WEBGPU,
4586 - name: dom.webgpu.wgpu-backend
4587 type: DataMutexString
4592 # Is support for HTMLInputElement.webkitEntries enabled?
4593 - name: dom.webkitBlink.filesystem.enabled
4595 value: @IS_NOT_ANDROID@
4598 # Whether the Web Locks API is enabled
4599 - name: dom.weblocks.enabled
4600 type: RelaxedAtomicBool
4604 # Whether the WebMIDI API is enabled
4605 - name: dom.webmidi.enabled
4607 value: @IS_NOT_ANDROID@
4610 # midi permission is addon-gated
4611 - name: dom.webmidi.gated
4616 - name: dom.webnotifications.allowcrossoriginiframe
4617 type: RelaxedAtomicBool
4621 - name: dom.webnotifications.enabled
4622 type: RelaxedAtomicBool
4626 - name: dom.webnotifications.requireuserinteraction
4627 type: RelaxedAtomicBool
4631 - name: dom.webnotifications.requireinteraction.enabled
4632 type: RelaxedAtomicBool
4636 value: @IS_NIGHTLY_BUILD@
4640 - name: dom.webnotifications.silent.enabled
4641 type: RelaxedAtomicBool
4642 value: @IS_NIGHTLY_BUILD@
4645 - name: dom.webnotifications.vibrate.enabled
4646 type: RelaxedAtomicBool
4647 #if defined(MOZ_WIDGET_ANDROID)
4648 value: @IS_NIGHTLY_BUILD@
4654 # Is support for Window.event enabled?
4655 - name: dom.window.event.enabled
4660 - name: dom.window.clientinformation.enabled
4665 - name: dom.window.sidebar.enabled
4670 # Whether Window.sizeToContent() is enabled.
4671 - name: dom.window.sizeToContent.enabled
4673 value: @IS_NOT_NIGHTLY_BUILD@
4676 - name: dom.worker.canceling.timeoutMilliseconds
4677 type: RelaxedAtomicUint32
4678 value: 30000 # 30 seconds
4681 - name: dom.worker.use_medium_high_event_queue
4682 type: RelaxedAtomicBool
4686 # Enables the dispatching of console log events from worker threads to the
4688 - name: dom.worker.console.dispatch_events_to_main_thread
4689 type: RelaxedAtomicBool
4693 - name: dom.workers.testing.enabled
4694 type: RelaxedAtomicBool
4698 # When this pref is set, parent documents may consider child iframes have
4699 # loaded while they are still loading.
4700 - name: dom.cross_origin_iframes_loaded_in_background
4705 # WebIDL test prefs.
4706 - name: dom.webidl.test1
4710 - name: dom.webidl.test2
4715 - name: dom.webidl.crosscontext_hasinstance.enabled
4716 type: RelaxedAtomicBool
4720 # WebShare API - exposes navigator.share()
4721 - name: dom.webshare.enabled
4724 value: @IS_EARLY_BETA_OR_EARLIER@
4730 # WebShare API - allows WebShare without user interaction (for tests only).
4731 - name: dom.webshare.requireinteraction
4736 # about:home and about:newtab include remote snippets that contain arbitrarily
4737 # placed anchor tags in their content; we want sanitization to be turned off
4738 # in order to render them correctly
4739 - name: dom.about_newtab_sanitization.enabled
4744 # Hide the confirm dialog when a POST request is reloaded.
4745 - name: dom.confirm_repost.testing.always_accept
4750 # Whether we should suspend inactive tabs or not
4751 - name: dom.suspend_inactive.enabled
4756 # The following three prefs control the maximum script run time before slow
4759 # Controls the time that a content script can run before showing a
4761 - name: dom.max_script_run_time
4766 # Controls whether we want to wait for user input before surfacing notifying
4767 # the parent process about a long-running script.
4768 - name: dom.max_script_run_time.require_critical_input
4770 # On desktop, we don't want to annoy the user with a notification if they're
4771 # not interacting with the browser. On Android however, we automatically
4772 # terminate long-running scripts, so we want to make sure we don't get in the
4773 # way of that by waiting for input.
4774 #if defined(MOZ_WIDGET_ANDROID)
4781 # Controls if a content script will be aborted on child process shutdown.
4782 - name: dom.abort_script_on_child_shutdown
4787 - name: dom.max_chrome_script_run_time
4792 - name: dom.max_ext_content_script_run_time
4797 # Initialize Resize Observer's last reported size to -1x-1, and not 0x0,
4798 # as per CSSWG resolution: https://github.com/w3c/csswg-drafts/issues/3664
4799 - name: dom.resize_observer.last_reported_size_invalid
4804 # Let Resize Observer report the size of all fragments, and not just the
4805 # first one, as per CSSWG resolution:
4806 # https://github.com/w3c/csswg-drafts/issues/3673#issuecomment-467221565
4807 - name: dom.resize_observer.support_fragments
4812 #---------------------------------------------------------------------------
4813 # Prefs starting with "editor"
4814 #---------------------------------------------------------------------------
4816 # Default background color of HTML editor. This is referred only when
4817 # "editor.use_custom_colors" is set to `true`.
4818 - name: editor.background_color
4823 # Use compatible range computation when applying inline style. This is used
4824 # for making it possible to backout with Normandy Pref Rollout.
4825 - name: editor.inline_style.range.compatible_with_the_other_browsers
4830 # Whether use Blink/WebKit compatbile joining nodes and split a node direction.
4831 # false: Left node will be created (at splitting) and deleted (at joining)
4832 # true: Right node will be created (at splitting) and deleted (at joinining)
4833 - name: editor.join_split_direction.compatible_with_the_other_browsers
4838 # Delay to mask last input character in password fields.
4839 # If negative value, to use platform's default behavior.
4840 # If 0, no delay to mask password.
4841 # Otherwise, password fields unmask last input character(s) during specified
4842 # time (in milliseconds).
4843 - name: editor.password.mask_delay
4848 # Set to true when you test mask_delay of password editor. If this is set
4849 # to true, "MozLastInputMasked" is fired when last input characters are
4850 # masked by timeout.
4851 - name: editor.password.testing.mask_delay
4856 # How line breakers are treated in single line editor:
4857 # * 0: Only remove the leading and trailing newlines.
4858 # * 1: Remove the first newline and all characters following it.
4859 # * 2: Replace newlines with spaces (default of Firefox).
4860 # * 3: Remove newlines from the string.
4861 # * 4: Replace newlines with commas (default of Thunderbird).
4862 # * 5: Collapse newlines and surrounding white space characters and
4863 # remove them from the string.
4864 # Other values are treated as 1.
4865 - name: editor.singleLine.pasteNewlines
4870 # Whether user pastes should be truncated.
4871 - name: editor.truncate_user_pastes
4876 # When this is set to `true`, "editor.background_color" must be set, then,
4877 # the value is treated as default background color of the HTML editor.
4878 # If `false` and "browser.display.use_system_colors" is set to `true`,
4879 # "browser.display.background_color" is used instead.
4880 # Otherwise, no color is used as default background color.
4881 # This pref is for Thunderbird and SeaMonkey.
4882 - name: editor.use_custom_colors
4887 # If this is set to `true`, CSS mode of style editor is enabled by default
4888 # unless it's a mail editor.
4889 # This pref is for Thunderbird and SeaMonkey.
4890 - name: editor.use_css
4895 # Whether enabling blink compatible white-space normalizer or keep using
4896 # Gecko's traditional white-space normalizer.
4897 - name: editor.white_space_normalization.blink_compatible
4902 # General prefs for editor, indicating whether Gecko-specific editing UI is
4903 # enabled by default. Those UIs are not implemented by any other browsers. So,
4904 # only Firefox users can change some styles with them. This means that Firefox
4905 # users may get unexpected result of some web apps if they assume that users
4906 # cannot change such styles.
4907 - name: editor.resizing.enabled_by_default
4911 - name: editor.inline_table_editing.enabled_by_default
4915 - name: editor.positioning.enabled_by_default
4920 # Controls if a double click word selection also deletes one adjacent whitespace
4921 # (if feasible). This mimics native behaviour on MacOS.
4922 - name: editor.word_select.delete_space_after_doubleclick_selection
4931 #---------------------------------------------------------------------------
4932 # Prefs starting with "extensions."
4933 #---------------------------------------------------------------------------
4935 # Pref that enforces the use of web_accessible_resources for content loads.
4936 # This behavior is default for MV3. The pref controls this for MV2.
4937 - name: extensions.content_web_accessible.enabled
4942 # Whether the InstallTrigger implementation should be enabled (or hidden and
4943 # none of its methods available).
4944 - name: extensions.InstallTriggerImpl.enabled
4949 # Whether the InstallTrigger implementation should be enabled (or completely
4950 # hidden), separate from InstallTriggerImpl because InstallTrigger is improperly
4951 # used also for UA detection.
4952 - name: extensions.InstallTrigger.enabled
4954 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
4958 # Whether the background.service_worker in the extension manifest.json file
4960 - name: extensions.backgroundServiceWorker.enabled
4965 # Maximum number of misspelled words in a text.
4966 - name: extensions.spellcheck.inline.max-misspellings
4971 # Whether the extensions can register a service worker on its own.
4972 # NOTE: WebExtensions Framework ability to register a background service worker
4973 # is not controlled by this pref, only the extension code ability to use
4974 # navigator.serviceWorker.register is locked behind this pref.
4975 - name: extensions.serviceWorkerRegister.allowed
4980 # Legacy behavior on filterResponse calls on intercepted sw script requests.
4981 - name: extensions.filterResponseServiceWorkerScript.disabled
4986 # This pref governs whether we run webextensions in a separate process (true)
4987 # or the parent/main process (false)
4988 - name: extensions.webextensions.remote
4989 type: RelaxedAtomicBool
4993 # Whether to expose the MockExtensionAPI test interface in tests.
4994 # The interface MockExtensionAPI doesn't represent a real extension API,
4995 # it is only available in test and does include a series of cases useful
4996 # to test the API request handling without tying the unit test to a
4997 # specific WebExtensions API.
4998 - name: extensions.webidl-api.expose_mock_interface
4999 type: RelaxedAtomicBool
5003 # Whether to allow acccess to AddonManager to developer sites for testing
5004 # NOTE: We'd like this to be a "hidden" pref once StaticPrefs supports it.
5005 - name: extensions.webapi.testing
5006 type: RelaxedAtomicBool
5010 # Automation-only pref to allow AddonManager over insecure protocols.
5011 # NOTE: We'd like this to be a "hidden" pref once StaticPrefs supports it.
5012 - name: extensions.webapi.testing.http
5013 type: RelaxedAtomicBool
5017 # Whether to expose the AddonManager web API.
5018 - name: extensions.webapi.enabled
5019 type: RelaxedAtomicBool
5020 value: @IS_NOT_ANDROID@
5023 #---------------------------------------------------------------------------
5024 # Prefs starting with "fission."
5025 #---------------------------------------------------------------------------
5027 # Whether to enable Fission in new windows by default.
5028 # IMPORTANT: This preference should *never* be checked directly, since any
5029 # session can contain a mix of Fission and non-Fission windows. Instead,
5030 # callers should check whether the relevant nsILoadContext has the
5031 # `useRemoteSubframes` flag set.
5032 # Callers which cannot use `useRemoteSubframes` must use
5033 # `Services.appinfo.fissionAutostart` or `mozilla::FissionAutostart()` to check
5034 # whether fission is enabled by default.
5035 - name: fission.autostart
5037 value: @IS_NOT_ANDROID@
5040 # This pref has no effect within fission windows, it only controls the
5041 # behaviour within non-fission windows. If true, preserve browsing contexts
5042 # between process swaps.
5043 - name: fission.preserve_browsing_contexts
5048 # Disable storing the session history in the parent process, and accessing it
5049 # over IPC from the child processes.
5050 - name: fission.disableSessionHistoryInParent
5054 do_not_use_directly: true
5056 # If session history is stored in the parent process, enable bfcache for it.
5057 - name: fission.bfcacheInParent
5061 do_not_use_directly: true
5063 # Allow renaming of processes from Private Windows to the eTLD+1 on nightly
5064 # Setting this pref creates a privacy leak, but helps greatly with
5066 - name: fission.processPrivateWindowSiteNames
5071 # Allow renaming of process names to the eTLD+1 on all versions, NOT
5072 # including processes from Private Windows
5073 # Setting this pref creates a privacy leak, but helps greatly with
5075 - name: fission.processSiteNames
5080 # Allow showing of current profile along with process names, NOT
5081 # including processes from Private Windows
5082 # Setting this pref creates a privacy leak, but helps greatly with
5084 - name: fission.processProfileName
5089 # If true, allow process-switching documents loaded by <object> and <embed>
5090 # elements into a remote process.
5091 # NOTE: This pref has no impact outside of windows with the
5092 # `useRemoteSubframes` flag set.
5093 - name: fission.remoteObjectEmbed
5098 # The strategy used to control how sites are isolated into separate processes
5099 # when Fisison is enabled. This pref has no effect if Fission is disabled.
5100 # See the `WebContentIsolationStrategy` enum in `ProcessIsolation.cpp`.
5101 - name: fission.webContentIsolationStrategy
5106 # Time in seconds before a site loaded with the Cross-Origin-Opener-Policy
5107 # header is no longer considered high-value and isolated in the "highValueCOOP"
5109 - name: fission.highValue.coop.expiration
5111 value: 2592000 # 30 days (in seconds)
5114 # Time in seconds before a site are considered high-value by the login detection
5115 # service is no longer considered high-value and isolated in the "highValueHasSavedLogin"
5116 # or "highValueIsLoggedIn" configuration.
5117 - name: fission.highValue.login.expiration
5119 value: 2592000 # 30 days (in seconds)
5122 # If true, capture login attemp, and add "highValueIsLoggedIn" permission to
5123 # the permission manager no matter whether fission is enabled and
5124 # WebContentIsolationStrateg is set to IsolateHighvalue.
5125 - name: fission.highValue.login.monitor
5130 # If true, do not send blocklisted preference values to the subprocess
5131 - name: fission.omitBlocklistedPrefsInSubprocesses
5132 type: RelaxedAtomicBool
5136 # If true, crash when a blocklisted preference is accessed in a subprocess
5137 - name: fission.enforceBlocklistedPrefsInSubprocesses
5138 type: RelaxedAtomicBool
5139 value: @IS_EARLY_BETA_OR_EARLIER@
5142 #---------------------------------------------------------------------------
5143 # Prefs starting with "font."
5144 #---------------------------------------------------------------------------
5146 # A value greater than zero enables font size inflation for
5147 # pan-and-zoom UIs, so that the fonts in a block are at least the size
5148 # that, if a block's width is scaled to match the device's width, the
5149 # fonts in the block are big enough that at most the pref value ems of
5150 # text fit in *the width of the device*.
5152 # When both this pref and the next are set, the larger inflation is used.
5153 - name: font.size.inflation.emPerLine
5158 # A value greater than zero enables font size inflation for
5159 # pan-and-zoom UIs, so that if a block's width is scaled to match the
5160 # device's width, the fonts in a block are at least the given font size.
5161 # The value given is in twips, i.e., 1/20 of a point, or 1/1440 of an inch.
5163 # When both this pref and the previous are set, the larger inflation is used.
5164 - name: font.size.inflation.minTwips
5169 # In products with multi-mode pan-and-zoom and non-pan-and-zoom UIs,
5170 # this pref forces font inflation to always be enabled in all modes.
5171 # That is, any heuristics used to detect pan-and-zoom
5172 # vs. non-pan-and-zoom modes are disabled and all content is treated
5173 # as pan-and-zoom mode wrt font inflation.
5175 # This pref has no effect if font inflation is not enabled through
5176 # either of the prefs above. It has no meaning in single-mode UIs.
5177 - name: font.size.inflation.forceEnabled
5182 # In products with multi-mode pan-and-zoom and non-pan-and-zoom UIs,
5183 # this pref disables font inflation in master-process contexts where
5184 # existing heuristics can't be used determine enabled-ness.
5186 # This pref has no effect if font inflation is not enabled through
5187 # either of the prefs above. The "forceEnabled" pref above overrides
5189 - name: font.size.inflation.disabledInMasterProcess
5194 # Defines the font size inflation mapping intercept parameter.
5196 # Font size inflation computes a minimum font size, m, based on
5197 # other preferences (see font.size.inflation.minTwips and
5198 # font.size.inflation.emPerLine, above) and the width of the
5199 # frame in which the text resides. Using this minimum, a specified
5200 # font size, s, is mapped to an inflated font size, i, using an
5201 # equation that varies depending on the value of the font size
5202 # inflation mapping intercept parameter, P.
5204 # If the intercept parameter is negative, then the following mapping
5209 # If the intercept parameter is non-negative, then the mapping function
5210 # is a function such that its graph meets the graph of i = s at the
5211 # point where both i and s are (1 + P/2) * m for values of s that are
5212 # large enough. This means that when s=0, i is always equal to m.
5213 - name: font.size.inflation.mappingIntercept
5218 # Since the goal of font size inflation is to avoid having to
5219 # repeatedly scroll side to side to read a block of text, and there are
5220 # a number of page layouts where a relatively small chunk of text is
5221 # better off not being inflated according to the same algorithm we use
5222 # for larger chunks of text, we want a threshold for an amount of text
5223 # that triggers font size inflation. This preference controls that
5226 # It controls the threshold used within an *approximation* of the
5227 # number of lines of text we use. In particular, if we assume that
5228 # each character (collapsing collapsible whitespace) has a width the
5229 # same as the em-size of the font (when, normally, it's actually quite
5230 # a bit smaller on average), this preference gives the percentage of a
5231 # number of lines of text we'd need to trigger inflation. This means
5232 # that a percentage of 100 means that we'd need a number of characters
5233 # (we know the font size and the width) equivalent to one line of
5234 # square text (which is actually a lot less than a real line of text).
5236 # A value of 0 means there's no character length threshold.
5237 - name: font.size.inflation.lineThreshold
5242 # This controls the percentage that fonts will be inflated, if font
5243 # size inflation is enabled. Essentially, if we have a specified font
5244 # size, s, and an inflated font size, i, this specifies that the ratio
5245 # i/s * 100 should never exceed the value of this preference. In order
5246 # for this preference to have any effect, its value must be greater
5247 # than 100, since font inflation can never decrease the ratio i/s.
5248 - name: font.size.inflation.maxRatio
5253 #---------------------------------------------------------------------------
5254 # Prefs starting with "full-screen-api."
5255 #---------------------------------------------------------------------------
5257 - name: full-screen-api.enabled
5262 - name: full-screen-api.allow-trusted-requests-only
5267 - name: full-screen-api.mouse-event-allow-left-button-only
5272 - name: full-screen-api.exit-on.windowOpen
5277 - name: full-screen-api.exit-on.windowRaise
5282 - name: full-screen-api.pointer-lock.enabled
5287 # whether to prevent the top level widget from going fullscreen
5288 - name: full-screen-api.ignore-widgets
5293 #---------------------------------------------------------------------------
5294 # Prefs starting with "fuzzing.". It's important that these can only be
5295 # checked in fuzzing builds (when FUZZING is defined), otherwise you could
5296 # enable the fuzzing stuff on your regular build which would be bad :)
5297 #---------------------------------------------------------------------------
5300 - name: fuzzing.enabled
5302 #ifdef FUZZING_SNAPSHOT
5309 - name: fuzzing.necko.enabled
5310 type: RelaxedAtomicBool
5314 - name: fuzzing.necko.http3
5315 type: RelaxedAtomicBool
5321 #---------------------------------------------------------------------------
5322 # Prefs starting with "general."
5323 #---------------------------------------------------------------------------
5325 - name: general.aboutConfig.enable
5330 # Limits the depth of recursive conversion of data when opening
5331 # a content to view. This is mostly intended to prevent infinite
5332 # loops with faulty converters involved.
5333 - name: general.document_open_conversion_depth_limit
5338 - name: general.smoothScroll
5339 type: RelaxedAtomicBool
5343 # This pref and general.smoothScroll.stopDecelerationWeighting determine
5344 # the timing function.
5345 - name: general.smoothScroll.currentVelocityWeighting
5350 # To connect consecutive scroll events into a continuous flow, the animation's
5351 # duration should be longer than scroll events intervals (or else the scroll
5352 # will stop before the next event arrives - we're guessing the next interval
5353 # by averaging recent intervals).
5354 # This defines how much longer the duration is compared to the events
5355 # interval (percentage).
5356 - name: general.smoothScroll.durationToIntervalRatio
5357 type: RelaxedAtomicInt32
5361 - name: general.smoothScroll.lines
5362 type: RelaxedAtomicBool
5366 - name: general.smoothScroll.lines.durationMaxMS
5367 type: RelaxedAtomicInt32
5371 - name: general.smoothScroll.lines.durationMinMS
5372 type: RelaxedAtomicInt32
5376 - name: general.smoothScroll.mouseWheel
5377 type: RelaxedAtomicBool
5381 - name: general.smoothScroll.mouseWheel.durationMaxMS
5382 type: RelaxedAtomicInt32
5386 - name: general.smoothScroll.mouseWheel.durationMinMS
5387 type: RelaxedAtomicInt32
5391 - name: general.smoothScroll.other
5392 type: RelaxedAtomicBool
5396 - name: general.smoothScroll.other.durationMaxMS
5397 type: RelaxedAtomicInt32
5401 - name: general.smoothScroll.other.durationMinMS
5402 type: RelaxedAtomicInt32
5406 - name: general.smoothScroll.pages
5407 type: RelaxedAtomicBool
5411 - name: general.smoothScroll.pages.durationMaxMS
5412 type: RelaxedAtomicInt32
5416 - name: general.smoothScroll.pages.durationMinMS
5417 type: RelaxedAtomicInt32
5421 - name: general.smoothScroll.scrollbars
5422 type: RelaxedAtomicBool
5426 - name: general.smoothScroll.scrollbars.durationMaxMS
5427 type: RelaxedAtomicInt32
5431 - name: general.smoothScroll.scrollbars.durationMinMS
5432 type: RelaxedAtomicInt32
5436 - name: general.smoothScroll.pixels
5437 type: RelaxedAtomicBool
5441 - name: general.smoothScroll.pixels.durationMaxMS
5442 type: RelaxedAtomicInt32
5446 - name: general.smoothScroll.pixels.durationMinMS
5447 type: RelaxedAtomicInt32
5451 # This pref and general.smoothScroll.currentVelocityWeighting determine
5452 # the timing function.
5453 - name: general.smoothScroll.stopDecelerationWeighting
5458 # Alternative smooth scroll physics. ("MSD" = Mass-Spring-Damper)
5459 - name: general.smoothScroll.msdPhysics.enabled
5460 type: RelaxedAtomicBool
5464 - name: general.smoothScroll.msdPhysics.continuousMotionMaxDeltaMS
5465 type: RelaxedAtomicInt32
5469 - name: general.smoothScroll.msdPhysics.motionBeginSpringConstant
5470 type: RelaxedAtomicInt32
5474 - name: general.smoothScroll.msdPhysics.slowdownMinDeltaMS
5475 type: RelaxedAtomicInt32
5479 - name: general.smoothScroll.msdPhysics.slowdownMinDeltaRatio
5484 - name: general.smoothScroll.msdPhysics.slowdownSpringConstant
5485 type: RelaxedAtomicInt32
5489 - name: general.smoothScroll.msdPhysics.regularSpringConstant
5490 type: RelaxedAtomicInt32
5494 #---------------------------------------------------------------------------
5495 # Prefs starting with "geo."
5496 #---------------------------------------------------------------------------
5498 # Is support for Navigator.geolocation enabled?
5504 # Time, in milliseconds, to wait for the location provider to spin up.
5510 #ifdef MOZ_ENABLE_DBUS
5511 # Whether to use Geoclue location provider (if available on the system).
5512 - name: geo.provider.use_geoclue
5517 # Whether to always provide high location accuracy, even if site
5518 # doesn't actually request this level of accuracy.
5519 # Almost no site correctly requests high accuracy so force it by default
5520 # for compatibility with other geolocation providers.
5521 - name: geo.provider.geoclue.always_high_accuracy
5527 #---------------------------------------------------------------------------
5528 # Prefs starting with "gfx."
5529 #---------------------------------------------------------------------------
5531 # Allow 24-bit colour when the hardware supports it.
5532 - name: gfx.android.rgb16.force
5537 - name: gfx.apitrace.enabled
5542 - name: gfx.blithelper.precision
5543 type: RelaxedAtomicUint32
5544 value: 2 # { 0: lowp, 1: mediump, 2: highp }
5547 - name: gfx.blithelper.lut-size.rgb.b
5548 type: RelaxedAtomicUint32
5551 - name: gfx.blithelper.lut-size.rgb.g
5552 type: RelaxedAtomicUint32
5555 - name: gfx.blithelper.lut-size.rgb.r
5556 type: RelaxedAtomicUint32
5560 - name: gfx.blithelper.lut-size.ycbcr.cb
5561 type: RelaxedAtomicUint32
5564 - name: gfx.blithelper.lut-size.ycbcr.cr
5565 type: RelaxedAtomicUint32
5568 - name: gfx.blithelper.lut-size.ycbcr.y
5569 type: RelaxedAtomicUint32
5573 # Nb: we ignore this pref on release and beta.
5574 - name: gfx.blocklist.all
5579 #if defined(XP_MACOSX)
5580 - name: gfx.cairo_quartz_cg_layer.enabled
5586 - name: gfx.canvas.accelerated
5588 #if defined(XP_MACOSX) || defined(XP_LINUX) && !defined(ANDROID)
5590 #elif defined(MOZ_WIDGET_ANDROID)
5597 # Whether to attempt to enable Accelerated Canvas2D regardless of blocklisting.
5598 - name: gfx.canvas.accelerated.force-enabled
5603 - name: gfx.canvas.accelerated.async-present
5604 type: RelaxedAtomicBool
5608 - name: gfx.canvas.accelerated.cache-items
5609 type: RelaxedAtomicUint32
5613 - name: gfx.canvas.accelerated.cache-size
5614 type: RelaxedAtomicUint32
5618 - name: gfx.canvas.accelerated.reserve-empty-cache
5619 type: RelaxedAtomicUint32
5623 - name: gfx.canvas.accelerated.max-draw-target-count
5624 type: RelaxedAtomicInt32
5628 - name: gfx.canvas.accelerated.max-size
5629 type: RelaxedAtomicInt32
5633 - name: gfx.canvas.accelerated.min-size
5634 type: RelaxedAtomicInt32
5638 - name: gfx.canvas.accelerated.max-surface-size
5639 type: RelaxedAtomicUint32
5643 - name: gfx.canvas.accelerated.shared-page-size
5644 type: RelaxedAtomicUint32
5648 # The minimum number of frames before acting on performance profile info
5649 - name: gfx.canvas.accelerated.profile-frames
5650 type: RelaxedAtomicUint32
5654 # The ratio of failed frames to total frames when to fall back from acceleration
5655 - name: gfx.canvas.accelerated.profile-fallback-ratio
5660 # The ratio of cache misses at which to fail a profile frame
5661 - name: gfx.canvas.accelerated.profile-cache-miss-ratio
5666 # The maximum size of the GPU path cache in MB.
5667 - name: gfx.canvas.accelerated.gpu-path-size
5668 type: RelaxedAtomicUint32
5672 # The maximum allowed complexity of a GPU path.
5673 - name: gfx.canvas.accelerated.gpu-path-complexity
5674 type: RelaxedAtomicUint32
5678 # Whether to accelerate stroked paths by converting them to fill paths.
5679 - name: gfx.canvas.accelerated.stroke-to-fill-path
5680 type: RelaxedAtomicBool
5684 # Whether to use aa-stroke to accelerate stroked paths.
5685 - name: gfx.canvas.accelerated.aa-stroke.enabled
5686 type: RelaxedAtomicBool
5690 # Draws an indicator if acceleration is used.
5691 - name: gfx.canvas.accelerated.debug
5692 type: RelaxedAtomicBool
5696 # 0x7fff is the maximum supported xlib surface size and is more than enough for canvases.
5697 - name: gfx.canvas.max-size
5698 type: RelaxedAtomicInt32
5702 - name: gfx.canvas.remote
5703 type: RelaxedAtomicBool
5711 - name: gfx.color_management.display_profile
5712 type: DataMutexString
5714 mirror: always # But be warned: We cache the result.
5716 - name: gfx.color_management.force_srgb
5717 type: RelaxedAtomicBool
5721 - name: gfx.color_management.native_srgb
5722 type: RelaxedAtomicBool
5723 #if defined(XP_MACOSX)
5730 - name: gfx.color_management.enablev4
5731 type: RelaxedAtomicBool
5735 # 0 = Off, 1 = Full, 2 = Tagged Images Only.
5736 # See CMSMode in gfx/thebes/gfxPlatform.h.
5737 - name: gfx.color_management.mode
5738 type: RelaxedAtomicInt32
5742 # The zero default here should match QCMS_INTENT_DEFAULT from qcms.h
5743 - name: gfx.color_management.rendering_intent
5744 type: RelaxedAtomicInt32
5748 - name: gfx.color_management.rec709_gamma_as_srgb
5749 type: RelaxedAtomicBool
5750 value: true # Tragic backwards compat.
5753 - name: gfx.color_management.rec2020_gamma_as_rec709
5754 type: RelaxedAtomicBool
5755 value: true # Match naive behavior, but hopefully we can stop soon!
5758 # Whether GL contexts can be migrated to a different GPU (to match the one the
5759 # OS is using for composition).
5761 # 0 = force disable migration
5762 # 1 = use migration where in safe configurations (the default)
5763 # 2 = force enable migration (for testing)
5764 - name: gfx.compositor.gpu-migration
5765 type: RelaxedAtomicInt32
5769 - name: gfx.core-animation.tint-opaque
5770 type: RelaxedAtomicBool
5775 # Create specialized video-only layers for video content in
5776 # fullscreen windows. Consistently works well on Apple Silicon,
5777 # some issues remain on Intel hardware.
5778 - name: gfx.core-animation.specialize-video
5779 type: RelaxedAtomicBool
5780 #if defined(MOZ_AARCH64)
5788 #if defined(XP_MACOSX) && defined(NIGHTLY_BUILD)
5789 # Spoof the timing of the video sample instead of marking the untimed
5790 # sample to be displayed immediately.
5791 - name: gfx.core-animation.specialize-video.spoof-timing
5792 type: RelaxedAtomicBool
5796 # Check that the sample has a color space and if it doesn't, log that
5797 # and supply the default color space from the main display.
5798 - name: gfx.core-animation.specialize-video.check-color-space
5799 type: RelaxedAtomicBool
5803 # Log properties of the video surface, buffer, and format.
5804 - name: gfx.core-animation.specialize-video.log
5805 type: RelaxedAtomicBool
5811 - name: gfx.core-animation.low-power-telemetry-frames
5817 #if defined(MOZ_WIDGET_ANDROID)
5818 # Overrides the glClear color used when the surface origin is not (0, 0)
5819 # Used for drawing a border around the content.
5820 - name: gfx.compositor.override.clear-color.r
5825 - name: gfx.compositor.override.clear-color.g
5830 - name: gfx.compositor.override.clear-color.b
5835 - name: gfx.compositor.override.clear-color.a
5839 #endif # defined(MOZ_WIDGET_ANDROID)
5841 - name: gfx.content.always-paint
5842 type: RelaxedAtomicBool
5847 - name: gfx.content.skia-font-cache-size
5852 - name: gfx.device-reset.limit
5857 - name: gfx.device-reset.threshold-ms
5863 # Whether to disable the automatic detection and use of direct2d.
5864 - name: gfx.direct2d.disabled
5869 # Whether to attempt to enable Direct2D regardless of automatic detection or
5871 - name: gfx.direct2d.force-enabled
5876 - name: gfx.direct2d.target-independent-rasterization.disabled
5881 - name: gfx.direct3d11.reuse-decoder-device
5885 # Enable reuse decoder device even when it is blocked.
5886 - name: gfx.direct3d11.reuse-decoder-device-force-enabled
5891 - name: gfx.direct3d11.allow-keyed-mutex
5892 type: RelaxedAtomicBool
5896 - name: gfx.direct3d11.use-double-buffering
5897 type: RelaxedAtomicBool
5901 - name: gfx.direct3d11.enable-debug-layer
5906 - name: gfx.direct3d11.break-on-error
5911 - name: gfx.direct3d11.sleep-on-create-device
5916 # Rate by which the frame rate is divided. I.e. at a number higher than 1 we
5917 # will only refresh every <x> frames.
5918 - name: gfx.display.frame-rate-divisor
5919 type: RelaxedAtomicInt32
5923 - name: gfx.display.max-frame-rate
5924 type: RelaxedAtomicInt32
5928 # Whether to preserve color bitmap tables in fonts (bypassing OTS).
5929 # Currently these are supported only on platforms where we use Freetype
5930 # to render fonts (Linux/Gtk and Android).
5931 - name: gfx.downloadable_fonts.keep_color_bitmaps
5932 type: RelaxedAtomicBool
5936 # Whether font sanitization is performed on the main thread or not.
5937 - name: gfx.downloadable_fonts.sanitize_omt
5938 type: RelaxedAtomicBool
5942 # Whether to validate OpenType variation tables in fonts.
5943 - name: gfx.downloadable_fonts.validate_variation_tables
5944 type: RelaxedAtomicBool
5948 # Whether OTS validation should be applied to OpenType Layout (OTL) tables.
5949 - name: gfx.downloadable_fonts.otl_validation
5950 type: RelaxedAtomicBool
5951 value: @IS_NOT_RELEASE_OR_BETA@
5954 - name: gfx.e10s.font-list.shared
5959 # Do we fire a notification about missing fonts, so the front-end can decide
5960 # whether to try and do something about it (e.g. download additional fonts)?
5961 - name: gfx.missing_fonts.notify
5962 type: RelaxedAtomicBool
5966 #if !defined(MOZ_WIDGET_ANDROID)
5967 - name: gfx.egl.prefer-gles.enabled
5969 #if defined(MOZ_WIDGET_GTK) && defined(MOZ_AARCH64)
5977 # [Windows] Whether registry FontSubstitutes entries are used unconditionally,
5978 # or only if the original font is not available.
5980 - name: gfx.windows-font-substitutes.always
5986 - name: gfx.font-list-omt.enabled
5988 #if defined(XP_MACOSX)
5995 # [Android] OPPO, realme and OnePlus device seem to crash when using Font
5996 # Match API. We turn off this feature on these devices. Set true if you want to
5997 # turn on it at force.
5998 #if defined(MOZ_WIDGET_ANDROID)
5999 - name: gfx.font-list.use_font_match_api.force-enabled
6005 # Whether to load fonts (e.g. Twemoji Mozilla) bundled with the application:
6006 # -1 - Auto behavior based on OS version (currently, disables loading on
6007 # "low-memory" Android devices)
6008 # 0 - Skip loading any bundled fonts
6009 # 1 - Always load bundled fonts
6010 - name: gfx.bundled-fonts.activate
6015 - name: gfx.font_loader.delay
6024 # Disable antialiasing of Ahem, for use in tests.
6025 - name: gfx.font_rendering.ahem_antialias_none
6026 type: RelaxedAtomicBool
6030 #if defined(XP_MACOSX)
6031 # Set to true to revert from HarfBuzz AAT shaping to the old Core Text
6033 - name: gfx.font_rendering.coretext.enabled
6034 type: RelaxedAtomicBool
6039 - name: gfx.font_rendering.colr_v1.enabled
6040 type: RelaxedAtomicBool
6044 - name: gfx.font_rendering.opentype_svg.enabled
6045 type: RelaxedAtomicBool
6050 - name: gfx.font_rendering.fallback.async
6051 type: RelaxedAtomicBool
6055 # whether to always search all font cmaps during system font fallback
6056 - name: gfx.font_rendering.fallback.always_use_cmaps
6057 type: RelaxedAtomicBool
6061 #ifdef MOZ_WIDGET_GTK
6062 - name: gfx.font_rendering.fontconfig.max_generic_substitutions
6063 type: RelaxedAtomicUint32
6069 # Whether the DirectWrite bold simulation should be used when a bold font-weight
6070 # is requested but no bold face available in the family. This renders poorly with
6071 # some third-party fonts, so by default we disable it for webfonts and allow it
6072 # only with locally-installed fonts.
6074 # 0 - never use DWrite bold simulation; always multi-strike instead
6075 # 1 - use DWrite bold for installed fonts, multi-strike for webfont resources
6076 # 2 - use DWrite bold for all fonts
6077 - name: gfx.font_rendering.directwrite.bold_simulation
6078 type: RelaxedAtomicUint32
6083 - name: gfx.font_rendering.graphite.enabled
6084 type: RelaxedAtomicBool
6088 # Cache shaped word results
6089 - name: gfx.font_rendering.wordcache.charlimit
6090 type: RelaxedAtomicUint32
6094 # Cache shaped word results
6095 - name: gfx.font_rendering.wordcache.maxentries
6096 type: RelaxedAtomicUint32
6100 # The level of logging:
6103 # - 2: adds warnings;
6104 # - 3 or 4: adds debug logging.
6105 # If you set the value to 4, you will also need to set the environment
6106 # variable MOZ_LOG to gfx:4. See mozilla/Logging.h for details.
6107 - name: gfx.logging.level
6108 type: RelaxedAtomicInt32
6109 value: mozilla::gfx::LOG_DEFAULT
6111 include: mozilla/gfx/LoggingConstants.h
6113 - name: gfx.logging.crash.length
6118 # The maximums here are quite conservative, we can tighten them if problems show up.
6119 - name: gfx.logging.texture-usage.enabled
6124 - name: gfx.logging.peak-texture-usage.enabled
6129 - name: gfx.logging.slow-frames.enabled
6134 # Use gfxPlatform::MaxAllocSize instead of the pref directly.
6135 - name: gfx.max-alloc-size
6137 value: (int32_t)0x7FFFFFFF
6139 do_not_use_directly: true
6141 # Use gfxPlatform::MaxTextureSize instead of the pref directly.
6142 - name: gfx.max-texture-size
6144 value: (int32_t)32767
6146 do_not_use_directly: true
6148 # Enable OffscreenCanvas everywhere.
6149 - name: gfx.offscreencanvas.enabled
6150 type: RelaxedAtomicBool
6154 - name: gfx.omta.background-color
6159 - name: gfx.partialpresent.force
6160 type: RelaxedAtomicInt32
6165 - name: gfx.swap-interval.glx
6166 type: RelaxedAtomicBool
6170 - name: gfx.swap-interval.egl
6171 type: RelaxedAtomicBool
6173 #ifdef MOZ_WIDGET_ANDROID
6180 # Log severe performance warnings to the error console and profiles.
6181 # This should be use to quickly find which slow paths are used by test cases.
6182 - name: gfx.perf-warnings.enabled
6183 type: RelaxedAtomicBool
6188 # Whether to force using GLX over EGL.
6189 - name: gfx.x11-egl.force-disabled
6194 # Whether to force using EGL over GLX.
6195 - name: gfx.x11-egl.force-enabled
6200 - name: gfx.x11.glx_sgi_video_sync
6206 - name: gfx.testing.device-fail
6207 type: RelaxedAtomicBool
6211 - name: gfx.testing.device-reset
6212 type: RelaxedAtomicInt32
6216 - name: gfx.text.disable-aa
6221 - name: gfx.text.subpixel-position.force-enabled
6226 - name: gfx.text.subpixel-position.force-disabled
6231 - name: gfx.use-iosurface-textures
6236 - name: gfx.use-mutex-on-present
6241 # Use SurfaceTextures as preferred backend for TextureClient/Host.
6242 - name: gfx.use-surfacetexture-textures
6247 - name: gfx.vsync.compositor.unobserve-count
6252 - name: gfx.vsync.force-disable-waitforvblank
6253 type: RelaxedAtomicBool
6257 - name: gfx.will-change.ignore-opacity
6258 type: RelaxedAtomicBool
6262 # Should we override the blocklist to enable WebGPU?
6263 - name: gfx.webgpu.ignore-blocklist
6268 # Whether to use the WebRender hardware backend
6269 - name: gfx.webrender.all
6275 - name: gfx.webrender.force-angle
6281 # WebRender is not enabled when there is no GPU process on window when
6282 # WebRender uses ANGLE. It is for avoiding that WebGL and WebRender use ANGLE
6283 # at once. But there is a case that we want to enable WebRender for testing.
6285 - name: gfx.webrender.enabled-no-gpu-process-with-angle-win
6291 - name: gfx.webrender.blob-images
6292 type: RelaxedAtomicBool
6296 - name: gfx.webrender.svg-images
6297 type: RelaxedAtomicBool
6301 - name: gfx.webrender.svg-shapes
6302 type: RelaxedAtomicBool
6306 - name: gfx.webrender.debug.blob.paint-flashing
6307 type: RelaxedAtomicBool
6311 - name: gfx.webrender.debug.enable-capture
6316 - name: gfx.webrender.debug.dl.dump-parent
6317 type: RelaxedAtomicBool
6321 - name: gfx.webrender.debug.dl.dump-content
6322 type: RelaxedAtomicBool
6326 - name: gfx.webrender.debug.dl.dump-content-serialized
6327 type: RelaxedAtomicBool
6331 #ifdef MOZ_WIDGET_GTK
6332 - name: gfx.webrender.reject-software-driver
6338 - name: gfx.webrender.debug.highlight-painted-layers
6339 type: RelaxedAtomicBool
6343 - name: gfx.webrender.late-scenebuild-threshold
6344 type: RelaxedAtomicInt32
6348 - name: gfx.webrender.max-filter-ops-per-chain
6349 type: RelaxedAtomicUint32
6353 - name: gfx.webrender.batching.lookback
6358 - name: gfx.webrender.blob-tile-size
6363 - name: gfx.webrender.batched-upload-threshold
6365 #if defined(MOZ_WIDGET_ANDROID)
6372 - name: gfx.webrender.compositor
6374 #if defined(XP_WIN) || defined(XP_MACOSX)
6381 - name: gfx.webrender.scissored-cache-clears.enabled
6386 - name: gfx.webrender.scissored-cache-clears.force-enabled
6391 - name: gfx.webrender.compositor.force-enabled
6396 - name: gfx.webrender.compositor.max_update_rects
6401 - name: gfx.webrender.compositor.surface-pool-size
6406 # Number of damage rects we can give to the compositor for a new frame with
6407 # partial present. This controls whether partial present is used or not.
6408 - name: gfx.webrender.max-partial-present-rects
6410 #if defined(XP_WIN) || defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GTK)
6417 # Whether or not we can reuse the buffer contents using the GL buffer age
6418 # extension, if supported by the platform. This requires partial present
6420 - name: gfx.webrender.allow-partial-present-buffer-age
6425 # Whether or not we should force partial present on.
6426 - name: gfx.webrender.force-partial-present
6431 - name: gfx.webrender.enable-gpu-markers
6440 - name: gfx.webrender.enable-item-cache
6445 # Whether or not to fallback from WebRender to Software WebRender.
6446 - name: gfx.webrender.fallback.software
6452 # Whether to use an overlay of hardware decoded video with DirectComposition
6453 - name: gfx.webrender.dcomp-video-hw-overlay-win
6457 # Enable hardware decoded video overlay even when it is blocked.
6458 - name: gfx.webrender.dcomp-video-hw-overlay-win-force-enabled
6462 # Whether to use a yuv video overlay layers with DirectComposition
6463 - name: gfx.webrender.dcomp-video-yuv-overlay-win
6467 - name: gfx.webrender.dcomp-video-vp-scaling-win
6471 # Whether to use virtual surfaces, as opposed to each tile owning a surface.
6472 - name: gfx.webrender.dcomp-use-virtual-surfaces
6476 # Whether to use an overlay of software decoded video with DirectComposition
6477 - name: gfx.webrender.dcomp-video-sw-overlay-win
6481 # Enable software decoded video overlay even when it is blocked.
6482 - name: gfx.webrender.dcomp-video-sw-overlay-win-force-enabled
6486 - name: gfx.webrender.dcomp-video-check-slow-present
6487 type: RelaxedAtomicBool
6490 # Force triple buffering in overlay's video swap chain
6491 - name: gfx.webrender.dcomp-video-force-triple-buffering
6492 type: RelaxedAtomicBool
6495 - name: gfx.video.convert-i420-to-nv12.force-enabled
6501 # Whether or not fallback to Software WebRender requires the GPU process.
6502 - name: gfx.webrender.fallback.software.requires-gpu-process
6507 - name: gfx.webrender.program-binary-disk
6509 #if defined(XP_WIN) || defined(ANDROID)
6516 - name: gfx.webrender.use-optimized-shaders
6521 - name: gfx.webrender.precache-shaders
6526 # When gl debug message is a high severity message, forwward it to gfx critical
6528 - name: gfx.webrender.gl-debug-message-critical-note
6530 #if defined(XP_WIN) && defined(NIGHTLY_BUILD)
6537 # Enable printing gl debug messages
6538 - name: gfx.webrender.gl-debug-message-print
6543 #ifdef NIGHTLY_BUILD
6544 # Keep this pref hidden on non-nightly builds to avoid people accidentally
6546 - name: gfx.webrender.panic-on-gl-error
6553 # Enables display of performance debugging counters when DirectComposition
6555 # Performance counters are displayed on the top-right corner of the screen.
6556 - name: gfx.webrender.debug.dcomp-counter
6557 type: RelaxedAtomicBool
6560 # Enables highlighting redraw regions of DCompositionVisual
6561 - name: gfx.webrender.debug.dcomp-redraw-regions
6562 type: RelaxedAtomicBool
6568 # Files show up in $HOME/Desktop/nativelayerdumps-PID/frame-123.html
6569 - name: gfx.webrender.debug.dump-native-layer-tree-to-file
6570 type: RelaxedAtomicBool
6575 - name: gfx.webrender.enable-low-priority-pool
6576 type: RelaxedAtomicBool
6577 #if defined(ANDROID)
6584 # Force subpixel anti-aliasing as much as possible, despite performance cost.
6585 - name: gfx.webrender.quality.force-subpixel-aa-where-possible
6590 - name: gfx.webrender.enable-subpixel-aa
6593 #ifdef MOZ_WIDGET_ANDROID
6600 - name: gfx.webrender.enable-client-storage
6606 # Width of WebRender tile size
6607 - name: gfx.webrender.picture-tile-width
6608 type: RelaxedAtomicInt32
6612 # Width of WebRender tile size
6613 - name: gfx.webrender.picture-tile-height
6614 type: RelaxedAtomicInt32
6618 # WebRender upper bound for shared surface size
6619 # According to apitrace, textures larger than 2048 break fast clear
6620 # optimizations on some intel drivers. We sometimes need to go larger, but
6621 # we try to avoid it.
6622 - name: gfx.webrender.max-shared-surface-size
6627 # Whether to use EGL robustness or not.
6628 - name: gfx.webrender.prefer-robustness
6630 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
6637 # Whether to use the WebRender software backend
6638 - name: gfx.webrender.software
6643 # Whether to use the D3D11 RenderCompositor when using WebRender software backend
6644 - name: gfx.webrender.software.d3d11
6649 - name: gfx.webrender.software.opengl
6651 #if defined(MOZ_WIDGET_ANDROID)
6658 - name: gfx.webrender.software.d3d11.upload-mode
6659 type: RelaxedAtomicInt32
6663 # Whether to force widgets to don't support acceleration to use WebRender
6665 - name: gfx.webrender.unaccelerated-widget.force
6666 type: RelaxedAtomicBool
6670 # Enable a lower quality, but higher performance pinch-zoom mode. Primarily
6671 # for devices with weak GPUs, or when running SWGL.
6672 - name: gfx.webrender.low-quality-pinch-zoom
6674 #if defined(MOZ_WIDGET_ANDROID) && defined(NIGHTLY_BUILD)
6681 # Disable wait of GPU execution completion
6682 - name: gfx.webrender.wait-gpu-finished.disabled
6691 # Enable NVIDIA RTX Video Super Resolution for video overlay on Windows
6692 # Note: This is also a setting in NVIDIA's driver settings, so once this is
6693 # stable, it should default to true
6694 - name: gfx.webrender.super-resolution.nvidia
6699 # Use vsync events generated by hardware
6700 - name: gfx.work-around-driver-bugs
6705 - name: gfx.ycbcr.accurate-conversion
6706 type: RelaxedAtomicBool
6710 #---------------------------------------------------------------------------
6711 # Prefs starting with "gl." (OpenGL)
6712 #---------------------------------------------------------------------------
6714 - name: gl.allow-high-power
6715 type: RelaxedAtomicBool
6719 - name: gl.ignore-dx-interop2-blacklist
6720 type: RelaxedAtomicBool
6724 - name: gl.use-tls-is-current
6725 type: RelaxedAtomicInt32
6729 #---------------------------------------------------------------------------
6730 # Prefs starting with "html5."
6731 #---------------------------------------------------------------------------
6733 # Turn HTML:inert on or off.
6734 - name: html5.inert.enabled
6739 # Time in milliseconds between the time a network buffer is seen and the timer
6740 # firing when the timer hasn't fired previously in this parse in the
6741 # off-the-main-thread HTML5 parser.
6742 - name: html5.flushtimer.initialdelay
6743 type: RelaxedAtomicInt32
6747 # Time in milliseconds between the time a network buffer is seen and the timer
6748 # firing when the timer has already fired previously in this parse.
6749 - name: html5.flushtimer.subsequentdelay
6750 type: RelaxedAtomicInt32
6754 #---------------------------------------------------------------------------
6755 # Prefs starting with "idle_period."
6756 #---------------------------------------------------------------------------
6758 - name: idle_period.min
6763 - name: idle_period.during_page_load.min
6768 - name: idle_period.cross_process_scheduling
6769 type: RelaxedAtomicBool
6773 #---------------------------------------------------------------------------
6774 # Prefs starting with "image."
6775 #---------------------------------------------------------------------------
6777 # The maximum size (in kB) that the aggregate frames of an animation can use
6778 # before it starts to discard already displayed frames and redecode them as
6780 - name: image.animated.decode-on-demand.threshold-kb
6781 type: RelaxedAtomicUint32
6785 # The minimum number of frames we want to have buffered ahead of an
6786 # animation's currently displayed frame.
6787 - name: image.animated.decode-on-demand.batch-size
6788 type: RelaxedAtomicUint32
6792 # Whether we should recycle already displayed frames instead of discarding
6793 # them. This saves on the allocation itself, and may be able to reuse the
6794 # contents as well. Only applies if generating full frames.
6795 - name: image.animated.decode-on-demand.recycle
6800 # Resume an animated image from the last displayed frame rather than
6801 # advancing when out of view.
6802 - name: image.animated.resume-from-last-displayed
6803 type: RelaxedAtomicBool
6807 # Maximum number of surfaces for an image before entering "factor of 2" mode.
6808 # This in addition to the number of "native" sizes of an image. A native size
6809 # is a size for which we can decode a frame without up or downscaling. Most
6810 # images only have 1, but some (i.e. ICOs) may have multiple frames for the
6811 # same data at different sizes.
6812 - name: image.cache.factor2.threshold-surfaces
6813 type: RelaxedAtomicInt32
6817 # Maximum size of a surface in KB we are willing to produce when rasterizing
6819 - name: image.cache.max-rasterized-svg-threshold-kb
6820 type: RelaxedAtomicInt32
6824 # The maximum size, in bytes, of the decoded images we cache.
6825 - name: image.cache.size
6830 # A weight, from 0-1000, to place on time when comparing to size.
6831 # Size is given a weight of 1000 - timeweight.
6832 - name: image.cache.timeweight
6837 # Decode all images automatically on load, ignoring our normal heuristics.
6838 - name: image.decode-immediately.enabled
6839 type: RelaxedAtomicBool
6843 # Decode all images synchronously
6844 - name: image.decode-sync.enabled
6849 # Whether we attempt to downscale images during decoding.
6850 - name: image.downscale-during-decode.enabled
6851 type: RelaxedAtomicBool
6855 # Whether we use EXIF metadata for image density.
6856 - name: image.exif-density-correction.enabled
6857 type: RelaxedAtomicBool
6861 # Whether EXIF density metadata is sanity checked against PixelXDimension and PixelYDimension
6862 - name: image.exif-density-correction.sanity-check.enabled
6863 type: RelaxedAtomicBool
6867 # The threshold for inferring that changes to an <img> element's |src|
6868 # attribute by JavaScript represent an animation, in milliseconds. If the |src|
6869 # attribute is changing more frequently than this value, then we enter a
6870 # special "animation mode" which is designed to eliminate flicker. Set to 0 to
6872 - name: image.infer-src-animation.threshold-ms
6873 type: RelaxedAtomicUint32
6877 # Whether the network request priority should be adjusted according
6878 # the layout and view frame position of each particular image.
6879 - name: image.layout_network_priority
6880 type: RelaxedAtomicBool
6884 # Chunk size for calls to the image decoders.
6885 - name: image.mem.decode_bytes_at_a_time
6890 # Discards inactive image frames and re-decodes them on demand from
6892 - name: image.mem.discardable
6893 type: RelaxedAtomicBool
6897 # Discards inactive image frames of _animated_ images and re-decodes them on
6898 # demand from compressed data. Has no effect if image.mem.discardable is false.
6899 - name: image.mem.animated.discardable
6904 # Enable extra information for debugging in the image memory reports.
6905 - name: image.mem.debug-reporting
6906 type: RelaxedAtomicBool
6910 # Force unmapping of unused shared surfaces after a timeout period or when we
6911 # encounter virtual memory pressure. By default this is only enabled on 32-bit
6913 - name: image.mem.shared.unmap.force-enabled
6918 # Minimum timeout to unmap shared surfaces since they have been last used,
6920 - name: image.mem.shared.unmap.min_expiration_ms
6925 # Mininum size for shared surfaces to consider unmapping, in kilobytes.
6926 - name: image.mem.shared.unmap.min_threshold_kb
6931 # How much of the data in the surface cache is discarded when we get a memory
6932 # pressure notification, as a fraction. The discard factor is interpreted as a
6933 # reciprocal, so a discard factor of 1 means to discard everything in the
6934 # surface cache on memory pressure, a discard factor of 2 means to discard half
6935 # of the data, and so forth. The default should be a good balance for desktop
6936 # and laptop systems, where we never discard visible images.
6937 - name: image.mem.surfacecache.discard_factor
6942 # Maximum size for the surface cache, in kilobytes.
6943 - name: image.mem.surfacecache.max_size_kb
6948 # Minimum timeout for expiring unused images from the surface cache, in
6949 # milliseconds. This controls how long we store cached temporary surfaces.
6950 - name: image.mem.surfacecache.min_expiration_ms
6955 # The surface cache's size, within the constraints of the maximum size set
6956 # above, is determined as a fraction of main memory size. The size factor is
6957 # interpreted as a reciprocal, so a size factor of 4 means to use no more than
6958 # 1/4 of main memory. The default should be a good balance for most systems.
6959 - name: image.mem.surfacecache.size_factor
6964 # Whether we record SVG images as blobs or not.
6965 - name: image.svg.blob-image
6966 type: RelaxedAtomicBool
6970 # Whether we attempt to decode WebP images or not.
6971 - name: image.webp.enabled
6972 type: RelaxedAtomicBool
6976 # Whether we attempt to decode AVIF images or not.
6977 - name: image.avif.enabled
6978 type: RelaxedAtomicBool
6979 #if defined(MOZ_AV1)
6986 # How strict we are in accepting/rejecting AVIF inputs according to whether they
6987 # conform to the specification
6988 # 0 = Permissive: accept whatever we can simply, unambiguously interpret
6989 # 1 = Normal: reject violations of "shall" specification directives
6990 # 2 = Strict: reject violations of "should" specification directives
6991 - name: image.avif.compliance_strictness
6992 type: RelaxedAtomicInt32
6996 # Whether we apply container-level transforms like mirroring and rotation
6997 - name: image.avif.apply_transforms
6998 type: RelaxedAtomicBool
7002 # Whether we use dav1d (true) or libaom (false) to decode AVIF image
7003 - name: image.avif.use-dav1d
7004 type: RelaxedAtomicBool
7008 # Whether to allow decoding of animated AVIF sequences.
7009 - name: image.avif.sequence.enabled
7010 type: RelaxedAtomicBool
7014 # Whether AVIF files containing sequences should be animated even when the
7015 # major brand is set to 'avif'.
7016 - name: image.avif.sequence.animate_avif_major_branded_images
7017 type: RelaxedAtomicBool
7021 # Whether we attempt to decode JXL images or not.
7022 - name: image.jxl.enabled
7023 type: RelaxedAtomicBool
7027 #---------------------------------------------------------------------------
7028 # Prefs starting with "intl."
7029 #---------------------------------------------------------------------------
7032 # Whether making Gecko TSF-aware or only working with IMM. TSF is a modern
7033 # IME API set of Windows which replaces IMM APIs. Unless you can avoid the
7034 # problem which you see with enabling TSF, you shouldn't change this pref
7035 # to false since IMM handler is now not maintained nor tested with latest
7036 # Windows. If you need to change this pref to false, please file a bug to
7037 # <https://bugzilla.mozilla.org>.
7038 # Restart required to apply this pref change.
7039 - name: intl.tsf.enabled
7044 # Whether Gecko creates or does not create native caret for legacy ATOK
7046 - name: intl.tsf.hack.atok.create_native_caret
7051 # Whether Gecko returns available composition string rect or TS_E_NOLAYOUT
7052 # from ITextStoreACP::GetTextExt() when the specified range is same as the
7053 # range of composition string but some character rects in it are still
7054 # dirty if and only if ATOK is active TIP.
7055 # Note that this is ignored if active ATOK is or older than 2016 and
7056 # create_native_caret is true.
7057 - name: intl.tsf.hack.atok.do_not_return_no_layout_error_of_composition_string
7062 # Whether Gecko sets input scope of ATOK to "search" or never does it.
7063 # When "search" is set to the input scope, ATOK may stop their suggestions.
7064 # To avoid it, turn this pref on, or changing the settings in ATOK.
7065 # Note that if you enable this pref and you use the touch keyboard for touch
7066 # screens, you cannot access some specific features for a "search" input
7068 - name: intl.tsf.hack.atok.search_input_scope_disabled
7073 # Whether Gecko returns caret rect before composition string or TS_E_NOLAYOUT
7074 # from ITextStoreACP::GetTextExt() when the specified range is larger than
7075 # composition start offset if and only if Free ChangJie is active TIP.
7076 - name: intl.tsf.hack.free_chang_jie.do_not_return_no_layout_error
7081 # Whether Gecko returns available composition string rect or TS_E_NOLAYOUT
7082 # from ITextStoreACP::GetTextExt() when the specified range is same as the
7083 # range of composition string but some character rects in it are still
7084 # dirty if and only if Japanist 10 is active TIP.
7085 - name: intl.tsf.hack.japanist10.do_not_return_no_layout_error_of_composition_string
7090 # Whether Gecko returns previous character rect or TS_E_NOLAYOUT from
7091 # ITfContextView::GetTextExt() when the specified range is the first
7092 # character of selected clause of composition string if and only if Japanese TIP
7093 # of Microsoft is active.
7094 - name: intl.tsf.hack.ms_japanese_ime.do_not_return_no_layout_error_at_first_char
7099 # Whether Gecko returns previous character rect or TS_E_NOLAYOUT from
7100 # ITfContextView::GetTextExt() when the specified range is the caret of
7101 # composition string if and only if Japanese TIP of Microsoft is active.
7102 - name: intl.tsf.hack.ms_japanese_ime.do_not_return_no_layout_error_at_caret
7107 # Whether Gecko returns caret rect before composition string or TS_E_NOLAYOUT
7108 # from ITfContextView::GetTextExt() when the specified range is larger than
7109 # composition start offset if and only Simplified Chinese TIP of Microsoft
7111 - name: intl.tsf.hack.ms_simplified_chinese.do_not_return_no_layout_error
7116 # Whether Geckos hacks ITextStoreACP::QueryInsert() or not. The method should
7117 # return new selection after specified length text is inserted at specified
7118 # range. However, Microsoft Pinyin and Microsoft Wubi expect that the result
7119 # is same as specified range. If following prefs are true,
7120 # ITextStoreACP::QueryInsert() returns specified range only when one of the
7122 - name: intl.tsf.hack.ms_simplified_chinese.query_insert_result
7127 # Whether Gecko returns caret rect before composition string or TS_E_NOLAYOUT
7128 # from ITfContextView::GetTextExt() when the specified range is larger than
7129 # composition start offset if and only Traditional Chinese TIP of Microsoft
7131 - name: intl.tsf.hack.ms_traditional_chinese.do_not_return_no_layout_error
7136 # Whether Geckos hacks ITextStoreACP::QueryInsert() or not. The method should
7137 # return new selection after specified length text is inserted at specified
7138 # range. However, Microsoft ChangJie and Microsoft Quick expect that the
7139 # result is same as specified range. If following prefs are true,
7140 # ITextStoreACP::QueryInsert() returns specified range only when one of the
7142 - name: intl.tsf.hack.ms_traditional_chinese.query_insert_result
7147 # Whether Gecko sets input scope of the URL bar to IS_DEFAULT when black
7148 # listed IMEs are active or does not. If you use tablet mode mainly and you
7149 # want to use touch keyboard for URL when you set focus to the URL bar, you
7150 # can set this to false. Then, you'll see, e.g., ".com" key on the keyboard.
7151 # However, if you set this to false, such IMEs set its open state to "closed"
7152 # when you set focus to the URL bar. I.e., input mode is automatically
7153 # changed to English input mode.
7154 # Known buggy IME list:
7155 # - Microsoft IME for Japanese
7156 # - Google Japanese Input
7157 # - Microsoft Bopomofo
7158 # - Microsoft ChangJie
7159 # - Microsoft Phonetic
7161 # - Microsoft New ChangJie
7162 # - Microsoft New Phonetic
7163 # - Microsoft New Quick
7164 # - Microsoft Pinyin
7165 # - Microsoft Pinyin New Experience Input Style
7167 # - Microsoft IME for Korean (except on Win7)
7168 # - Microsoft Old Hangul
7169 - name: intl.ime.hack.set_input_scope_of_url_bar_to_default
7174 # On Windows 10 Build 17643 (an Insider Preview build of RS5), Microsoft
7175 # have fixed the caller of ITextACPStore::GetTextExt() to return
7176 # TS_E_NOLAYOUT to TIP as-is, rather than converting to E_FAIL.
7177 # Therefore, if TIP supports asynchronous layout computation perfectly, we
7178 # can return TS_E_NOLAYOUT and TIP waits next OnLayoutChange()
7179 # notification. However, some TIPs still have some bugs of asynchronous
7180 # layout support. We keep hacking the result of GetTextExt() like running
7181 # on Windows 10, however, there could be unknown TIP bugs if we stop
7182 # hacking the result. So, user can stop checking build ID to make Gecko
7183 # hack the result forcibly.
7184 - name: intl.tsf.hack.allow_to_stop_hacking_on_build_17643_or_later
7186 value: @IS_EARLY_BETA_OR_EARLIER@
7189 # If true, automatically extend selection to cluster boundaries when
7190 # TSF/TIP requests to select from/by middle of a cluster.
7191 - name: intl.tsf.hack.extend_setting_selection_range_to_cluster_boundaries
7193 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
7196 # Whether Gecko supports IMM even if TSF is enabled. This pref exists
7197 # only for check TSF behavior of new versions. Therefore, users should
7198 # not set this to false for daily use.
7199 - name: intl.tsf.support_imm
7204 # If true, TSF and TIP (IME) can retrieve URL of the document containing
7205 # the focused element. When this is set to true, Gecko exposes the spec
7207 # And Gecko exposes only "http" and "https" URLs. E.g., "data", "blob",
7208 # "file" URLs are never exposed.
7209 - name: intl.tsf.expose_url.allowed
7214 # If true, TSF and TIP (IME) can retrieve URL of the document containing
7215 # the focused element in the private browsing mode too.
7216 - name: intl.tsf.expose_url_in_private_browsing.allowed
7221 #if defined(ENABLE_TESTS)
7222 # If true, NS_GetComplexLineBreaks compares the line breaks produced in the
7223 # content process using the Uniscribe line breaker, with those from a
7224 # brokered call to the parent.
7225 - name: intl.compare_against_brokered_complex_line_breaks
7232 # If you use legacy Chinese IME which puts an ideographic space to composition
7233 # string as placeholder, this pref might be useful. If this is true and when
7234 # web contents forcibly commits composition (e.g., moving focus), the
7235 # ideographic space will be ignored (i.e., commits with empty string).
7236 - name: intl.ime.remove_placeholder_character_at_commit
7242 #if defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK)
7243 # Whether text input without keyboard press nor IME composition should cause a
7244 # set of composition events or not. E.g., when you use Emoji picker on macOS,
7245 # it inserts an Emoji character directly. If set to true, `compositionstart`,
7246 # `compositionupdate` and `compositionend` events will be fired, and the
7247 # correspnding `beforeinput` events are not cancelable. Otherwise, if set to
7248 # false, any user input events are not exposed to web apps but only
7249 # `beforeinput` event is fired as "insert text" as a cancelable event.
7250 - name: intl.ime.use_composition_events_for_insert_text
7256 # If true, we use UAX14/29 compatible segmenter rules using ICU4X
7257 - name: intl.icu4x.segmenter.enabled
7258 type: RelaxedAtomicBool
7259 value: @IS_NIGHTLY_BUILD@
7262 #---------------------------------------------------------------------------
7263 # Prefs starting with "javascript."
7265 # NOTE: SpiderMonkey starts up before `mirror: once` preferences are sealed and
7266 # we cannot use them (Bug 1698311). Instead, we use `mirror: always`
7267 # prefs but mark as `do_not_use_directly` and `LoadStartupJSPrefs` will
7268 # mirror them into SpiderMonkey.
7269 #---------------------------------------------------------------------------
7271 # The JavaScript JIT compilers. These are read once on startup so a browser may
7272 # need to be restarted if toggling them. In general each subsequent JIT depends
7273 # on the ones before it being enabled.
7274 - name: javascript.options.blinterp
7277 mirror: always # LoadStartupJSPrefs
7278 do_not_use_directly: true
7280 - name: javascript.options.baselinejit
7283 mirror: always # LoadStartupJSPrefs
7284 do_not_use_directly: true
7286 - name: javascript.options.ion
7289 mirror: always # LoadStartupJSPrefs
7290 do_not_use_directly: true
7292 # The irregexp JIT for regex evaluation.
7293 - name: javascript.options.native_regexp
7296 mirror: always # LoadStartupJSPrefs
7297 do_not_use_directly: true
7299 # Jit Hints Cache - An in-process cache for the
7300 # content process to accelerate repeated baseline
7302 - name: javascript.options.jithints
7305 mirror: always # LoadStartupJSPrefs
7306 do_not_use_directly: true
7308 # "Warm-up" thresholds at which we attempt to compile a script/function with
7309 # the next JIT tier.
7311 # NOTE: These must match JitOptions defaults.
7312 - name: javascript.options.blinterp.threshold
7315 mirror: always # LoadStartupJSPrefs
7316 do_not_use_directly: true
7318 - name: javascript.options.baselinejit.threshold
7321 mirror: always # LoadStartupJSPrefs
7322 do_not_use_directly: true
7324 - name: javascript.options.ion.threshold
7327 mirror: always # LoadStartupJSPrefs
7328 do_not_use_directly: true
7330 # Enable off-main-thread Warp compilation.
7331 - name: javascript.options.ion.offthread_compilation
7334 mirror: always # LoadStartupJSPrefs
7335 do_not_use_directly: true
7338 # Enable extra correctness checks in the JITs that are slow and only available
7340 - name: javascript.options.jit.full_debug_checks
7343 mirror: always # LoadStartupJSPrefs
7344 do_not_use_directly: true
7347 # Heuristic threshold for Warp/Ion to decide that too many bailouts are
7348 # happening and an IonScript should be discarded.
7350 # NOTE: This must match JitOptions defaults.
7351 - name: javascript.options.ion.frequent_bailout_threshold
7354 mirror: always # LoadStartupJSPrefs
7355 do_not_use_directly: true
7357 # A threshold for Warp to decide whether a function can be inlined.
7358 # If the size of a function is smaller than this threshold, then it
7361 # NOTE: These must match JitOptions defaults.
7362 - name: javascript.options.inlining_bytecode_max_length
7366 do_not_use_directly: true
7368 # Whether the megamorphic property lookup cache is enabled.
7370 # NOTE: This must match JitOptions defaults.
7371 - name: javascript.options.watchtower.megamorphic
7374 mirror: always # LoadStartupJSPrefs
7375 do_not_use_directly: true
7377 - name: javascript.options.compact_on_user_inactive
7382 # The default amount of time to wait from the user being idle to starting a
7383 # shrinking GC. Measured in milliseconds.
7384 - name: javascript.options.compact_on_user_inactive_delay
7386 #ifdef NIGHTLY_BUILD
7393 # Use better error message when accessing property of null or undefined.
7394 - name: javascript.options.property_error_message_fix
7396 value: @IS_NIGHTLY_OR_DEV_EDITION@
7399 # Support for weak references in JavaScript (WeakRef and FinalizationRegistry).
7400 - name: javascript.options.weakrefs
7405 # Whether to expose the FinalizationRegistry.prototype.cleanupSome method.
7406 - name: javascript.options.experimental.weakrefs.expose_cleanupSome
7411 # ShadowRealms: https://github.com/tc39/proposal-shadowrealm
7412 - name: javascript.options.experimental.shadow_realms
7413 # Atomic, as we assert the preference, and that assertion may happen
7415 type: RelaxedAtomicBool
7419 #ifdef NIGHTLY_BUILD
7420 # Experimental support for Iterator Helpers in JavaScript.
7421 - name: javascript.options.experimental.iterator_helpers
7426 # Experimental support for Array Grouping in JavaScript.
7427 - name: javascript.options.experimental.array_grouping
7432 # Experimental support for String.prototype.{is,to}WellFormed in JavaScript.
7433 - name: javascript.options.experimental.well_formed_unicode_strings
7438 # Experimental support for New Set methods
7439 - name: javascript.options.experimental.new_set_methods
7444 # Experimental support for ArrayBuffer.prototype.transfer{,ToFixedLength}() in JavaScript.
7445 - name: javascript.options.experimental.arraybuffer_transfer
7449 #endif // NIGHTLY_BUILD
7451 #ifdef NIGHTLY_BUILD
7452 # Experimental support for Import Assertions in JavaScript.
7453 - name: javascript.options.experimental.import_assertions
7457 #endif // NIGHTLY_BUILD
7459 - name: javascript.options.wasm_caching
7464 # The amount of time we wait between a request to GC (due to leaving a page) and doing the actual GC, in ms.
7465 - name: javascript.options.gc_delay
7470 # The amount of time we wait from the first request to GC to actually doing the first GC, in ms.
7471 - name: javascript.options.gc_delay.first
7476 # After doing a zonal GC, wait this much time (in ms) and then do a full GC,
7477 # unless one is already pending.
7478 - name: javascript.options.gc_delay.full
7483 # Maximum amount of time that should elapse between incremental GC slices, in ms.
7484 - name: javascript.options.gc_delay.interslice
7489 # nsJSEnvironmentObserver observes the memory-pressure notifications and
7490 # forces a garbage collection and cycle collection when it happens, if the
7491 # appropriate pref is set.
7492 - name: javascript.options.gc_on_memory_pressure
7494 # Disable the JS engine's GC on memory pressure, since we do one in the
7495 # mobile browser (bug 669346).
7496 # XXX: this value possibly should be changed, or the pref removed entirely.
7498 value: @IS_NOT_ANDROID@
7501 # We allow at most MIN(max, MAX(NUM_CPUS / cpu_divisor, 1)) concurrent GCs
7503 - name: javascript.options.concurrent_multiprocess_gcs.cpu_divisor
7504 type: RelaxedAtomicUint32
7508 # See 'cpu_divisor' above, 0 means UINT_32_MAX.
7509 - name: javascript.options.concurrent_multiprocess_gcs.max
7510 type: RelaxedAtomicUint32
7514 - name: javascript.options.mem.log
7519 - name: javascript.options.mem.notify
7524 # Whether the Parent process allocates and shares memory with all content
7525 # processes. This is mirrored once, as the parent process will do this
7526 # allocation early on.
7527 - name: javascript.options.self_hosted.use_shared_memory
7530 mirror: always # LoadStartupJSPrefs
7531 do_not_use_directly: true
7533 - name: javascript.options.main_thread_stack_quota_cap
7535 #if defined(MOZ_ASAN)
7536 value: 6 * 1024 * 1024
7538 value: 2 * 1024 * 1024
7542 - name: javascript.options.wasm_optimizingjit
7547 #if defined(ENABLE_WASM_RELAXED_SIMD)
7548 - name: javascript.options.wasm_relaxed_simd
7550 value: @IS_NIGHTLY_BUILD@
7552 #endif // defined(ENABLE_WASM_RELAXED_SIMD)
7554 #if defined(ENABLE_WASM_MOZ_INTGEMM)
7555 - name: javascript.options.wasm_moz_intgemm
7557 value: @IS_NIGHTLY_BUILD@
7559 #endif // defined(ENABLE_WASM_MOZ_INTGEMM)
7561 #if defined(ENABLE_WASM_EXTENDED_CONST)
7562 - name: javascript.options.wasm_extended_const
7566 #endif // defined(ENABLE_WASM_EXTENDED_CONST)
7568 - name: javascript.options.wasm_exceptions
7573 #if defined(ENABLE_WASM_FUNCTION_REFERENCES)
7574 - name: javascript.options.wasm_function_references
7578 #endif // defined(ENABLE_WASM_FUNCTION_REFERENCES)
7580 #if defined(ENABLE_WASM_GC)
7581 - name: javascript.options.wasm_gc
7585 #endif // defined(ENABLE_WASM_GC)
7587 #if defined(ENABLE_WASM_GC)
7588 - name: javascript.options.wasm_final_types
7592 #endif // defined(ENABLE_WASM_GC)
7594 #if defined(ENABLE_WASM_MEMORY_CONTROL)
7595 - name: javascript.options.wasm_memory_control
7599 #endif // defined(ENABLE_WASM_MEMORY_CONTROL)
7601 #if defined(ENABLE_WASM_SIMD)
7602 #if defined(JS_CODEGEN_X64) || defined(JS_CODEGEN_X86)
7603 # Enables AVX instructions support on X86/X64 platforms.
7604 # Changing these prefs requires a restart.
7605 - name: javascript.options.wasm_simd_avx
7612 #if defined(ENABLE_WASM_MEMORY64)
7613 - name: javascript.options.wasm_memory64
7615 value: @IS_NIGHTLY_BUILD@
7617 #endif // defined(ENABLE_WASM_MEMORY64)
7619 #if defined(ENABLE_WASM_TAIL_CALLS)
7620 - name: javascript.options.wasm_tail_calls
7622 value: @IS_NIGHTLY_BUILD@
7624 #endif // defined(ENABLE_WASM_TAIL_CALLS)
7626 # Support for pretenuring allocations based on their allocation site.
7627 - name: javascript.options.site_based_pretenuring
7630 mirror: always # LoadStartupJSPrefs
7631 do_not_use_directly: true
7633 #if !defined(JS_CODEGEN_MIPS32) && !defined(JS_CODEGEN_MIPS64) && !defined(JS_CODEGEN_LOONG64)
7634 # Spectre security vulnerability mitigations for the JS JITs.
7636 # NOTE: The MIPS and LoongArch backends do not support these mitigations (and generally
7637 # do not need them). In that case, leave the pref unlisted with its
7638 # default value of false.
7639 - name: javascript.options.spectre.index_masking
7642 mirror: always # LoadStartupJSPrefs
7643 do_not_use_directly: true
7645 - name: javascript.options.spectre.object_mitigations
7648 mirror: always # LoadStartupJSPrefs
7649 do_not_use_directly: true
7651 - name: javascript.options.spectre.string_mitigations
7654 mirror: always # LoadStartupJSPrefs
7655 do_not_use_directly: true
7657 - name: javascript.options.spectre.value_masking
7660 mirror: always # LoadStartupJSPrefs
7661 do_not_use_directly: true
7663 - name: javascript.options.spectre.jit_to_cxx_calls
7666 mirror: always # LoadStartupJSPrefs
7667 do_not_use_directly: true
7668 #endif // !defined(JS_CODEGEN_MIPSXX) && !defined(JS_CODEGEN_LOONG64)
7670 # Separate pref to override the values of the Spectre-related prefs above for
7671 # isolated web content processes, where we don't need these mitigations.
7672 - name: javascript.options.spectre.disable_for_isolated_content
7674 value: @IS_NIGHTLY_BUILD@
7677 # Whether the W^X policy is enforced to mark JIT code pages as either writable
7678 # or executable but never both at the same time. OpenBSD defaults to W^X.
7679 - name: javascript.options.content_process_write_protect_code
7681 #if defined(XP_OPENBSD)
7688 # Whether to use the XPCOM thread pool for JS helper tasks.
7689 - name: javascript.options.external_thread_pool
7693 do_not_use_directly: true
7695 # Whether to use the off-thread script compilation and decoding.
7696 - name: javascript.options.parallel_parsing
7701 # Whether to use fdlibm for Math.sin, Math.cos, and Math.tan. When
7702 # privacy.resistFingerprinting is true, this pref is ignored and fdlibm is used
7704 - name: javascript.options.use_fdlibm_for_sin_cos_tan
7709 # Whether to support parsing '//(#@) source(Mapping)?URL=' pragmas.
7710 - name: javascript.options.source_pragmas
7716 - name: javascript.options.asmjs
7721 # Whether to throw a TypeError if asm.js code hits validation failure.
7722 - name: javascript.options.throw_on_asmjs_validation_failure
7727 #---------------------------------------------------------------------------
7728 # Prefs starting with "layers."
7729 #---------------------------------------------------------------------------
7731 # Whether to disable acceleration for all widgets.
7732 - name: layers.acceleration.disabled
7736 do_not_use_directly: true
7737 # Instead, use gfxConfig::IsEnabled(Feature::HW_COMPOSITING).
7739 # Whether to force acceleration on, ignoring blacklists.
7741 # bug 838603 -- on Android, accidentally blacklisting OpenGL layers
7742 # means a startup crash for everyone.
7743 # Temporarily force-enable GL compositing. This is default-disabled
7744 # deep within the bowels of the widgetry system. Remove me when GL
7745 # compositing isn't default disabled in widget/android.
7746 - name: layers.acceleration.force-enabled
7750 do_not_use_directly: true
7752 # Whether we allow AMD switchable graphics.
7753 - name: layers.amd-switchable-gfx.enabled
7758 # Whether to use async panning and zooming.
7759 - name: layers.async-pan-zoom.enabled
7763 do_not_use_directly: true
7765 - name: layers.child-process-shutdown
7766 type: RelaxedAtomicBool
7770 - name: layers.d3d11.force-warp
7775 - name: layers.d3d11.enable-blacklist
7780 # Enable DEAA antialiasing for transformed layers in the compositor.
7781 - name: layers.deaa.enabled
7782 type: RelaxedAtomicBool
7783 #if defined(MOZ_WIDGET_ANDROID)
7790 # Force all possible layers to be always active layers.
7791 - name: layers.force-active
7796 - name: layers.force-shmem-tiles
7801 - name: layers.draw-mask-debug
7802 type: RelaxedAtomicBool
7806 - name: layers.force-synchronous-resize
7807 type: RelaxedAtomicBool
7809 # We want to control it by nsWindow::SynchronouslyRepaintOnResize() on Linux/Wayland.
7816 - name: layers.gpu-process.allow-software
7825 - name: layers.gpu-process.enabled
7827 #if defined(XP_WIN) || defined(MOZ_WIDGET_ANDROID)
7834 - name: layers.gpu-process.force-enabled
7839 - name: layers.gpu-process.ipc_reply_timeout_ms
7844 # How many unstable GPU process restarts we allow for a given configuration.
7845 - name: layers.gpu-process.max_restarts
7846 type: RelaxedAtomicInt32
7847 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_ANDROID)
7848 #if defined(NIGHTLY_BUILD)
7858 # How many frames we must render before declaring the GPU process stable, and
7859 # allow restarts without it counting against our maximum restarts.
7860 - name: layers.gpu-process.stable.frame-threshold
7861 type: RelaxedAtomicUint32
7865 # How many milliseconds the GPU process must have lived before we accept that
7866 # it is stable, and allow restarts without it counting against our maximum
7868 - name: layers.gpu-process.stable.min-uptime-ms
7869 type: RelaxedAtomicInt32
7873 # Note: This pref will only be used if it is less than layers.gpu-process.max_restarts.
7874 - name: layers.gpu-process.max_restarts_with_decoder
7875 type: RelaxedAtomicInt32
7879 - name: layers.gpu-process.startup_timeout_ms
7884 - name: layers.gpu-process.crash-also-crashes-browser
7889 # Whether to animate simple opacity and transforms on the compositor.
7890 - name: layers.offmainthreadcomposition.async-animations
7895 # Whether to log information about off main thread animations to stderr.
7896 - name: layers.offmainthreadcomposition.log-animations
7901 - name: layers.offmainthreadcomposition.force-disabled
7906 # Compositor target frame rate. NOTE: If vsync is enabled the compositor
7907 # frame rate will still be capped.
7908 # -1 -> default (match layout.frame_rate or 60 FPS)
7909 # 0 -> full-tilt mode: Recomposite even if not transaction occured.
7910 - name: layers.offmainthreadcomposition.frame-rate
7911 type: RelaxedAtomicInt32
7916 - name: layers.prefer-opengl
7922 # Copy-on-write canvas.
7923 - name: layers.shared-buffer-provider.enabled
7924 type: RelaxedAtomicBool
7928 - name: layers.recycle-allocator-rdd
7933 - name: layers.iosurfaceimage.recycle-limit
7934 type: RelaxedAtomicUint32
7938 - name: layers.iosurfaceimage.use-nv12
7943 #---------------------------------------------------------------------------
7944 # Prefs starting with "layout."
7945 #---------------------------------------------------------------------------
7947 # Debug-only pref to force enable the AccessibleCaret. If you want to
7948 # control AccessibleCaret by mouse, you'll need to set
7949 # "layout.accessiblecaret.hide_carets_for_mouse_input" to false.
7950 - name: layout.accessiblecaret.enabled
7955 # Enable the accessible caret on platforms/devices
7956 # that we detect have touch support. Note that this pref is an
7957 # additional way to enable the accessible carets, rather than
7958 # overriding the layout.accessiblecaret.enabled pref.
7959 - name: layout.accessiblecaret.enabled_on_touch
7964 # By default, carets become tilt only when they are overlapping.
7965 - name: layout.accessiblecaret.always_tilt
7970 # Show caret in cursor mode when long tapping on an empty content. This
7971 # also changes the default update behavior in cursor mode, which is based
7972 # on the emptiness of the content, into something more heuristic. See
7973 # AccessibleCaretManager::UpdateCaretsForCursorMode() for the details.
7974 - name: layout.accessiblecaret.caret_shown_when_long_tapping_on_empty_content
7979 # 0 = by default, always hide carets for selection changes due to JS calls.
7980 # 1 = update any visible carets for selection changes due to JS calls,
7981 # but don't show carets if carets are hidden.
7982 # 2 = always show carets for selection changes due to JS calls.
7983 - name: layout.accessiblecaret.script_change_update_mode
7988 # Allow one caret to be dragged across the other caret without any limitation.
7989 # This matches the built-in convention for all desktop platforms.
7990 - name: layout.accessiblecaret.allow_dragging_across_other_caret
7995 # Optionally provide haptic feedback on long-press selection events.
7996 - name: layout.accessiblecaret.hapticfeedback
8001 # Smart phone-number selection on long-press is not enabled by default.
8002 - name: layout.accessiblecaret.extend_selection_for_phone_number
8007 # Keep the accessible carets hidden when the user is using mouse input (as
8008 # opposed to touch/pen/etc.).
8009 - name: layout.accessiblecaret.hide_carets_for_mouse_input
8014 # CSS attributes (width, height, margin-left) of the AccessibleCaret in CSS
8016 - name: layout.accessiblecaret.width
8021 - name: layout.accessiblecaret.height
8026 - name: layout.accessiblecaret.margin-left
8031 - name: layout.accessiblecaret.transition-duration
8036 # Simulate long tap events to select words. Mainly used in manual testing
8038 - name: layout.accessiblecaret.use_long_tap_injector
8043 # To support magnify glass, whether we dispatch additional chrome event such as
8045 - name: layout.accessiblecaret.magnifier.enabled
8050 # One of several prefs affecting the maximum area to pre-render when animating
8051 # a large element on the compositor.
8052 # This pref enables transform (and transform like properties) animations on a
8053 # large element run on the compositor with rendering partial area of the
8054 # element on the main thread instead of rendering the whole area. Once the
8055 # animation tried to composite out of the partial rendered area, the animation
8056 # is rendered again with the latest visible partial area.
8057 - name: layout.animation.prerender.partial
8058 type: RelaxedAtomicBool
8062 # One of several prefs affecting the maximum area to pre-render when animating
8063 # a large element on the compositor.
8064 # This value is applied to both x and y axes and a perfect square contructed
8065 # by the greater axis value which will be capped by the absolute limits is used
8066 # for the partial pre-render area.
8067 - name: layout.animation.prerender.viewport-ratio-limit
8072 # One of several prefs affecting the maximum area to pre-render when animating
8073 # a large element on the compositor.
8074 - name: layout.animation.prerender.absolute-limit-x
8075 type: RelaxedAtomicUint32
8079 # One of several prefs affecting the maximum area to pre-render when animating
8080 # a large element on the compositor.
8081 - name: layout.animation.prerender.absolute-limit-y
8082 type: RelaxedAtomicUint32
8086 # Test-only pref, if this is true, partial pre-rendered transform animations
8087 # get stuck when it reaches to the pre-rendered boundaries and the pre-render
8088 # region is never updated.
8089 - name: layout.animation.prerender.partial.jank
8090 type: RelaxedAtomicBool
8094 # Override DPI. A value of -1 means use the maximum of 96 and the system DPI.
8095 # A value of 0 means use the system DPI. A positive value is used as the DPI.
8096 # This sets the physical size of a device pixel and thus controls the
8097 # interpretation of physical units such as "pt".
8098 - name: layout.css.dpi
8103 # Whether Container Queries are enabled
8104 - name: layout.css.container-queries.enabled
8105 type: RelaxedAtomicBool
8110 # Whether content-box and stroke-box are enabled for transform-box.
8111 - name: layout.css.transform-box-content-stroke.enabled
8112 type: RelaxedAtomicBool
8113 value: @IS_NIGHTLY_BUILD@
8117 # Whether trigonometric constants and functions are enabled in calc().
8118 - name: layout.css.trig.enabled
8119 type: RelaxedAtomicBool
8124 # Whether the round() function is enabled in calc().
8125 - name: layout.css.round.enabled
8126 type: RelaxedAtomicBool
8131 # Whether the mod() / rem() functions are enabled in calc().
8132 - name: layout.css.mod-rem.enabled
8133 type: RelaxedAtomicBool
8138 # Whether exponential functions are enabled in calc().
8139 - name: layout.css.exp.enabled
8140 type: RelaxedAtomicBool
8145 # Whether sign/abs functions are enabled in calc().
8146 - name: layout.css.abs-sign.enabled
8147 type: RelaxedAtomicBool
8152 # Whether infinity / nan constants are enabled in calc().
8153 - name: layout.css.nan-inf.enabled
8154 type: RelaxedAtomicBool
8159 # Should we look for counter ancestor scopes first?
8160 - name: layout.css.counter-ancestor-scope.enabled
8165 # Whether the `-moz-control-character-visibility` property is exposed to
8168 # Only for testing purposes.
8169 - name: layout.css.moz-control-character-visibility.enabled
8170 type: RelaxedAtomicBool
8175 # This pref controls whether the `prefers-color-scheme` value of iframes images
8176 # reacts to the embedder `color-scheme` in content.
8177 - name: layout.css.iframe-embedder-prefers-color-scheme.content.enabled
8178 type: RelaxedAtomicBool
8182 # The minimum contrast ratio between the accent color foreground and background
8185 # We don't use this for text, so we need a contrast of at least AA (for user
8186 # interface components and graphical objects), which per WCAG is 3:1
8187 - name: layout.css.accent-color.min-contrast-ratio
8192 # The target contrast ratio between the accent color foreground and background
8193 # colors when darkening.
8195 # We aim a bit further than the minimum contrast ratio, which seems to provide
8196 # nice results in practice.
8197 - name: layout.css.accent-color.darkening-target-contrast-ratio
8202 # Whether the `animation-composition` in css-animations-2 is enabled.
8203 - name: layout.css.animation-composition.enabled
8208 # Is the codepath for using cached scrollbar styles enabled?
8209 - name: layout.css.cached-scrollbar-styles.enabled
8214 # Whether we cache inline styles in a document unconditionally or not.
8215 - name: layout.css.inline-style-caching.always-enabled
8220 # Whether computed local-fragment-only image urls serialize using the same
8221 # rules as filter/mask/etc (not resolving the URL for local refs).
8223 # See https://github.com/w3c/csswg-drafts/issues/3195
8224 - name: layout.css.computed-style.dont-resolve-image-local-refs
8225 type: RelaxedAtomicBool
8230 # Whether we should expose all shorthands in getComputedStyle().
8231 - name: layout.css.computed-style.shorthands
8236 # Whether we should avoid exposing styles of elements outside the flat tree in getComputedStyle().
8237 - name: layout.css.computed-style.styles-outside-flat-tree
8242 # Are implicit tracks in computed grid templates serialized?
8243 - name: layout.css.serialize-grid-implicit-tracks
8244 type: RelaxedAtomicBool
8248 # Whether the system-ui generic family is enabled.
8249 - name: layout.css.system-ui.enabled
8250 type: RelaxedAtomicBool
8255 # Whether the rule hash is applied to attribute names too, not
8256 # only classes / id / namespaces / etc.
8257 - name: layout.css.bucket-attribute-names.enabled
8258 type: RelaxedAtomicBool
8263 # Set the number of device pixels per CSS pixel. A value <= 0 means choose
8264 # automatically based on user settings for the platform (e.g., "UI scale factor"
8265 # on Mac). If browser.display.os-zoom-behavior == 1, then a positive value
8266 # will be multiplied by the text scale factor; otherwise a positive value is
8267 # used as-is. This controls the size of a CSS "px" at 100% full-zoom.
8268 # The size of system fonts is also changed in proportion with the change in
8269 # "px" sizes. Use "ui.textScaleFactor" instead to only change the size of "px".
8270 # This is only used for windows on the screen, not for printing.
8271 - name: layout.css.devPixelsPerPx
8276 # Is support for CSS backdrop-filter enabled?
8277 - name: layout.css.backdrop-filter.enabled
8282 # Do we override the blocklist for CSS backdrop-filter?
8283 - name: layout.css.backdrop-filter.force-enabled
8288 # Is support for rect() enabled?
8289 - name: layout.css.basic-shape-rect.enabled
8290 type: RelaxedAtomicBool
8291 value: @IS_NIGHTLY_BUILD@
8295 # Is support for xywh() enabled?
8296 - name: layout.css.basic-shape-xywh.enabled
8297 type: RelaxedAtomicBool
8298 value: @IS_NIGHTLY_BUILD@
8302 # Should stray control characters be rendered visibly?
8303 - name: layout.css.control-characters.visible
8304 type: RelaxedAtomicBool
8305 value: @IS_NOT_RELEASE_OR_BETA@
8309 # Whether the `content-visibility` CSS property is enabled
8310 - name: layout.css.content-visibility.enabled
8311 type: RelaxedAtomicBool
8312 value: @IS_NIGHTLY_BUILD@
8316 # Whether the `contain-intrinsic-size` CSS property is enabled
8317 - name: layout.css.contain-intrinsic-size.enabled
8318 type: RelaxedAtomicBool
8323 # Is support for GeometryUtils.convert*FromNode enabled?
8324 - name: layout.css.convertFromNode.enabled
8326 value: @IS_NOT_RELEASE_OR_BETA@
8329 - name: layout.css.cross-fade.enabled
8330 type: RelaxedAtomicBool
8335 - name: layout.css.linear-easing-function.enabled
8336 type: RelaxedAtomicBool
8341 # Is support for color-mix on content enabled?
8342 - name: layout.css.color-mix.enabled
8343 type: RelaxedAtomicBool
8348 # Is support for light-dark() on content enabled?
8349 - name: layout.css.light-dark.enabled
8350 type: RelaxedAtomicBool
8355 # Is support for color-mix with non-SRGB color spaces on content enabled?
8356 - name: layout.css.color-mix.color-spaces.enabled
8357 type: RelaxedAtomicBool
8362 # Is support for fit-content() enabled?
8363 - name: layout.css.fit-content-function.enabled
8364 type: RelaxedAtomicBool
8369 # Whether to use tight bounds for floating ::first-letter (legacy Gecko behavior)
8370 # or loose bounds based on overall font metrics (WebKit/Blink-like behavior)?
8372 # 1 legacy Gecko behavior (tight bounds)
8373 # 0 loose typographic bounds (similar to webkit/blink)
8374 # -1 auto behavior: use loose bounds if reduced line-height (<1em) or negative
8375 # block-start margin is present; otherwise use tight bounds.
8376 - name: layout.css.floating-first-letter.tight-glyph-bounds
8378 #ifdef NIGHTLY_BUILD
8385 # Is support for the font-display @font-face descriptor enabled?
8386 - name: layout.css.font-display.enabled
8387 type: RelaxedAtomicBool
8392 # Is support for document.fonts enabled?
8393 - name: layout.css.font-loading-api.enabled
8394 type: RelaxedAtomicBool
8398 # Is support for workerGlobalScope.fonts enabled?
8399 - name: layout.css.font-loading-api.workers.enabled
8400 type: RelaxedAtomicBool
8404 # Is support for the @font-face metrics override descriptors enabled?
8405 - name: layout.css.font-metrics-overrides.enabled
8406 type: RelaxedAtomicBool
8411 # Is support for the @font-palette-values rule and font-palette property enabled?
8412 - name: layout.css.font-palette.enabled
8413 type: RelaxedAtomicBool
8418 # Is support for variation fonts enabled?
8419 - name: layout.css.font-variations.enabled
8420 type: RelaxedAtomicBool
8425 # Is support for the size-adjust @font-face descriptor enabled?
8426 - name: layout.css.size-adjust.enabled
8427 type: RelaxedAtomicBool
8432 # Is support for the tech() function in the @font-face src descriptor enabled?
8433 - name: layout.css.font-tech.enabled
8434 type: RelaxedAtomicBool
8439 # Is support for font-variant-emoji enabled?
8440 - name: layout.css.font-variant-emoji.enabled
8441 type: RelaxedAtomicBool
8442 value: @IS_NIGHTLY_BUILD@
8446 # Visibility level of font families available to CSS font-matching:
8447 # 1 - only base system fonts
8448 # 2 - also fonts from optional language packs
8449 # 3 - also user-installed fonts
8450 - name: layout.css.font-visibility
8455 # Is support for GeometryUtils.getBoxQuads enabled?
8456 - name: layout.css.getBoxQuads.enabled
8458 value: @IS_NOT_RELEASE_OR_BETA@
8461 # Is support for (linear|radial|conic)-gradient color interpolation methods enabled?
8462 - name: layout.css.gradient-color-interpolation-method.enabled
8463 type: RelaxedAtomicBool
8468 # Is support for caching an grid item's block axis measurement enabled?
8469 - name: layout.css.grid-item-baxis-measurement.enabled
8474 # Is support for CSS masonry layout enabled?
8475 - name: layout.css.grid-template-masonry-value.enabled
8476 type: RelaxedAtomicBool
8477 value: @IS_NIGHTLY_BUILD@
8481 # Is support for :has() enabled?
8482 - name: layout.css.has-selector.enabled
8483 type: RelaxedAtomicBool
8488 # Is support for CSS hyphenate-character enabled?
8489 - name: layout.css.hyphenate-character.enabled
8490 type: RelaxedAtomicBool
8494 # Is support for CSS individual transform enabled?
8495 - name: layout.css.individual-transform.enabled
8500 # Is support for CSS initial-letter property enabled?
8501 - name: layout.css.initial-letter.enabled
8506 # Pref to control whether line-height: -moz-block-height is exposed to content.
8507 - name: layout.css.line-height-moz-block-height.content.enabled
8508 type: RelaxedAtomicBool
8513 # Is support for motion-path enabled?
8514 - name: layout.css.motion-path.enabled
8519 # Is support for motion-path <basic-shape> other than path() enabled?
8520 # https://drafts.fxtf.org/motion-1/#valdef-offset-path-basic-shape
8521 - name: layout.css.motion-path-basic-shapes.enabled
8522 type: RelaxedAtomicBool
8523 value: @IS_NIGHTLY_BUILD@
8527 # Is support for motion-path <coord-box> enabled?
8528 # https://drafts.fxtf.org/motion-1/#valdef-offset-path-coord-box
8529 - name: layout.css.motion-path-coord-box.enabled
8530 type: RelaxedAtomicBool
8531 value: @IS_NIGHTLY_BUILD@
8535 # Is support for motion-path ray() enabled?
8536 - name: layout.css.motion-path-ray.enabled
8537 type: RelaxedAtomicBool
8538 value: @IS_NIGHTLY_BUILD@
8542 # Is support for motion-path offset-position enabled?
8543 - name: layout.css.motion-path-offset-position.enabled
8544 type: RelaxedAtomicBool
8545 value: @IS_NIGHTLY_BUILD@
8549 # Is support for motion-path url enabled?
8550 - name: layout.css.motion-path-url.enabled
8551 type: RelaxedAtomicBool
8552 value: @IS_NIGHTLY_BUILD@
8556 # Pref to control whether the ::marker property restrictions defined in [1]
8559 # [1]: https://drafts.csswg.org/css-pseudo-4/#selectordef-marker
8560 - name: layout.css.marker.restricted
8561 type: RelaxedAtomicBool
8566 # Is support for math-style enabled?
8567 - name: layout.css.math-style.enabled
8568 type: RelaxedAtomicBool
8573 # Is support for math-depth enabled?
8574 - name: layout.css.math-depth.enabled
8575 type: RelaxedAtomicBool
8580 # Pref to control whether @-moz-document rules are enabled in content pages.
8581 - name: layout.css.moz-document.content.enabled
8582 type: RelaxedAtomicBool
8587 # Is -moz-osx-font-smoothing enabled? (Only supported in OSX builds)
8588 - name: layout.css.osx-font-smoothing.enabled
8590 #if defined(XP_MACOSX)
8597 # Is support for CSS overflow-clip-box enabled for non-UA sheets?
8598 - name: layout.css.overflow-clip-box.enabled
8603 # Is support for CSS overflow: -moz-hidden-unscrollable enabled
8604 - name: layout.css.overflow-moz-hidden-unscrollable.enabled
8605 type: RelaxedAtomicBool
8606 value: @IS_NOT_NIGHTLY_BUILD@
8610 # Is support for CSS overflow: overlay enabled
8611 - name: layout.css.overflow-overlay.enabled
8612 type: RelaxedAtomicBool
8617 # Is support for overscroll-behavior enabled?
8618 - name: layout.css.overscroll-behavior.enabled
8623 - name: layout.css.overflow-logical.enabled
8628 # Enables support for the page-orientation property inside of CSS @page rules.
8629 - name: layout.css.page-orientation.enabled
8630 type: RelaxedAtomicBool
8631 value: @IS_NIGHTLY_BUILD@
8635 # Enables support for the size property inside of CSS @page rules.
8636 - name: layout.css.page-size.enabled
8637 type: RelaxedAtomicBool
8642 # Enables support for different CSS page sizes on each page when printing.
8643 - name: layout.css.allow-mixed-page-sizes
8644 type: RelaxedAtomicBool
8645 value: @IS_EARLY_BETA_OR_EARLIER@
8648 # Whether Properties and Values is enabled
8649 - name: layout.css.properties-and-values.enabled
8650 type: RelaxedAtomicBool
8651 value: @IS_NIGHTLY_BUILD@
8655 # Dictates whether or not the prefers contrast media query will be
8657 # true: prefers-contrast will toggle based on OS and browser settings.
8658 # false: prefers-contrast will only parse and toggle in the browser
8660 - name: layout.css.prefers-contrast.enabled
8661 type: RelaxedAtomicBool
8666 # An override for prefers-color-scheme for content documents.
8669 # 2: Auto (system color scheme unless overridden by browser theme)
8670 - name: layout.css.prefers-color-scheme.content-override
8671 type: RelaxedAtomicInt32
8675 # Dictates whether or not the forced-colors media query is enabled.
8676 - name: layout.css.forced-colors.enabled
8677 type: RelaxedAtomicBool
8682 # Dictates whether or not the prefers-reduced-transparency media query is enabled.
8683 - name: layout.css.prefers-reduced-transparency.enabled
8684 type: RelaxedAtomicBool
8689 # Dictates whether or not the inverted-colors media query is enabled.
8690 - name: layout.css.inverted-colors.enabled
8691 type: RelaxedAtomicBool
8696 # Is support for forced-color-adjust properties enabled?
8697 - name: layout.css.forced-color-adjust.enabled
8698 type: RelaxedAtomicBool
8703 # Is support for -moz-prefixed animation properties enabled?
8704 - name: layout.css.prefixes.animations
8709 # Is support for -moz-border-image enabled?
8710 - name: layout.css.prefixes.border-image
8715 # Is support for -moz-box-sizing enabled?
8716 - name: layout.css.prefixes.box-sizing
8721 # Is support for -moz-prefixed font feature properties enabled?
8722 - name: layout.css.prefixes.font-features
8727 # Is support for -moz-prefixed transform properties enabled?
8728 - name: layout.css.prefixes.transforms
8733 # Is support for -moz-prefixed transition properties enabled?
8734 - name: layout.css.prefixes.transitions
8739 # Is CSS error reporting enabled?
8740 - name: layout.css.report_errors
8745 # Are inter-character ruby annotations enabled?
8746 - name: layout.css.ruby.intercharacter.enabled
8751 - name: layout.css.scroll-behavior.damping-ratio
8756 # Tuning of the smooth scroll motion used by CSSOM-View scroll-behavior.
8757 # Spring-constant controls the strength of the simulated MSD
8758 # (Mass-Spring-Damper).
8759 - name: layout.css.scroll-behavior.spring-constant
8764 # Whether the scroll-driven animations generated by CSS is enabled. This
8765 # also include animation-timelime property.
8766 - name: layout.css.scroll-driven-animations.enabled
8767 type: RelaxedAtomicBool
8772 # When selecting the snap point for CSS scroll snapping, the velocity of the
8773 # scroll frame is clamped to this speed, in CSS pixels / s.
8774 - name: layout.css.scroll-snap.prediction-max-velocity
8775 type: RelaxedAtomicInt32
8779 # When selecting the snap point for CSS scroll snapping, the velocity of the
8780 # scroll frame is integrated over this duration, in seconds. The snap point
8781 # best suited for this position is selected, enabling the user to perform fling
8783 - name: layout.css.scroll-snap.prediction-sensitivity
8788 # Stylo thread-pool size.
8789 # Negative means auto, 0 disables the thread-pool (main-thread styling), other
8790 # numbers override as specified.
8791 # Note that 1 still creates a thread-pool of one thread!
8792 - name: layout.css.stylo-threads
8798 # Stylo work unit size. This is the amount of nodes we'll process in a single
8799 # unit of work of the thread-pool.
8801 # Larger values will increase style sharing cache hits and general DOM locality
8802 # at the expense of decreased opportunities for parallelism. There are some
8803 # measurements in bug 1385982 comments 11, 12, 13 that investigate some
8804 # slightly different values for the work unit size.
8806 # If the size is significantly increased, make sure to also review
8807 # stylo-local-work-queue prefs, since we might end up doing too much work
8810 # A value of 0 disables parallelism altogether.
8811 - name: layout.css.stylo-work-unit-size
8812 type: RelaxedAtomicUint32
8817 # The minimum amount of work that a thread doing styling will try to keep
8818 # locally before sending work to other threads, in a worker.
8819 - name: layout.css.stylo-local-work-queue.in-worker
8820 type: RelaxedAtomicUint32
8825 # As above but for the main thread. The main thread can't really steal from
8826 # other threads so it might want a bigger min queue size before giving work to
8828 - name: layout.css.stylo-local-work-queue.in-main-thread
8829 type: RelaxedAtomicUint32
8834 # Are counters for implemented CSS properties enabled?
8835 - name: layout.css.use-counters.enabled
8840 # Are counters for unimplemented CSS properties enabled?
8841 - name: layout.css.use-counters-unimplemented.enabled
8842 type: RelaxedAtomicBool
8847 # Should the :visited selector ever match (otherwise :link matches instead)?
8848 - name: layout.css.visited_links_enabled
8853 # Enable experimental enhanced color CSS color spaces. (lab(), lch(), oklab(), oklch(), color())
8854 - name: layout.css.more_color_4.enabled
8855 type: RelaxedAtomicBool
8860 # The margin used for detecting relevancy for `content-visibility: auto`.
8861 - name: layout.css.content-visibility-relevant-content-margin
8866 # Whether the "modern" uppercase mapping of ß to ẞ (rather than SS) is used.
8867 - name: layout.css.text-transform.uppercase-eszett.enabled
8872 # Whether to block large cursors intersecting UI.
8873 - name: layout.cursor.block.enabled
8878 # The maximum width or height of the cursor we should allow when intersecting
8879 # the UI, in CSS pixels.
8880 - name: layout.cursor.block.max-size
8885 - name: layout.display-list.build-twice
8886 type: RelaxedAtomicBool
8890 # Toggle retaining display lists between paints.
8891 - name: layout.display-list.retain
8892 type: RelaxedAtomicBool
8896 # Toggle retaining display lists between paints.
8897 - name: layout.display-list.retain.chrome
8898 type: RelaxedAtomicBool
8902 - name: layout.display-list.retain.sc
8903 type: RelaxedAtomicBool
8907 # Set the maximum number of modified frames allowed before doing a full
8908 # display list rebuild.
8909 - name: layout.display-list.rebuild-frame-limit
8910 type: RelaxedAtomicUint32
8914 # Pref to dump the display list to the log. Useful for debugging drawing.
8915 - name: layout.display-list.dump
8916 type: RelaxedAtomicBool
8920 # Pref to dump the display list to the log. Useful for debugging drawing.
8921 - name: layout.display-list.dump-content
8922 type: RelaxedAtomicBool
8926 # Pref to dump the display list to the log. Useful for debugging drawing.
8927 - name: layout.display-list.dump-parent
8928 type: RelaxedAtomicBool
8932 - name: layout.display-list.show-rebuild-area
8933 type: RelaxedAtomicBool
8937 - name: layout.display-list.improve-fragmentation
8938 type: RelaxedAtomicBool
8942 # Are dynamic reflow roots enabled?
8943 - name: layout.dynamic-reflow-roots.enabled
8945 value: @IS_EARLY_BETA_OR_EARLIER@
8948 # Enables the mechanism to optimize away flex item's final reflow.
8949 # Warning: Disabling the pref will impact the performance. This is useful only for
8950 # debugging flexbox issues.
8951 - name: layout.flexbox.item-final-reflow-optimization.enabled
8956 # Enables the <input type=search> custom layout frame with a clear icon.
8957 # Still needs tests and a web-exposed way to remove that icon, see bug 1654288.
8958 - name: layout.forms.input-type-search.enabled
8963 # Enables the Reveal Password button inside a <input type=password>.
8964 - name: layout.forms.reveal-password-button.enabled
8969 # Enables the Reveal Password context-menu entry.
8970 - name: layout.forms.reveal-password-context-menu.enabled
8975 # Pref to control browser frame rate, in Hz. A value <= 0 means choose
8976 # automatically based on knowledge of the platform (or 60Hz if no platform-
8977 # specific information is available).
8978 - name: layout.frame_rate
8979 type: RelaxedAtomicInt32
8983 # If it has been this many frame periods since a refresh, assume that painting
8984 # is quiescent (will not happen again soon).
8985 - name: layout.idle_period.required_quiescent_frames
8990 # The amount of time (milliseconds) needed between an idle period's
8991 # end and the start of the next tick to avoid jank.
8992 - name: layout.idle_period.time_limit
8997 # The minimum amount of time (milliseconds) required to be remaining
8998 # in the current vsync interval for us to attempt an extra tick, or
8999 # <0 to disable extra ticks entirely.
9000 - name: layout.extra-tick.minimum-ms
9005 # Whether to load the broken image icon eagerly. This is mostly needed for
9006 # reftests, since the broken image icon doesn't block the load event and thus
9007 # there's no easy way to guarantee it's loaded.
9008 - name: layout.image.eager_broken_image_icon
9013 # Enable/disable interruptible reflow, which allows reflows to stop
9014 # before completion (and display the partial results) when user events
9016 - name: layout.interruptible-reflow.enabled
9021 # On Android, don't synth mouse move events after scrolling, as they cause
9022 # unexpected user-visible behaviour. Can remove this after bug 1633450 is
9023 # satisfactorily resolved.
9024 - name: layout.reflow.synthMouseMove
9026 value: @IS_NOT_ANDROID@
9029 # This pref is to be set by test code only.
9030 - name: layout.scrollbars.always-layerize-track
9031 type: RelaxedAtomicBool
9035 - name: layout.scrollbars.click_and_hold_track.continue_to_end
9037 # On Linux, click-and-hold on the scrollbar track should continue scrolling
9038 # until the mouse is released. On the other platforms we want to stop
9039 # scrolling as soon as the scrollbar thumb has reached the current mouse
9041 #ifdef MOZ_WIDGET_GTK
9048 # Whether anchor is kept selected.
9049 - name: layout.selectanchor
9054 # Controls caret style and word-delete during text selection.
9055 # 0: Use platform default
9056 # 1: Caret moves and blinks as when there is no selection; word
9057 # delete deselects the selection and then deletes word.
9058 # 2: Caret moves to selection edge and is not visible during selection;
9059 # word delete deletes the selection (Mac and Linux default).
9060 # 3: Caret moves and blinks as when there is no selection; word delete
9061 # deletes the selection.
9062 # Windows default is 1 for word delete behavior, the rest as for 2.
9063 - name: layout.selection.caret_style
9068 # If layout.show_previous_page is true then during loading of a new page we
9069 # will draw the previous page if the new page has painting suppressed.
9070 - name: layout.show_previous_page
9075 # Pref to stop overlay scrollbars from fading out, for testing purposes.
9076 - name: layout.testing.overlay-scrollbars.always-visible
9081 # Throttled frame rate, in frames per second.
9082 - name: layout.throttled_frame_rate
9087 # Whether we should throttle in-process iframes in the active tab.
9088 - name: layout.throttle_in_process_iframes
9093 # Activity granted to out-of-process iframes in the foreground tab, in milliseconds.
9094 - name: layout.oopif_activity_grace_period_ms
9099 - name: layout.lower_priority_refresh_driver_during_load
9104 # If > 0, nsRefreshDriver will keep ticking this amount of milliseconds after
9105 # top level page load.
9106 - name: layout.keep_ticking_after_load_ms
9111 # Pref to control enabling scroll anchoring.
9112 - name: layout.css.scroll-anchoring.enabled
9117 # Pref to control whether to suspend also RefreshDriver::Tick when the page
9118 # itself is suspended because of some synchronous operation, like sync XHR.
9119 - name: layout.skip_ticks_while_page_suspended
9124 # Pref to control how many consecutive scroll-anchoring adjustments (since the
9125 # most recent user scroll or timeout) we'll average, before we consider whether
9126 # to automatically turn off scroll anchoring. When we hit this threshold, the
9127 # actual decision to disable also depends on the
9128 # min-average-adjustment-threshold pref, see below for more details.
9130 # Zero disables the heuristic.
9131 - name: layout.css.scroll-anchoring.max-consecutive-adjustments
9136 # Whether to reset counting the consecutive scroll-anchoring adjustments during
9137 # running async scrolling by APZ.
9138 - name: layout.css.scroll-anchoring.reset-heuristic-during-animation
9143 # The time after which we reset the max-consecutive-adjustments period, in
9146 # This prevents sporadic back-and-forth scroll anchoring to trigger the
9147 # max-consecutive-adjustments heuristic.
9148 - name: layout.css.scroll-anchoring.max-consecutive-adjustments-timeout-ms
9153 # Pref to control whether we should disable scroll anchoring on a scroller
9154 # where at least max-consecutive-adjustments have happened, and which the
9155 # average adjustment ends up being less than this number, in CSS pixels.
9157 # So, for example, given max-consecutive-adjustments=10 and
9158 # min-average-adjustment-treshold=3, we'll block scroll anchoring if there have
9159 # been 10 consecutive adjustments without a user scroll or more, and the
9160 # average offset difference between them amount to less than 3 CSS pixels.
9161 - name: layout.css.scroll-anchoring.min-average-adjustment-threshold
9166 # Pref to control disabling scroll anchoring suppression triggers, see
9168 # https://drafts.csswg.org/css-scroll-anchoring/#suppression-triggers
9170 # Those triggers should be unnecessary after bug 1561450.
9171 - name: layout.css.scroll-anchoring.suppressions.enabled
9176 - name: layout.css.scroll-anchoring.highlight
9181 # Pref to control whether we reselect scroll anchors if sub-optimal
9183 # See https://github.com/w3c/csswg-drafts/issues/6787
9184 - name: layout.css.scroll-anchoring.reselect-if-suboptimal
9189 # Are shared memory User Agent style sheets enabled?
9190 - name: layout.css.shared-memory-ua-sheets.enabled
9195 # Is support for -webkit-line-clamp on regular blocks enabled?
9196 - name: layout.css.webkit-line-clamp.block.enabled
9201 # Is support for -webkit-slider* pseudos enabled?
9202 - name: layout.css.webkit-range-pseudos.enabled
9203 type: RelaxedAtomicBool
9208 # Is 'content:none' supported on (non-pseudo) elements?
9209 - name: layout.css.element-content-none.enabled
9210 type: RelaxedAtomicBool
9215 # Whether we want scrollbar-width: thin to behave as scrollbar-width: auto.
9216 - name: layout.css.scrollbar-width-thin.disabled
9217 type: RelaxedAtomicBool
9221 # Whether the `scrollbar-gutter` CSS property is enabled.
9222 - name: layout.css.scrollbar-gutter.enabled
9223 type: RelaxedAtomicBool
9228 # Whether supports() conditions in @import is enabled
9229 - name: layout.css.import-supports.enabled
9230 type: RelaxedAtomicBool
9235 # Whether frame visibility tracking is enabled globally.
9236 - name: layout.framevisibility.enabled
9241 # The fraction of the scrollport we allow to horizontally scroll by before we
9242 # schedule an update of frame visibility.
9243 - name: layout.framevisibility.amountscrollbeforeupdatehorizontal
9248 # The fraction of the scrollport we allow to vertically scroll by before we
9249 # schedule an update of frame visibility.
9250 - name: layout.framevisibility.amountscrollbeforeupdatevertical
9255 # The number of scrollports wide to expand when tracking frame visibility.
9256 - name: layout.framevisibility.numscrollportwidths
9265 # The number of scrollports high to expand when tracking frame visibility.
9266 - name: layout.framevisibility.numscrollportheights
9272 - name: layout.dynamic-toolbar-max-height
9273 type: RelaxedAtomicInt32
9277 # Whether outlines should include all overflowing descendants, or just the
9278 # border-box of a given element.
9280 # Historically we have included descendants but other browsers have not.
9281 - name: layout.outline.include-overflow
9286 - name: layout.visibility.min-recompute-interval-ms
9291 # Controls double click and Alt+Arrow word selection behavior.
9292 - name: layout.word_select.eat_space_to_next_word
9301 - name: layout.word_select.stop_at_punctuation
9306 # Whether underscore should be treated as a word-breaking character for
9307 # word selection/arrow-key movement purposes.
9308 - name: layout.word_select.stop_at_underscore
9313 # Should deprecated plugin behavior fallback to normal behavior or use
9314 # the experimental design.
9315 - name: layout.use-plugin-fallback
9320 # Whether to draw images in CSS backgrounds if we only have a partial frame.
9321 - name: layout.display_partial_background_images
9326 # Controls whether nsRefreshDriver::IsInHighRateMode() may ever return true.
9327 - name: layout.expose_high_rate_mode_from_refreshdriver
9332 #---------------------------------------------------------------------------
9333 # Prefs starting with "mathml."
9334 #---------------------------------------------------------------------------
9336 # Whether to disable legacy names "thickmathspace", "mediummathspace",
9337 # "thickmathspace" etc for length attributes.
9338 - name: mathml.mathspace_names.disabled
9340 value: @IS_NIGHTLY_BUILD@
9343 # Whether to disable support for stretching operators with STIXGeneral fonts.
9344 # macos still has the deprecated STIXGeneral font pre-installed.
9345 - name: mathml.stixgeneral_operator_stretching.disabled
9347 #if defined(XP_MACOSX)
9348 value: @IS_NIGHTLY_BUILD@
9354 # Whether to disable fallback for mathvariant=italic/bold/bold-italic via
9355 # styling when lacking proper fonts for Mathematical Alphanumeric Symbols.
9356 # We expect all OSes to have relevant fonts, except Android, see bug 1789083.
9357 - name: mathml.mathvariant_styling_fallback.disabled
9359 #if defined(ANDROID)
9366 # Whether to disable the MathML3 support for the mathvariant attribute. For
9367 # MathML Core, support is restricted to the <mi> element and to value "normal".
9368 # Corresponding automatic italicization on single-char <mi> element is also
9369 # implemented via text-transform: auto when that flag is enabled.
9370 - name: mathml.legacy_mathvariant_attribute.disabled
9372 value: @IS_NIGHTLY_BUILD@
9376 #---------------------------------------------------------------------------
9377 # Prefs starting with "media."
9378 #---------------------------------------------------------------------------
9381 # This pref defines what the blocking policy would be used in blocking autoplay.
9382 # 0 : use sticky activation (default)
9383 # https://html.spec.whatwg.org/multipage/interaction.html#sticky-activation
9384 # 1 : use transient activation (the transient activation duration can be
9385 # adjusted by the pref `dom.user_activation.transient.timeout`)
9386 # https://html.spec.whatwg.org/multipage/interaction.html#transient-activation
9387 # 2 : user input depth (allow autoplay when the play is trigged by user input
9388 # which is determined by the user input depth)
9389 - name: media.autoplay.blocking_policy
9394 # Whether to allow autoplay on extension background pages.
9395 - name: media.autoplay.allow-extension-background-pages
9400 # Block autoplay, asking for permission by default.
9401 # 0=Allowed, 1=Blocked, 5=All Blocked
9402 - name: media.autoplay.default
9407 # Wether to block autoplay for webaudio
9408 - name: media.autoplay.block-webaudio
9413 # File-backed MediaCache size.
9414 - name: media.cache_size
9415 type: RelaxedAtomicUint32
9416 value: 512000 # Measured in KiB
9419 # Size of file backed MediaCache while on a connection which is cellular (3G,
9420 # etc), and thus assumed to be "expensive".
9421 - name: media.cache_size.cellular
9422 type: RelaxedAtomicUint32
9423 value: 32768 # Measured in KiB
9426 # Whether cubeb is sandboxed (AudioIPC)
9427 - name: media.cubeb.sandbox
9430 #if defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID) || defined(XP_WIN) || defined(XP_MACOSX)
9436 # Whether or not to pass AUDCLNT_STREAMOPTIONS_RAW when initializing audio
9437 # streams when using WASAPI.
9438 # 0 - don't use RAW streams
9439 # 1 - use RAW streams for input streams only
9440 # 2 - use RAW streams for output streams only
9441 # 3 - use RAW streams for input and output streams
9442 #if defined (XP_WIN)
9443 - name: media.cubeb.wasapi-raw
9444 type: RelaxedAtomicUint32
9449 # Whether to make the start of cubeb stream slower, and by how many
9451 - name: media.cubeb.slow_stream_init_ms
9452 type: RelaxedAtomicUint32
9456 # ClockDrift desired buffering in milliseconds
9457 - name: media.clockdrift.buffering
9458 type: RelaxedAtomicUint32
9462 # If a resource is known to be smaller than this size (in kilobytes), a
9463 # memory-backed MediaCache may be used; otherwise the (single shared global)
9464 # file-backed MediaCache is used.
9465 - name: media.memory_cache_max_size
9467 value: 8192 # Measured in KiB
9470 # Don't create more memory-backed MediaCaches if their combined size would go
9471 # above this absolute size limit.
9472 - name: media.memory_caches_combined_limit_kb
9477 # Don't create more memory-backed MediaCaches if their combined size would go
9478 # above this relative size limit (a percentage of physical memory).
9479 - name: media.memory_caches_combined_limit_pc_sysmem
9481 value: 5 # A percentage
9484 # When a network connection is suspended, don't resume it until the amount of
9485 # buffered data falls below this threshold (in seconds).
9486 - name: media.cache_resume_threshold
9487 type: RelaxedAtomicUint32
9490 - name: media.cache_resume_threshold.cellular
9491 type: RelaxedAtomicUint32
9495 # Stop reading ahead when our buffered data is this many seconds ahead of the
9496 # current playback position. This limit can stop us from using arbitrary
9497 # amounts of network bandwidth prefetching huge videos.
9498 - name: media.cache_readahead_limit
9499 type: RelaxedAtomicUint32
9502 - name: media.cache_readahead_limit.cellular
9503 type: RelaxedAtomicUint32
9508 - name: media.mediacapabilities.drop-threshold
9509 type: RelaxedAtomicInt32
9513 - name: media.mediacapabilities.from-database
9514 type: RelaxedAtomicBool
9515 value: @IS_NIGHTLY_BUILD@
9519 - name: media.resampling.enabled
9520 type: RelaxedAtomicBool
9524 # libcubeb backend implements .get_preferred_channel_layout
9525 - name: media.forcestereo.enabled
9526 type: RelaxedAtomicBool
9527 #if defined(XP_WIN) || defined(XP_DARWIN) || defined(MOZ_PULSEAUDIO)
9536 # Whether to enable MediaSource support.
9537 - name: media.mediasource.enabled
9538 type: RelaxedAtomicBool
9542 - name: media.mediasource.mp4.enabled
9543 type: RelaxedAtomicBool
9547 - name: media.mediasource.webm.enabled
9548 type: RelaxedAtomicBool
9552 # Check if vp9 is enabled by default in mediasource. False on Android.
9553 # If disabled, vp9 will only be enabled under some conditions:
9554 # - h264 HW decoding is not supported
9555 # - mp4 is not enabled
9556 # - Device was deemed fast enough to decode VP9 via the VP9Benchmark utility
9557 # - A VP9 HW decoder is present.
9558 - name: media.mediasource.vp9.enabled
9559 type: RelaxedAtomicBool
9560 value: @IS_NOT_ANDROID@
9563 - name: media.mediasource.webm.audio.enabled
9564 type: RelaxedAtomicBool
9568 # Whether to enable MediaSource v2 support.
9569 - name: media.mediasource.experimental.enabled
9570 type: RelaxedAtomicBool
9575 - name: media.ruin-av-sync.enabled
9576 type: RelaxedAtomicBool
9580 # Encrypted Media Extensions
9581 - name: media.eme.enabled
9583 #if defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID)
9584 # On Linux EME is visible but disabled by default. This is so that the "Play
9585 # DRM content" checkbox in the Firefox UI is unchecked by default. DRM
9586 # requires downloading and installing proprietary binaries, which users on an
9587 # open source operating systems didn't opt into. The first time a site using
9588 # EME is encountered, the user will be prompted to enable DRM, whereupon the
9589 # EME plugin binaries will be downloaded if permission is granted.
9596 # Whether we expose the functionality proposed in
9597 # https://github.com/WICG/encrypted-media-encryption-scheme/blob/master/explainer.md
9598 # I.e. if true, apps calling navigator.requestMediaKeySystemAccess() can pass
9599 # an optional encryption scheme as part of MediaKeySystemMediaCapability
9600 # objects. If a scheme is present when we check for support, we must ensure we
9601 # support that scheme in order to provide key system access.
9602 - name: media.eme.encrypted-media-encryption-scheme.enabled
9607 # Do we need explicit approval from the application to allow access to EME?
9608 # If true, Gecko will ask for permission before allowing MediaKeySystemAccess.
9609 # At time of writing this is aimed at GeckoView, and setting this to true
9610 # outside of GeckoView or test environments will likely break EME.
9611 - name: media.eme.require-app-approval
9616 - name: media.eme.audio.blank
9617 type: RelaxedAtomicBool
9621 - name: media.eme.video.blank
9622 type: RelaxedAtomicBool
9626 - name: media.eme.chromium-api.video-shmems
9627 type: RelaxedAtomicUint32
9631 # Is support for MediaKeys.getStatusForPolicy enabled?
9632 - name: media.eme.hdcp-policy-check.enabled
9637 - name: media.eme.max-throughput-ms
9638 type: RelaxedAtomicUint32
9642 - name: media.clearkey.persistent-license.enabled
9647 # Are test specific clearkey key systems enabled and exposed?
9648 - name: media.clearkey.test-key-systems.enabled
9653 - name: media.cloneElementVisually.testing
9658 # Does the GMPlugin process initialize minimal XPCOM
9659 - name: media.gmp.use-minimal-xpcom
9660 type: RelaxedAtomicBool
9664 # Does the GMPlugin process initialize minimal XPCOM
9665 - name: media.gmp.use-native-event-processing
9666 type: RelaxedAtomicBool
9670 #if defined(XP_LINUX) && defined(MOZ_SANDBOX)
9671 # Whether to allow, on a Linux system that doesn't support the necessary
9672 # sandboxing features, loading Gecko Media Plugins unsandboxed. However, EME
9673 # CDMs will not be loaded without sandboxing even if this pref is changed.
9674 - name: media.gmp.insecure.allow
9675 type: RelaxedAtomicBool
9680 # (When reading the next line, know that preprocessor.py doesn't
9681 # understand parentheses, but && is higher precedence than ||.)
9682 #if defined(XP_WIN) && defined(_ARM64_) || defined(XP_MACOSX)
9683 # These prefs control whether or not we will allow x86/x64 plugins
9684 # to run on Windows ARM or Apple Silicon machines. This requires
9685 # launching the GMP child process executable in x86/x64 mode. We
9686 # expect to allow this for Widevine until an arm64 version of
9687 # Widevine and Clearkey is made available. We don't expect to need
9688 # to allow this for OpenH264.
9690 # For Apple Silicon and OSX, it will be for universal builds and
9691 # whether or not it can use the x64 Widevine plugin.
9693 # For Windows ARM, it will be for ARM builds and whether or not it
9694 # can use x86 Widevine or Clearkey plugins.
9696 # May a Widevine GMP x64 process be executed on ARM builds.
9697 - name: media.gmp-widevinecdm.allow-x64-plugin-on-arm64
9698 type: RelaxedAtomicBool
9702 # May an OpenH264 GMP x64 process be executed on ARM builds.
9703 - name: media.gmp-gmpopenh264.allow-x64-plugin-on-arm64
9704 type: RelaxedAtomicBool
9708 # May a Clearkey GMP x64 process be executed on ARM builds.
9709 - name: media.gmp-gmpclearkey.allow-x64-plugin-on-arm64
9710 type: RelaxedAtomicBool
9715 # Specifies whether the PDMFactory can create a test decoder that just outputs
9716 # blank frames/audio instead of actually decoding. The blank decoder works on
9718 - name: media.use-blank-decoder
9719 type: RelaxedAtomicBool
9723 - name: media.gpu-process-decoder
9724 type: RelaxedAtomicBool
9732 - name: media.rdd-process.enabled
9733 type: RelaxedAtomicBool
9736 #elif defined(XP_MACOSX)
9738 #elif defined(XP_LINUX) && !defined(ANDROID)
9740 #elif defined(XP_FREEBSD)
9742 #elif defined(XP_OPENBSD)
9749 - name: media.rdd-retryonfailure.enabled
9750 type: RelaxedAtomicBool
9754 - name: media.rdd-process.startup_timeout_ms
9755 type: RelaxedAtomicInt32
9759 # Specifies how many times we restart RDD process after crash till we give up.
9760 # After first RDD restart we disable HW acceleration on Linux.
9761 - name: media.rdd-process.max-crashes
9762 type: RelaxedAtomicInt32
9767 - name: media.rdd-ffmpeg.enabled
9768 type: RelaxedAtomicBool
9774 - name: media.rdd-ffvpx.enabled
9775 type: RelaxedAtomicBool
9778 #elif defined(XP_MACOSX)
9780 #elif defined(XP_LINUX) && !defined(ANDROID)
9782 #elif defined(XP_FREEBSD)
9784 #elif defined(XP_OPENBSD)
9793 - name: media.rdd-wmf.enabled
9794 type: RelaxedAtomicBool
9799 #ifdef MOZ_APPLEMEDIA
9800 - name: media.rdd-applemedia.enabled
9801 type: RelaxedAtomicBool
9806 - name: media.rdd-theora.enabled
9807 type: RelaxedAtomicBool
9810 #elif defined(XP_MACOSX)
9812 #elif defined(XP_LINUX) && !defined(ANDROID)
9814 #elif defined(XP_FREEBSD)
9816 #elif defined(XP_OPENBSD)
9823 - name: media.rdd-vorbis.enabled
9824 type: RelaxedAtomicBool
9827 #elif defined(XP_MACOSX)
9829 #elif defined(XP_LINUX) && !defined(ANDROID)
9831 #elif defined(XP_FREEBSD)
9833 #elif defined(XP_OPENBSD)
9840 - name: media.rdd-vpx.enabled
9841 type: RelaxedAtomicBool
9844 #elif defined(XP_MACOSX)
9846 #elif defined(XP_LINUX) && !defined(ANDROID)
9848 #elif defined(XP_FREEBSD)
9850 #elif defined(XP_OPENBSD)
9857 - name: media.rdd-wav.enabled
9858 type: RelaxedAtomicBool
9861 #elif defined(XP_MACOSX)
9863 #elif defined(XP_LINUX) && !defined(ANDROID)
9865 #elif defined(XP_FREEBSD)
9867 #elif defined(XP_OPENBSD)
9874 - name: media.rdd-opus.enabled
9875 type: RelaxedAtomicBool
9878 #elif defined(XP_MACOSX)
9880 #elif defined(XP_LINUX) && !defined(ANDROID)
9882 #elif defined(XP_FREEBSD)
9884 #elif defined(XP_OPENBSD)
9891 - name: media.rdd-webaudio.batch.size
9892 type: RelaxedAtomicInt32
9896 # This pref is here to control whether we want to perform audio decoding by
9897 # using the IPC actor within the Utility process rather than the RDD process.
9898 # When it is set to true, then the utility process will take precedence over RDD
9899 # to perform audio decoding.
9900 # TODO: Enabling for Isolated Processes builds on Android
9901 - name: media.utility-process.enabled
9902 type: RelaxedAtomicBool
9905 #elif defined(XP_MACOSX)
9907 #elif defined(XP_LINUX) && !defined(ANDROID)
9909 #elif defined(ANDROID) && !defined(MOZ_ANDROID_CONTENT_SERVICE_ISOLATED_PROCESS)
9911 #elif defined(XP_OPENBSD)
9918 # Specifies how many times we restart Utility process after crash till we give
9920 - name: media.utility-process.max-crashes
9921 type: RelaxedAtomicInt32
9926 - name: media.utility-ffmpeg.enabled
9927 type: RelaxedAtomicBool
9933 - name: media.utility-ffvpx.enabled
9934 type: RelaxedAtomicBool
9940 - name: media.utility-wmf.enabled
9941 type: RelaxedAtomicBool
9946 #ifdef MOZ_APPLEMEDIA
9947 - name: media.utility-applemedia.enabled
9948 type: RelaxedAtomicBool
9953 - name: media.utility-vorbis.enabled
9954 type: RelaxedAtomicBool
9958 - name: media.utility-wav.enabled
9959 type: RelaxedAtomicBool
9963 - name: media.utility-opus.enabled
9964 type: RelaxedAtomicBool
9969 # Enable the MediaCodec PlatformDecoderModule by default.
9970 - name: media.android-media-codec.enabled
9971 type: RelaxedAtomicBool
9976 # Dont yet enable AndroidDecoderModule on Utility
9977 - name: media.utility-android-media-codec.enabled
9978 type: RelaxedAtomicBool
9982 - name: media.android-media-codec.preferred
9983 type: RelaxedAtomicBool
9988 # Now we will completely disable the ability to perform audio decoding outside
9990 # We do that only on nightly builds for now.
9991 - name: media.allow-audio-non-utility
9992 type: RelaxedAtomicBool
9993 #if defined(NIGHTLY_BUILD)
9997 #endif // defined(NIGHTLY_BUILD)
10001 - name: media.omx.enabled
10007 # Allow ffmpeg decoder to decode directly onto shmem buffer
10008 - name: media.ffmpeg.customized-buffer-allocation
10009 type: RelaxedAtomicBool
10014 - name: media.ffmpeg.enabled
10015 type: RelaxedAtomicBool
10016 #if defined(XP_MACOSX)
10023 - name: media.libavcodec.allow-obsolete
10027 #endif # MOZ_FFMPEG
10029 #if defined(MOZ_FFMPEG) || defined(MOZ_FFVPX)
10030 # Allow using openh264 decoding with ffmpeg
10031 - name: media.ffmpeg.allow-openh264
10032 type: RelaxedAtomicBool
10033 value: @IS_NOT_NIGHTLY_BUILD@
10035 #endif # MOZ_FFMPEG || MOZ_FFVPX
10037 #ifdef MOZ_WIDGET_GTK
10038 # Use VA-API for ffmpeg video playback on Linux
10039 - name: media.ffmpeg.vaapi.enabled
10044 # Force to copy dmabuf video frames
10045 # Used for debugging/troubleshooting only
10046 # 0 - force disable
10049 - name: media.ffmpeg.vaapi.force-surface-zero-copy
10053 #endif # MOZ_WIDGET_GTK
10055 - name: media.ffvpx.enabled
10056 type: RelaxedAtomicBool
10064 - name: media.ffvpx.mp3.enabled
10065 type: RelaxedAtomicBool
10073 - name: media.ffvpx.vorbis.enabled
10074 type: RelaxedAtomicBool
10082 - name: media.ffvpx.opus.enabled
10083 type: RelaxedAtomicBool
10091 - name: media.ffvpx.wav.enabled
10092 type: RelaxedAtomicBool
10100 # Set to true in marionette tests to disable the sanity test
10101 # which would lead to unnecessary start of the RDD process.
10102 - name: media.sanity-test.disabled
10103 type: RelaxedAtomicBool
10109 - name: media.wmf.enabled
10110 type: RelaxedAtomicBool
10114 # Whether DD should consider WMF-disabled a WMF failure, useful for testing.
10115 - name: media.decoder-doctor.wmf-disabled-is-failure
10116 type: RelaxedAtomicBool
10120 - name: media.wmf.dxva.d3d11.enabled
10121 type: RelaxedAtomicBool
10125 - name: media.wmf.dxva.max-videos
10126 type: RelaxedAtomicUint32
10130 - name: media.wmf.dxva.d3d9.amd-pre-uvd4.disabled
10131 type: RelaxedAtomicBool
10135 - name: media.wmf.use-nv12-format
10136 type: RelaxedAtomicBool
10140 - name: media.wmf.zero-copy-nv12-textures
10144 # Enable hardware decoded video no copy even when it is blocked.
10145 - name: media.wmf.zero-copy-nv12-textures-force-enabled
10150 - name: media.wmf.force.allow-p010-format
10151 type: RelaxedAtomicBool
10155 - name: media.wmf.use-sync-texture
10160 - name: media.wmf.low-latency.enabled
10161 type: RelaxedAtomicBool
10165 - name: media.wmf.skip-blacklist
10166 type: RelaxedAtomicBool
10170 - name: media.wmf.amd.highres.enabled
10171 type: RelaxedAtomicBool
10175 - name: media.wmf.allow-unsupported-resolutions
10176 type: RelaxedAtomicBool
10180 - name: media.wmf.vp9.enabled
10181 type: RelaxedAtomicBool
10185 - name: media.wmf.av1.enabled
10186 type: RelaxedAtomicBool
10190 # Using Windows Media Foundation Media Engine for encrypted playback
10191 # 0 : disable, 1 : enable for encrypted and clear,
10192 # 2 : enable for encrypted only, 3 : enable for clear only
10193 - name: media.wmf.media-engine.enabled
10194 type: RelaxedAtomicUint32
10198 # Testing purpose, enable media engine on channel decoder as well.
10199 - name: media.wmf.media-engine.channel-decoder.enabled
10200 type: RelaxedAtomicBool
10204 # The amount of video raw data the engine stream will queue
10205 - name: media.wmf.media-engine.raw-data-threshold.video
10206 type: RelaxedAtomicInt32
10210 # The amount of audio raw data the engine stream will queue
10211 - name: media.wmf.media-engine.raw-data-threshold.audio
10212 type: RelaxedAtomicInt32
10216 # Specifies how many times we restart MFCDM process after crash till we give up.
10217 - name: media.wmf.media-engine.max-crashes
10218 type: RelaxedAtomicInt32
10222 # Enable PlayReady DRM for EME
10223 - name: media.eme.playready.enabled
10224 type: RelaxedAtomicBool
10225 #if defined(MOZ_WMF_CDM) && defined(NIGHTLY_BUILD)
10226 value: false # TODO: enable this when ready to play.
10234 - name: media.decoder-doctor.testing
10239 - name: media.hardware-video-decoding.enabled
10244 - name: media.hardware-video-decoding.force-enabled
10249 # Whether to check the decoder supports recycling.
10250 - name: media.decoder.recycle.enabled
10251 type: RelaxedAtomicBool
10252 value: @IS_ANDROID@
10255 # Should MFR try to skip to the next key frame?
10256 - name: media.decoder.skip-to-next-key-frame.enabled
10257 type: RelaxedAtomicBool
10261 # When video continues later than the current media time for this period of
10262 # time, then it will trigger skip-to-next-keyframe mechanism. As this aims to
10263 # solve the drop frames issue where video decoding too slow for high
10264 # resolution videos. eg. 4k+. Therefore, the value is is determined by the
10265 # telemetry probe `video_inter_keyframe_max_ms` in the key of `AV,h>2160` which
10266 # shows that 95% video's key frame interval are less than ~5000. We use its
10267 # half value as a threashold to decide whether we should keep decoding in the
10268 # current video position or jump to the next keyframe in order to decode future
10269 # frames in advance.
10270 - name: media.decoder.skip_when_video_too_slow_ms
10271 type: RelaxedAtomicInt32
10275 # True if we want to decode in batches.
10276 - name: media.gmp.decoder.decode_batch
10277 type: RelaxedAtomicBool
10281 # True if we allow use of any decoders found in GMP plugins.
10282 - name: media.gmp.decoder.enabled
10283 type: RelaxedAtomicBool
10287 # True if we want to request the multithreaded GMP decoder.
10288 - name: media.gmp.decoder.multithreaded
10289 type: RelaxedAtomicBool
10293 # True if we want to try using the GMP plugin decoders first.
10294 - name: media.gmp.decoder.preferred
10295 type: RelaxedAtomicBool
10299 # True if we want to reorder frames from the decoder based on the timestamp.
10300 - name: media.gmp.decoder.reorder_frames
10301 type: RelaxedAtomicBool
10305 # Whether to suspend decoding of videos in background tabs.
10306 - name: media.suspend-background-video.enabled
10307 type: RelaxedAtomicBool
10311 # Delay, in ms, from time window goes to background to suspending
10312 # video decoders. Defaults to 10 seconds.
10313 - name: media.suspend-background-video.delay-ms
10314 type: RelaxedAtomicUint32
10318 - name: media.dormant-on-pause-timeout-ms
10319 type: RelaxedAtomicInt32
10323 # AudioTrack and VideoTrack support
10324 - name: media.track.enabled
10329 # This pref disables the reception of RTCP. It is used for testing.
10330 - name: media.webrtc.net.force_disable_rtcp_reception
10331 type: ReleaseAcquireAtomicBool
10335 # This pref controls whether dispatch testing-only events.
10336 - name: media.webvtt.testing.events
10341 - name: media.webspeech.synth.force_global_queue
10346 - name: media.webspeech.test.enable
10351 - name: media.webspeech.test.fake_fsm_events
10356 - name: media.webspeech.test.fake_recognition_service
10361 #ifdef MOZ_WEBSPEECH
10362 - name: media.webspeech.recognition.enable
10368 - name: media.webspeech.recognition.force_enable
10373 #ifdef MOZ_WEBSPEECH
10374 - name: media.webspeech.synth.enabled
10378 #endif # MOZ_WEBSPEECH
10380 - name: media.encoder.webm.enabled
10381 type: RelaxedAtomicBool
10385 - name: media.audio-max-decode-error
10387 #if defined(RELEASE_OR_BETA)
10390 # Zero tolerance in pre-release builds to detect any decoder regression.
10395 - name: media.video-max-decode-error
10397 #if defined(RELEASE_OR_BETA)
10400 # Zero tolerance in pre-release builds to detect any decoder regression.
10405 # Are video stats enabled? (Disabling can help prevent fingerprinting.)
10406 - name: media.video_stats.enabled
10411 # forces the number of dropped frames to 0
10412 - name: media.video.dropped_frame_stats.enabled
10418 - name: media.opus.enabled
10419 type: RelaxedAtomicBool
10424 - name: media.wave.enabled
10425 type: RelaxedAtomicBool
10430 - name: media.ogg.enabled
10431 type: RelaxedAtomicBool
10436 - name: media.webm.enabled
10437 type: RelaxedAtomicBool
10442 - name: media.av1.enabled
10443 type: RelaxedAtomicBool
10444 #if defined(XP_WIN) && !defined(_ARM64_)
10446 #elif defined(XP_MACOSX)
10448 #elif defined(MOZ_WIDGET_ANDROID)
10450 #elif defined(XP_UNIX)
10457 - name: media.av1.use-dav1d
10458 type: RelaxedAtomicBool
10459 #if defined(XP_WIN) && !defined(_ARM64_)
10461 #elif defined(XP_MACOSX)
10463 #elif defined(XP_UNIX)
10470 - name: media.av1.new-thread-count-strategy
10471 type: RelaxedAtomicBool
10475 - name: media.av1.force-thread-count
10476 type: RelaxedAtomicInt32
10480 - name: media.flac.enabled
10481 type: RelaxedAtomicBool
10486 - name: media.hls.enabled
10487 type: RelaxedAtomicBool
10488 value: @IS_ANDROID@
10491 # Max number of HLS players that can be created concurrently. Used only on
10492 # Android and when "media.hls.enabled" is true.
10494 - name: media.hls.max-allocations
10500 - name: media.mp4.enabled
10501 type: RelaxedAtomicBool
10505 - name: media.mp4.sniff_iso_brand
10506 type: RelaxedAtomicBool
10510 # Error/warning handling, Decoder Doctor.
10512 # Set to true to force demux/decode warnings to be treated as errors.
10513 - name: media.playback.warnings-as-errors
10514 type: RelaxedAtomicBool
10518 # Resume video decoding when the cursor is hovering on a background tab to
10519 # reduce the resume latency and improve the user experience.
10520 - name: media.resume-background-video-on-tabhover
10525 - name: media.videocontrols.lock-video-orientation
10530 # Media Seamless Looping
10531 - name: media.seamless-looping
10532 type: RelaxedAtomicBool
10536 - name: media.seamless-looping-video
10537 type: RelaxedAtomicBool
10541 - name: media.autoplay.block-event.enabled
10546 - name: media.media-capabilities.enabled
10547 type: RelaxedAtomicBool
10551 - name: media.media-capabilities.screen.enabled
10552 type: RelaxedAtomicBool
10556 - name: media.benchmark.vp9.fps
10557 type: RelaxedAtomicUint32
10561 - name: media.benchmark.vp9.threshold
10562 type: RelaxedAtomicUint32
10566 - name: media.benchmark.vp9.versioncheck
10567 type: RelaxedAtomicUint32
10571 - name: media.benchmark.frames
10572 type: RelaxedAtomicUint32
10576 - name: media.benchmark.timeout
10577 type: RelaxedAtomicUint32
10581 - name: media.test.video-suspend
10582 type: RelaxedAtomicBool
10586 # MediaCapture prefs follow
10588 # Enables navigator.mediaDevices and getUserMedia() support. See also
10589 # media.peerconnection.enabled
10590 - name: media.navigator.enabled
10595 # This pref turns off window-focus checks on the navigator.mediaDevices methods,
10596 # for partner testing frameworks.
10597 # Prefer "focusmanager.testmode", which is already set by default for
10598 # web-platform tests.
10599 - name: media.devices.unfocused.enabled
10604 # This pref turns off [SecureContext] on the navigator.mediaDevices object, for
10605 # more compatible legacy behavior.
10606 - name: media.devices.insecure.enabled
10611 # If the above pref is also enabled, this pref enabled getUserMedia() support
10612 # in http, bypassing the instant NotAllowedError you get otherwise.
10613 - name: media.getusermedia.insecure.enabled
10618 # Enable tab sharing
10619 - name: media.getusermedia.browser.enabled
10620 type: RelaxedAtomicBool
10624 # The getDisplayMedia method is always SecureContext regardless of the above two
10625 # prefs. But it is not implemented on android, and can be turned off elsewhere.
10626 - name: media.getdisplaymedia.enabled
10628 value: @IS_NOT_ANDROID@
10631 # The getDisplayMedia prompt uses getDisplayMedia under the hood to show previews.
10632 # This can be turned off if, e.g. on systems with known issues like X11, or if
10633 # previews are not desired.
10634 - name: media.getdisplaymedia.previews.enabled
10636 value: @IS_NOT_ANDROID@
10639 # Turn off any cameras (but not mics) while in the background. This is desirable
10641 - name: media.getusermedia.camera.background.mute.enabled
10643 value: @IS_ANDROID@
10646 # Use the libwebrtc AVFoundation camera backend on Mac by default. When
10647 # disabled, an older forked capture module is used.
10648 - name: media.getusermedia.camera.macavf.enabled
10653 # This pref turns on legacy (non-spec) exposure of camera and microphone
10654 # information from enumerateDevices and devicechange ahead of successful
10655 # getUserMedia calls. Should only be turned on to resolve web compat issues,
10656 # since doing so reveals more user fingerprinting information to trackers.
10658 # In this mode, camera and microphone device labels are exposed if the site has a
10659 # persisted permission to either kind, as well as while actively capturing either
10660 # kind (temporary and tab-specific grace-period permissions do not count).
10662 # Planned next steps: true → @IS_NOT_NIGHTLY_BUILD@ → false
10663 - name: media.devices.enumerate.legacy.enabled
10668 # WebRTC prefs follow
10670 # Enables auto refresh of stats by default
10671 - name: media.aboutwebrtc.auto_refresh
10673 value: @IS_NOT_NIGHTLY_BUILD@
10676 # Enables RTCPeerConnection support. Note that, when true, this pref enables
10677 # navigator.mediaDevices and getUserMedia() support as well.
10678 # See also media.navigator.enabled
10679 - name: media.peerconnection.enabled
10680 type: RelaxedAtomicBool
10684 - name: media.peerconnection.scripttransform.enabled
10685 type: RelaxedAtomicBool
10690 # Use MediaDataDecoder API for VP8/VP9 in WebRTC. This includes hardware
10691 # acceleration for decoding.
10692 - name: media.navigator.mediadatadecoder_vpx_enabled
10693 type: RelaxedAtomicBool
10694 #if defined(NIGHTLY_BUILD) || defined(MOZ_WIDGET_GTK)
10701 # Use MediaDataDecoder API for H264 in WebRTC. This includes hardware
10702 # acceleration for decoding.
10703 - name: media.navigator.mediadatadecoder_h264_enabled
10704 type: RelaxedAtomicBool
10705 #if defined(_ARM64_) && defined(XP_WIN)
10712 #if defined(MOZ_WIDGET_GTK)
10713 # Use hardware acceleration for VP8 decoding on Linux.
10714 - name: media.navigator.mediadatadecoder_vp8_hardware_enabled
10715 type: RelaxedAtomicBool
10720 # Interval in milliseconds at which to gather WebRTC stats for use in about:webrtc.
10721 - name: media.aboutwebrtc.hist.poll_interval_ms
10722 type: RelaxedAtomicUint32
10726 # History time depth in seconds to keep for webrtc:stats for use in about:webrtc.
10727 - name: media.aboutwebrtc.hist.storage_window_s
10728 type: RelaxedAtomicUint32
10732 # Time in minutes to retain peer connection stats after closing.
10733 - name: media.aboutwebrtc.hist.prune_after_m
10734 type: RelaxedAtomicUint32
10738 # Max number of closed PC stats histories to retain
10739 - name: media.aboutwebrtc.hist.closed_stats_to_retain
10740 type: RelaxedAtomicUint32
10744 # Gather PeerConnection stats history for display in about:webrtc. If
10745 # disabled history will only gather when about:webrtc is open. Additionally,
10746 # if disabled and when about:webrtc is not in the foreground history data
10747 # will become sparse.
10748 - name: media.aboutwebrtc.hist.enabled
10749 type: RelaxedAtomicBool
10750 #if defined(MOZ_WIDGET_ANDROID)
10753 value: @IS_NIGHTLY_BUILD@
10757 #endif # MOZ_WEBRTC
10759 # HTMLMediaElement.allowedToPlay should be exposed to web content when
10760 # block autoplay rides the trains to release. Until then, Nightly only.
10761 - name: media.allowed-to-play.enabled
10763 value: @IS_NIGHTLY_BUILD@
10766 # Is support for MediaDevices.ondevicechange enabled?
10767 - name: media.ondevicechange.enabled
10772 # Is support for HTMLMediaElement.seekToNextFrame enabled?
10773 - name: media.seekToNextFrame.enabled
10778 # Is the Audio Output Devices API enabled?
10779 - name: media.setsinkid.enabled
10781 #if defined(MOZ_WIDGET_ANDROID)
10782 value: false # bug 1473346
10788 # Turn on this pref can enable test-only events for media element.
10789 - name: media.testing-only-events
10794 - name: media.useAudioChannelService.testing
10799 - name: media.audioFocus.management
10801 #if defined(MOZ_WIDGET_ANDROID)
10808 - name: media.hardwaremediakeys.enabled
10813 # If this pref is on, then `media.mediacontrol.stopcontrol.timer.ms` would take
10814 # effect and determine the timing to stop controlling media.
10815 - name: media.mediacontrol.stopcontrol.timer
10820 # If media is being paused after a certain period, then we would think that
10821 # media doesn't need to be controlled anymore. Therefore, that media would stop
10822 # listening to the media control key events. The value of this pref is how long
10823 # media would stop listening to the event after it's paused. The default value
10824 # is set to 24 hrs (24*60*60*1000)
10825 - name: media.mediacontrol.stopcontrol.timer.ms
10826 type: RelaxedAtomicUint32
10830 # If this pref is on, we would stop controlling media after it reaches to the
10832 - name: media.mediacontrol.stopcontrol.aftermediaends
10837 # We would only use media control to control media which duration is longer
10839 - name: media.mediacontrol.eligible.media.duration.s
10844 - name: media.webrtc.platformencoder
10845 type: RelaxedAtomicBool
10846 #if defined(MOZ_WIDGET_ANDROID)
10849 value: @IS_EARLY_BETA_OR_EARLIER@
10853 - name: media.webrtc.platformencoder.sw_only
10854 type: RelaxedAtomicBool
10855 #if defined(MOZ_WIDGET_ANDROID)
10862 - name: media.webrtc.software_encoder.fallback
10863 type: RelaxedAtomicBool
10864 #if !defined(MOZ_WIDGET_GTK)
10871 #if defined(XP_MACOSX)
10872 - name: media.webrtc.capture.allow-iosurface
10873 type: RelaxedAtomicBool
10878 #if defined(XP_WIN)
10879 - name: media.webrtc.capture.allow-directx
10880 type: RelaxedAtomicBool
10884 - name: media.webrtc.capture.allow-wgc
10885 type: RelaxedAtomicBool
10886 value: @IS_EARLY_BETA_OR_EARLIER@
10890 #if defined(MOZ_WIDGET_GTK)
10891 - name: media.webrtc.capture.allow-pipewire
10892 type: RelaxedAtomicBool
10896 - name: media.webrtc.camera.allow-pipewire
10902 - name: media.block-autoplay-until-in-foreground
10904 #if !defined(MOZ_WIDGET_ANDROID)
10911 - name: media.webrtc.hw.h264.enabled
10913 #if defined(MOZ_WIDGET_ANDROID)
10920 # If true, then we require explicit approval from the embedding app (ex. Fenix)
10921 # on GeckoView to know if we can allow audible, inaudible media or both kinds
10922 # of media to autoplay.
10923 - name: media.geckoview.autoplay.request
10928 # This is used in testing only, in order to skip the prompting process. This
10929 # pref works only when enabling the pref `media.geckoview.autoplay.request`.
10930 # 0=prompt as normal, 1=allow all, 2=deny all, 3=allow audible request,
10931 # 4=deny audible request, 5=allow inaudible request, 6=deny inaudible request.
10932 # 7=leave all requests pending.
10933 - name: media.geckoview.autoplay.request.testing
10938 - name: media.mediacontrol.testingevents.enabled
10943 #if defined(XP_MACOSX)
10944 - name: media.macos.screenrecording.oscheck.enabled
10950 # When the playback rate of an HTMLMediaElement is greater than this value, or
10951 # lower than the inverse of this value, the audio is muted.
10952 - name: media.audio.playbackrate.muting_threshold
10957 # The interval of time in milliseconds between attempts to reopen any
10958 # previously unavailable audio device.
10959 - name: media.audio.device.retry.ms
10960 type: RelaxedAtomicInt32
10964 # Time-stretch algorithm single processing sequence length in milliseconds.
10965 # This determines to how long sequences the original sound is chopped in the
10966 # time-stretch algorithm.
10967 - name: media.audio.playbackrate.soundtouch_sequence_ms
10968 type: RelaxedAtomicInt32
10972 # Time-stretch algorithm seeking window length in milliseconds for algorithm
10973 # that finds the best possible overlapping location. This determines from how
10974 # wide window the algorithm may look for an optimal joining location when mixing
10975 # the sound sequences back together.
10976 - name: media.audio.playbackrate.soundtouch_seekwindow_ms
10977 type: RelaxedAtomicInt32
10981 # Time-stretch algorithm overlap length in milliseconds. When the chopped sound
10982 # sequences are mixed back together, to form a continuous sound stream, this
10983 # parameter defines over how long period the two consecutive sequences are let
10984 # to overlap each other.
10985 - name: media.audio.playbackrate.soundtouch_overlap_ms
10986 type: RelaxedAtomicInt32
10990 # The duration, in milliseconds, of decoded audio to keep around in the
10991 # AudioSink ring-buffer. New decoding operations are started when this limit is
10992 # reached. The total size of the ring-buffer is slightly bigger than this.
10993 - name: media.audio.audiosink.threshold_ms
10995 #if defined(XP_MACOSX) && defined(MOZ_AARCH64)
11002 - name: media.video-wakelock
11003 type: RelaxedAtomicBool
11007 # On Mac, enables using the `<Brand> Media Plugin Helper` executable as the
11008 # GMP child process instead of the plugin-container executable.
11009 #if defined(XP_MACOSX)
11010 - name: media.plugin_helper_process.enabled
11011 type: RelaxedAtomicBool
11016 #---------------------------------------------------------------------------
11017 # Prefs starting with "midi."
11018 #---------------------------------------------------------------------------
11020 - name: midi.testing
11021 type: RelaxedAtomicBool
11025 #---------------------------------------------------------------------------
11026 # Prefs starting with "mousewheel."
11027 #---------------------------------------------------------------------------
11029 # This affects how line scrolls from wheel events will be accelerated.
11030 # Factor to be multiplied for constant acceleration.
11031 - name: mousewheel.acceleration.factor
11032 type: RelaxedAtomicInt32
11036 # This affects how line scrolls from wheel events will be accelerated.
11037 # Number of mousewheel clicks when acceleration starts.
11038 # Acceleration can be turned off if pref is set to -1.
11039 - name: mousewheel.acceleration.start
11040 type: RelaxedAtomicInt32
11044 # Auto-dir is a feature which treats any single-wheel scroll as a scroll in the
11045 # only one scrollable direction if the target has only one scrollable
11046 # direction. For example, if the user scrolls a vertical wheel inside a target
11047 # which is horizontally scrollable but vertical unscrollable, then the vertical
11048 # scroll is converted to a horizontal scroll for that target.
11049 # Note that auto-dir only takes effect for |mousewheel.*.action|s and
11050 # |mousewheel.*.action.override_x|s whose values are 1.
11051 - name: mousewheel.autodir.enabled
11056 # When a wheel scroll is converted due to auto-dir, which side the converted
11057 # scroll goes towards is decided by one thing called "honoured target". If the
11058 # content of the honoured target horizontally starts from right to left, then
11059 # an upward scroll maps to a rightward scroll and a downward scroll maps to a
11060 # leftward scroll; otherwise, an upward scroll maps to a leftward scroll and a
11061 # downward scroll maps to a rightward scroll.
11062 # If this pref is set to false, then consider the scrolling target as the
11064 # If set to true, then consider the root element in the document where the
11065 # scrolling target is as the honoured target. But note that there's one
11066 # exception: for targets in an HTML document, the real root element(I.e. the
11067 # <html> element) is typically not considered as a root element, but the <body>
11068 # element is typically considered as a root element. If there is no <body>
11069 # element, then consider the <html> element instead.
11070 - name: mousewheel.autodir.honourroot
11075 - name: mousewheel.system_scroll_override.enabled
11076 type: RelaxedAtomicBool
11077 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
11084 # Prefs for overriding the system mouse wheel scrolling speed on
11085 # content of the web pages. When
11086 # "mousewheel.system_scroll_override.enabled" is true and the
11087 # system scrolling speed isn't customized by the user, the content scrolling
11088 # speed is multiplied by the following factors. The value will be used as
11089 # 1/100. E.g., 200 means 2.00.
11090 # NOTE: Even if "mousewheel.system_scroll_override.enabled" is
11091 # true, when Gecko detects the user customized the system scrolling speed
11092 # settings, the override isn't executed.
11093 - name: mousewheel.system_scroll_override.horizontal.factor
11094 type: RelaxedAtomicInt32
11097 - name: mousewheel.system_scroll_override.vertical.factor
11098 type: RelaxedAtomicInt32
11102 # Mouse wheel scroll transaction is held even if the mouse cursor is moved.
11103 - name: mousewheel.transaction.ignoremovedelay
11104 type: RelaxedAtomicInt32
11108 # Mouse wheel scroll transaction period of time (in milliseconds).
11109 - name: mousewheel.transaction.timeout
11110 type: RelaxedAtomicInt32
11114 # Mouse wheel scroll position is determined by GetMessagePos rather than
11116 - name: mousewheel.ignore_cursor_position_in_lparam
11117 type: RelaxedAtomicBool
11121 # If line-height is lower than this value (in device pixels), 1 line scroll
11122 # scrolls this height.
11123 - name: mousewheel.min_line_scroll_amount
11128 # Timeout period (in milliseconds) when the mouse wheel event is no longer
11129 # handled as the same series.
11130 - name: mousewheel.scroll_series_timeout
11131 type: RelaxedAtomicInt32
11135 #---------------------------------------------------------------------------
11136 # Prefs starting with "mozilla."
11137 #---------------------------------------------------------------------------
11139 - name: mozilla.widget.raise-on-setfocus
11144 #---------------------------------------------------------------------------
11145 # Prefs starting with "network."
11146 #---------------------------------------------------------------------------
11148 # Force less-secure NTLMv1 when needed (NTLMv2 is the default).
11149 - name: network.auth.force-generic-ntlm-v1
11150 type: RelaxedAtomicBool
11154 # Sub-resources HTTP-authentication:
11155 # 0 - don't allow sub-resources to open HTTP authentication credentials
11157 # 1 - allow sub-resources to open HTTP authentication credentials dialogs,
11158 # but don't allow it for cross-origin sub-resources
11159 # 2 - allow the cross-origin authentication as well.
11160 - name: network.auth.subresource-http-auth-allow
11165 # Sub-resources HTTP-authentication for cross-origin images:
11166 # - true: It is allowed to present http auth. dialog for cross-origin images.
11167 # - false: It is not allowed.
11168 # If network.auth.subresource-http-auth-allow has values 0 or 1 this pref does
11169 # not have any effect.
11170 - name: network.auth.subresource-img-cross-origin-http-auth-allow
11175 # Resources that are triggered by some non-web-content:
11176 # - true: They are allow to present http auth. dialog
11177 # - false: They are not allow to present http auth. dialog.
11178 - name: network.auth.non-web-content-triggered-resources-http-auth-allow
11183 # Whether to show anti-spoof confirmation prompts when navigating to a url
11185 - name: network.auth.confirmAuth.enabled
11190 # Whether to display auth prompts if X-Frame-Options header will block loading
11192 - name: network.auth.supress_auth_prompt_for_XFO_failures
11197 # Whether to use new implementation of ParseReasm
11198 - name: network.auth.use_new_parse_realm
11199 type: RelaxedAtomicBool
11203 # Whether to use new implementation of ParseReasm
11204 - name: network.auth.allow_multiple_challenges_same_line
11205 type: RelaxedAtomicBool
11209 # Whether to use challenges in the most secure order. See bug 650091.
11210 - name: network.auth.choose_most_secure_challenge
11211 type: RelaxedAtomicBool
11215 # Whether to allow truncated brotli with empty output. This also fixes
11216 # throwing an erroring when receiving highly compressed brotli files when
11217 # no content type is specified (Bug 1715401). This pref can be removed after
11218 # some time (Bug 1841061)
11219 - name: network.compress.allow_truncated_empty_brotli
11220 type: RelaxedAtomicBool
11224 # See the full list of values in nsICookieService.idl.
11225 - name: network.cookie.cookieBehavior
11226 type: RelaxedAtomicInt32
11227 value: 0 # accept all cookies
11230 # See the full list of values in nsICookieService.idl.
11231 - name: network.cookie.rejectForeignWithExceptions.enabled
11236 # The cookieBehavior to be used in Private Browsing mode.
11237 - name: network.cookie.cookieBehavior.pbmode
11238 type: RelaxedAtomicInt32
11239 value: 0 # accept all cookies
11242 # Stale threshold for cookies in seconds.
11243 - name: network.cookie.staleThreshold
11248 - name: network.cookie.sameSite.laxByDefault
11249 type: RelaxedAtomicBool
11253 # lax-by-default 2 minutes tollerance for unsafe methods. The value is in seconds.
11254 - name: network.cookie.sameSite.laxPlusPOST.timeout
11259 # For lax-by-default cookies ignore cross-site redirects when the final
11260 # redirect is same-site again.
11261 # https://github.com/httpwg/http-extensions/issues/2104
11262 - name: network.cookie.sameSite.laxByDefault.allowBoomerangRedirect
11267 - name: network.cookie.sameSite.noneRequiresSecure
11269 value: @IS_EARLY_BETA_OR_EARLIER@
11272 - name: network.cookie.sameSite.schemeful
11277 - name: network.cookie.thirdparty.sessionOnly
11282 - name: network.cookie.thirdparty.nonsecureSessionOnly
11287 # If we should not store "persistent" cookies at all, i.e., make the
11288 # "persistent" storage be like "private" storage. This value is only read when
11289 # instantiating persistent storage for the cookie service, which usually only
11290 # happens when the cookie service singleton is created.
11291 - name: network.cookie.noPersistentStorage
11296 # If true then any cookies containing unicode will be rejected
11297 - name: network.cookie.blockUnicode
11298 type: RelaxedAtomicBool
11302 # If true cookies loaded from the sqlite DB that have a creation or
11303 # last accessed time that is in the future will be fixed and the
11304 # timestamps will be set to the current time.
11305 - name: network.cookie.fixup_on_db_load
11306 type: RelaxedAtomicBool
11310 # If we should attempt to race the cache and network.
11311 - name: network.http.rcwn.enabled
11316 - name: network.http.rcwn.cache_queue_normal_threshold
11321 - name: network.http.rcwn.cache_queue_priority_threshold
11326 # We might attempt to race the cache with the network only if a resource
11327 # is smaller than this size.
11328 - name: network.http.rcwn.small_resource_size_kb
11333 - name: network.http.rcwn.min_wait_before_racing_ms
11338 - name: network.http.rcwn.max_wait_before_racing_ms
11343 # false=real referer, true=spoof referer (use target URI as referer).
11344 - name: network.http.referer.spoofSource
11349 # Check whether we need to hide referrer when leaving a .onion domain.
11350 # false=allow onion referer, true=hide onion referer (use empty referer).
11351 - name: network.http.referer.hideOnionSource
11356 # Include an origin header on non-GET and non-HEAD requests regardless of CORS.
11357 # 0=never send, 1=send when same-origin only, 2=always send.
11358 - name: network.http.sendOriginHeader
11363 # Whether to respect the redirected-tainted origin flag
11364 # https://fetch.spec.whatwg.org/#concept-request-tainted-origin
11365 - name: network.http.origin.redirectTainted
11370 # Whether to strip auth headers for redirected fetch/xhr channels
11371 # https://fetch.spec.whatwg.org/#http-redirect-fetch
11372 - name: network.fetch.redirect.stripAuthHeader
11373 type: RelaxedAtomicBool
11377 # Whether to strip auth headers for redirected http channels
11378 # https://fetch.spec.whatwg.org/#http-redirect-fetch
11379 - name: network.http.redirect.stripAuthHeader
11380 type: RelaxedAtomicBool
11384 # Prefs allowing granular control of referers.
11385 # 0=don't send any, 1=send only on clicks, 2=send on image requests as well
11386 - name: network.http.sendRefererHeader
11390 do_not_use_directly: true
11392 # The maximum allowed length for a referrer header - 4096 default.
11393 # 0 means no limit.
11394 - name: network.http.referer.referrerLengthLimit
11399 # 0=always send, 1=send iff base domains match, 2=send iff hosts match.
11400 - name: network.http.referer.XOriginPolicy
11404 do_not_use_directly: true
11406 # 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port.
11407 - name: network.http.referer.trimmingPolicy
11411 do_not_use_directly: true
11413 # 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port.
11414 - name: network.http.referer.XOriginTrimmingPolicy
11418 do_not_use_directly: true
11420 # Set the default Referrer Policy; to be used unless overriden by the site.
11421 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
11422 # 3=no-referrer-when-downgrade.
11423 - name: network.http.referer.defaultPolicy
11428 # Set the default Referrer Policy applied to third-party trackers when the
11429 # default cookie policy is set to reject third-party trackers, to be used
11430 # unless overriden by the site.
11431 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
11432 # 3=no-referrer-when-downgrade.
11433 # Trim referrers from trackers to origins by default.
11434 - name: network.http.referer.defaultPolicy.trackers
11439 # Set the Private Browsing Default Referrer Policy, to be used
11440 # unless overriden by the site.
11441 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
11442 # 3=no-referrer-when-downgrade.
11443 - name: network.http.referer.defaultPolicy.pbmode
11448 # Set to ignore referrer policies which is less restricted than the default for
11449 # cross-site requests, including 'unsafe-url', 'no-referrer-when-downgrade' and
11450 # 'origin-when-cross-origin'.
11451 - name: network.http.referer.disallowCrossSiteRelaxingDefault
11456 # Whether we ignore less restricted referrer policies for top navigations.
11457 - name: network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation
11463 # Set to ignore referrer policies which is less restricted than the default for
11464 # cross-site requests in the private browsing mode, including 'unsafe-url',
11465 # 'no-referrer-when-downgrade' and 'origin-when-cross-origin'.
11466 - name: network.http.referer.disallowCrossSiteRelaxingDefault.pbmode
11471 # Whether we ignore less restricted referrer policies for top navigations in the
11472 # private browsing mode.
11473 - name: network.http.referer.disallowCrossSiteRelaxingDefault.pbmode.top_navigation
11478 # Set the Private Browsing Default Referrer Policy applied to third-party
11479 # trackers when the default cookie policy is set to reject third-party
11480 # trackers, to be used unless overriden by the site.
11481 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
11482 # 3=no-referrer-when-downgrade.
11483 # No need to change this pref for trimming referrers from trackers since in
11484 # private windows we already trim all referrers to origin only.
11485 - name: network.http.referer.defaultPolicy.trackers.pbmode
11490 # Whether certain http header values should be censored out in logs.
11491 # Specifically filters out "authorization" and "proxy-authorization".
11492 - name: network.http.sanitize-headers-in-logs
11493 type: RelaxedAtomicBool
11497 # Set this pref to an integer like 99 to override the User-Agent string's
11498 # 'rv' bit. The value 0 means use the default Firefox version. We introduced
11499 # this for Firefox 110 because it turned out websites used user agent parsing
11500 # for "rv:11" to detect IE11.
11501 - name: network.http.useragent.forceRVOnly
11506 # Whether or not we use Windows for SSO to Microsoft sites.
11507 - name: network.http.windows-sso.enabled
11508 type: RelaxedAtomicBool
11512 # Whether windows-sso is enabled for the default (0) container.
11513 # To enable SSO for additional containers, add a new pref like
11514 # `network.http.windows-sso.container-enabled.${containerId}` = true
11515 - name: network.http.windows-sso.container-enabled.0
11520 # The factor by which to increase the keepalive timeout when the
11521 # NS_HTTP_LARGE_KEEPALIVE flag is used for a connection
11522 - name: network.http.largeKeepaliveFactor
11523 type: RelaxedAtomicUint32
11527 # This preference, if true, causes all UTF-8 domain names to be normalized to
11528 # punycode. The intention is to allow UTF-8 domain names as input, but never
11529 # generate them from punycode.
11530 - name: network.IDN_show_punycode
11531 type: RelaxedAtomicBool
11535 # If set to true, IOService.offline depends on IOService.connectivity.
11536 - name: network.offline-mirrors-connectivity
11537 type: RelaxedAtomicBool
11541 # If set to true, disallow localhost connections when offline.
11542 - name: network.disable-localhost-when-offline
11543 type: RelaxedAtomicBool
11547 # Enables the predictive service.
11548 - name: network.predictor.enabled
11553 # Set true to allow resolving proxy for localhost
11554 - name: network.proxy.allow_hijacking_localhost
11555 type: RelaxedAtomicBool
11559 # This pref will still treat localhost URLs as secure even when hijacked
11560 # during testing. This is necessary for automated testing to check that we
11561 # actually treat localhost as a secure origin.
11562 - name: network.proxy.testing_localhost_is_secure_when_hijacked
11563 type: RelaxedAtomicBool
11567 # Allow CookieJarSettings to be unblocked for channels without a document.
11568 # This is for testing only.
11569 - name: network.cookieJarSettings.unblocked_for_testing
11574 - name: network.predictor.enable-hover-on-ssl
11579 - name: network.predictor.enable-prefetch
11581 value: @IS_EARLY_BETA_OR_EARLIER@
11584 - name: network.predictor.page-degradation.day
11588 - name: network.predictor.page-degradation.week
11592 - name: network.predictor.page-degradation.month
11596 - name: network.predictor.page-degradation.year
11600 - name: network.predictor.page-degradation.max
11605 - name: network.predictor.subresource-degradation.day
11609 - name: network.predictor.subresource-degradation.week
11613 - name: network.predictor.subresource-degradation.month
11617 - name: network.predictor.subresource-degradation.year
11621 - name: network.predictor.subresource-degradation.max
11626 - name: network.predictor.prefetch-rolling-load-count
11631 - name: network.predictor.prefetch-min-confidence
11635 - name: network.predictor.preconnect-min-confidence
11639 - name: network.predictor.preresolve-min-confidence
11644 - name: network.predictor.prefetch-force-valid-for
11649 - name: network.predictor.max-resources-per-entry
11654 # This is selected in concert with max-resources-per-entry to keep memory
11655 # usage low-ish. The default of the combo of the two is ~50k.
11656 - name: network.predictor.max-uri-length
11662 - name: network.predictor.doing-tests
11667 # Enables `<link rel="preconnect">` tag and `Link: rel=preconnect` response header
11669 - name: network.preconnect
11670 type: RelaxedAtomicBool
11674 # Enables `<link rel="modulepreload">` tag and `Link: rel=modulepreload`
11675 # response header handling.
11676 - name: network.modulepreload
11677 type: RelaxedAtomicBool
11681 # Enable 103 Early Hint status code (RFC 8297)
11682 - name: network.early-hints.enabled
11683 type: RelaxedAtomicBool
11684 value: @IS_EARLY_BETA_OR_EARLIER@
11687 # Enable `Link: rel=preconnect` in 103 Early Hint response.
11688 - name: network.early-hints.preconnect.enabled
11689 type: RelaxedAtomicBool
11690 value: @IS_EARLY_BETA_OR_EARLIER@
11693 # The max number of speculative connections we allow for `Link: rel=preconnect`.
11694 # When 0, the speculative connection created due to `Link: rel=preconnect` will
11695 # be limited by "network.http.speculative-parallel-limit".
11696 - name: network.early-hints.preconnect.max_connections
11701 # How long we should wait for EarlyHintPreloader to be used.
11702 # Under normal circumstances it should be used immidiately.
11703 - name: network.early-hints.parent-connect-timeout
11708 # Whether to use the network process or not
11709 # Start a separate socket process. Performing networking on the socket process
11710 # is control by a sepparate pref
11711 # ("network.http.network_access_on_socket_process.enabled").
11712 # Changing these prefs requires a restart.
11713 - name: network.process.enabled
11714 type: RelaxedAtomicBool
11716 #if defined(ANDROID) || defined(MOZ_THUNDERBIRD)
11717 value: false # see bug 1641427
11722 # Whether we can send OnDataAvailable to content process directly.
11723 - name: network.send_ODA_to_content_directly
11724 type: RelaxedAtomicBool
11728 # Perform all network access on the socket process.
11729 # The pref requires "network.process.enabled" to be true.
11730 # Changing these prefs requires a restart.
11731 - name: network.http.network_access_on_socket_process.enabled
11732 type: RelaxedAtomicBool
11736 # Telemetry of traffic categories. Whether or not to enable HttpTrafficAnalyzer.
11737 - name: network.traffic_analyzer.enabled
11738 type: RelaxedAtomicBool
11742 # Whether DNS resolution is limited to literals and cached entries.
11743 - name: network.dns.disabled
11744 type: RelaxedAtomicBool
11748 # Whether DNS resolution is limited to literals and cached entries.
11749 - name: network.dns.skipTRR-when-parental-control-enabled
11750 type: RelaxedAtomicBool
11754 - name: network.dns.disablePrefetchFromHTTPS
11759 # Max time to shutdown the resolver threads
11760 - name: network.dns.resolver_shutdown_timeout_ms
11765 # When true on Windows DNS resolutions for single label domains
11766 # (domains that don't contain a dot) will be resolved using the DnsQuery
11767 # API instead of PR_GetAddrInfoByName
11768 - name: network.dns.dns_query_single_label
11769 type: RelaxedAtomicBool
11773 # When this pref is true we enforce a 253 character limit on domains we try to
11774 # resolve. See bug 1264117. If it doesn't cause any web-compat issues we can
11775 # remove it in a few releases
11776 - name: network.dns.limit_253_chars
11777 type: RelaxedAtomicBool
11781 # When this pref is true, we copy the host name to a fresh string before
11782 # calling into getaddrinfo.
11783 - name: network.dns.copy_string_before_call
11784 type: RelaxedAtomicBool
11788 - name: network.dns.max_high_priority_threads
11789 type: RelaxedAtomicUint32
11793 - name: network.dns.max_any_priority_threads
11794 type: RelaxedAtomicUint32
11798 # The proxy type. See nsIProtocolProxyService.idl
11799 # PROXYCONFIG_DIRECT = 0
11800 # PROXYCONFIG_MANUAL = 1
11801 # PROXYCONFIG_PAC = 2
11802 # PROXYCONFIG_WPAD = 4
11803 # PROXYCONFIG_SYSTEM = 5
11804 - name: network.proxy.type
11805 type: RelaxedAtomicUint32
11809 # Whether the SOCKS proxy should be in charge of DNS resolution.
11810 - name: network.proxy.socks_remote_dns
11811 type: RelaxedAtomicBool
11815 # When receiving a network change event, the time (in ms) we wait to reload the
11817 - name: network.proxy.reload_pac_delay
11818 type: RelaxedAtomicUint32
11822 # When parsing "SOCKS" in PAC string, the default version of SOCKS that will be
11824 - name: network.proxy.default_pac_script_socks_version
11825 type: RelaxedAtomicUint32
11829 # Whether to force failover to direct for system requests.
11830 #ifdef MOZ_PROXY_DIRECT_FAILOVER
11831 - name: network.proxy.failover_direct
11837 # Whether to allow a bypass flag to be set on httpChannel that will
11838 # prevent proxies from being used for that specific request.
11839 - name: network.proxy.allow_bypass
11841 #ifdef MOZ_PROXY_BYPASS_PROTECTION
11848 - name: network.proxy.parse_pac_on_socket_process
11849 type: RelaxedAtomicBool
11853 - name: network.proxy.detect_system_proxy_changes
11854 type: RelaxedAtomicBool
11858 # If all non-direct proxies have failed, we retry all of them in case they
11860 - name: network.proxy.retry_failed_proxies
11861 type: RelaxedAtomicBool
11865 # Some requests during a page load are marked as "tail", mainly trackers, but not only.
11866 # This pref controls whether such requests are put to the tail, behind other requests
11867 # emerging during page loading process.
11868 - name: network.http.tailing.enabled
11873 # Whether to run proxy checks when processing Alt-Svc headers.
11874 - name: network.http.altsvc.proxy_checks
11879 - name: network.http.stale_while_revalidate.enabled
11880 type: RelaxedAtomicBool
11884 # Capacity of the above cache, in kilobytes.
11885 - name: network.ssl_tokens_cache_capacity
11886 type: RelaxedAtomicUint32
11890 # How many records we store per entry
11891 - name: network.ssl_tokens_cache_records_per_entry
11892 type: RelaxedAtomicUint32
11896 # If true, only use the token once
11897 - name: network.ssl_tokens_cache_use_only_once
11898 type: RelaxedAtomicBool
11902 # The maximum allowed length for a URL - 1MB default.
11903 - name: network.standard-url.max-length
11904 type: RelaxedAtomicUint32
11908 # DNS Trusted Recursive Resolver
11909 # 0 - default off, 1 - reserved/off, 2 - TRR first, 3 - TRR only,
11910 # 4 - reserved/off, 5 off by choice
11911 - name: network.trr.mode
11912 type: RelaxedAtomicUint32
11916 # Default global TRR provider
11917 - name: network.trr.default_provider_uri
11919 value: "https://mozilla.cloudflare-dns.com/dns-query"
11922 # If true, retry TRR for recoverable errors once.
11923 - name: network.trr.retry_on_recoverable_errors
11924 type: RelaxedAtomicBool
11928 # If true, don't fallback to native DNS upon network errors.
11929 - name: network.trr.strict_native_fallback
11930 type: RelaxedAtomicBool
11934 # If true, we'll fallback to native if the retry also times out.
11935 - name: network.trr.strict_native_fallback_allow_timeouts
11936 type: RelaxedAtomicBool
11940 # Single TRR request timeout (ms) when strict native fallback is enabled.
11941 - name: network.trr.strict_fallback_request_timeout_ms
11942 type: RelaxedAtomicUint32
11946 # If false, the temporary blocklisting feature is disabled.
11947 # This is useful for tests to prevent bleeding extra reqs
11948 # between tasks, since we may attempt to look up the
11949 # parent domain in the background when blocklisting a host.
11950 - name: network.trr.temp_blocklist
11951 type: RelaxedAtomicBool
11955 # TRR blocklist entry expire time (in seconds). Default is one minute.
11956 # Meant to survive basically a page load.
11957 - name: network.trr.temp_blocklist_duration_sec
11958 type: RelaxedAtomicUint32
11962 # Single TRR request timeout, in milliseconds
11963 - name: network.trr.request_timeout_ms
11964 type: RelaxedAtomicUint32
11968 # Single TRR request timeout, in milliseconds for mode 3
11969 - name: network.trr.request_timeout_mode_trronly_ms
11970 type: RelaxedAtomicUint32
11974 # Similar to network.http.http2.ping-timeout, but this is used when the
11975 # Http/2 connection is connected to the TRR server.
11976 - name: network.trr.ping_timeout
11977 type: RelaxedAtomicUint32
11981 # The timeout of the TRR confirmation request
11982 - name: network.trr.confirmation_timeout_ms
11983 type: RelaxedAtomicUint32
11987 # The timeout of the TRR confirmation request
11988 - name: network.trr.confirmation_telemetry_enabled
11989 type: RelaxedAtomicBool
11993 # Whether to send the Accept-Language header for TRR requests
11994 - name: network.trr.send_accept-language_headers
11995 type: RelaxedAtomicBool
11999 # Whether to send an empty Accept-Encoding header for TRR requests
12000 - name: network.trr.send_empty_accept-encoding_headers
12001 type: RelaxedAtomicBool
12005 # Whether to send the User-Agent header for TRR requests
12006 - name: network.trr.send_user-agent_headers
12007 type: RelaxedAtomicBool
12011 # This pref controls whether to use TRRServiceChannel off main thread.
12012 - name: network.trr.fetch_off_main_thread
12013 type: RelaxedAtomicBool
12017 # If we should wait for captive portal confirmation before enabling TRR
12018 - name: network.trr.wait-for-portal
12019 type: RelaxedAtomicBool
12023 # If we should wait for TRR service confirmation to complete before enabling
12024 # TRR for lookups when fallback is enabled. Confirmation is always skipped when
12025 # global mode is TRR-only (no fallback).
12026 - name: network.trr.wait-for-confirmation
12027 type: RelaxedAtomicBool
12031 # Normally when confirmation fails we wait for the confirmation to succeed
12032 # before attempting to do TRR. When this pref is true, we optimistically
12033 # assume the confirmation will succeed and might attempt TRR anyway.
12034 # If network.trr.wait-for-confirmation is true, this pref is ignored.
12035 - name: network.trr.attempt-when-retrying-confirmation
12036 type: RelaxedAtomicBool
12040 # Use GET (rather than POST)
12041 - name: network.trr.useGET
12042 type: RelaxedAtomicBool
12046 # Allow RFC1918 address in responses?
12047 - name: network.trr.allow-rfc1918
12048 type: RelaxedAtomicBool
12052 # When true, it only sends AAAA when the system has IPv6 connectivity
12053 - name: network.trr.skip-AAAA-when-not-supported
12054 type: RelaxedAtomicBool
12058 # Whether to apply split horizon mitigations when using TRR.
12059 # These include adding the DNS suffix to the excluded domains
12060 - name: network.trr.split_horizon_mitigations
12061 type: RelaxedAtomicBool
12065 # Explicitly disable ECS (EDNS Client Subnet, RFC 7871)
12066 - name: network.trr.disable-ECS
12067 type: RelaxedAtomicBool
12071 # When true, the DNS+TRR cache will be cleared when a relevant TRR pref
12072 # changes. (uri, bootstrapAddress, excluded-domains)
12073 - name: network.trr.clear-cache-on-pref-change
12074 type: RelaxedAtomicBool
12078 # After this many failed TRR requests in a row, consider TRR borked
12079 - name: network.trr.max-fails
12080 type: RelaxedAtomicUint32
12084 # When the TRR confirmation is set to CONFIRM_FAILED due to many failures in
12085 # a row, we set a timer to retry. This has an exponential backoff up to
12087 - name: network.trr.retry-timeout-ms
12088 type: RelaxedAtomicUint32
12092 # Retry with no TRR when the response contained only 0.0.0.0 or ::
12093 - name: network.trr.fallback-on-zero-response
12094 type: RelaxedAtomicBool
12098 # If true we parse the /etc/hosts file and exclude any host names from TRR.
12099 # Reading the file is only done once, when TRR is first enabled - this could be
12100 # soon after startup or when the pref is flipped.
12101 - name: network.trr.exclude-etc-hosts
12102 type: RelaxedAtomicBool
12106 # Whether to add padding in the doh dns queries (rfc 7830)
12107 - name: network.trr.padding
12108 type: RelaxedAtomicBool
12112 # The block size to pad to. Capped at 1024 bytes.
12113 # Setting it to 0 doesn't add additional padding, but allows the server to
12114 # respond with padding (RFC7930 Sec 4)
12115 - name: network.trr.padding.length
12116 type: RelaxedAtomicUint32
12120 # Whether to skip the NS check for the blocked host.
12121 # Note this is used for test only.
12122 - name: network.trr.skip-check-for-blocked-host
12123 type: RelaxedAtomicBool
12127 # Whether to use the connection info that is generated asynchronously.
12128 - name: network.trr.async_connInfo
12129 type: RelaxedAtomicBool
12133 # The base URL of the `Learn more` button for skip reasons
12134 - name: network.trr_ui.skip_reason_learn_more_url
12136 value: "https://firefox-source-docs.mozilla.org/networking/dns/trr-skip-reasons.html#"
12139 # If true, display a warning before fallback to native
12140 - name: network.trr.display_fallback_warning
12141 type: RelaxedAtomicBool
12145 # Heuristics in this list will trigger the fallback to native warning
12146 - name: network.trr.fallback_warning_heuristic_list
12151 # Use Oblivious HTTP when making TRR requests.
12152 - name: network.trr.use_ohttp
12153 type: RelaxedAtomicBool
12157 # Oblivious HTTP relay URI for TRR requests.
12158 - name: network.trr.ohttp.relay_uri
12163 # URI from which to fetch the configuration for the Oblivious HTTP gateway for TRR requests.
12164 - name: network.trr.ohttp.config_uri
12169 # The URI used for the target DoH server when network.trr.use_ohttp is true
12170 - name: network.trr.ohttp.uri
12175 # Allow the network changed event to get sent when a network topology or setup
12176 # change is noticed while running.
12177 - name: network.notify.changed
12178 type: RelaxedAtomicBool
12182 # Allow network detection of IPv6 related changes (bug 1245059)
12183 - name: network.notify.IPv6
12184 type: RelaxedAtomicBool
12192 # Whether to check the dnsSuffix on network changes
12193 - name: network.notify.dnsSuffixList
12194 type: RelaxedAtomicBool
12198 # Whether to check the registry for proxies on network changes that indicate
12199 # that TRR should not be used.
12200 - name: network.notify.checkForProxies
12201 type: RelaxedAtomicBool
12205 # Whether to check the registry for NRPT rules on network changes that
12206 # indicate that TRR should not be used.
12207 - name: network.notify.checkForNRPT
12208 type: RelaxedAtomicBool
12212 # Whether NotifyIpInterfaceChange should be called immediately after
12213 # registration in order to record the initial state of the network adapters.
12214 - name: network.notify.initial_call
12215 type: RelaxedAtomicBool
12219 # Whether to check for DNS resolvers
12220 - name: network.notify.resolvers
12221 type: RelaxedAtomicBool
12225 # Whether to use the rust implemented DefaultURI for unknown scheme types
12226 - name: network.url.useDefaultURI
12227 type: RelaxedAtomicBool
12231 # The maximum allowed length for a URL - 32MB default.
12232 # If 0 that means no limit.
12233 - name: network.url.max-length
12234 type: RelaxedAtomicUint32
12235 value: 32 * 1024 * 1024
12238 # Should be removed if no breakage occurs. See bug 1797846
12239 - name: network.url.strip-data-url-whitespace
12240 type: RelaxedAtomicBool
12244 # If true, will be more strict with status code parsing
12245 - name: network.url.strict_data_url_base64_placement
12246 type: RelaxedAtomicBool
12250 # Force remapping of remote port numbers to allow reaching local testing
12251 # servers or port forwarders listening on non-standard ports. Note that
12252 # this is not changing the origin URL in the addressbar, only internally
12253 # the port number used. This is intended to be used along with the
12254 # `network.dns.forceResolve` preference.
12257 # "80,443,808-888=8080; 563=8081"
12258 # this will remap ports for HTTP, HTTPS and the range of 808-888 included
12259 # to use port 8080, and port 563 to go to 8081.
12260 - name: network.socket.forcePort
12265 # Try and use HTTP2 when using SSL
12266 - name: network.http.http2.enabled
12267 type: RelaxedAtomicBool
12271 - name: network.http.http2.enabled.deps
12272 type: RelaxedAtomicBool
12276 - name: network.http.http2.enforce-tls-profile
12277 type: RelaxedAtomicBool
12281 - name: network.http.http2.chunk-size
12282 type: RelaxedAtomicInt32
12286 - name: network.http.http2.timeout
12287 type: RelaxedAtomicInt32
12291 - name: network.http.http2.coalesce-hostnames
12292 type: RelaxedAtomicBool
12296 - name: network.http.http2.ping-threshold
12297 type: RelaxedAtomicInt32
12301 - name: network.http.http2.ping-timeout
12302 type: RelaxedAtomicInt32
12306 - name: network.http.http2.send-buffer-size
12307 type: RelaxedAtomicInt32
12311 - name: network.http.http2.allow-push
12312 type: RelaxedAtomicBool
12316 - name: network.http.http2.push-allowance
12317 type: RelaxedAtomicInt32
12318 value: 131072 # 128KB
12321 - name: network.http.http2.pull-allowance
12322 type: RelaxedAtomicInt32
12323 value: 12582912 # 12MB
12326 - name: network.http.http2.default-concurrent
12327 type: RelaxedAtomicInt32
12331 - name: network.http.http2.default-hpack-buffer
12332 type: RelaxedAtomicInt32
12336 - name: network.http.http2.websockets
12337 type: RelaxedAtomicBool
12341 - name: network.http.http2.enable-hpack-dump
12342 type: RelaxedAtomicBool
12347 - name: network.http.http3.enable
12348 type: RelaxedAtomicBool
12352 # Receive buffer size of QUIC socket
12353 - name: network.http.http3.recvBufferSize
12354 type: RelaxedAtomicInt32
12358 - name: network.http.http3.enable_qlog
12359 type: RelaxedAtomicBool
12363 - name: network.http.http3.enable_0rtt
12364 type: RelaxedAtomicBool
12368 # When a h3 transaction is inserted in the pending queue, the time (ms) we wait
12369 # to create a TCP backup connection.
12370 - name: network.http.http3.backup_timer_delay
12371 type: RelaxedAtomicUint32
12375 # The global half open sockets allowed for creating a backup connection.
12376 - name: network.http.http3.parallel_fallback_conn_limit
12377 type: RelaxedAtomicUint32
12381 # Receive buffer size of QUIC socket
12382 - name: network.http.http3.max_data
12383 type: RelaxedAtomicUint32
12387 # Receive buffer size of QUIC socket
12388 - name: network.http.http3.max_stream_data
12389 type: RelaxedAtomicUint32
12393 # Enable http3 network priority as described in
12394 # https://httpwg.org/http-extensions/draft-ietf-httpbis-priority.html
12395 - name: network.http.http3.priority
12396 type: RelaxedAtomicBool
12400 # Depriorizing background tabs notifies websites when switching to or from the
12401 # tab while still loading resources for the website. On one hand it might
12402 # improve performance when switching to an tab with a website using the same
12403 # QUIC connection. On the other hand it sends more data to the website and
12404 # might be a privacy concern.
12405 - name: network.http.http3.send_background_tabs_deprioritization
12406 type: RelaxedAtomicBool
12410 - name: network.http.http3.version_negotiation.enabled
12411 type: RelaxedAtomicBool
12415 # When a Http/3 connection failed, whether to retry with a different IP address.
12416 - name: network.http.http3.retry_different_ip_family
12417 type: RelaxedAtomicBool
12421 # This is for testing purpose. When true, nsUDPSocket::SendWithAddress will
12422 # return NS_ERROR_CONNECTION_REFUSED for address "::1".
12423 - name: network.http.http3.block_loopback_ipv6_addr
12424 type: RelaxedAtomicBool
12428 # When true, a http request will be upgraded to https when HTTPS RR is
12430 - name: network.dns.upgrade_with_https_rr
12431 type: RelaxedAtomicBool
12435 # Whether to use HTTPS RR as AltSvc
12436 - name: network.dns.use_https_rr_as_altsvc
12437 type: RelaxedAtomicBool
12441 # Whether to check for NAT64 using the system resolver
12442 - name: network.connectivity-service.nat64-check
12447 # Manually enter the NAT64 prefix that will be used if IPv4 is unavailable.
12448 # The value is formatted as IPv6 with the least significant bits to be dropped.
12449 # For example, 64:ff9b:: is a common prefix. This will not disable
12450 # the NAT64 check, although the value of this pref will be prioritized.
12451 - name: network.connectivity-service.nat64-prefix
12456 # Whether to enable echconfig.
12457 - name: network.dns.echconfig.enabled
12458 type: RelaxedAtomicBool
12459 value: @IS_NIGHTLY_BUILD@
12462 # Whether to enable echconfig for http3.
12463 - name: network.dns.http3_echconfig.enabled
12464 type: RelaxedAtomicBool
12465 value: @IS_NIGHTLY_BUILD@
12468 # This pref needs to be worked together with network.dns.echconfig.enabled
12469 # being true and there is no record without ECHConfig.
12470 # When we try all records with ECHConfig in HTTPS RRs and still can't connect,
12471 # this pref indicate whether we can fallback to the origin server.
12472 - name: network.dns.echconfig.fallback_to_origin_when_all_failed
12473 type: RelaxedAtomicBool
12474 value: @IS_NOT_NIGHTLY_BUILD@
12477 # When true, reset the exclusion list when all records are excluded.
12478 - name: network.dns.httpssvc.reset_exclustion_list
12479 type: RelaxedAtomicBool
12483 # If the http3 connection cannot be ready after the timeout value here, the
12484 # transaction will start another non-http3 conneciton.
12485 # Setting this value to 0 indicates this feature is disabled.
12486 - name: network.dns.httpssvc.http3_fast_fallback_timeout
12487 type: RelaxedAtomicUint32
12491 # Whether to force a transaction to wait https rr.
12492 - name: network.dns.force_waiting_https_rr
12493 type: RelaxedAtomicBool
12494 value: @IS_NIGHTLY_BUILD@
12497 # The TTL for negative responses of TXT and HTTPS records.
12498 - name: network.dns.negative_ttl_for_type_record
12499 type: RelaxedAtomicUint32
12500 value: 300 # 5 minutes (in seconds)
12503 # Whether to use port prefixed QNAME for HTTPS RR
12504 - name: network.dns.port_prefixed_qname_https_rr
12505 type: RelaxedAtomicBool
12509 # Whether to use HTTPS RR and ignore NS_HTTP_DISALLOW_HTTPS_RR
12510 # This pref is only set when running tests
12511 - name: network.dns.force_use_https_rr
12512 type: RelaxedAtomicBool
12516 # This preference can be used to turn off IPv6 name lookups. See bug 68796.
12517 - name: network.dns.disableIPv6
12518 type: RelaxedAtomicBool
12522 # Whether to add additional record IPs to the cache
12523 - name: network.trr.add_additional_records
12524 type: RelaxedAtomicBool
12528 # When this pref is true, AddStorageEntry will return an error if the
12529 # OPEN_READONLY & OPEN_SECRETLY flags are passed and no entry exists.
12530 # If no regressions occur this pref should be removed.
12531 - name: network.cache.bug1708673
12532 type: RelaxedAtomicBool
12536 # When true we will dispatch a background task (separate process) to
12537 # delete the cache folder at shutdown in order to avoid shutdown hangs.
12538 - name: network.cache.shutdown_purge_in_background_task
12539 type: RelaxedAtomicBool
12540 #if defined(XP_WIN)
12547 # Number of seconds to wait for the cache folder to be renamed before
12548 # the background task forcefully exists.
12549 - name: network.cache.shutdown_purge_folder_wait_seconds
12550 type: RelaxedAtomicUint32
12554 # This is used for a temporary workaround for a web-compat issue. If pref is
12555 # true CORS preflight requests are allowed to send client certificates.
12556 - name: network.cors_preflight.allow_client_cert
12557 type: RelaxedAtomicBool
12561 # If true nsCORSListenerProxy will reject any URL that contains user & password
12562 # regardless if it's a redirect or not. When false nsCORSListenerProxy will
12563 # only reject URLs with a username and password when they happen on a redirected
12565 - name: network.cors_preflight.block_userpass_uri
12566 type: RelaxedAtomicBool
12570 # Whether to record the telemetry event when a JAR channel is failed to load.
12571 - name: network.jar.record_failure_reason
12572 type: RelaxedAtomicBool
12573 value: @IS_EARLY_BETA_OR_EARLIER@
12576 # nsJARInputStream::Available returns the size indicated by the archived entry
12577 # so we need a limit so we don't OOM if the archive is corrupted.
12578 - name: network.jar.max_available_size
12579 type: RelaxedAtomicUint32
12580 value: 256*1024*1024 # 256 Mb
12583 # Whether JAR entries that defate to a different size than RealSize/orglen
12584 # are considered corrupted or not
12585 - name: network.jar.require_size_match
12586 type: RelaxedAtomicBool
12590 # When this pref is true, we will use the HTTPS acceptable content encoding
12591 # list for trustworthy domains such as http://localhost
12592 - name: network.http.encoding.trustworthy_is_https
12593 type: RelaxedAtomicBool
12597 # Support http3 version1
12598 - name: network.http.http3.support_version1
12599 type: RelaxedAtomicBool
12603 # Disable early data on an origin if SSL_ERROR_PROTOCOL_VERSION_ALERT is received
12604 - name: network.http.early_data_disable_on_error
12605 type: RelaxedAtomicBool
12609 # Disable early data if it fails for more than this number of origins
12610 - name: network.http.early_data_max_error
12611 type: RelaxedAtomicUint32
12615 # If true, requests will be canceled if any of the response headers values has a NUL character
12616 - name: network.http.reject_NULs_in_response_header_values
12617 type: RelaxedAtomicBool
12621 # If true, will be more strict with status code parsing
12622 - name: network.http.strict_response_status_line_parsing
12623 type: RelaxedAtomicBool
12627 # If true, remove the resumption token when 0RTT failed.
12628 - name: network.http.remove_resumption_token_when_early_data_failed
12629 type: RelaxedAtomicBool
12633 # The maximum count that we allow socket prrocess to crash. If this count is
12634 # reached, we won't use networking over socket process.
12635 - name: network.max_socket_process_failed_count
12636 type: RelaxedAtomicUint32
12640 - name: network.allow_redirect_to_data
12641 type: RelaxedAtomicBool
12645 - name: network.allow_raw_sockets_in_content_processes
12650 - name: network.allow_large_stack_size_for_socket_thread
12651 type: RelaxedAtomicBool
12656 - name: network.webtransport.enabled
12657 type: RelaxedAtomicBool
12661 # WebTransport Datagram support
12662 - name: network.webtransport.datagrams.enabled
12663 type: RelaxedAtomicBool
12667 # WebTransport Datagram size
12668 - name: network.webtransport.datagram_size
12669 type: RelaxedAtomicUint32
12673 # WebTransport Redirect support
12674 - name: network.webtransport.redirect.enabled
12675 type: RelaxedAtomicBool
12679 # Wifi-scan polling period, in ms, when on a mobile network.
12680 # A value of 0 indicates that no polling should be done.
12681 - name: network.wifi.scanning_period
12682 type: RelaxedAtomicUint32
12686 # When the Access-Control-Allow-Headers is wildcard (*), whether to allow
12687 # CORS-protected requests with the Authorization request header.
12688 - name: network.cors_preflight.authorization_covered_by_wildcard
12693 #---------------------------------------------------------------------------
12694 # Prefs starting with "nglayout."
12695 #---------------------------------------------------------------------------
12697 # Enable/disable display list invalidation logging --- useful for debugging.
12698 - name: nglayout.debug.invalidation
12703 - name: nglayout.debug.disable_xul_cache
12708 - name: nglayout.initialpaint.delay
12713 - name: nglayout.initialpaint.delay_in_oopif
12718 #---------------------------------------------------------------------------
12719 # Prefs starting with "page_load."
12720 #---------------------------------------------------------------------------
12722 # Time in milliseconds during which certain tasks are deprioritized during
12724 - name: page_load.deprioritization_period
12725 type: RelaxedAtomicUint32
12729 #---------------------------------------------------------------------------
12730 # Prefs starting with "pdfjs."
12731 #---------------------------------------------------------------------------
12733 - name: pdfjs.disabled
12738 #---------------------------------------------------------------------------
12739 # Prefs starting with "permissions."
12740 #---------------------------------------------------------------------------
12742 # 1-Accept, 2-Deny, Any other value: Accept
12743 - name: permissions.default.image
12744 type: RelaxedAtomicUint32
12748 - name: permissions.isolateBy.userContext
12749 type: RelaxedAtomicBool
12753 - name: permissions.isolateBy.privateBrowsing
12754 type: RelaxedAtomicBool
12758 #---------------------------------------------------------------------------
12759 # Prefs starting with "places."
12760 #---------------------------------------------------------------------------
12762 # Whether pages alternative frecency is enabled. This and the following related
12763 # prefs only apply at restart.
12764 - name: places.frecency.pages.alternative.featureGate
12769 - name: places.frecency.pages.alternative.highWeight
12774 - name: places.frecency.pages.alternative.mediumWeight
12779 - name: places.frecency.pages.alternative.lowWeight
12784 - name: places.frecency.pages.alternative.halfLifeDays
12789 - name: places.frecency.pages.alternative.numSampledVisits
12794 #---------------------------------------------------------------------------
12795 # Prefs starting with "plain_text."
12796 #---------------------------------------------------------------------------
12798 # When false, text in plaintext documents does not wrap long lines.
12799 - name: plain_text.wrap_long_lines
12804 #---------------------------------------------------------------------------
12805 # Prefs starting with "preferences."
12806 #---------------------------------------------------------------------------
12808 - name: preferences.allow.omt-write
12814 # If set to true, setting a Preference matched to a `Once` StaticPref will
12815 # assert that the value matches. Such assertion being broken is a clear flag
12816 # that the Once policy shouldn't be used.
12817 - name: preferences.check.once.policy
12822 # If set to true, StaticPrefs Once policy check will be skipped during
12823 # automation regression test. Use with care. This pref must be set back to
12824 # false as soon as specific test has completed.
12825 - name: preferences.force-disable.check.once.policy
12831 #---------------------------------------------------------------------------
12832 # Prefs starting with "print."
12833 #---------------------------------------------------------------------------
12835 # Variation fonts can't always be embedded in certain output formats
12836 # such as PDF. To work around this, draw the variation fonts using
12837 # paths instead of using font embedding.
12838 - name: print.font-variations-as-paths
12839 type: RelaxedAtomicBool
12843 # Whether we always print silently (without a print dialog).
12844 - name: print.always_print_silent
12845 type: RelaxedAtomicBool
12849 # Whether we attempt to generate links in Save As PDF output.
12850 - name: print.save_as_pdf.links.enabled
12851 type: RelaxedAtomicBool
12855 # Whether we attempt to generate and use document-internal PDF destinations.
12856 # This currently sometimes results in an internal cairo error, see bug 1725743;
12857 # disabled by default until that is resolved.
12858 - name: print.save_as_pdf.internal_destinations.enabled
12859 type: RelaxedAtomicBool
12863 # Whether we use the CSS @page size as the paper size in PDF output.
12864 - name: print.save_as_pdf.use_page_rule_size_as_paper_size.enabled
12865 type: RelaxedAtomicBool
12869 # The default DPI for printing.
12871 # For PDF-based output, DPI should ideally be irrelevant, but in fact it is not
12872 # for multiple reasons:
12874 # * Layout code that tries to respect device pixels (e.g. for snapping glyph
12875 # positions and baselines, and especially for the "GDI Classic"
12876 # rendering-mode threshold for certain fonts).
12878 # * The limitations of the PDF format mean that we can't natively represent
12879 # certain effects, such as filters, in PDF output, so we need to rasterize
12880 # the parts of the document with these applied.
12882 # * Other rasterized things like images and such are also affected by DPI
12883 # (both in the output, and the images we select via srcset, for example).
12885 # Therefore, using a high DPI is preferable. For now, we use 144dpi to match
12886 # physical printer output on Windows, but higher (e.g. 300dpi) might be better,
12887 # but only if it does not lead to issues such as excessive memory use.
12888 - name: print.default_dpi
12893 # Whether support for monochrome printing is enabled for CUPS.
12894 - name: print.cups.monochrome.enabled
12895 type: RelaxedAtomicBool
12899 #---------------------------------------------------------------------------
12900 # Prefs starting with "privacy."
12901 #---------------------------------------------------------------------------
12903 # Annotate trackers using the strict list. If set to false, the basic list will
12905 - name: privacy.annotate_channels.strict_list.enabled
12907 value: @IS_EARLY_BETA_OR_EARLIER@
12910 # Annotate trackers using the strict list in the private browsing mode. If set
12911 # to false, the basic list will be used instead.
12912 - name: privacy.annotate_channels.strict_list.pbmode.enabled
12917 # First Party Isolation (double keying), disabled by default.
12918 - name: privacy.firstparty.isolate
12919 type: RelaxedAtomicBool
12923 # If false, two windows in the same domain with different first party domains
12924 # (top level URLs) can access resources through window.opener. This pref is
12925 # effective only when "privacy.firstparty.isolate" is true.
12926 - name: privacy.firstparty.isolate.restrict_opener_access
12927 type: RelaxedAtomicBool
12931 - name: privacy.firstparty.isolate.block_post_message
12932 type: RelaxedAtomicBool
12936 - name: privacy.firstparty.isolate.use_site
12937 type: RelaxedAtomicBool
12941 # Enforce tracking protection in all modes.
12942 - name: privacy.trackingprotection.enabled
12947 # Enforce tracking protection in Private Browsing mode.
12948 - name: privacy.trackingprotection.pbmode.enabled
12953 # Annotate channels based on the tracking protection list in all modes
12954 - name: privacy.trackingprotection.annotate_channels
12959 # Block 3rd party fingerprinting resources.
12960 - name: privacy.trackingprotection.fingerprinting.enabled
12965 # Block 3rd party cryptomining resources.
12966 - name: privacy.trackingprotection.cryptomining.enabled
12971 # Block 3rd party socialtracking resources.
12972 - name: privacy.trackingprotection.socialtracking.enabled
12977 # Consider socialtracking annotation as trackers (see ETP).
12978 - name: privacy.socialtracking.block_cookies.enabled
12983 # Block 3rd party emailtracking resources in all mode.
12984 - name: privacy.trackingprotection.emailtracking.enabled
12989 # Block 3rd party emailtracking resources in Private Browsing mode.
12990 - name: privacy.trackingprotection.emailtracking.pbmode.enabled
12995 # Collecting 3rd party emailtracking telemetry.
12996 - name: privacy.trackingprotection.emailtracking.data_collection.enabled
13001 - name: privacy.trackingprotection.testing.report_blocked_node
13002 type: RelaxedAtomicBool
13006 # Whether to spoof user locale to English (used as part of Resist
13011 - name: privacy.spoof_english
13012 type: RelaxedAtomicUint32
13016 # Send "do not track" HTTP header, disabled by default.
13017 - name: privacy.donottrackheader.enabled
13022 # Potentially send "global privacy control" HTTP header and set navigator
13023 # property accordingly. Communicates user's desire to opt-out/in of
13024 # websites or services selling or sharing the user's information, false by
13026 # true - Send the header with a value of 1 to indicate opting-out
13027 # false - Do not send header to indicate opting-in
13028 - name: privacy.globalprivacycontrol.enabled
13029 type: RelaxedAtomicBool
13033 # Controls whether or not GPC signals are sent. Meant to act as a third option
13034 # of 'undecided' by leaving the navigator property undefined and not attaching
13035 # the Sec-GPC HTTP header.
13036 - name: privacy.globalprivacycontrol.functionality.enabled
13037 type: RelaxedAtomicBool
13041 # Lower the priority of network loads for resources on the tracking protection
13042 # list. Note that this requires the
13043 # privacy.trackingprotection.annotate_channels pref to be on in order to have
13045 - name: privacy.trackingprotection.lower_network_priority
13047 value: @IS_NIGHTLY_BUILD@
13050 # A subset of Resist Fingerprinting protections focused specifically on timers.
13051 # This affects the Animation API, the performance APIs, Date.getTime,
13052 # Event.timestamp, File.lastModified, audioContext.currentTime,
13053 # canvas.captureStream.currentTime.
13054 - name: privacy.reduceTimerPrecision
13055 type: RelaxedAtomicBool
13059 # If privacy.reduceTimerPrecision is false, this pref controls whether or not
13060 # to clamp all timers at a fixed 20 microsconds. It should always be enabled,
13061 # and is only specified as a pref to enable an emergency disabling in the event
13062 # of catastrophic failure.
13063 - name: privacy.reduceTimerPrecision.unconditional
13064 type: RelaxedAtomicBool
13068 # The resistFingerprinting variables are marked with 'Relaxed' memory ordering.
13069 # We don't particurally care that threads have a percently consistent view of
13070 # the values of these prefs. They are not expected to change often, and having
13071 # an outdated view is not particurally harmful. They will eventually become
13074 # The variables will, however, be read often (specifically .microseconds on
13075 # each timer rounding) so performance is important.
13076 - name: privacy.resistFingerprinting
13077 type: RelaxedAtomicBool
13080 do_not_use_directly: true
13082 # When the .pbmode pref is on, RFP or FPP will be enabled in PBM
13083 # When the non-pbm pref is on, they will be enabled in PBM and non-PBM
13084 - name: privacy.resistFingerprinting.pbmode
13085 type: RelaxedAtomicBool
13088 do_not_use_directly: true
13090 # privacy.fingerprintingProtection enables a set of fingerprinting protections
13091 # designed to minimize breakage while maximizing protection.
13092 - name: privacy.fingerprintingProtection
13093 type: RelaxedAtomicBool
13096 do_not_use_directly: true
13098 - name: privacy.fingerprintingProtection.pbmode
13099 type: RelaxedAtomicBool
13102 do_not_use_directly: true
13104 # We automatically decline canvas permission requests if they are not initiated
13105 # from user input. Just in case that breaks something, we allow the user to
13106 # revert this behavior with this obscure pref. We do not intend to support this
13107 # long term. If you do set it, to work around some broken website, please file
13108 # a bug with information so we can understand why it is needed.
13109 - name: privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts
13114 # This pref can be used to disable mozAddonManager entirely for fingerprinting
13115 # reasons. Someone like Tor browser will use this pref.
13116 # NOTE: We'd like this to be a "hidden" pref once StaticPrefs supports it.
13117 - name: privacy.resistFingerprinting.block_mozAddonManager
13118 type: RelaxedAtomicBool
13122 # Whether canvas extraction should result in random data. If false, canvas
13123 # extraction results in all-white, opaque pixel data.
13124 - name: privacy.resistFingerprinting.randomDataOnCanvasExtract
13125 type: RelaxedAtomicBool
13129 # The log level for browser console messages logged in RFPHelper.sys.mjs. Change to
13130 # 'All' and restart to see the messages.
13131 - name: privacy.resistFingerprinting.jsmloglevel
13136 # Enable jittering the clock one precision value forward.
13137 - name: privacy.resistFingerprinting.reduceTimerPrecision.jitter
13138 type: RelaxedAtomicBool
13142 # Dynamically tune the resolution of the timer reduction for
13143 # `privacy.reduceTimerPrecision` and `privacy.resistFingerprinting`.
13144 - name: privacy.resistFingerprinting.reduceTimerPrecision.microseconds
13145 type: RelaxedAtomicUint32
13149 - name: privacy.resistFingerprinting.target_video_res
13154 # Enable resetting the fingerprinting randomization key daily for normal windwos.
13155 - name: privacy.resistFingerprinting.randomization.daily_reset.enabled
13156 type: RelaxedAtomicBool
13160 # Enable resetting the fingerprinting randomization key daily for private windwos.
13161 - name: privacy.resistFingerprinting.randomization.daily_reset.private.enabled
13162 type: RelaxedAtomicBool
13167 # Anti-tracking permission expiration.
13168 - name: privacy.restrict3rdpartystorage.expiration
13170 value: 2592000 # 30 days (in seconds)
13173 # Report Anti-tracking warnings to console lazily
13174 - name: privacy.restrict3rdpartystorage.console.lazy
13179 # Enable the heuristic to allow storage access for windows opened using window.open() after user interaction
13180 - name: privacy.restrict3rdpartystorage.heuristic.opened_window_after_interaction
13185 # Enable the heuristic to allow storage access for windows opened using window.open()
13186 - name: privacy.restrict3rdpartystorage.heuristic.window_open
13191 # Enable the heuristic to allow storage access for windows opened using window.open()
13192 - name: privacy.restrict3rdpartystorage.heuristic.redirect
13197 # Anti-tracking permission expiration.
13198 - name: privacy.restrict3rdpartystorage.expiration_redirect
13200 value: 2592000 # 30 days (in seconds)
13203 # Anti-tracking user-interaction expiration.
13204 - name: privacy.userInteraction.expiration
13206 value: 3888000 # 45 days (in seconds)
13209 # Anti-tracking user-interaction document interval.
13210 - name: privacy.userInteraction.document.interval
13212 value: 1800 # 30 minutes (in seconds)
13215 # Enable Anti-tracking testing. When it enables, it will notify the observers
13216 # when user-interaction permission or storage access permission is added. This
13217 # is for testing only.
13218 - name: privacy.antitracking.testing
13223 # Controls the anti-tracking webcompat features. This includes:
13224 # - All URL-Classifier and state partitioning skip lists (prefs and remote
13226 # - Storage access heuristics (opener, redirect, etc.)
13227 # - StorageAccessAPI automatic grants (skips the prompt)
13228 # - Allowing specific tracking channels on user opt-in (e.g. facebook login
13230 - name: privacy.antitracking.enableWebcompat
13231 type: RelaxedAtomicBool
13235 # Enable the heuristic to allow storage access for recent visited pages
13236 - name: privacy.restrict3rdpartystorage.heuristic.recently_visited
13241 # Valid time gap since last visit
13242 - name: privacy.restrict3rdpartystorage.heuristic.recently_visited_time
13244 value: 600 # 10 minutes
13247 # Recent visited pages redirection permission expiration.
13248 - name: privacy.restrict3rdpartystorage.expiration_visited
13250 value: 2592000 # 30 days (in seconds)
13253 # Maximum client-side cookie life-time cap. Measured in seconds, set to 0 to
13255 - name: privacy.documentCookies.maxage
13260 - name: privacy.window.maxInnerWidth
13265 - name: privacy.window.maxInnerHeight
13270 - name: privacy.sanitize.sanitizeOnShutdown
13271 type: RelaxedAtomicBool
13275 - name: privacy.clearOnShutdown.cache
13276 type: RelaxedAtomicBool
13280 - name: privacy.dynamic_firstparty.limitForeign
13281 type: RelaxedAtomicBool
13285 - name: privacy.dynamic_firstparty.use_site
13286 type: RelaxedAtomicBool
13290 - name: privacy.partition.network_state
13291 type: RelaxedAtomicBool
13295 # Partition the OCSP cache by the partitionKey.
13296 - name: privacy.partition.network_state.ocsp_cache
13297 type: RelaxedAtomicBool
13298 value: @IS_NIGHTLY_BUILD@
13301 # Partition the OCSP cache by the partitionKey for private browsing mode.
13302 - name: privacy.partition.network_state.ocsp_cache.pbmode
13303 type: RelaxedAtomicBool
13307 # Always partition web storage APIs except cookies.
13308 - name: privacy.partition.always_partition_third_party_non_cookie_storage
13309 type: RelaxedAtomicBool
13313 # Exclude session storage from the above preference.
13314 - name: privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage
13315 type: RelaxedAtomicBool
13319 - name: privacy.partition.bloburl_per_agent_cluster
13320 type: RelaxedAtomicBool
13324 - name: privacy.window.name.update.enabled
13329 # By default, the network state isolation is not active when there is a proxy
13330 # setting. This pref forces the network isolation even in these scenarios.
13331 - name: privacy.partition.network_state.connection_with_proxy
13336 # Partition the service workers unconditionally when dFPI is enabled.
13337 - name: privacy.partition.serviceWorkers
13338 type: RelaxedAtomicBool
13342 # Enables / disables the strip on share feature which strips query parameters
13343 # when copying/sharing in-content links or from the url bar.
13344 - name: privacy.query_stripping.strip_on_share.enabled
13345 type: RelaxedAtomicBool
13349 # Enables / disables the URL query string stripping in normal browsing mode
13350 # which strips query parameters from loading URIs to prevent bounce (redirect)
13352 - name: privacy.query_stripping.enabled
13353 type: RelaxedAtomicBool
13357 # Same as the pref above, but controls query stripping for private browsing
13359 - name: privacy.query_stripping.enabled.pbmode
13360 type: RelaxedAtomicBool
13364 # The list which contains query parameters that are needed to be stripped from
13365 # URIs. The query parameters are separated by a space.
13366 - name: privacy.query_stripping.strip_list
13371 # This controls if we will do the query string stripping for redirects.
13372 - name: privacy.query_stripping.redirect
13377 # the list which contains sites where should exempt from query stripping
13378 - name: privacy.query_stripping.allow_list
13383 # Main pref to enable / disable the feature.
13384 - name: privacy.bounceTrackingProtection.enabled
13389 # How long to wait for a client redirect after a navigation ends.
13390 - name: privacy.bounceTrackingProtection.clientBounceDetectionTimerPeriodMS
13395 # How long user activations will protect a site host from storage deletion.
13396 - name: privacy.bounceTrackingProtection.bounceTrackingActivationLifetimeSec
13401 # How long to wait for interaction after a possible bounce tracking event before
13402 # deleting a site host's storage.
13403 - name: privacy.bounceTrackingProtection.bounceTrackingGracePeriodSec
13408 # How often to run the bounce tracking timer algorithm which purges bounce
13409 # tracker state periodically. Set to 0 to disable purging.
13410 - name: privacy.bounceTrackingProtection.bounceTrackingPurgeTimerPeriodSec
13415 # Whether only bounces that access storage should be considered trackers.
13416 - name: privacy.bounceTrackingProtection.requireStatefulBounces
13421 # To be used in test environments to enable observer messages.
13422 - name: privacy.bounceTrackingProtection.enableTestMode
13427 #---------------------------------------------------------------------------
13428 # Prefs starting with "prompts."
13429 #---------------------------------------------------------------------------
13431 # Prompt modal type prefs
13432 # See nsIPromptService::MODAL_TYPE fields for possible values.
13434 # Insecure form submit warning.
13435 - name: prompts.modalType.insecureFormSubmit
13440 # nsHttpChannelAuthProvider#ConfirmAuth anti-phishing prompts.
13441 - name: prompts.modalType.confirmAuth
13446 #---------------------------------------------------------------------------
13447 # Prefs starting with "security."
13448 #---------------------------------------------------------------------------
13450 # Mochitests that need to load resource:// URIs not declared content-accessible
13451 # in manifests should set this pref.
13452 - name: security.all_resource_uri_content_accessible
13457 - name: security.bad_cert_domain_error.url_fix_enabled
13462 - name: security.csp.reporting.script-sample.max-length
13467 - name: security.csp.truncate_blocked_uri_for_frame_navigations
13472 # Limit the number of CSP reports that are send in a specific timespan.
13473 - name: security.csp.reporting.limit.count
13478 # Time span in seconds for reporting limit.
13479 - name: security.csp.reporting.limit.timespan
13484 # If true, all toplevel data: URI navigations will be blocked.
13485 # Please note that manually entering a data: URI in the
13486 # URL-Bar will not be blocked when flipping this pref.
13487 - name: security.data_uri.block_toplevel_data_uri_navigations
13492 # Whether window A is allowed to navigate cross-origin window B (that is not
13493 # a descendant frame of A) to a URI that loads externally.
13494 - name: security.allow_disjointed_external_uri_loads
13499 # Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but
13500 # not allowed for Firefox Desktop in firefox.js
13501 - name: security.allow_parent_unrestricted_js_loads
13502 type: RelaxedAtomicBool
13506 # Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but
13507 # not allowed for Firefox Desktop in firefox.js
13508 - name: security.allow_eval_with_system_principal
13509 type: RelaxedAtomicBool
13513 # Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but
13514 # not allowed for Firefox Desktop in firefox.js
13515 - name: security.allow_eval_in_parent_process
13516 type: RelaxedAtomicBool
13520 # Disallowed by default, ensure not disallowed content is loaded in the parent
13522 - name: security.allow_unsafe_parent_loads
13527 # Pref to block mixed scripts (fonts, plugin content, scripts, stylesheets,
13528 # iframes, websockets, XHR).
13529 - name: security.mixed_content.block_active_content
13531 value: @IS_ANDROID@
13534 # Pref to block sub requests that happen within an object.
13535 - name: security.mixed_content.block_object_subrequest
13540 # Pref for mixed display content blocking (images, audio, video).
13541 - name: security.mixed_content.block_display_content
13546 # Pref for mixed display content upgrading (images, audio, video).
13547 - name: security.mixed_content.upgrade_display_content
13549 value: @IS_NIGHTLY_BUILD@
13552 # Whether strict file origin policy is in effect. "False" is traditional.
13553 - name: security.fileuri.strict_origin_policy
13554 type: RelaxedAtomicBool
13558 # The level to which we sandbox the content process. firefox.js sets the
13559 # default to different values on a per-OS basis, and has documentation
13560 # on what the defaults are and what the numbers mean.
13561 - name: security.sandbox.content.level
13565 do_not_use_directly: true # Consumers should use SandboxSettings to ask.
13567 - name: security.sandbox.socket.process.level
13571 do_not_use_directly: true # Consumers should use SandboxSettings to ask.
13573 # This controls the strength of the Windows GPU process sandbox. Changes
13574 # will require restart.
13575 # For information on what the level number means, see
13576 # SetSecurityLevelForGPUProcess() in
13577 # security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp
13578 - name: security.sandbox.gpu.level
13580 #if defined(XP_WIN)
13587 # Enrollment preferences for the win32k experiment, set and managed by Normandy
13588 - name: security.sandbox.content.win32k-experiment.enrollmentStatus
13593 - name: security.sandbox.content.win32k-experiment.startupEnrollmentStatus
13598 #if defined(XP_WIN) && defined(MOZ_SANDBOX)
13600 # Whether win32k is disabled for content processes.
13601 # true means win32k system calls are not permitted.
13602 - name: security.sandbox.content.win32k-disable
13603 type: RelaxedAtomicBool
13607 # Note: win32k is currently _not_ disabled for GMP due to intermittent test
13608 # failures, where the GMP process fails very early. See bug 1449348.
13609 - name: security.sandbox.gmp.win32k-disable
13610 type: RelaxedAtomicBool
13614 # Whether win32k is disabled for socket processes.
13615 # true means win32k system calls are not permitted.
13616 - name: security.sandbox.socket.win32k-disable
13617 type: RelaxedAtomicBool
13621 # Whether CET User Shadow Stack compatible modules only is enabled for the
13622 # relevant process type.
13623 - name: security.sandbox.content.shadow-stack.enabled
13624 type: RelaxedAtomicBool
13628 - name: security.sandbox.rdd.shadow-stack.enabled
13629 type: RelaxedAtomicBool
13633 - name: security.sandbox.socket.shadow-stack.enabled
13634 type: RelaxedAtomicBool
13638 - name: security.sandbox.gpu.shadow-stack.enabled
13639 type: RelaxedAtomicBool
13643 - name: security.sandbox.gmp.shadow-stack.enabled
13644 type: RelaxedAtomicBool
13648 # Whether a Low Privilege AppContainer (LPAC) is enabled for the relevant
13651 #if defined(MOZ_WMF_MEDIA_ENGINE)
13652 - name: security.sandbox.utility-wmf-cdm.lpac.enabled
13653 type: RelaxedAtomicBool
13658 # Whether Arbitrary Code Guard is enabled for the RDD process.
13659 - name: security.sandbox.rdd.acg.enabled
13660 type: RelaxedAtomicBool
13665 # Whether Arbitrary Code Guard is enabled for the utility WMF audio decoder
13668 - name: security.sandbox.utility-wmf.acg.enabled
13669 type: RelaxedAtomicBool
13674 # This controls the depth of stack trace that is logged when Windows sandbox
13675 # logging is turned on. This is only currently available for the content
13676 # process because the only other sandbox (for GMP) has too strict a policy to
13677 # allow stack tracing. This does not require a restart to take effect.
13678 - name: security.sandbox.windows.log.stackTraceDepth
13679 type: RelaxedAtomicUint32
13684 #if defined(XP_LINUX) && defined(MOZ_SANDBOX)
13685 # Run content processes in headless mode and disallow
13686 # connections to the X server. Requires:
13687 # * `webgl.out-of-process` (or else WebGL breaks)
13688 # * `widget.non-native-theme.enabled` (scrollbars & form controls)
13689 # Changing it requires a restart because sandbox policy information
13690 # dependent on it is cached. See bug 1640345 for details.
13691 - name: security.sandbox.content.headless
13697 # Pref to show warning when submitting from secure to insecure.
13698 - name: security.warn_submit_secure_to_insecure
13703 # Hardware Origin-bound Second Factor Support
13704 - name: security.webauth.webauthn
13709 # Navigate-to CSP 3 directive
13710 - name: security.csp.enableNavigateTo
13715 # wasm-unsafe-eval source keyword
13716 - name: security.csp.wasm-unsafe-eval.enabled
13721 # unsafe-hashes source keyword
13722 - name: security.csp.unsafe-hashes.enabled
13727 # The script-src-attr and script-src-elem directive
13728 - name: security.csp.script-src-attr-elem.enabled
13733 # The style-src-attr and style-src-elem directive
13734 - name: security.csp.style-src-attr-elem.enabled
13739 - name: security.csp.external-hashes.enabled
13744 # WebAuthn CTAP2 support
13745 - name: security.webauthn.ctap2
13746 type: RelaxedAtomicBool
13751 # Dispatch WebAuthn requests to the software CTAP1 token.
13752 # (mutually exclusive with webauthn_enable_android_fido2,
13753 # and webauthn_enable_usbtoken)
13754 - name: security.webauth.webauthn_enable_softtoken
13755 type: RelaxedAtomicBool
13760 # Dispatch WebAuthn requests to the Android platform API
13761 - name: security.webauth.webauthn_enable_android_fido2
13762 type: RelaxedAtomicBool
13763 value: @IS_ANDROID@
13766 # residentKey support when using Android platform API
13767 - name: security.webauthn.webauthn_enable_android_fido2.residentkey
13768 type: RelaxedAtomicBool
13772 # Dispatch WebAuthn requests to authenticator-rs
13773 - name: security.webauth.webauthn_enable_usbtoken
13774 type: RelaxedAtomicBool
13775 value: @IS_NOT_ANDROID@
13779 # Skip direct attestation consent prompts (for tests).
13780 - name: security.webauth.webauthn_testing_allow_direct_attestation
13781 type: RelaxedAtomicBool
13785 # Block Worker/SharedWorker scripts with wrong MIME type.
13786 - name: security.block_Worker_with_wrong_mime
13791 # Block the execution of scripts using a wrong type as defined by the file extension
13792 # (OS) mapping when loaded via the file:// protocol.
13793 - name: security.block_fileuri_script_with_wrong_mime
13795 value: @IS_EARLY_BETA_OR_EARLIER@
13798 # Cancel outgoing requests from SystemPrincipal:
13799 # but only with scheme http(s) and contentpolicytype subdocument
13800 - name: security.disallow_privileged_https_subdocuments_loads
13805 # but only with scheme data and contentpolicytype subdocument
13806 - name: security.disallow_privileged_data_subdocuments_loads
13811 # Cancel outgoing requests from SystemPrincipal:
13812 # but only with scheme http(s) and contentpolicytype stylesheet
13813 - name: security.disallow_privileged_https_stylesheet_loads
13818 # Cancel outgoing requests from SystemPrincipal:
13819 # but only with scheme http(s) and contentpolicytype script
13820 - name: security.disallow_privileged_https_script_loads
13825 # Cancel outgoing requests from SystemPrincipal:
13826 # where there is no finalURI.
13827 - name: security.disallow_privileged_no_finaluri_loads
13832 # Cancel outgoing requests from privileged about pages:
13833 # but only with scheme http(s) and contentpolicytype script
13834 - name: security.disallow_privilegedabout_remote_script_loads
13839 # Disable preloaded static key pins by default.
13840 - name: security.cert_pinning.enforcement_level
13841 type: RelaxedAtomicUint32
13844 do_not_use_directly: true
13846 # OCSP fetching behavior:
13847 # 0: do not fetch OCSP
13848 # 1: fetch OCSP for DV and EV certificates
13849 # 2: fetch OCSP only for EV certificates
13850 - name: security.OCSP.enabled
13851 type: RelaxedAtomicUint32
13860 # Whether or not OCSP is required.
13861 # true => hard-fail (if an OCSP request times out, stop the connection)
13862 # false => soft-fail (if an OCSP request times out, continue the connection)
13863 - name: security.OCSP.require
13864 type: RelaxedAtomicBool
13868 # How many milliseconds to wait for an OCSP response before assuming it failed
13869 # (when fetching for soft-fail).
13870 - name: security.OCSP.timeoutMilliseconds.soft
13871 type: RelaxedAtomicUint32
13872 #ifdef RELEASE_OR_BETA
13879 # How many milliseconds to wait for an OCSP response before assuming it failed
13880 # (when fetching for hard-fail).
13881 - name: security.OCSP.timeoutMilliseconds.hard
13882 type: RelaxedAtomicUint32
13886 # Whether or not to enable OCSP must-staple (in other words, TLS-feature with
13888 - name: security.ssl.enable_ocsp_must_staple
13889 type: RelaxedAtomicBool
13893 # Whether or not to enable OCSP stapling.
13894 - name: security.ssl.enable_ocsp_stapling
13895 type: RelaxedAtomicBool
13899 # This is checked at startup to see if NSS should be initialized without the
13900 # user's certificate and key databases.
13901 - name: security.nocertdb
13906 # Whether or not to import and trust third party root certificates from the OS.
13907 - name: security.enterprise_roots.enabled
13908 type: RelaxedAtomicBool
13912 - name: security.intermediate_preloading_healer.enabled
13913 type: RelaxedAtomicBool
13914 value: @IS_NOT_ANDROID@
13917 - name: security.intermediate_preloading_healer.timer_interval_ms
13918 type: RelaxedAtomicUint32
13922 # If true, attempt to load the osclientcerts PKCS#11 module at startup on a
13923 # background thread. This module allows Firefox to use client certificates
13924 # stored in OS certificate storage. Currently only available for Windows and
13926 - name: security.osclientcerts.autoload
13927 type: RelaxedAtomicBool
13931 # If true, assume tokens accessed via osclientcerts implement RSA-PSS. If a
13932 # given token does not support RSA-PSS, users may see the error
13933 # 'SEC_ERROR_PKCS11_GENERAL_ERROR' if a server indicates it will accept an
13934 # RSA-PSS signature in the client's certificate verify message.
13935 # Setting this to false may allow such connections to succeed, if the server
13936 # also accepts RSA-PKCS1 signatures.
13937 - name: security.osclientcerts.assume_rsa_pss_support
13938 type: RelaxedAtomicBool
13942 - name: security.pki.cert_short_lifetime_in_days
13943 type: RelaxedAtomicUint32
13947 # security.pki.netscape_step_up_policy controls how the platform handles the
13948 # id-Netscape-stepUp OID in extended key usage extensions of CA certificates.
13949 # 0: id-Netscape-stepUp is always considered equivalent to id-kp-serverAuth
13950 # 1: it is considered equivalent when the notBefore is before 23 August 2016
13951 # 2: similarly, but for 23 August 2015
13952 # 3: it is never considered equivalent
13953 - name: security.pki.netscape_step_up_policy
13954 type: RelaxedAtomicUint32
13955 #ifdef RELEASE_OR_BETA
13962 # Configures Certificate Transparency support mode:
13963 # 0: Fully disabled.
13964 # 1: Only collect telemetry. CT qualification checks are not performed.
13965 - name: security.pki.certificate_transparency.mode
13966 type: RelaxedAtomicUint32
13970 # 0: Disable CRLite entirely.
13971 # 1: Consult CRLite but only collect telemetry.
13972 # 2: Consult CRLite and enforce both "Revoked" and "Not Revoked" results.
13973 # 3: Consult CRLite and enforce "Not Revoked" results, but defer to OCSP for "Revoked".
13974 - name: security.pki.crlite_mode
13975 type: RelaxedAtomicUint32
13979 - name: security.tls.version.min
13980 type: RelaxedAtomicUint32
13984 - name: security.tls.version.max
13985 type: RelaxedAtomicUint32
13989 - name: security.tls.version.enable-deprecated
13990 type: RelaxedAtomicBool
13994 - name: security.tls.version.fallback-limit
13995 type: RelaxedAtomicUint32
13999 # Turn off post-handshake authentication for TLS 1.3 by default,
14000 # until the incompatibility with HTTP/2 is resolved:
14001 # https://tools.ietf.org/html/draft-davidben-http2-tls13-00
14002 - name: security.tls.enable_post_handshake_auth
14003 type: RelaxedAtomicBool
14007 # Probability of GREASEing a TLS connection with ECH (0-100)
14008 # 0 means never GREASE, 100 means always GREASE
14009 - name: security.tls.ech.grease_probability
14010 type: RelaxedAtomicUint32
14011 #ifdef NIGHTLY_BUILD
14018 # Whether to apply ECH GREASE settings to HTTP3/QUIC connections
14019 - name: security.tls.ech.grease_http3
14020 type: RelaxedAtomicBool
14021 value: @IS_NIGHTLY_BUILD@
14024 # Whether to retry connections without ECH Grease
14025 - name: security.tls.ech.disable_grease_on_fallback
14026 type: RelaxedAtomicBool
14027 value: @IS_NOT_NIGHTLY_BUILD@
14030 # ECH GREASE Padding target (1-255)
14031 - name: security.tls.ech.grease_size
14032 type: RelaxedAtomicUint32
14036 # Whether to apply GREASE settings to HTTP3/QUIC connections
14037 - name: security.tls.grease_http3_enable
14038 type: RelaxedAtomicBool
14043 - name: security.tls.hello_downgrade_check
14044 type: RelaxedAtomicBool
14048 - name: security.tls.enable_delegated_credentials
14049 type: RelaxedAtomicBool
14053 - name: security.tls.enable_0rtt_data
14054 type: RelaxedAtomicBool
14058 - name: security.ssl.treat_unsafe_negotiation_as_broken
14059 type: RelaxedAtomicBool
14063 - name: security.ssl.require_safe_negotiation
14064 type: RelaxedAtomicBool
14068 - name: security.ssl.enable_false_start
14069 type: RelaxedAtomicBool
14073 - name: security.ssl.enable_alpn
14074 type: RelaxedAtomicBool
14078 - name: security.ssl.disable_session_identifiers
14079 type: RelaxedAtomicBool
14083 - name: security.ssl3.ecdhe_rsa_aes_128_gcm_sha256
14084 type: RelaxedAtomicBool
14088 - name: security.ssl3.ecdhe_ecdsa_aes_128_gcm_sha256
14089 type: RelaxedAtomicBool
14093 - name: security.ssl3.ecdhe_ecdsa_chacha20_poly1305_sha256
14094 type: RelaxedAtomicBool
14098 - name: security.ssl3.ecdhe_rsa_chacha20_poly1305_sha256
14099 type: RelaxedAtomicBool
14103 - name: security.ssl3.ecdhe_ecdsa_aes_256_gcm_sha384
14104 type: RelaxedAtomicBool
14108 - name: security.ssl3.ecdhe_rsa_aes_256_gcm_sha384
14109 type: RelaxedAtomicBool
14113 - name: security.ssl3.ecdhe_rsa_aes_128_sha
14114 type: RelaxedAtomicBool
14118 - name: security.ssl3.ecdhe_ecdsa_aes_128_sha
14119 type: RelaxedAtomicBool
14120 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
14123 - name: security.ssl3.ecdhe_rsa_aes_256_sha
14124 type: RelaxedAtomicBool
14128 - name: security.ssl3.ecdhe_ecdsa_aes_256_sha
14129 type: RelaxedAtomicBool
14130 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
14133 - name: security.ssl3.dhe_rsa_aes_128_sha
14134 type: RelaxedAtomicBool
14138 - name: security.ssl3.dhe_rsa_aes_256_sha
14139 type: RelaxedAtomicBool
14143 - name: security.ssl3.rsa_aes_128_sha
14144 type: RelaxedAtomicBool
14148 - name: security.ssl3.rsa_aes_256_sha
14149 type: RelaxedAtomicBool
14153 - name: security.ssl3.rsa_aes_128_gcm_sha256
14154 type: RelaxedAtomicBool
14158 - name: security.ssl3.rsa_aes_256_gcm_sha384
14159 type: RelaxedAtomicBool
14163 - name: security.ssl3.deprecated.rsa_des_ede3_sha
14164 type: RelaxedAtomicBool
14168 - name: security.tls13.aes_128_gcm_sha256
14169 type: RelaxedAtomicBool
14173 - name: security.tls13.chacha20_poly1305_sha256
14174 type: RelaxedAtomicBool
14178 - name: security.tls13.aes_256_gcm_sha384
14179 type: RelaxedAtomicBool
14183 #---------------------------------------------------------------------------
14184 # Prefs starting with "signon."
14185 #---------------------------------------------------------------------------
14186 - name: signon.usernameOnlyForm.enabled
14191 #---------------------------------------------------------------------------
14192 # Prefs starting with "slider."
14193 #---------------------------------------------------------------------------
14195 # Scrollbar snapping region.
14197 # - 1 and higher: slider thickness multiple
14198 - name: slider.snapMultiplier
14207 #---------------------------------------------------------------------------
14208 # Prefs starting with "storage."
14209 #---------------------------------------------------------------------------
14211 # Whether to use a non-exclusive VFS.
14212 # By default we use the unix-excl VFS, for the following reasons:
14213 # 1. It improves compatibility with NFS shares, whose implementation
14214 # is incompatible with SQLite's locking requirements (reliable fcntl), and
14215 # in particular with WAL journaling.
14216 # Bug 433129 attempted to automatically identify such file-systems,
14217 # but a reliable way was not found and the fallback locking is slower than
14218 # POSIX locking, so we do not want to do it by default.
14219 # 2. It allows wal mode to avoid the memory mapped -shm file, reducing the
14220 # likelihood of SIGBUS failures when disk space is exhausted.
14221 # 3. It provides some protection from third party database tampering while a
14222 # connection is open.
14223 # Note there's no win32-excl VFS, so this has no effect on Windows.
14224 - name: storage.sqlite.exclusiveLock.enabled
14225 type: RelaxedAtomicBool
14226 value: @IS_NOT_ANDROID@
14229 #---------------------------------------------------------------------------
14230 # Prefs starting with "svg."
14231 #---------------------------------------------------------------------------
14233 # This pref controls whether the 'context-fill' and 'context-stroke' keywords
14234 # can be used in SVG-as-an-image in the content processes to use the fill/
14235 # stroke specified on the element that embeds the image. (These keywords are
14236 # always enabled in the chrome process, regardless of this pref.) Also, these
14237 # keywords are currently not part of any spec, which is partly why we disable
14238 # them for web content.
14239 - name: svg.context-properties.content.enabled
14240 type: RelaxedAtomicBool
14244 # This pref controls whether the `prefers-color-scheme` value of SVG images
14245 # reacts to the embedder `color-scheme` in content.
14246 - name: svg.embedder-prefers-color-scheme.content.enabled
14247 type: RelaxedAtomicBool
14251 # Enables the 'context-fill' and 'context-stroke' keywords for particular
14252 # domains. We expect this list to be Mozilla-controlled properties, since the
14253 # 'context-*' keywords are not part of any spec. We expect to remove this
14254 # preference and the 'context-` keyword support entirely in the
14255 # not-too-distant future when a standardized alternative ships. This preference
14256 # is _not_ for allowing web content to use these keywords. For performance
14257 # reasons, the list of domains in this preference should remain short in
14259 - name: svg.context-properties.content.allowed-domains
14264 # Is support for the new getBBox method from SVG 2 enabled?
14265 # See https://svgwg.org/svg2-draft/single-page.html#types-SVGBoundingBoxOptions
14266 - name: svg.new-getBBox.enabled
14271 # Whether SVGGraphicsElement.nearestViewportElement and SVGGraphicsElement.farthestViewportElement are enabled.
14272 - name: svg.nearestAndFarthestViewportElement.enabled
14274 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
14277 # Tweak which elements are allowed in <svg:use> subtrees, and in which
14278 # circumstances. See RemoveForbiddenNodes in SVGUseElement.cpp for the spec
14281 # - 0: Don't restrict ever.
14282 # - 1: Restrict only cross-document.
14283 # - 2/other: restrict always.
14285 # We allow the behavior to be configurable via this pref. Our chosen default
14286 # value forbids non-graphical content in <svg:use> clones of cross-document
14287 # elements. This is a compromise between our more-permissive pre-existing
14288 # behavior (which SVG 2 seems to call for, and maps to pref value 0) and the
14289 # behavior of other UAs (which SVG 1.1 seems to call for, and maps to pref
14291 - name: svg.use-element.graphics-element-restrictions
14296 # Whether to restrict <svg:use> element recursion levels.
14298 # - 0: Don't restrict ever.
14299 # - 1: Restrict everywhere
14300 # - 2/other: Restrict only in the parent process.
14302 - name: svg.use-element.recursive-clone-limit.enabled
14307 # What is the recursion limit for svg use element cloning if enabled.
14308 - name: svg.use-element.recursive-clone-limit
14313 #---------------------------------------------------------------------------
14314 # Prefs starting with "telemetry."
14315 #---------------------------------------------------------------------------
14317 - name: telemetry.number_of_site_origin.min_interval
14322 - name: telemetry.fog.test.localhost_port
14323 type: RelaxedAtomicInt32
14328 - name: telemetry.fog.test.activity_limit
14329 type: RelaxedAtomicUint32
14334 - name: telemetry.fog.test.inactivity_limit
14335 type: RelaxedAtomicUint32
14340 - name: telemetry.fog.artifact_build
14341 type: RelaxedAtomicBool
14345 #---------------------------------------------------------------------------
14346 # Prefs starting with "test."
14347 #---------------------------------------------------------------------------
14349 - name: test.events.async.enabled
14350 type: RelaxedAtomicBool
14354 - name: test.mousescroll
14355 type: RelaxedAtomicBool
14359 #---------------------------------------------------------------------------
14360 # Prefs starting with "thread."
14361 #---------------------------------------------------------------------------
14363 # If control tasks aren't enabled, they get medium high priority.
14364 - name: threads.control_event_queue.enabled
14365 type: RelaxedAtomicBool
14369 # If the service is available, set threads to low-power mode when in the background.
14370 - name: threads.use_low_power.enabled
14371 type: RelaxedAtomicBool
14372 value: @IS_NIGHTLY_BUILD@
14376 # If the process priority is set to background, put the main thread in the background.
14377 # Currently off by default.
14378 - name: threads.lower_mainthread_priority_in_background.enabled
14380 value: @IS_NIGHTLY_BUILD@
14383 #---------------------------------------------------------------------------
14384 # Prefs starting with "timer."
14385 #---------------------------------------------------------------------------
14387 # Since our timestamp on macOS does not increment while the system is asleep, we
14388 # should ignore sleep/wake notifications to make timer thread process timers.
14389 - name: timer.ignore_sleep_wake_notifications
14390 type: RelaxedAtomicBool
14398 # Amount of time by which it is always acceptable to delay the firing of a timer.
14399 # Any timer may be delayed by up to this amount in order to enable timers to be
14400 # bundled together for efficiency.
14401 - name: timer.minimum_firing_delay_tolerance_ms
14406 # Maximum amount of time by which it is ever acceptable to delay the firing of a timer.
14407 # Setting this to zero will effectively disable timer coalescing.
14408 - name: timer.maximum_firing_delay_tolerance_ms
14413 #---------------------------------------------------------------------------
14414 # Prefs starting with "toolkit."
14415 #---------------------------------------------------------------------------
14417 # Makes removeDirectory background task wait for the given milliseconds before removal.
14418 - name: toolkit.background_tasks.remove_directory.testing.sleep_ms
14419 type: RelaxedAtomicUint32
14423 # Returns true if BHR is disabled.
14424 - name: toolkit.content-background-hang-monitor.disabled
14429 - name: toolkit.scrollbox.smoothScroll
14430 type: RelaxedAtomicBool
14434 - name: toolkit.scrollbox.horizontalScrollDistance
14435 type: RelaxedAtomicInt32
14439 - name: toolkit.scrollbox.verticalScrollDistance
14440 type: RelaxedAtomicInt32
14444 # The lateWriteChecksStage and fastShutdownStage below represent the stage
14445 # of shutdown after which we (for lateWriteChecksStage) crash / gather
14446 # telemetry data on file writes, or (for fastShutdownStage) we call _exit(0).
14447 # Higher values are earlier during shutdown, and the full enumeration can
14448 # be found in AppShutdown.h in the AppShutdownPhase enum.
14449 - name: toolkit.shutdown.lateWriteChecksStage
14451 #ifdef MOZ_CODE_COVERAGE
14458 # See the comment above toolkit.shutdown.lateWriteChecksStage. A higher value
14459 # for this pref means we call _exit(0) earlier during shutdown.
14460 - name: toolkit.shutdown.fastShutdownStage
14462 #if !defined(DEBUG) && !defined(MOZ_ASAN) && !defined(MOZ_TSAN) && !defined(MOZ_CODE_COVERAGE) && !defined(MOZ_VALGRIND) && !defined(MOZ_PROFILE_GENERATE) && !defined(JS_STRUCTURED_SPEW)
14469 # Sending each remote accumulation immediately places undue strain on the IPC
14470 # subsystem. Batch the remote accumulations for a period of time before sending
14471 # them all at once. This value was chosen as a balance between data timeliness
14472 # and performance (see bug 1218576).
14473 - name: toolkit.telemetry.ipcBatchTimeout
14478 - name: toolkit.telemetry.geckoview.batchDurationMS
14479 type: RelaxedAtomicUint32
14483 - name: toolkit.telemetry.geckoview.maxBatchStalenessMS
14484 type: RelaxedAtomicUint32
14488 - name: toolkit.telemetry.geckoview.streaming
14489 type: RelaxedAtomicBool
14493 - name: toolkit.telemetry.testing.overrideProductsCheck
14494 type: RelaxedAtomicBool
14498 #---------------------------------------------------------------------------
14499 # Prefs starting with "ui."
14500 #---------------------------------------------------------------------------
14502 - name: ui.key.generalAccessKey
14507 # Use 17 for Ctrl, 18 for Alt, 91 or 224 for Meta, 0 for none.
14508 - name: ui.key.accelKey
14517 # See above for the key codes to use.
14518 - name: ui.key.menuAccessKey
14527 # Only used if generalAccessKey is -1.
14528 - name: ui.key.chromeAccess
14531 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 3 = ctrl+shift, 8 = Meta
14534 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 5 = Alt+Shift, 8 = Win
14539 # Only used if generalAccessKey is -1.
14540 - name: ui.key.contentAccess
14543 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 3 = ctrl+shift, 8 = Meta
14546 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 5 = Alt+Shift, 8 = Win
14551 # Does the access key by itself focus the menu bar?
14552 - name: ui.key.menuAccessKeyFocuses
14554 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
14555 # On Windows and Linux, we now default to showing the menu bar only when alt
14563 # Whether native key bindings in the environment or builtin shortcut key
14564 # definitions in Gecko are used first in <input> and <textarea>
14565 - name: ui.key.textcontrol.prefer_native_key_bindings_over_builtin_shortcut_key_definitions
14570 #ifdef MOZ_WIDGET_GTK
14571 # Only GtkTextView (native multiline text viewer/editor) supports "select-all"
14572 # signal so that we cannot know "select-all" key bindings only with GtkEntry.
14573 # When this pref is set to true, if a key combination does not cause any
14574 # signals in GtkEntry, try to check the key combination is mapped to
14575 # "select-all" in GtkTextView or not. If it's mapped to other commands, they
14576 # are just ignored.
14577 - name: ui.key.use_select_all_in_single_line_editor
14583 # Duration of timeout of incremental search in menus (ms). 0 means infinite.
14584 - name: ui.menu.incremental_search.timeout
14589 # If true, all popups won't hide automatically on blur
14590 - name: ui.popup.disable_autohide
14591 type: RelaxedAtomicBool
14595 # Negate scroll, true will make the mouse scroll wheel move the screen the
14596 # same direction as with most desktops or laptops.
14597 - name: ui.scrolling.negate_wheel_scroll
14598 type: RelaxedAtomicBool
14599 value: @IS_ANDROID@
14602 # If the user puts a finger down on an element and we think the user might be
14603 # executing a pan gesture, how long do we wait before tentatively deciding the
14604 # gesture is actually a tap and activating the target element?
14605 - name: ui.touch_activation.delay_ms
14610 # If the user has clicked an element, how long do we keep the :active state
14611 # before it is cleared by the mouse sequences fired after a
14612 # touchstart/touchend.
14613 - name: ui.touch_activation.duration_ms
14618 # Prevent system colors from being exposed to CSS or canvas.
14619 - name: ui.use_standins_for_native_colors
14620 type: RelaxedAtomicBool
14624 # Disable page loading activity cursor by default.
14625 - name: ui.use_activity_cursor
14630 # Whether context menus should only appear on mouseup instead of mousedown,
14631 # on OSes where they normally appear on mousedown (macOS, *nix).
14632 # Note: ignored on Windows (context menus always use mouseup).
14633 - name: ui.context_menus.after_mouseup
14638 # Whether click-hold context menus are enabled.
14639 - name: ui.click_hold_context_menus
14640 type: RelaxedAtomicBool
14644 # How long to wait for a drag gesture before displaying click-hold context menu,
14646 - name: ui.click_hold_context_menus.delay
14647 type: RelaxedAtomicInt32
14651 # When enabled, the touch.radius and mouse.radius prefs allow events to be
14652 # dispatched to nearby elements that are sensitive to the event. See
14653 # PositionedEventTargeting.cpp. The 'mm' prefs define a rectangle around the
14654 # nominal event target point within which we will search for suitable elements.
14655 # 'visitedWeight' is a percentage weight; a value > 100 makes a visited link be
14656 # treated as further away from the event target than it really is, while a
14657 # value < 100 makes a visited link be treated as closer to the event target
14658 # than it really is.
14660 - name: ui.touch.radius.enabled
14662 value: @IS_ANDROID@
14665 - name: ui.touch.radius.topmm
14674 - name: ui.touch.radius.rightmm
14683 - name: ui.touch.radius.bottommm
14692 - name: ui.touch.radius.leftmm
14701 - name: ui.touch.radius.visitedWeight
14706 - name: ui.mouse.radius.enabled
14708 value: @IS_ANDROID@
14711 - name: ui.mouse.radius.topmm
14720 - name: ui.mouse.radius.rightmm
14729 - name: ui.mouse.radius.bottommm
14738 - name: ui.mouse.radius.leftmm
14747 - name: ui.mouse.radius.visitedWeight
14752 - name: ui.mouse.radius.reposition
14754 value: @IS_ANDROID@
14757 # When true, the ui.mouse.radius.* prefs will only affect simulated mouse
14758 # events generated by touch input. When false, the prefs will be used for all
14760 - name: ui.mouse.radius.inputSource.touchOnly
14765 #---------------------------------------------------------------------------
14766 # Prefs starting with "urlclassifier."
14767 #---------------------------------------------------------------------------
14769 # Update server response timeout for Safe Browsing.
14770 - name: urlclassifier.update.response_timeout_ms
14775 # Download update timeout for Safe Browsing.
14776 - name: urlclassifier.update.timeout_ms
14781 #---------------------------------------------------------------------------
14782 # Prefs starting with "view_source."
14783 #---------------------------------------------------------------------------
14785 - name: view_source.editor.external
14790 - name: view_source.wrap_long_lines
14792 value: @IS_ANDROID@
14795 - name: view_source.syntax_highlight
14800 - name: view_source.tab_size
14805 #---------------------------------------------------------------------------
14806 # Prefs starting with "webgl." (for pref access from Worker threads)
14807 #---------------------------------------------------------------------------
14809 - name: webgl.1.allow-core-profiles
14810 type: RelaxedAtomicBool
14818 - name: webgl.angle.force-d3d11
14819 type: RelaxedAtomicBool
14823 - name: webgl.angle.try-d3d11
14824 type: RelaxedAtomicBool
14832 - name: webgl.angle.force-warp
14833 type: RelaxedAtomicBool
14837 - name: webgl.auto-flush
14838 type: RelaxedAtomicBool
14842 - name: webgl.auto-flush.gl
14843 type: RelaxedAtomicBool
14847 - name: webgl.can-lose-context-in-foreground
14848 type: RelaxedAtomicBool
14852 - name: webgl.cgl.multithreaded
14853 type: RelaxedAtomicBool
14857 - name: webgl.colorspaces.prototype
14858 type: RelaxedAtomicBool
14862 - name: webgl.debug.incomplete-tex-color
14863 type: RelaxedAtomicUint32
14867 - name: webgl.default-antialias
14868 type: RelaxedAtomicBool
14869 value: @IS_NOT_ANDROID@
14872 - name: webgl.default-no-alpha
14873 type: RelaxedAtomicBool
14877 - name: webgl.disable-angle
14878 type: RelaxedAtomicBool
14882 - name: webgl.disable-wgl
14883 type: RelaxedAtomicBool
14887 - name: webgl.dxgl.enabled
14888 type: RelaxedAtomicBool
14896 - name: webgl.dxgl.needs-finish
14897 type: RelaxedAtomicBool
14901 - name: webgl.disable-fail-if-major-performance-caveat
14902 type: RelaxedAtomicBool
14906 - name: webgl.disable-DOM-blit-uploads
14907 type: RelaxedAtomicBool
14908 #if defined(MOZ_AARCH64) && defined(XP_MACOSX)
14915 - name: webgl.disabled
14916 type: RelaxedAtomicBool
14920 - name: webgl.enable-debug-renderer-info
14921 type: RelaxedAtomicBool
14925 - name: webgl.enable-draft-extensions
14926 type: RelaxedAtomicBool
14930 - name: webgl.enable-privileged-extensions
14931 type: RelaxedAtomicBool
14935 - name: webgl.enable-renderer-query
14936 type: RelaxedAtomicBool
14940 - name: webgl.enable-surface-texture
14941 type: RelaxedAtomicBool
14945 - name: webgl.enable-webgl2
14946 type: RelaxedAtomicBool
14950 - name: webgl.fake-verts.max
14951 type: RelaxedAtomicUint32
14952 value: 10*1000*1000 # 10M as vec4 is count*4*4 = 160MB
14955 # Only works on Mac for now.
14956 - name: webgl.forbid-hardware
14957 type: RelaxedAtomicBool
14961 # Only works on Mac for now.
14962 - name: webgl.forbid-software
14963 type: RelaxedAtomicBool
14964 value: true # It's generally better to encourage fallback to e.g. canvas2d.
14967 - name: webgl.force-enabled
14968 type: RelaxedAtomicBool
14972 - name: webgl.force-index-validation
14973 type: RelaxedAtomicInt32
14977 - name: webgl.lose-context-on-memory-pressure
14978 type: RelaxedAtomicBool
14982 - name: webgl.max-contexts
14983 type: RelaxedAtomicUint32
14987 - name: webgl.max-contexts-per-principal
14988 type: RelaxedAtomicUint32
14992 - name: webgl.max-size-per-texture-mib
14993 type: RelaxedAtomicUint32
14997 - name: webgl.max-vert-ids-per-draw
14998 type: RelaxedAtomicUint32
14999 value: 30*1000*1000
15002 - name: webgl.max-warnings-per-context
15003 type: RelaxedAtomicUint32
15007 - name: webgl.min_capability_mode
15008 type: RelaxedAtomicBool
15012 - name: webgl.msaa-force
15013 type: RelaxedAtomicBool
15017 - name: webgl.msaa-samples
15018 type: RelaxedAtomicUint32
15022 - name: webgl.out-of-process
15023 type: RelaxedAtomicBool
15024 # (When reading the next line, know that preprocessor.py doesn't
15025 # understand parentheses, but && is higher precedence than ||.)
15029 - name: webgl.out-of-process.worker
15030 type: RelaxedAtomicBool
15031 # (When reading the next line, know that preprocessor.py doesn't
15032 # understand parentheses, but && is higher precedence than ||.)
15036 - name: webgl.out-of-process.force
15037 type: RelaxedAtomicBool
15041 - name: webgl.out-of-process.shmem-size
15042 type: RelaxedAtomicUint32
15043 value: 100000 # 100KB
15046 - name: webgl.out-of-process.async-present
15047 type: RelaxedAtomicBool
15051 # Forces async present to wait for a sync, even while using remote textures.
15052 - name: webgl.out-of-process.async-present.force-sync
15053 type: RelaxedAtomicBool
15057 #if defined(MOZ_WIDGET_ANDROID)
15058 - name: webgl.out-of-process.enable-ahardwarebuffer
15064 # Override the blocklist to assume that GL is threadsafe.
15065 - name: webgl.threadsafe-gl.force-enabled
15070 # Override the blocklist to assume that GL is not threadsafe.
15071 - name: webgl.threadsafe-gl.force-disabled
15076 - name: webgl.use-canvas-render-thread
15081 - name: webgl.override-unmasked-renderer
15082 type: DataMutexString
15086 - name: webgl.override-unmasked-vendor
15087 type: DataMutexString
15091 - name: webgl.power-preference-override
15092 type: RelaxedAtomicInt32
15096 - name: webgl.prefer-16bpp
15097 type: RelaxedAtomicBool
15101 - name: webgl.sanitize-unmasked-renderer
15102 type: RelaxedAtomicBool
15106 - name: webgl.allow-immediate-queries
15107 type: RelaxedAtomicBool
15111 - name: webgl.allow-fb-invalidation
15112 type: RelaxedAtomicBool
15117 - name: webgl.perf.max-warnings
15118 type: RelaxedAtomicInt32
15122 - name: webgl.perf.max-acceptable-fb-status-invals
15123 type: RelaxedAtomicInt32
15127 - name: webgl.perf.spew-frame-allocs
15128 type: RelaxedAtomicBool
15132 #---------------------------------------------------------------------------
15133 # Prefs starting with "widget."
15134 #---------------------------------------------------------------------------
15136 # Global user preference for disabling native theme in content processes.
15138 # NOTE(emilio): When changing this make sure to update the non_native_theme
15139 # entry in python/mozbuild/mozbuild/mozinfo.py and test_fission_autostart.py
15140 - name: widget.non-native-theme.enabled
15141 type: RelaxedAtomicBool
15145 # Whether the non-native theme should always use system colors. Useful mostly
15146 # for testing forced colors mode.
15147 - name: widget.non-native-theme.always-high-contrast
15148 type: RelaxedAtomicBool
15152 # The style of scrollbars to use. Here are the current options:
15154 # 0: Default platform scrollbar style.
15155 # 1: macOS scrollbars
15156 # 2: GTK scrollbars
15157 # 3: Android scrollbars
15158 # 4: Windows 10 scrollbars
15159 # 5: Windows 11 scrollbars
15161 # Note that switching to non-default scrollbars is experimental and other
15162 # scrollbar-related prefs may interfere with the experience. For example,
15163 # setting the GTK thumb size may have no effect when using non-GTK scrollbars
15165 - name: widget.non-native-theme.scrollbar.style
15170 # An override that allows to override the default platform size. The size in CSS
15171 # pixels at full zoom of the minimum scrollbar width.
15172 - name: widget.non-native-theme.scrollbar.size.override
15177 # Whether we should use themed values for dark scrollbars.
15178 - name: widget.non-native-theme.scrollbar.dark-themed
15179 type: RelaxedAtomicBool
15183 # Whether the active thumb color should always use the themed colors, even if
15184 # dark scrollbars are in use.
15185 - name: widget.non-native-theme.scrollbar.active-always-themed
15186 type: RelaxedAtomicBool
15190 # Whether we use the Windows CSS scrollbar sizes, or the scrollbar sizes
15192 - name: widget.non-native-theme.win.scrollbar.use-system-size
15197 # Whether Windows 11 scrollbars are always drawn with the thinner "overlay"
15199 - name: widget.non-native-theme.win11.scrollbar.force-overlay-style
15204 # The amount of space that the thumb should fill the scrollbar, from zero to
15206 - name: widget.non-native-theme.gtk.scrollbar.thumb-size
15211 # The minimum size of the scroll thumb, in the scrollbar direction.
15212 - name: widget.non-native-theme.gtk.scrollbar.thumb-cross-size
15217 # Whether the thumb should be rounded for the non-native scrollbars.
15218 - name: widget.non-native-theme.gtk.scrollbar.round-thumb
15223 # Whether buttons shouldn't be suppressed for non-native scrollbars.
15224 - name: widget.non-native-theme.gtk.scrollbar.allow-buttons
15229 # Whether we should use the default accent color or the theme-provided one for
15230 # content (e.g. for form controls and CSS system colors).
15232 # Turned off on Windows, for now (we always use the default blue-ish
15233 # accent-color there). We might want to turn this on there, though it's worth
15234 # thinking on what the behavior should be for grey-ish accent colors (which are
15235 # a thing on Windows and can cause confusion with things like disabled form
15236 # controls). Maybe it's just fine.
15237 - name: widget.non-native-theme.use-theme-accent
15238 type: RelaxedAtomicBool
15246 # Whether we should try to use WebRender to render widgets.
15247 - name: widget.non-native-theme.webrender
15249 #if defined(XP_MACOSX)
15250 # Disabled on macOS release / beta because of a suspected AMD driver bug (see
15252 value: @IS_NIGHTLY_BUILD@
15258 # Whether the outline style should be one big stroke or two contrasting strokes
15259 - name: widget.non-native-theme.solid-outline-style
15264 # Preference to disable dark scrollbar implementation.
15265 # This is mainly for testing because dark scrollbars have to be semi-
15266 # transparent, but many reftests expect scrollbars to look identical
15267 # among different backgrounds.
15268 # However, some users may want to disable this as well.
15269 - name: widget.disable-dark-scrollbar
15274 - name: widget.window-transforms.disabled
15275 type: RelaxedAtomicBool
15281 # Whether to shift by the menubar height on fullscreen mode.
15284 # 2: auto (tries to detect when it is needed)
15285 - name: widget.macos.shift-by-menubar-on-fullscreen
15286 type: RelaxedAtomicUint32
15290 - name: widget.macos.native-context-menus
15291 type: RelaxedAtomicBool
15296 # Whether native GTK context menus are enabled.
15297 # Disabled because at the very least there's missing custom icon support.
15298 - name: widget.gtk.native-context-menus
15299 type: RelaxedAtomicBool
15303 # Whether we use overlay scrollbars on GTK.
15304 - name: widget.gtk.overlay-scrollbars.enabled
15305 type: RelaxedAtomicBool
15309 # Whether we honor the scrollbar colors from the gtk theme.
15310 - name: widget.gtk.theme-scrollbar-colors.enabled
15315 # Whether selection colors for the non-system theme get passed from the system
15317 - name: widget.gtk.alt-theme.selection
15322 # Whether form control accent colors for the non-system theme get passed from
15323 # the system GTK theme.
15324 - name: widget.gtk.alt-theme.accent
15329 # Whether the scrollbar thumb active color from the non-system theme gets
15330 # passed from the system GTK theme.
15331 - name: widget.gtk.alt-theme.scrollbar_active
15336 # Whether we should try to grab the pointer on popups.
15339 # 2: Auto (depending on the system)
15340 - name: widget.gtk.grab-pointer
15345 # Whether we should try ignore bogus leave-notify events from the window
15349 # 2: Auto (depending on the system)
15350 - name: widget.gtk.ignore-bogus-leave-notify
15355 # Whether to use gtk high contrast themes to disable content styling like on
15356 # windows high contrast mode.
15357 - name: widget.content.gtk-high-contrast.enabled
15363 - name: widget.wayland.fractional-scale.enabled
15368 # Use opaque region for MozContainer wl_surface
15369 - name: widget.wayland.opaque-region.enabled
15374 # Use frame callback based vsync
15375 - name: widget.wayland.vsync.enabled
15380 # Whether to keep firing vsync at layout.throttled_frame_rate after we've been
15382 - name: widget.wayland.vsync.keep-firing-at-idle
15388 #ifdef MOZ_WIDGET_GTK
15389 # Whether to override the DMABuf blocklist.
15390 - name: widget.dmabuf.force-enabled
15395 #ifdef NIGHTLY_BUILD
15396 # Keep those pref hidden on non-nightly builds to avoid people accidentally
15399 # Use DMABuf for content textures.
15400 # For testing purposes only.
15401 - name: widget.dmabuf-textures.enabled
15402 type: RelaxedAtomicBool
15407 # Use DMABuf backend for WebGL.
15408 - name: widget.dmabuf-webgl.enabled
15409 type: RelaxedAtomicBool
15413 # Use gdk_window_move_to_rect to move Wayland popups when available.
15414 - name: widget.wayland.use-move-to-rect
15419 # The time we should spend on a DBUS call to the FileManager1 interface before
15420 # giving up and trying an alternative method.
15422 # -1 for the default system timeout, INT_MAX for "infinite time".
15424 # This happens right now on the main thread so 1 second should be enough, we
15425 # should consider moving it to a background task and just use the default
15427 - name: widget.gtk.file-manager-show-items-timeout-ms
15432 # The timeout we should spend on a DBUS call to the Settings proxy before
15435 # -1 for the default system timeout, INT_MAX for "infinite time".
15437 # This runs just once, but during startup, so make sure it doesn't take too
15438 # long. Three seconds should be way more than enough, and if we don't get the
15439 # reply on time then the only potential issue is that we use a light instead of
15440 # dark interface or vice versa.
15441 - name: widget.gtk.settings-portal-timeout-ms
15446 # Whether to use gtk portal for the file picker.
15449 # - 2: auto (true for flatpak or GTK_USE_PORTAL=1, false otherwise)
15450 - name: widget.use-xdg-desktop-portal.file-picker
15455 # Whether to use gtk portal for the mime handler.
15458 # - 2: auto (for now only true for flatpak, see bug 1516290)
15459 - name: widget.use-xdg-desktop-portal.mime-handler
15464 # Whether to try to use XDG portal for settings / look-and-feel information.
15465 # https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.Settings
15469 - name: widget.use-xdg-desktop-portal.settings
15474 # Whether to use XDG portal for geolocation.
15475 # https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.Location
15479 - name: widget.use-xdg-desktop-portal.location
15483 # Whether to use XDG portal for opening to a file.
15484 # https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.OpenURI
15487 # - 2: auto (true for flatpak or GTK_USE_PORTAL=1, false otherwise)
15488 - name: widget.use-xdg-desktop-portal.open-uri
15495 # WindowsUIUtils::Share to wait for user action on Windows share dialog
15496 # `true` means the promise resolves when user completes or cancels the share
15497 # action. This can be unsafe since selecting copy action fires no DataPackage
15498 # event as of 21H1.
15499 # `false` means the promise resolves when the share data is passed to
15501 # This affects the behavior of `navigator.share()`.
15502 - name: widget.windows.share.wait_action.enabled
15507 - name: widget.windows.window_occlusion_tracking.enabled
15512 # Whether overlay scrollbars respect the system settings.
15513 # Note that these can be overridden by the ui.useOverlayScrollbars pref.
15514 - name: widget.windows.overlay-scrollbars.enabled
15519 # Whether we allow accessing the UWP system color pallete.
15520 - name: widget.windows.uwp-system-colors.enabled
15525 # Whether we use the accent color for highlight as some other UWP apps do.
15527 # false for now since it can cause some contrast-with-background issues
15528 # specially with grey accents, see bug 1776588.
15529 - name: widget.windows.uwp-system-colors.highlight-accent
15534 - name: widget.windows.window_occlusion_tracking_display_state.enabled
15539 - name: widget.windows.window_occlusion_tracking_session_lock.enabled
15544 - name: widget.windows.hide_cursor_when_typing
15549 # Whether to give explorer.exe a delated nudge to recalculate the fullscreenness
15550 # of a window after maximizing it.
15551 - name: widget.windows.fullscreen_remind_taskbar
15552 type: RelaxedAtomicBool
15556 # The number of messages of each type to keep for display in
15557 # about:windows-messages
15558 - name: widget.windows.messages_to_log
15559 type: RelaxedAtomicUint32
15563 # Whether to flush the Ole clipboard synchronously.
15564 # Possible values are:
15567 # * 2 (or others): when needed
15568 - name: widget.windows.sync-clipboard-flush
15573 # Whether to apply a hack (adjusting the window height by -1px and back again)
15574 # upon first entering fullscreen intended to work around a bug exhibited under
15575 # on some Windows 11 machines under some configurations. (See bug 1763981.)
15581 - name: widget.windows.apply-dwm-resize-hack
15582 type: RelaxedAtomicInt32
15587 # Whether to disable SwipeTracker (e.g. swipe-to-nav).
15588 - name: widget.disable-swipe-tracker
15593 # Various metrics to control SwipeTracker.
15594 - name: widget.swipe.velocity-twitch-tolerance
15599 - name: widget.swipe.success-velocity-contribution
15604 # When using pixel deltas for pan input, how many pixels do we consider a whole
15607 # The values for this pref are derived from trial and error in an effort to
15608 # match the existing behavior on the respective platforms.
15609 - name: widget.swipe.pixel-size
15611 #if defined(XP_MACOSX)
15618 # When using page deltas for pan input, how many pages do we consider a whole
15619 # swipe navigation?
15621 # This is only relevant for GTK which is as of right now the only platform
15622 # which supports page-based pan gestures.
15623 - name: widget.swipe.page-size
15628 - name: widget.transparent-windows
15633 # Whether the clipboard cached are used while getting system clipboard data.
15634 - name: widget.clipboard.use-cached-data.enabled
15636 #if defined(XP_MACOSX)
15643 #---------------------------------------------------------------------------
15644 # Prefs starting with "zoom."
15645 #---------------------------------------------------------------------------
15647 - name: zoom.maxPercent
15656 - name: zoom.minPercent
15665 #---------------------------------------------------------------------------
15667 #---------------------------------------------------------------------------