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
184 #define IS_XP_MACOSX true
185 #define IS_NOT_XP_MACOSX false
187 #define IS_XP_MACOSX false
188 #define IS_NOT_XP_MACOSX true
191 #---------------------------------------------------------------------------
192 # Prefs starting with "accessibility."
193 #---------------------------------------------------------------------------
195 - name: accessibility.accesskeycausesactivation
200 - name: accessibility.monoaudio.enable
201 type: RelaxedAtomicBool
205 - name: accessibility.browsewithcaret
206 type: RelaxedAtomicBool
210 - name: accessibility.AOM.enabled
215 - name: accessibility.ARIAReflection.enabled
220 # Whether form controls and images should be focusable with mouse, in content
223 # This matches historical macOS / Safari behavior.
227 # * 2: on content documents
228 - name: accessibility.mouse_focuses_formcontrol
237 # Whether to avoid accessibility activation on Windows shortly after clipboard
240 # Possible values are:
243 # * 2 (or others): when needed
244 - name: accessibility.windows.suppress-after-clipboard-copy
249 #---------------------------------------------------------------------------
250 # Prefs starting with "alerts."
251 #---------------------------------------------------------------------------
253 # Whether to use platform-specific backends for showing desktop notifications.
254 # If no such backend is available, or if the pref is false, then XUL
255 # notifications are used.
256 - name: alerts.useSystemBackend
262 # On Windows, a COM Surrogate notification server receives notification events
263 # and can relaunch the application after it has been closed.
264 - name: alerts.useSystemBackend.windows.notificationserver.enabled
271 #---------------------------------------------------------------------------
272 # Prefs starting with "android."
273 #---------------------------------------------------------------------------
275 # On Android, we want an opaque background to be visible under the page,
276 # so layout should not force a default background.
277 - name: android.widget_paints_background
278 type: RelaxedAtomicBool
282 - name: android.touch_resampling.enabled
283 type: RelaxedAtomicBool
289 #---------------------------------------------------------------------------
290 # Prefs starting with "apz."
291 # The apz prefs are explained in AsyncPanZoomController.cpp
292 #---------------------------------------------------------------------------
294 # amount we zoom in for a double tap gesture if we couldn't find any content
295 # based rect to zoom to
296 - name: apz.doubletapzoom.defaultzoomin
301 - name: apz.scrollbarbuttonrepeat.enabled
302 type: RelaxedAtomicBool
306 - name: apz.scrollend-event.content.enabled
307 type: RelaxedAtomicBool
311 # After a user has executed a pan gesture, we may receive momentum phase pan
312 # gestures from the OS. This specifies how long we should wait following the
313 # pan end gesture for possible momentum phase pan gestures before sending the
314 # TransformEnd notification.
315 - name: apz.scrollend-event.content.delay_ms
316 type: RelaxedAtomicInt32
320 - name: apz.wr.activate_all_scroll_frames
321 type: RelaxedAtomicBool
325 - name: apz.wr.activate_all_scroll_frames_when_fission
326 type: RelaxedAtomicBool
330 - name: apz.prefer_jank_minimal_displayports
331 type: RelaxedAtomicBool
335 - name: apz.allow_double_tap_zooming
336 type: RelaxedAtomicBool
340 - name: apz.mac.enable_double_tap_zoom_touchpad_gesture
341 type: RelaxedAtomicBool
345 - name: apz.allow_immediate_handoff
346 type: RelaxedAtomicBool
350 - name: apz.allow_zooming
351 type: RelaxedAtomicBool
365 - name: apz.allow_zooming_out
366 type: RelaxedAtomicBool
370 - name: apz.android.chrome_fling_physics.friction
375 - name: apz.android.chrome_fling_physics.inflexion
380 - name: apz.android.chrome_fling_physics.stop_threshold
385 - name: apz.autoscroll.enabled
386 type: RelaxedAtomicBool
390 - name: apz.axis_lock.breakout_angle
392 value: float(M_PI / 8.0) # 22.5 degrees
396 - name: apz.axis_lock.breakout_threshold
401 - name: apz.axis_lock.direct_pan_angle
403 value: float(M_PI / 3.0) # 60 degrees
407 - name: apz.axis_lock.lock_angle
409 value: float(M_PI / 6.0) # 30 degrees
413 # Whether to lock touch scrolling to one axis at a time. When a new
414 # axis lock mode is added, the APZCAxisLockCompatTester GTest shoud
415 # be updated to include the lock mode value.
416 # 0 = FREE (No locking at all)
417 # 1 = STANDARD (Once locked, remain locked until scrolling ends)
418 # 2 = STICKY (Allow lock to be broken, with hysteresis)
419 # 3 = DOMINANT_AXIS (Only allow movement on one axis at a time, only
420 # applies to touchpad scrolling)
421 - name: apz.axis_lock.mode
422 type: RelaxedAtomicInt32
423 #if defined(XP_MACOSX)
430 - name: apz.content_response_timeout
431 type: RelaxedAtomicInt32
435 - name: apz.danger_zone_x
436 type: RelaxedAtomicInt32
440 - name: apz.danger_zone_y
441 type: RelaxedAtomicInt32
445 - name: apz.disable_for_scroll_linked_effects
446 type: RelaxedAtomicBool
450 - name: apz.displayport_expiry_ms
451 type: RelaxedAtomicUint32
455 - name: apz.drag.enabled
456 type: RelaxedAtomicBool
460 - name: apz.drag.initial.enabled
461 type: RelaxedAtomicBool
465 - name: apz.drag.touch.enabled
466 type: RelaxedAtomicBool
470 - name: apz.enlarge_displayport_when_clipped
471 type: RelaxedAtomicBool
476 - name: apz.fixed-margin-override.enabled
477 type: RelaxedAtomicBool
482 - name: apz.fixed-margin-override.bottom
483 type: RelaxedAtomicInt32
488 - name: apz.fixed-margin-override.top
489 type: RelaxedAtomicInt32
493 - name: apz.fling_accel_base_mult
498 - name: apz.fling_accel_supplemental_mult
503 - name: apz.fling_accel_min_fling_velocity
508 - name: apz.fling_accel_min_pan_velocity
513 - name: apz.fling_accel_max_pause_interval_ms
514 type: RelaxedAtomicInt32
518 - name: apz.fling_curve_function_x1
523 - name: apz.fling_curve_function_x2
528 - name: apz.fling_curve_function_y1
533 - name: apz.fling_curve_function_y2
538 - name: apz.fling_curve_threshold_inches_per_ms
543 - name: apz.fling_friction
548 - name: apz.fling_min_velocity_threshold
553 - name: apz.fling_stop_on_tap_threshold
558 - name: apz.fling_stopped_threshold
563 - name: apz.touch_acceleration_factor_x
568 - name: apz.touch_acceleration_factor_y
573 # new scrollbar code for desktop zooming
574 - name: apz.force_disable_desktop_zooming_scrollbars
575 type: RelaxedAtomicBool
579 #ifdef MOZ_WIDGET_GTK
580 - name: apz.gtk.kinetic_scroll.enabled
581 type: RelaxedAtomicBool
585 - name: apz.gtk.pangesture.enabled
586 type: RelaxedAtomicBool
590 # Mode to use when receiving pan gesture input.
592 # * 0: Auto mode (uses the default behavior, subject to change).
593 # * 1: Page mode: Uses gtk deltas as a percentage of the page size to scroll. This mode matches:
595 # https://gitlab.gnome.org/GNOME/gtk/blob/c734c7e9188b56f56c3a504abee05fa40c5475ac/gtk/gtkrange.c#L3063-3074
597 # * 2: Pixel mode: Uses gtk deltas as a fixed pixel multiplier. This mode matches e.g. GNOME web.
599 # https://webkit-search.igalia.com/webkit/rev/215039ef09d6bfd6e088175bfe30788d95b9705d/Source/WebKit/Shared/gtk/WebEventFactory.cpp#265-296
600 # (multiplied then by pixelsPerLineStep which in GNOME-web is 40).
601 - name: apz.gtk.pangesture.delta_mode
606 - name: apz.gtk.pangesture.page_delta_mode_multiplier
611 - name: apz.gtk.pangesture.pixel_delta_mode_multiplier
616 - name: apz.gtk.touchpad_pinch.enabled
617 type: RelaxedAtomicBool
621 - name: apz.gtk.touchpad_pinch.three_fingers.enabled
622 type: RelaxedAtomicBool
627 - name: apz.keyboard.enabled
629 value: @IS_NOT_ANDROID@
632 - name: apz.keyboard.passive-listeners
633 type: RelaxedAtomicBool
634 value: @IS_NOT_ANDROID@
637 - name: apz.max_tap_time
638 type: RelaxedAtomicInt32
642 - name: apz.max_velocity_inches_per_ms
647 - name: apz.max_velocity_queue_size
652 - name: apz.min_skate_speed
657 - name: apz.mvm.force-enabled
658 type: RelaxedAtomicBool
662 - name: apz.one_touch_pinch.enabled
663 type: RelaxedAtomicBool
667 - name: apz.overscroll.enabled
668 type: RelaxedAtomicBool
669 #if defined(XP_MACOSX) || defined(XP_WIN)
676 # The "test async scroll offset" (used via reftest-async-scroll
677 # or nsIDOMWindowUtils.setAsyncScrollOffset()) can be used to
678 # trigger overscroll. Used for tests only.
679 - name: apz.overscroll.test_async_scroll_offset.enabled
680 type: RelaxedAtomicBool
684 - name: apz.overscroll.min_pan_distance_ratio
689 - name: apz.overscroll.stop_distance_threshold
694 - name: apz.overscroll.spring_stiffness
699 - name: apz.overscroll.damping
704 - name: apz.overscroll.max_velocity
709 - name: apz.paint_skipping.enabled
710 type: RelaxedAtomicBool
714 # Fetch displayport updates early from the message queue.
715 - name: apz.pinch_lock.mode
716 type: RelaxedAtomicInt32
720 - name: apz.pinch_lock.scroll_lock_threshold
722 value: 1.0f / 16.0f # 1/16 inches
725 - name: apz.pinch_lock.span_breakout_threshold
727 value: 1.0f / 32.0f # 1/32 inches
730 - name: apz.pinch_lock.span_lock_threshold
732 value: 1.0f / 32.0f # 1/32 inches
735 - name: apz.pinch_lock.buffer_max_age
737 value: 80 # milliseconds
740 - name: apz.popups.enabled
741 type: RelaxedAtomicBool
745 # Whether to print the APZC tree for debugging.
746 - name: apz.printtree
747 type: RelaxedAtomicBool
751 - name: apz.record_checkerboarding
752 type: RelaxedAtomicBool
753 value: @IS_NIGHTLY_BUILD@
756 - name: apz.second_tap_tolerance
761 # If this is true, APZ fully recalculates the scroll thumb size and
762 # position in the compositor. This leads to the size and position
763 # being more accurate in scenarios such as async zooming.
764 - name: apz.scrollthumb.recalc
765 type: RelaxedAtomicBool
769 - name: apz.test.fails_with_native_injection
770 type: RelaxedAtomicBool
774 - name: apz.test.logging_enabled
775 type: RelaxedAtomicBool
779 - name: apz.touch_move_tolerance
784 - name: apz.touch_start_tolerance
789 - name: apz.velocity_bias
794 - name: apz.velocity_relevance_time_ms
795 type: RelaxedAtomicUint32
799 - name: apz.windows.force_disable_direct_manipulation
800 type: RelaxedAtomicBool
804 - name: apz.windows.use_direct_manipulation
805 type: RelaxedAtomicBool
809 - name: apz.windows.check_for_pan_gesture_conversion
810 type: RelaxedAtomicBool
814 - name: apz.x_skate_highmem_adjust
819 - name: apz.x_skate_size_multiplier
824 - name: apz.x_stationary_size_multiplier
829 - name: apz.y_skate_highmem_adjust
834 - name: apz.y_skate_size_multiplier
836 #if defined(MOZ_WIDGET_ANDROID)
843 - name: apz.y_stationary_size_multiplier
845 #if defined(MOZ_WIDGET_ANDROID)
852 - name: apz.zoom_animation_duration_ms
853 type: RelaxedAtomicInt32
854 #if defined(MOZ_WIDGET_ANDROID)
861 - name: apz.scale_repaint_delay_ms
862 type: RelaxedAtomicInt32
866 # Whether to use rounded external scroll offsets.
867 - name: apz.rounded_external_scroll_offset
872 #---------------------------------------------------------------------------
873 # Prefs starting with "beacon."
874 #---------------------------------------------------------------------------
876 # Is support for Navigator.sendBeacon enabled?
877 - name: beacon.enabled
882 #---------------------------------------------------------------------------
883 # Prefs starting with "bidi."
884 #---------------------------------------------------------------------------
886 # Whether delete and backspace should immediately delete characters not
887 # visually adjacent to the caret, or adjust the visual position of the caret
888 # on the first keypress and delete the character on a second keypress
889 - name: bidi.edit.delete_immediately
894 # Bidi caret movement style:
897 # 2 = visual, but logical during selection
898 - name: bidi.edit.caret_movement_style
900 #if !defined(XP_LINUX) && defined(NIGHTLY_BUILD)
903 value: 2 # See Bug 1638240
907 # Bidi numeral style:
908 # 0 = nominalnumeralBidi *
909 # 1 = regularcontextnumeralBidi
910 # 2 = hindicontextnumeralBidi
911 # 3 = arabicnumeralBidi
912 # 4 = hindinumeralBidi
913 # 5 = persiancontextnumeralBidi
914 # 6 = persiannumeralBidi
916 type: RelaxedAtomicUint32
921 # 1 = charsettexttypeBidi *
922 # 2 = logicaltexttypeBidi
923 # 3 = visualtexttypeBidi
924 - name: bidi.texttype
925 type: RelaxedAtomicUint32
930 # 1 = directionLTRBidi *
931 # 2 = directionRTLBidi
932 - name: bidi.direction
933 type: RelaxedAtomicUint32
937 # Setting this pref to |true| forces Bidi UI menu items and keyboard shortcuts
938 # to be exposed, and enables the directional caret hook. By default, only
939 # expose it for bidi-associated system locales.
940 - name: bidi.browser.ui
945 #---------------------------------------------------------------------------
946 # Prefs starting with "browser."
947 #---------------------------------------------------------------------------
949 - name: browser.active_color
954 - name: browser.active_color.dark
959 - name: browser.anchor_color
964 # If you change this, you probably also want to change
965 # nsXPLookAndFeel::GenericDarkColor for MozNativehyperlinktext.
966 - name: browser.anchor_color.dark
971 # See http://dev.w3.org/html5/spec/forms.html#attr-fe-autofocus
972 - name: browser.autofocus
977 - name: browser.cache.disk.enable
978 type: RelaxedAtomicBool
982 - name: browser.cache.memory.enable
983 type: RelaxedAtomicBool
987 # Limit of recent metadata we keep in memory for faster access, in KB.
988 - name: browser.cache.disk.metadata_memory_limit
989 type: RelaxedAtomicUint32
993 # Does the user want smart-sizing?
994 - name: browser.cache.disk.smart_size.enabled
995 type: RelaxedAtomicBool
999 # Disk cache capacity in kilobytes. It's used only when
1000 # browser.cache.disk.smart_size.enabled == false
1001 - name: browser.cache.disk.capacity
1002 type: RelaxedAtomicUint32
1006 # -1 = determine dynamically, 0 = none, n = memory capacity in kilobytes.
1007 - name: browser.cache.memory.capacity
1008 type: RelaxedAtomicInt32
1012 # When smartsizing is disabled we could potentially fill all disk space by
1013 # cache data when the disk capacity is not set correctly. To avoid that we
1014 # check the free space every time we write some data to the cache. The free
1015 # space is checked against two limits. Once the soft limit is reached we start
1016 # evicting the least useful entries, when we reach the hard limit writing to
1018 - name: browser.cache.disk.free_space_soft_limit
1019 type: RelaxedAtomicUint32
1020 value: 5 * 1024 # 5MB
1023 - name: browser.cache.disk.free_space_hard_limit
1024 type: RelaxedAtomicUint32
1028 # The number of chunks we preload ahead of read. One chunk currently has
1030 - name: browser.cache.disk.preload_chunk_count
1031 type: RelaxedAtomicUint32
1032 value: 4 # 1 MB of read ahead
1035 # Max-size (in KB) for entries in disk cache. Set to -1 for no limit.
1036 # (Note: entries bigger than 1/8 of disk-cache are never cached)
1037 - name: browser.cache.disk.max_entry_size
1038 type: RelaxedAtomicUint32
1039 value: 50 * 1024 # 50 MB
1042 # Max-size (in KB) for entries in memory cache. Set to -1 for no limit.
1043 # (Note: entries bigger than than 90% of the mem-cache are never cached.)
1044 - name: browser.cache.memory.max_entry_size
1045 type: RelaxedAtomicInt32
1049 # Memory limit (in kB) for new cache data not yet written to disk. Writes to
1050 # the cache are buffered and written to disk on background with low priority.
1051 # With a slow persistent storage these buffers may grow when data is coming
1052 # fast from the network. When the amount of unwritten data is exceeded, new
1053 # writes will simply fail. We have two buckets, one for important data
1054 # (priority) like html, css, fonts and js, and one for other data like images,
1056 # Note: 0 means no limit.
1057 - name: browser.cache.disk.max_chunks_memory_usage
1058 type: RelaxedAtomicUint32
1061 - name: browser.cache.disk.max_priority_chunks_memory_usage
1062 type: RelaxedAtomicUint32
1067 # Number of seconds the cache spends writing pending data and closing files
1068 # after shutdown has been signalled. Past that time data is not written and
1069 # files are left open for the OS to clean up.
1070 - name: browser.cache.max_shutdown_io_lag
1071 type: RelaxedAtomicUint32
1075 # After the max_shutdown_io_lag has passed, we will attempt to cancel
1076 # blocking IO (on windows). The CacheIOThread may pick up more blocking
1077 # tasks so we want to cancel those too. The main thread will be woken
1078 # up every shutdown_io_time_between_cancellations_ms to cancel the IO
1079 # on the other thread.
1080 - name: browser.cache.shutdown_io_time_between_cancellations_ms
1081 type: RelaxedAtomicUint32
1085 # A percentage limit for media content type in the disk cache. When some entries
1086 # need to be evicted and media is over the limit, it's evicted first.
1087 - name: browser.cache.disk.content_type_media_limit
1088 type: RelaxedAtomicInt32
1092 # How often to validate document in cache
1093 # 0 = once-per-session,
1096 # 3 = when-appropriate/automatically
1097 - name: browser.cache.check_doc_frequency
1098 type: RelaxedAtomicUint32
1102 # Compression level for cached JavaScript bytecode
1103 # 0 = do not compress,
1104 # 1 = minimal compression,
1105 # 9 = maximal compression
1106 - name: browser.cache.jsbc_compression_level
1107 type: RelaxedAtomicUint32
1111 # Whether tooltips are enabled.
1112 - name: browser.chrome.toolbar_tips
1117 # Whether tooltips are hidden on keydown.
1120 # 2: only on non-modifier keys
1121 - name: browser.chrome.toolbar_tips.hide_on_keydown
1130 # Content analysis by external applications, e.g. data-loss prevention apps
1131 - name: browser.contentanalysis.enabled
1136 # Is the IPC pipe to the DLP tool specific to the user or to the system?
1137 - name: browser.contentanalysis.is_per_user
1142 # Path name of pipe used to connect to a configured DLP agent.
1143 - name: browser.contentanalysis.pipe_path_name
1148 # Should CA ignore the system setting and use silent notifications?
1149 - name: browser.contentanalysis.silent_notifications
1154 # Content blocking for Enhanced Tracking Protection
1155 - name: browser.contentblocking.database.enabled
1160 # How many recent block/unblock actions per origins we remember in the
1161 # Content Blocking log for each top-level window.
1162 - name: browser.contentblocking.originlog.length
1167 # Min font device pixel size at which to turn on high quality.
1168 - name: browser.display.auto_quality_min_font_size
1169 type: RelaxedAtomicUint32
1173 - name: browser.display.background_color
1178 - name: browser.display.background_color.dark
1183 # This preference is a bit confusing because we use the opposite
1184 # string value in the colors dialog to indicate to users how FF HCM
1186 # With resect to document colors, these values mean:
1187 # 0 = "default" = always, except in high contrast mode
1191 # On windows, we set this to 0, which means FF HCM will mirror OS HCM.
1192 # Everywhere else, we set this to 1, disabling FF HCM.
1193 - name: browser.display.document_color_use
1194 type: RelaxedAtomicUint32
1206 - name: browser.display.windows.non_native_menus
1207 type: RelaxedAtomicUint32
1212 # This pref dictates whether or not backplates and background images
1213 # are to be drawn, when in high-contrast mode:
1214 # false: do not draw backplates or render background images
1215 # true: render background images and draw backplates
1216 # This condition is only considered when high-contrast mode is enabled
1217 # in Firefox, ie. when the user has:
1218 # (1) mUseAccessibilityMode set to true (Widows high-contrast mode is on)
1219 # AND browser.display.document_color_use set to 0
1220 # (only with high-contrast themes) OR
1221 # (2) browser.display.document_color_use set to 2 (always)
1222 - name: browser.display.permit_backplate
1223 type: RelaxedAtomicBool
1228 # Whether we should suppress the background-image of the canvas (the root
1229 # frame) if we're in forced colors mode.
1231 # This is important because some sites use background-image with a plain color
1232 # and it causes undesirable results in high-contrast mode.
1234 # See bug 1614921 for example.
1235 - name: browser.display.suppress_canvas_background_image_on_forced_colors
1240 - name: browser.display.foreground_color
1245 - name: browser.display.foreground_color.dark
1250 # Determines the behavior of OS zoom settings.
1252 # 0: doesn't affect rendering at all
1253 # 1: affects full zoom (dpi, effectively).
1254 # 2: affects text zoom.
1256 # Default is (1): Historical behavior on Linux, matches other browsers on
1257 # Windows, and generally creates more consistent rendering.
1258 - name: browser.display.os-zoom-behavior
1259 type: RelaxedAtomicInt32
1264 # Whether focus rings are always shown by default.
1266 # This is the initial value of nsWindowRoot::mShowFocusRings, but it can be
1267 # overridden by system preferences.
1268 - name: browser.display.show_focus_rings
1273 # Enable showing image placeholders while image is loading or when image is broken.
1274 - name: browser.display.show_image_placeholders
1279 # Whether we should always enable focus rings after focus was moved by keyboard.
1281 # This behavior matches both historical and GTK / Windows focus behavior.
1283 # :focus-visible is intended to provide better heuristics than this.
1284 - name: browser.display.always_show_rings_after_key_focus
1289 # In theory: 0 = never, 1 = quick, 2 = always, though we always just use it as
1291 - name: browser.display.use_document_fonts
1292 type: RelaxedAtomicInt32
1297 # font-family names for which we'll override use_document_fonts=0, and always
1298 # use the specified font.
1299 # This is to support ligature-icon fonts, which render literal strings like
1300 # "arrow_drop_down" with an icon, even when use_document_fonts is disabled.
1301 # If an author provides & uses such a font, and we decline to use it, we'll end
1302 # up rendering these literal strings where the author intended an icon, which
1303 # can cause all sorts of overlapping/unreadable content.
1304 - name: browser.display.use_document_fonts.icon_font_allowlist
1308 Material Icons Extended,
1309 Material Icons Outlined,
1310 Material Icons Round,
1311 Material Icons Sharp,
1312 Material Icons Two Tone,
1313 Google Material Icons,
1314 Material Symbols Outlined,
1315 Material Symbols Round,
1316 Material Symbols Rounded,
1317 Material Symbols Sharp
1320 - name: browser.display.use_system_colors
1321 type: RelaxedAtomicBool
1329 - name: browser.dom.window.dump.enabled
1330 type: RelaxedAtomicBool
1331 value: @IS_NOT_MOZILLA_OFFICIAL@
1335 - name: browser.download.start_downloads_in_tmp_dir
1341 - name: browser.download.always_ask_before_handling_new_types
1347 - name: browser.download.enable_spam_prevention
1353 - name: browser.download.open_pdf_attachments_inline
1359 - name: browser.download.force_save_internally_handled_attachments
1364 - name: browser.download.sanitize_non_media_extensions
1369 # Image document's automatic image sizing.
1370 - name: browser.enable_automatic_image_resizing
1375 # Image document's click-to-resize.
1376 - name: browser.enable_click_image_resizing
1378 value: @IS_NOT_ANDROID@
1381 - name: browser.find.ignore_ruby_annotations
1386 #if defined(XP_MACOSX)
1387 # Whether pressing Esc will exit fullscreen.
1388 - name: browser.fullscreen.exit_on_escape
1394 # The max url length we'll store in history.
1396 # The default value is mostly a guess based on various facts:
1398 # * IE didn't support urls longer than 2083 chars
1399 # * Sitemaps protocol used to support a maximum of 2048 chars
1400 # * Various SEO guides suggest to not go over 2000 chars
1401 # * Various apps/services are known to have issues over 2000 chars
1402 # * RFC 2616 - HTTP/1.1 suggests being cautious about depending
1403 # on URI lengths above 255 bytes
1405 - name: browser.history.maxUrlLength
1410 # Max size of push/replaceState data parameter
1411 - name: browser.history.maxStateObjectSize
1416 # True to collect wireframes upon navigations / pushState
1417 - name: browser.history.collectWireframes
1422 # The minimum area for a rect to be included in a wireframe, in CSS pixels.
1424 # The current value of 50 is pretty arbitrary, and will be tuned as we refine
1425 # and test the wireframing capability.
1426 - name: browser.history.wireframeAreaThreshold
1431 #if defined(XP_WIN) || defined(XP_LINUX)
1432 # Notify TabUnloader or send the memory pressure if the memory resource
1433 # notification is signaled AND the available commit space is lower than
1435 - name: browser.low_commit_space_threshold_mb
1436 type: RelaxedAtomicUint32
1442 # On Linux we also check available memory in comparison to total memory,
1443 # and use this percent value (out of 100) to determine if we are in a
1444 # low memory scenario.
1445 - name: browser.low_commit_space_threshold_percent
1446 type: RelaxedAtomicUint32
1451 # Render animations and videos as a solid color
1452 - name: browser.measurement.render_anims_and_video_solid
1453 type: RelaxedAtomicBool
1457 - name: browser.navigation.requireUserInteraction
1462 # Indicates if about:newtab shows content (enabled) or just blank.
1463 - name: browser.newtabpage.enabled
1468 # Open PDFs in Edge with the --app flag if it is the default.
1469 - name: browser.pdf.launchDefaultEdgeAsApp
1474 # Maximium delay between keystrokes that will be considered typing (milliseconds).
1475 - name: browser.places.interactions.typing_timeout_ms
1476 type: RelaxedAtomicUint32
1480 # Maximum delay between scroll input events that will be considered a scrolling interaction (milliseconds).
1481 - name: browser.places.interactions.scrolling_timeout_ms
1482 type: RelaxedAtomicUint32
1486 # Number of seconds till the sponsored session is timeout.
1487 - name: browser.places.sponsoredSession.timeoutSecs
1488 type: RelaxedAtomicUint32
1492 # Whether to start the private browsing mode at application startup
1493 - name: browser.privatebrowsing.autostart
1498 # Force usage of in-memory (rather than file on disk) media cache for video streaming when private browsing
1499 - name: browser.privatebrowsing.forceMediaMemoryCache
1504 # Communicates the toolbar color to platform (for e.g., prefers-color-scheme).
1506 # Returns whether the toolbar is dark (0), light (1), or system (2). The
1507 # theming code overrides it if appropriate.
1508 - name: browser.theme.toolbar-theme
1509 type: RelaxedAtomicUint32
1513 # Communicates the preferred content theme color to platform (for e.g.,
1514 # prefers-color-scheme).
1516 # dark (0), light (1), system (2), or toolbar (3).
1518 # Default to "toolbar", the theming code sets it appropriately.
1519 - name: browser.theme.content-theme
1520 type: RelaxedAtomicUint32
1525 # Whether the firefox titlebar respects the
1526 # -moz-windows-accent-color-in-titlebar setting on the tab strip.
1527 - name: browser.theme.windows.accent-color-in-tabs.enabled
1528 type: RelaxedAtomicBool
1533 # Blocked plugin content
1534 - name: browser.safebrowsing.blockedURIs.enabled
1539 # Malware protection
1540 - name: browser.safebrowsing.malware.enabled
1545 # Phishing protection
1546 - name: browser.safebrowsing.phishing.enabled
1551 # Maximum size for an array to store the safebrowsing prefixset.
1552 - name: browser.safebrowsing.prefixset_max_array_size
1553 type: RelaxedAtomicUint32
1557 # SessionStore prefs
1558 # Maximum number of bytes of DOMSessionStorage data we collect per origin.
1559 - name: browser.sessionstore.dom_storage_limit
1564 # Maximum number of characters of form field data per field we collect.
1565 - name: browser.sessionstore.dom_form_limit
1570 # Maximum number of characters of form data we collect per origin.
1571 - name: browser.sessionstore.dom_form_max_limit
1576 # Minimal interval between two save operations in milliseconds (while the user is active).
1577 - name: browser.sessionstore.interval
1578 type: RelaxedAtomicUint32
1582 # Platform collection of data for session store
1583 - name: browser.sessionstore.platform_collection
1585 #if defined(ANDROID) || defined(MOZ_THUNDERBIRD)
1592 # Platform collection of session storage data for session store
1593 - name: browser.sessionstore.collect_session_storage
1595 value: @IS_NOT_ANDROID@
1598 # Platform collection of zoom data for session store
1599 - name: browser.sessionstore.collect_zoom
1601 value: @IS_NOT_ANDROID@
1604 # Causes SessionStore to ignore non-final update messages from
1605 # browser tabs that were not caused by a flush from the parent.
1606 # This is a testing flag and should not be used by end-users.
1607 - name: browser.sessionstore.debug.no_auto_updates
1608 type: RelaxedAtomicBool
1612 # Whether we should draw the tabs on top of the titlebar.
1614 # no (0), yes (1), or default (2), which is true everywhere except Linux.
1615 - name: browser.tabs.inTitlebar
1620 # If set, use DocumentChannel to directly initiate loads entirely
1621 # from parent-process BrowsingContexts
1622 - name: browser.tabs.documentchannel.parent-controlled
1627 # Testing-only pref which makes data: URIs be loaded in a "web" content process
1628 # instead of within a process based on the URI's loader.
1629 - name: browser.tabs.remote.dataUriInDefaultWebProcess
1634 # Testing-only pref to force system-triggered about:blank loads to not change
1635 # content processes. This is used for performance tests which load an
1636 # about:blank document between navigations for historical reasons to avoid
1637 # unnecessary process switches.
1638 - name: browser.tabs.remote.systemTriggeredAboutBlankAnywhere
1643 # Testing-only pref to cause PBrowser creation for a specific BrowsingContext to
1644 # fail, to test the errored codepath.
1645 - name: browser.tabs.remote.testOnly.failPBrowserCreation.enabled
1650 - name: browser.tabs.remote.force-paint
1655 # When this pref is enabled document loads with a mismatched
1656 # Cross-Origin-Embedder-Policy header will fail to load
1657 - name: browser.tabs.remote.useCrossOriginEmbedderPolicy
1658 type: RelaxedAtomicBool
1662 # This pref makes `credentialless` a valid value for
1663 # Cross-Origin-Embedder-Policy header
1664 - name: browser.tabs.remote.coep.credentialless
1665 type: RelaxedAtomicBool
1666 #if defined(ANDROID)
1667 value: @IS_NIGHTLY_BUILD@
1672 do_not_use_directly: true
1674 # When this pref is enabled top level loads with a mismatched
1675 # Cross-Origin-Opener-Policy header will be loaded in a separate process.
1676 - name: browser.tabs.remote.useCrossOriginOpenerPolicy
1677 type: RelaxedAtomicBool
1681 # When this pref is enabled then we use a separate content process for
1682 # top-level load of file:// URIs
1683 - name: browser.tabs.remote.separateFileUriProcess
1684 type: RelaxedAtomicBool
1685 #if !defined(ANDROID)
1692 # Pref to control whether we use a separate privileged content process
1693 # for certain mozilla webpages (which are listed in the pref
1694 # browser.tabs.remote.separatedMozillaDomains).
1695 - name: browser.tabs.remote.separatePrivilegedMozillaWebContentProcess
1700 # Whether or not process selection for subframes will prefer re-using an
1701 # existing content process over creating a new one. Enabling this pref should
1702 # reduce the number of processes allocated for non-first-party domains if
1703 # dom.ipc.processCount.webIsolated > 1.
1704 - name: browser.tabs.remote.subframesPreferUsed
1709 # When this pref is enabled, opaque response is only allowed to enter the
1710 # content process if it's a response for media (audio, image, video), CSS, or
1712 - name: browser.opaqueResponseBlocking
1713 type: RelaxedAtomicBool
1714 #if defined(ANDROID)
1721 # When this pref is enabled, the JS validator will be enabled for
1723 - name: browser.opaqueResponseBlocking.javascriptValidator
1728 # This pref controls how filtering of opaque responses for calls to `Window.fetch`.
1729 # (and similar) is performed in the parent process. This is intended to make sure
1730 # that data that would be filtered in a content process never actually reaches that
1732 # See https://fetch.spec.whatwg.org/#concept-filtered-response-opaque
1733 # 0) Don't filter in the parent process at all, and let content processes handle
1734 # opaque filtering. Regardless of if ORB is enabled or not. N.B. that if ORB
1735 # is enabled opaque responses will be blocked.
1736 # 1) If ORB is enabled, in the parent process, filter the responses that ORB allows.
1737 # N.B. any responses ORB doesn't allow will not send data to a content process
1738 # since they will return a NetworkError. If the request is allowed by ORB, the
1739 # internal response will be intact and sent to the content process as is.
1740 # 2) If ORB is enabled, in the parent process, filter the responses that ORB blocks,
1741 # when they were issued by `Window.fetch` (and similar).
1742 # 3) Filter all responses in the parent, regardless of if ORB is enabled or not.
1743 # This means that opaque responses coming from `Window.fetch` won't even be
1744 # considered for being blocked by ORB.
1745 - name: browser.opaqueResponseBlocking.filterFetchResponse
1749 do_not_use_directly: true
1751 # This pref controls how exceptions to opaque response blocking for the media MIME types
1752 # `audio/*` and `video/*` are handled. This is because step 8 in the spec that performs
1753 # audio or video type pattern matching cannot handle certain MIME types (yet).
1754 # See https://whatpr.org/fetch/1442.html#orb-algorithm
1756 # 1) Some exceptions, explicitly hard coded in `IsOpaqueSafeListedSpecBreakingMIMEType`
1757 # 2) Allow all MIME types beginning with `audio/*` or `video/*`.
1758 - name: browser.opaqueResponseBlocking.mediaExceptionsStrategy
1762 do_not_use_directly: true
1764 # When this pref is enabled, <object> and <embed> elements will create
1765 # synthetic documents when the resource type they're loading is an image.
1766 - name: browser.opaqueResponseBlocking.syntheticBrowsingContext
1771 # When this pref is enabled, <object> and <embed> elements will filter the
1772 # browsing contexts created for the synthetic browsing contexts for the
1773 # synthetic documents when browser.opaqueResponseBlocking.syntheticBrowsingContext
1774 # is enabled from `Window.frames`, `Window.length` and named targeting.
1775 - name: browser.opaqueResponseBlocking.syntheticBrowsingContext.filter
1779 do_not_use_directly: true
1781 # When true, zooming will be enabled on all sites, even ones that declare
1783 - name: browser.ui.zoom.force-user-scalable
1784 type: RelaxedAtomicBool
1788 - name: browser.viewport.desktopWidth
1789 type: RelaxedAtomicInt32
1793 - name: browser.visited_color
1798 # If you change this, you probably also want to change
1799 # nsXPLookAndFeel::GenericDarkColor for MozNativevisitedhyperlinktext.
1800 - name: browser.visited_color.dark
1805 # When true, soft reloads (including location.reload())
1806 # will only froce validate the top level document, subresources will
1807 # be loaded normally as-if users normally navigated to the page.
1808 - name: browser.soft_reload.only_force_validate_top_level_document
1813 # Whether or not to save and restore zoom levels on a per-site basis.
1814 - name: browser.zoom.siteSpecific
1816 value: @IS_NOT_ANDROID@
1819 #---------------------------------------------------------------------------
1820 # Prefs starting with "channelclassifier."
1821 #---------------------------------------------------------------------------
1823 - name: channelclassifier.allowlist_example
1828 #---------------------------------------------------------------------------
1829 # Prefs starting with "clipboard."
1830 #---------------------------------------------------------------------------
1832 # Clipboard behavior.
1833 - name: clipboard.autocopy
1835 #if !defined(ANDROID) && !defined(XP_MACOSX) && defined(XP_UNIX)
1843 # allow to copy clipboard data to Clipboard History/Cloud
1844 # (used on sensitive data in about:logins and Private Browsing)
1845 - name: clipboard.copyPrivateDataToClipboardCloudOrHistory
1850 # Whether to put a file promise onto the clipboard when copying images on Windows
1851 - name: clipboard.imageAsFile.enabled
1853 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
1857 #---------------------------------------------------------------------------
1858 # Prefs starting with "consoleservice."
1859 #---------------------------------------------------------------------------
1861 #if defined(ANDROID)
1862 # Disable sending console to logcat on release builds.
1863 - name: consoleservice.logcat
1864 type: RelaxedAtomicBool
1865 value: @IS_NOT_RELEASE_OR_BETA@
1869 #---------------------------------------------------------------------------
1870 # Prefs starting with "content."
1871 #---------------------------------------------------------------------------
1873 - name: content.cors.disable
1878 # Back off timer notification after count.
1880 - name: content.notify.backoffcount
1885 # Notification interval in microseconds.
1886 # The notification interval has a dramatic effect on how long it takes to
1887 # initially display content for slow connections. The current value
1888 # provides good incremental display of content without causing an increase
1889 # in page load time. If this value is set below 1/10 of a second it starts
1890 # to impact page load performance.
1891 # See bugzilla bug 72138 for more info.
1892 - name: content.notify.interval
1897 # Do we notify based on time?
1898 - name: content.notify.ontimer
1903 # How many times to deflect in interactive mode.
1904 - name: content.sink.interactive_deflect_count
1909 # How many times to deflect in perf mode.
1910 - name: content.sink.perf_deflect_count
1915 # Parse mode for handling pending events.
1916 # 0 = don't check for pending events
1917 # 1 = don't deflect if there are pending events
1918 # 2 = bail if there are pending events
1919 - name: content.sink.pending_event_mode
1928 # How often to probe for pending events. 1 = every token.
1929 - name: content.sink.event_probe_rate
1934 # How long to stay off the event loop in interactive mode (microseconds).
1935 - name: content.sink.interactive_parse_time
1940 # How long to stay off the event loop in perf mode.
1941 - name: content.sink.perf_parse_time
1946 # How long to be in interactive mode after an event.
1947 - name: content.sink.interactive_time
1952 # How long to stay in perf mode after initial loading.
1953 - name: content.sink.initial_perf_time
1958 # Should we switch between perf-mode and interactive-mode?
1960 # 1 = Interactive mode
1962 - name: content.sink.enable_perf_mode
1967 #---------------------------------------------------------------------------
1968 # Prefs starting with "converter."
1969 #---------------------------------------------------------------------------
1971 # Whether we include ruby annotation in the text despite whether it
1972 # is requested. This was true because we didn't explicitly strip out
1973 # annotations. Set false by default to provide a better behavior, but
1974 # we want to be able to pref-off it if user doesn't like it.
1975 - name: converter.html2txt.always_include_ruby
1980 #---------------------------------------------------------------------------
1981 # Prefs starting with "cookiebanners."
1982 #---------------------------------------------------------------------------
1984 # Controls the cookie banner handling mode in normal browsing.
1985 # 0: Disables all cookie banner handling.
1986 # 1: Reject-all if possible, otherwise do nothing.
1987 # 2: Reject-all if possible, otherwise accept-all.
1988 - name: cookiebanners.service.mode
1993 # When set to true, cookie banners are detected and detection events are
1994 # dispatched, but they will not be handled. Requires the service to be enabled
1995 # for the desired mode via pref cookiebanners.service.mode*
1996 - name: cookiebanners.service.detectOnly
2001 # Controls the cookie banner handling mode in private browsing. Same mode
2002 # options as the normal browsing pref above.
2003 - name: cookiebanners.service.mode.privateBrowsing
2008 # Enables use of global CookieBannerRules, which apply to all sites. This is
2009 # used for click rules that can handle common Consent Management Providers
2011 # Enabling this (when the cookie handling feature is enabled) may negatively
2012 # impact site performance since it requires us to run rule-defined query
2013 # selectors for every page.
2014 - name: cookiebanners.service.enableGlobalRules
2019 # Whether global rules are allowed to run in sub-frames. Running query selectors
2020 # in every sub-frame may negatively impact performance, but is required for some
2022 - name: cookiebanners.service.enableGlobalRules.subFrames
2027 # Enables the cookie banner cookie injector. The cookie banner cookie injector
2028 # depends on the `cookiebanners.service.mode` pref above.
2029 - name: cookiebanners.cookieInjector.enabled
2034 # By default, how many seconds in the future cookies should expire after they
2035 # have been injected. Defaults to 12 months. Individual cookie rules may
2037 - name: cookiebanners.cookieInjector.defaultExpiryRelative
2042 # How many times per site and site load to check for cookie banners after which
2043 # the mechanism is considered on cooldown for the site in the current browsing
2044 # session. If the threshold is set to zero, banner clicking won't be considered
2045 # as being on cooldown regardless of how many times the site is loaded. The
2046 # maximum value for the retry is 255, any value over than that will be capped.
2047 - name: cookiebanners.bannerClicking.maxTriesPerSiteAndSession
2052 #---------------------------------------------------------------------------
2053 # Prefs starting with "datareporting."
2054 #---------------------------------------------------------------------------
2056 - name: datareporting.healthreport.uploadEnabled
2057 type: RelaxedAtomicBool
2062 #---------------------------------------------------------------------------
2063 # Prefs starting with "device."
2064 #---------------------------------------------------------------------------
2066 # Is support for the device sensors API enabled?
2067 - name: device.sensors.enabled
2072 # KaiOS-only, see https://bugzilla.mozilla.org/show_bug.cgi?id=1699707#c10
2073 - name: device.sensors.ambientLight.enabled
2078 - name: device.sensors.motion.enabled
2083 - name: device.sensors.orientation.enabled
2088 # KaiOS-only, see https://bugzilla.mozilla.org/show_bug.cgi?id=1699707#c10
2089 - name: device.sensors.proximity.enabled
2094 - name: device.sensors.test.events
2099 #---------------------------------------------------------------------------
2100 # Prefs starting with "devtools."
2101 #---------------------------------------------------------------------------
2103 - name: devtools.console.stdout.chrome
2104 type: RelaxedAtomicBool
2105 value: @IS_NOT_MOZILLA_OFFICIAL@
2108 - name: devtools.console.stdout.content
2109 type: RelaxedAtomicBool
2113 #---------------------------------------------------------------------------
2114 # Prefs starting with "docshell."
2115 #---------------------------------------------------------------------------
2117 # Used to indicate whether session history listeners should be notified
2118 # about content viewer eviction. Used only for testing.
2119 - name: docshell.shistory.testing.bfevict
2124 # If true, pages with an opener won't be bfcached.
2125 - name: docshell.shistory.bfcache.require_no_opener
2130 # If true, page with beforeunload or unload event listeners can be bfcached.
2131 - name: docshell.shistory.bfcache.allow_unload_listeners
2136 # If true, page with beforeunload event listeners can be bfcached.
2137 # This only works when sessionHistoryInParent is enabled.
2138 - name: docshell.shistory.bfcache.ship_allow_beforeunload_listeners
2143 #---------------------------------------------------------------------------
2144 # Prefs starting with "dom."
2145 #---------------------------------------------------------------------------
2148 - name: dom.allow_cut_copy
2153 # Checks if offscreen animation throttling is enabled.
2154 - name: dom.animations.offscreen-throttling
2159 # Is support for composite operations from the Web Animations API enabled?
2160 - name: dom.animations-api.compositing.enabled
2165 # Is support for Document.getAnimations() and Element.getAnimations()
2167 - name: dom.animations-api.getAnimations.enabled
2172 # Is support for timelines from the Web Animations API enabled?
2173 - name: dom.animations-api.timelines.enabled
2178 # Synchronize transform animations with geometric animations on the
2180 - name: dom.animations.mainthread-synchronization-with-geometric-animations
2185 # Is support for Navigator.getBattery enabled?
2186 - name: dom.battery.enabled
2191 # Block multiple external protocol URLs in iframes per single event.
2192 - name: dom.block_external_protocol_in_iframes
2197 # Block sandboxed BrowsingContexts from navigating to external protocols.
2198 - name: dom.block_external_protocol_navigation_from_sandbox
2203 # Block Insecure downloads from Secure Origins
2204 - name: dom.block_download_insecure
2209 # Block multiple window.open() per single event.
2210 - name: dom.block_multiple_popups
2215 # The maximum number of popup that is allowed to be opened. Set to -1 for no
2217 - name: dom.popup_maximum
2222 # Whether window.location.reload() and window.history.go(0) should be blocked
2223 # when called directly from a window resize event handler.
2225 # This used to be necessary long ago to prevent terrible UX when using stuff
2226 # like TypeAheadFind (bug 258917), but it also causes compat issues on mobile
2228 - name: dom.block_reload_from_resize_event_handler
2233 # Enable CacheAPI in private browsing mode with encryption
2234 - name: dom.cache.privateBrowsing.enabled
2235 type: RelaxedAtomicBool
2239 # Exposes window.caches and skips SecureContext check.
2240 # dom.serviceWorkers.testing.enabled also includes the same effect.
2241 - name: dom.caches.testing.enabled
2242 type: RelaxedAtomicBool
2246 # Disable capture attribute for input elements; only supported on GeckoView.
2247 - name: dom.capture.enabled
2252 # HTML specification says the level should be 5
2253 # https://html.spec.whatwg.org/#timer-initialisation-steps
2254 - name: dom.clamp.timeout.nesting.level
2259 # Disable custom highlight API; implementation pending.
2260 - name: dom.customHighlightAPI.enabled
2261 type: RelaxedAtomicBool
2262 value: @IS_NIGHTLY_BUILD@
2266 # Allow control characters appear in composition string.
2267 # When this is false, control characters except
2268 # CHARACTER TABULATION (horizontal tab) are removed from
2269 # both composition string and data attribute of compositionupdate
2270 # and compositionend events.
2271 - name: dom.compositionevent.allow_control_characters
2276 # Compression Streams (CompressionStream/DecompressionStream)
2277 - name: dom.compression_streams.enabled
2278 type: RelaxedAtomicBool
2282 # Is support for CSSPseudoElement enabled?
2283 - name: dom.css_pseudo_element.enabled
2288 # After how many seconds we allow external protocol URLs in iframe when not in
2290 - name: dom.delay.block_external_protocol_in_iframes
2292 value: 10 # in seconds
2295 # Whether the above pref has any effect at all.
2296 # Make sure cases like bug 1795380 work before trying to turn this off. See
2297 # bug 1680721 for some other context that might be relevant.
2298 - name: dom.delay.block_external_protocol_in_iframes.enabled
2303 # Only propagate the open window click permission if the setTimeout() is equal
2304 # to or less than this value.
2305 - name: dom.disable_open_click_delay
2310 - name: dom.disable_open_during_load
2315 - name: dom.disable_beforeunload
2320 - name: dom.require_user_interaction_for_beforeunload
2325 # Enable/disable Gecko specific edit commands
2326 - name: dom.document.edit_command.contentReadOnly.enabled
2328 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
2331 - name: dom.document.edit_command.insertBrOnReturn.enabled
2333 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
2336 # If set this to true, `Document.execCommand` may be performed nestedly.
2337 # Otherwise, nested calls just return false.
2338 - name: dom.document.exec_command.nested_calls_allowed
2343 # Only intended for fuzzing purposes, this will break mozPrintCallback, etc.
2344 - name: dom.window_print.fuzzing.block_while_printing
2349 - name: dom.element.transform-getters.enabled
2354 # Whether the popover attribute implementation is enabled,
2355 # see https://html.spec.whatwg.org/#the-popover-attribute
2356 - name: dom.element.popover.enabled
2357 type: RelaxedAtomicBool
2358 value: @IS_NIGHTLY_BUILD@
2362 # Whether CustomStateSet is enabled
2363 - name: dom.element.customstateset.enabled
2364 type: RelaxedAtomicBool
2369 # Whether the invoketarget attribute implementation is enabled
2370 - name: dom.element.invokers.enabled
2375 - name: dom.mouse_capture.enabled
2380 # Is support for Performance.mozMemory enabled?
2381 - name: dom.enable_memory_stats
2386 # Enable Performance API
2387 # Whether nonzero values can be returned from performance.timing.*
2388 - name: dom.enable_performance
2389 type: RelaxedAtomicBool
2393 # Enable Performance Observer API
2394 - name: dom.enable_performance_observer
2395 type: RelaxedAtomicBool
2399 # Whether resource timing will be gathered and returned by performance.GetEntries*
2400 - name: dom.enable_resource_timing
2405 # Whether event timing will be gathered and returned by performance observer*
2406 - name: dom.enable_event_timing
2407 type: RelaxedAtomicBool
2411 # Whether the LargestContentfulPaint API will be gathered and returned by performance observer*
2412 - name: dom.enable_largest_contentful_paint
2413 type: RelaxedAtomicBool
2417 # Whether performance.GetEntries* will contain an entry for the active document
2418 - name: dom.enable_performance_navigation_timing
2423 # Whether the scheduler interface will be exposed
2424 - name: dom.enable_web_task_scheduling
2425 type: RelaxedAtomicBool
2426 value: @IS_NIGHTLY_BUILD@
2429 # If this is true, it's allowed to fire "cut", "copy" and "paste" events.
2430 # Additionally, "input" events may expose clipboard content when inputType
2431 # is "insertFromPaste" or something.
2432 - name: dom.event.clipboardevents.enabled
2437 # Whether Shift+Right click force-opens the context menu
2438 - name: dom.event.contextmenu.shift_suppresses_event
2443 # Whether wheel listeners are passive by default.
2444 - name: dom.event.default_to_passive_wheel_listeners
2449 - name: dom.event.dragexit.enabled
2451 value: @IS_NOT_NIGHTLY_BUILD@
2454 # If this pref is set to true, typing a surrogate pair causes one `keypress`
2455 # event whose `charCode` stores the unicode code point over 0xFFFF. This is
2456 # compatible with Safari and Chrome in non-Windows platforms.
2457 # Otherwise, typing a surrogate pair causes two `keypress` events. This is
2458 # compatible with legacy web apps which does
2459 # `String.fromCharCode(event.charCode)`.
2460 - name: dom.event.keypress.dispatch_once_per_surrogate_pair
2465 # This is meaningful only when `dispatch_once_per_surrogate_pair` is false.
2466 # If this pref is set to true, `.key` of the first `keypress` is set to the
2467 # high-surrogate and `.key` of the other is set to the low-surrogate.
2468 # Therefore, setting this exposing ill-formed UTF-16 string with `.key`.
2469 # (And also `InputEvent.data` if pressed in an editable element.)
2470 # Otherwise, `.key` of the first `keypress` is set to the surrogate pair, and
2471 # `.key` of the second `keypress` is set to the empty string.
2472 - name: dom.event.keypress.key.allow_lone_surrogate
2474 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
2477 # Whether wheel event target's should be grouped. When enabled, all wheel
2478 # events that occur in a given wheel transaction have the same event target.
2479 - name: dom.event.wheel-event-groups.enabled
2484 # Whether WheelEvent should return pixels instead of lines for
2485 # WheelEvent.deltaX/Y/Z, when deltaMode hasn't been checked.
2487 # Other browsers don't use line deltas and websites forget to check for it, see
2489 - name: dom.event.wheel-deltaMode-lines.disabled
2494 # Mostly for debugging. Whether we should do the same as
2495 # dom.event.wheel-deltaMode-lines.disabled, but unconditionally rather than
2496 # only when deltaMode hasn't been checked.
2497 - name: dom.event.wheel-deltaMode-lines.always-disabled
2502 # A blocklist (list of domains) for the
2503 # dom.event.wheel-deltaMode-lines.disabled behavior, in case potential
2504 # unforeseen problems with it arrive.
2505 - name: dom.event.wheel-deltaMode-lines.always-enabled
2510 #if defined(XP_MACOSX)
2511 # Whether to disable treating ctrl click as right click
2512 - name: dom.event.treat_ctrl_click_as_right_click.disabled
2514 value: @IS_NIGHTLY_BUILD@
2518 # Whether .offset{X,Y} for events targeted at SVG nodes returns bounds relative
2520 - name: dom.events.offset-in-svg-relative-to-svg-root
2525 # Control whether clipboard.read(), clipboard.write() and ClipboardItem are exposed
2527 - name: dom.events.asyncClipboard.clipboardItem
2529 value: @IS_EARLY_BETA_OR_EARLIER@
2532 # Skips checking permission and user activation when accessing the clipboard.
2533 # Should only be enabled in tests.
2534 # Access with Clipboard::IsTestingPrefEnabled().
2535 - name: dom.events.testing.asyncClipboard
2539 do_not_use_directly: true
2541 # Control whether `navigator.clipboard.readText()` is exposed to content.
2542 - name: dom.events.asyncClipboard.readText
2544 value: @IS_EARLY_BETA_OR_EARLIER@
2546 do_not_use_directly: true
2548 # Guard for bug 1731504, in case fix breaks more websites
2549 # If true, event is first captured then bubbled on target element
2550 - name: dom.events.phases.correctOrderOnTarget
2551 type: RelaxedAtomicBool
2555 # This pref controls whether or not the `protected` dataTransfer state is
2556 # enabled. If the `protected` dataTransfer stae is disabled, then the
2557 # DataTransfer will be read-only whenever it should be protected, and will not
2558 # be disconnected after a drag event is completed.
2559 - name: dom.events.dataTransfer.protected.enabled
2564 # Whether to hide normal files (i.e. non-images) in dataTransfer inside
2565 # the content process.
2566 - name: dom.events.dataTransfer.mozFile.enabled
2571 - name: dom.events.dataTransfer.imageAsFile.enabled
2576 # User interaction timer interval, in ms
2577 - name: dom.events.user_interaction_interval
2582 # Whether to try to compress touchmove events on IPC layer.
2583 - name: dom.events.compress.touchmove
2588 # In addition to the above IPC layer compresison, allow touchmove
2589 # events to be further coalesced in the child side after they
2591 - name: dom.events.coalesce.touchmove
2596 # Allow mousemove events to be coalesced in the child side after they are sent.
2597 - name: dom.events.coalesce.mousemove
2602 # Whether to expose test interfaces of various sorts
2603 - name: dom.expose_test_interfaces
2608 - name: dom.fetchObserver.enabled
2609 type: RelaxedAtomicBool
2613 # Allow the content process to create a File from a path. This is allowed just
2614 # on parent process, on 'file' Content process, or for testing.
2615 - name: dom.file.createInChild
2616 type: RelaxedAtomicBool
2620 # Support @autocomplete values for form autofill feature.
2621 - name: dom.forms.autocomplete.formautofill
2626 # Only trusted submit event could trigger form submission.
2627 - name: dom.forms.submit.trusted_event_only
2632 # This pref just controls whether we format the number with grouping separator
2633 # characters when the internal value is set or updated. It does not stop the
2634 # user from typing in a number and using grouping separators.
2635 - name: dom.forms.number.grouping
2640 # Whether the Gamepad API is enabled
2641 - name: dom.gamepad.enabled
2646 # Is Gamepad Extension API enabled?
2647 - name: dom.gamepad.extensions.enabled
2652 # Is LightIndicator API enabled in Gamepad Extension API?
2653 - name: dom.gamepad.extensions.lightindicator
2658 # Is MultiTouch API enabled in Gamepad Extension API?
2659 - name: dom.gamepad.extensions.multitouch
2664 # Is Gamepad vibrate haptic feedback function enabled?
2665 - name: dom.gamepad.haptic_feedback.enabled
2670 - name: dom.gamepad.non_standard_events.enabled
2672 value: @IS_NOT_RELEASE_OR_BETA@
2675 - name: dom.gamepad.test.enabled
2676 type: RelaxedAtomicBool
2680 # W3C draft ImageCapture API
2681 - name: dom.imagecapture.enabled
2686 # The root margin for image lazy loading, defined as four (value, percentage)
2688 - name: dom.image-lazy-loading.root-margin.top
2693 - name: dom.image-lazy-loading.root-margin.top.percentage
2698 - name: dom.image-lazy-loading.root-margin.bottom
2703 - name: dom.image-lazy-loading.root-margin.bottom.percentage
2708 - name: dom.image-lazy-loading.root-margin.left
2713 - name: dom.image-lazy-loading.root-margin.left.percentage
2718 - name: dom.image-lazy-loading.root-margin.right
2723 - name: dom.image-lazy-loading.root-margin.right.percentage
2728 # Enable indexedDB in private browsing mode with encryption
2729 - name: dom.indexedDB.privateBrowsing.enabled
2730 type: RelaxedAtomicBool
2734 # Whether or not indexedDB test mode is enabled.
2735 - name: dom.indexedDB.testing
2736 type: RelaxedAtomicBool
2740 # Whether or not indexedDB experimental features are enabled.
2741 - name: dom.indexedDB.experimental
2742 type: RelaxedAtomicBool
2746 # Whether or not indexedDB preprocessing is enabled.
2747 - name: dom.indexedDB.preprocessing
2748 type: RelaxedAtomicBool
2752 # Whether innerWidth / innerHeight return rounded or fractional sizes.
2754 # NOTE(emilio): Fractional sizes are not web-compatible, see the regressions
2755 # from bug 1676843, but we want to expose the fractional sizes (probably in
2756 # another API) one way or another, see [1], so we're keeping the code for the
2759 # [1]: https://github.com/w3c/csswg-drafts/issues/5260
2760 - name: dom.innerSize.rounded
2765 # Whether we conform to Input Events Level 1 or Input Events Level 2.
2766 # true: conforming to Level 1
2767 # false: conforming to Level 2
2768 - name: dom.input_events.conform_to_level_1
2773 # Whether we allow BrowsingContextGroup to suspend input events
2774 - name: dom.input_events.canSuspendInBCG.enabled
2779 # The minimum number of ticks after page navigation
2780 # that need to occur before user input events are allowed to be handled.
2781 - name: dom.input_events.security.minNumTicks
2786 # The minimum elapsed time (in milliseconds) after page navigation
2787 # for user input events are allowed to be handled.
2788 - name: dom.input_events.security.minTimeElapsedInMS
2793 # By default user input handling delay is disabled (mostly) for testing ,
2794 # this is used for forcefully enable it for certain tests.
2795 - name: dom.input_events.security.isUserInputHandlingDelayTest
2800 # The maximum time (milliseconds) we reserve for handling input events in each
2802 - name: dom.input_event_queue.duration.max
2807 # Enable not moving the cursor to end when a text input or textarea has .value
2808 # set to the value it already has. By default, enabled.
2809 - name: dom.input.skip_cursor_move_for_same_value_set
2814 # How often to check for CPOW timeouts (ms). CPOWs are only timed
2815 # out by the hang monitor.
2816 - name: dom.ipc.cpow.timeout
2821 #ifdef MOZ_ENABLE_FORKSERVER
2822 - name: dom.ipc.forkserver.enable
2828 #ifdef MOZ_WIDGET_GTK
2830 # Avoid the use of GTK in content processes if possible, by running
2831 # them in headless mode, to conserve resources (e.g., connections to
2832 # the X server). See the usage in `ContentParent.cpp` for the full
2833 # definition of "if possible".
2835 # This does not affect sandbox policies; content processes may still
2836 # dynamically connect to the display server for, e.g., WebGL.
2837 - name: dom.ipc.avoid-gtk
2843 # Whether or not to collect a paired minidump when force-killing a
2845 - name: dom.ipc.tabs.createKillHardCrashReports
2847 value: @IS_NOT_RELEASE_OR_BETA@
2850 # Enable e10s hang monitoring (slow script checking and plugin hang detection).
2851 - name: dom.ipc.processHangMonitor
2856 # Whether we report such process hangs
2857 - name: dom.ipc.reportProcessHangs
2858 type: RelaxedAtomicBool
2859 # Don't report hangs in DEBUG builds. They're too slow and often a
2860 # debugger is attached.
2868 # Process launch delay (in milliseconds).
2869 - name: dom.ipc.processPrelaunch.delayMs
2871 # This number is fairly arbitrary ... the intention is to put off
2872 # launching another app process until the last one has finished
2873 # loading its content, to reduce CPU/memory/IO contention.
2877 - name: dom.ipc.processPrelaunch.startupDelayMs
2879 # delay starting content processes for a short time after browser start
2880 # to provide time for the UI to come up
2884 # Process preallocation cache
2885 # Only used in fission; in e10s we use 1 always
2886 - name: dom.ipc.processPrelaunch.fission.number
2891 # Limit preallocated processes below this memory size (in MB)
2892 - name: dom.ipc.processPrelaunch.lowmem_mb
2897 - name: dom.ipc.processPriorityManager.enabled
2902 - name: dom.ipc.processPriorityManager.testMode
2907 - name: dom.ipc.processPriorityManager.backgroundPerceivableGracePeriodMS
2909 #if defined(MOZ_WIDGET_ANDROID) && defined(NIGHTLY_BUILD)
2916 - name: dom.ipc.processPriorityManager.backgroundGracePeriodMS
2918 #if defined(MOZ_WIDGET_ANDROID) && defined(NIGHTLY_BUILD)
2926 - name: dom.ipc.processPriorityManager.backgroundUsesEcoQoS
2932 # Support for input type=month, type=week. By default, disabled.
2933 - name: dom.forms.datetime.others
2938 - name: dom.forms.always_allow_pointer_events.enabled
2940 value: @IS_EARLY_BETA_OR_EARLIER@
2943 # Is support for key events and focus events on disabled elements enabled?
2944 - name: dom.forms.always_allow_key_and_focus_events.enabled
2946 value: @IS_NIGHTLY_BUILD@
2949 # Whether to disable only the descendants or the parent fieldset element too
2950 # Note that this still allows it to be selected by `:disable`.
2951 - name: dom.forms.fieldset_disable_only_descendants.enabled
2953 value: @IS_EARLY_BETA_OR_EARLIER@
2956 # Whether to allow or disallow web apps to cancel `beforeinput` events caused
2957 # by MozEditableElement#setUserInput() which is used by autocomplete, autofill
2958 # and password manager.
2959 - name: dom.input_event.allow_to_cancel_set_user_input
2964 # How long a content process can take before closing its IPC channel
2965 # after shutdown is initiated. If the process exceeds the timeout,
2966 # we fear the worst and kill it.
2967 - name: dom.ipc.tabs.shutdownTimeoutSecs
2968 type: RelaxedAtomicUint32
2969 #if !defined(DEBUG) && !defined(MOZ_ASAN) && !defined(MOZ_VALGRIND) && !defined(MOZ_TSAN)
2976 # Whether a native event loop should be used in the content process.
2977 - name: dom.ipc.useNativeEventProcessing.content
2978 type: RelaxedAtomicBool
2979 #if defined(XP_WIN) || defined(XP_MACOSX)
2986 # If this is true, TextEventDispatcher dispatches keydown and keyup events
2987 # even during composition (keypress events are never fired during composition
2988 # even if this is true).
2989 - name: dom.keyboardevent.dispatch_during_composition
2994 # Enable/disable KeyboardEvent.initKeyEvent function
2995 - name: dom.keyboardevent.init_key_event.enabled
3000 # Enable/disable KeyboardEvent.initKeyEvent function in addons even if it's
3002 - name: dom.keyboardevent.init_key_event.enabled_in_addons
3004 value: @IS_NOT_NIGHTLY_BUILD@
3007 # If this is true, keypress events for non-printable keys are dispatched only
3008 # for event listeners of the system event group in web content.
3009 - name: dom.keyboardevent.keypress.dispatch_non_printable_keys_only_system_group_in_content
3014 # If this is true, "keypress" event's keyCode value and charCode value always
3015 # become same if the event is not created/initialized by JS.
3016 - name: dom.keyboardevent.keypress.set_keycode_and_charcode_to_same_value
3021 # Whether "W3C Web Manifest" processing is enabled
3022 - name: dom.manifest.enabled
3027 # Enable mapped array buffer by default.
3028 - name: dom.mapped_arraybuffer.enabled
3033 # Autoplay Policy Detection https://w3c.github.io/autoplay/
3034 - name: dom.media.autoplay-policy-detection.enabled
3035 type: RelaxedAtomicBool
3040 - name: dom.media.webcodecs.enabled
3041 type: RelaxedAtomicBool
3042 value: @IS_NIGHTLY_BUILD@
3045 - name: dom.media.webcodecs.force-osx-h264-enabled
3046 type: RelaxedAtomicBool
3050 # Number of seconds of very quiet or silent audio before considering the audio
3052 - name: dom.media.silence_duration_for_audibility
3057 # Inform mozjemalloc that the foreground content processes can keep more dirty
3059 - name: dom.memory.foreground_content_processes_have_larger_page_cache
3064 # Enable meta-viewport support in remote APZ-enabled frames.
3065 - name: dom.meta-viewport.enabled
3066 type: RelaxedAtomicBool
3070 # Timeout clamp in ms for timeouts we clamp.
3071 - name: dom.min_timeout_value
3072 type: RelaxedAtomicInt32
3076 # Timeout clamp in ms for background windows.
3077 - name: dom.min_background_timeout_value
3082 # Timeout clamp in ms for background windows when throttling isn't enabled.
3083 - name: dom.min_background_timeout_value_without_budget_throttling
3088 # Are missing-property use counters for certain DOM attributes enabled?
3089 - name: dom.missing_prop_counters.enabled
3094 # Is support for import maps (<script type="importmap">) enabled for content?
3095 - name: dom.importMaps.enabled
3100 # Whether we disable triggering mutation events for changes to style
3101 # attribute via CSSOM.
3102 # NOTE: This preference is used in unit tests. If it is removed or its default
3103 # value changes, please update test_sharedMap_static_prefs.js accordingly.
3104 - name: dom.mutation-events.cssom.disabled
3109 # Limit of location change caused by content scripts in a time span per
3110 # BrowsingContext. This includes calls to History and Location APIs.
3111 - name: dom.navigation.locationChangeRateLimit.count
3116 # Time span in seconds for location change rate limit.
3117 - name: dom.navigation.locationChangeRateLimit.timespan
3122 # Network Information API
3123 # This feature is not available on Firefox desktop. It exposes too much
3124 # user information. Let's be consistent and disable it on Android.
3125 # But let's keep it around in case it becomes necessary for webcompat
3127 # https://bugzilla.mozilla.org/show_bug.cgi?id=1637922
3128 - name: dom.netinfo.enabled
3129 type: RelaxedAtomicBool
3133 # Whether we should open noopener links in a new process.
3134 - name: dom.noopener.newprocess.enabled
3139 # Whether we shouldn't show an error page for unknown protocols (and should
3140 # show a console warning instead).
3141 - name: dom.no_unknown_protocol_error.enabled
3146 # Whether origin trials are enabled.
3147 - name: dom.origin-trials.enabled
3152 # Whether we use the test key to verify tokens.
3153 - name: dom.origin-trials.test-key.enabled
3158 # Origin trial state for "TestTrial".
3159 # 0: normal, 1: always-enabled, 2: always-disabled
3160 - name: dom.origin-trials.test-trial.state
3161 type: RelaxedAtomicInt32
3165 # Origin trial state for COEP: Credentialless.
3166 # 0: normal, 1: always-enabled, 2: always-disabled
3167 - name: dom.origin-trials.coep-credentialless.state
3168 type: RelaxedAtomicInt32
3172 # Is support for Window.paintWorklet enabled?
3173 - name: dom.paintWorklet.enabled
3178 # Enable/disable the PaymentRequest API
3179 - name: dom.payments.request.enabled
3184 # Whether a user gesture is required to call PaymentRequest.prototype.show().
3185 - name: dom.payments.request.user_interaction_required
3190 # Time in milliseconds for PaymentResponse to wait for
3191 # the Web page to call complete().
3192 - name: dom.payments.response.timeout
3197 # Enable printing performance marks/measures to log
3198 - name: dom.performance.enable_user_timing_logging
3199 type: RelaxedAtomicBool
3203 # Enable notification of performance timing
3204 - name: dom.performance.enable_notify_performance_timing
3209 # Is support for PerformanceTiming.timeToContentfulPaint enabled?
3210 - name: dom.performance.time_to_contentful_paint.enabled
3215 # Is support for PerformanceTiming.timeToDOMContentFlushed enabled?
3216 - name: dom.performance.time_to_dom_content_flushed.enabled
3221 # Is support for PerformanceTiming.timeToFirstInteractive enabled?
3222 - name: dom.performance.time_to_first_interactive.enabled
3227 # Is support for PerformanceTiming.timeToNonBlankPaint enabled?
3228 - name: dom.performance.time_to_non_blank_paint.enabled
3233 # Is support for Permissions.revoke enabled?
3234 - name: dom.permissions.revoke.enable
3239 # Is support for Element.requestPointerLock enabled?
3240 # This is added for accessibility purpose. When user has no way to exit
3241 # pointer lock (e.g. no keyboard available), they can use this pref to
3242 # disable the Pointer Lock API altogether.
3243 - name: dom.pointer-lock.enabled
3248 # re-SAB: Whether to allow postMessage of a SharedArrayBuffer if various
3249 # preconditions related to COOP and COEP are met
3250 - name: dom.postMessage.sharedArrayBuffer.withCOOP_COEP
3255 # Overridden in all.js on RELEASE_OR_BETA in order to add the locked attribute.
3256 - name: dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled
3257 type: RelaxedAtomicBool
3261 # This currently only affects XHTML. For XUL the cache is always allowed.
3262 - name: dom.prototype_document_cache.enabled
3268 - name: dom.push.enabled
3269 type: RelaxedAtomicBool
3273 # This enables the SVGPathSeg APIs
3274 - name: dom.svg.pathSeg.enabled
3279 # Preference that is primarily used for testing of problematic file paths.
3280 # It can also be used for switching between different storage directories, but
3281 # such feature is not officially supported.
3282 - name: dom.quotaManager.storageName
3287 # An upper limit for the "age" of an origin. Any origin which is older than the
3288 # threshold is considered as unaccessed. That doesn't necessarily mean that
3289 # such origins will be immediatelly archived. They will be archived only when
3290 # dom.quotaManager.checkQuotaInfoLoadTime is true and loading of quota info
3291 # takes a long time (dom.quotaManager.longQuotaInfoLoadTimeThresholdMs is used
3292 # to decide what is a long quota info load time).
3293 - name: dom.quotaManager.unaccessedForLongTimeThresholdSec
3294 type: RelaxedAtomicUint32
3295 value: 33696000 # 13 months
3298 # Should we try to load origin information from the cache?
3299 # See bug 1563023 for more details.
3300 - name: dom.quotaManager.loadQuotaFromCache
3301 type: RelaxedAtomicBool
3305 # Should we check build ID as part of the cache validation?
3306 # When enabled, the cache is invalidated on any upgrade (or downgrade),
3307 # ensuring that changes in how quota usage is calculated can't cause
3308 # inconsistencies at the cost of a slower initialization. Currently, this
3309 # should only be set to false in tests using a packaged profile that inherently
3310 # includes a build id different from the building running the tests. In the
3311 # future this may be set to false if we are confident that we have sufficiently
3312 # thorough schema versioning.
3313 - name: dom.quotaManager.caching.checkBuildId
3314 type: RelaxedAtomicBool
3318 # Should we check quota info load time and eventually archive some unaccessed
3319 # origins if loading of quota info takes a long time ?
3320 - name: dom.quotaManager.checkQuotaInfoLoadTime
3321 type: RelaxedAtomicBool
3325 # An upper limit for quota info load time, anything which takes longer than the
3326 # threshold is considered as long quota info load time.
3327 - name: dom.quotaManager.longQuotaInfoLoadTimeThresholdMs
3328 type: RelaxedAtomicUint32
3329 value: 21000 # 21 seconds
3332 # Preference that users can set to override temporary storage smart limit
3334 - name: dom.quotaManager.temporaryStorage.fixedLimit
3335 type: RelaxedAtomicInt32
3339 # A pref that is used to enable testing features.
3340 - name: dom.quotaManager.testing
3341 type: SequentiallyConsistentAtomicBool
3346 # Preference that is used to set nsILocalFileWin::useDOSDevicePathSyntax
3347 # attribute for all local file instances created by QuotaManager and its
3348 # clients. The value of this preference is cached so changing the preference
3349 # during runtime has no effect.
3350 # See bug 1626846 for setting this to false by default.
3351 - name: dom.quotaManager.useDOSDevicePathSyntax
3352 type: RelaxedAtomicBool
3355 do_not_use_directly: true
3357 # Preference that is used to enable the hack for overrriding xFullPathname in
3359 - name: dom.quotaManager.overrideXFullPathname
3360 type: RelaxedAtomicBool
3363 #elif defined(XP_UNIX)
3364 # Preference that is used to enable the overriding of Unix xFullPathname
3365 # implementation in QuotaVFS.
3366 - name: dom.quotaManager.overrideXFullPathnameUnix
3367 type: RelaxedAtomicBool
3372 # How many times we should retry directory removal or renaming if access was
3374 - name: dom.quotaManager.directoryRemovalOrRenaming.maxRetries
3375 type: RelaxedAtomicUint32
3383 # How long we should wait between retries (in milliseconds)?
3384 - name: dom.quotaManager.directoryRemovalOrRenaming.delayMs
3385 type: RelaxedAtomicUint32
3389 #ifdef MOZ_BACKGROUNDTASKS
3390 # Use a Background Task to delete files at shutdown.
3391 - name: dom.quotaManager.backgroundTask.enabled
3394 # Needs to figure out how to prevent bug 1827486.
3402 # Use to control to dump CheckedUnsafePtr creation stack and assignment stacks.
3403 - name: dom.checkedUnsafePtr.dumpStacks.enabled
3404 type: RelaxedAtomicBool
3408 # Determines within what distance of a tick mark, in pixels, dragging an input
3409 # range range will snap the range's value to that tick mark. By default, this is
3410 # half the default width of the range thumb.
3411 - name: dom.range_element.magnet_effect_threshold
3417 - name: dom.reporting.enabled
3418 type: RelaxedAtomicBool
3422 - name: dom.reporting.testing.enabled
3423 type: RelaxedAtomicBool
3427 - name: dom.reporting.featurePolicy.enabled
3428 type: RelaxedAtomicBool
3432 - name: dom.reporting.crash.enabled
3433 type: RelaxedAtomicBool
3437 - name: dom.reporting.header.enabled
3438 type: RelaxedAtomicBool
3442 # In seconds. The timeout to remove not-active report-to endpoints.
3443 - name: dom.reporting.cleanup.timeout
3448 # Any X seconds the reports are dispatched to endpoints.
3449 - name: dom.reporting.delivering.timeout
3454 # How many times the delivering of a report should be tried.
3455 - name: dom.reporting.delivering.maxFailures
3460 # How many reports should be stored in the report queue before being delivered.
3461 - name: dom.reporting.delivering.maxReports
3466 # Enable Screen Orientation lock
3467 - name: dom.screenorientation.allow-lock
3469 value: @IS_NIGHTLY_BUILD@
3472 # Enable Screen Wake Lock API
3473 - name: dom.screenwakelock.enabled
3475 value: @IS_NIGHTLY_BUILD@
3478 # Prevent errors when using set_permission from permissions.sys.mjs
3479 - name: dom.screenwakelock.testing
3484 # Whether to enable the JavaScript start-up cache. This causes one of the first
3485 # execution to record the bytecode of the JavaScript function used, and save it
3486 # in the existing cache entry. On the following loads of the same script, the
3487 # bytecode would be loaded from the cache instead of being generated once more.
3488 - name: dom.script_loader.bytecode_cache.enabled
3493 # Ignore the heuristics of the bytecode cache, and always record on the first
3494 # visit. (used for testing purposes).
3496 # Choose one strategy to use to decide when the bytecode should be encoded and
3497 # saved. The following strategies are available right now:
3498 # * -2 : (reader mode) The bytecode cache would be read, but it would never
3500 # * -1 : (eager mode) The bytecode would be saved as soon as the script is
3501 # seen for the first time, independently of the size or last access
3503 # * 0 : (default) The bytecode would be saved in order to minimize the
3506 # Other values might lead to experimental strategies. For more details, have a
3507 # look at: ScriptLoader::ShouldCacheBytecode function.
3508 - name: dom.script_loader.bytecode_cache.strategy
3513 # Select which parse/delazification strategy should be used while parsing
3514 # scripts off-main-thread. (see CompileOptions.h, DelazificationOption enum)
3516 # 0: On-demand only. Delazification will be triggered only on the main thread
3517 # before the execution of the function.
3519 # 1: Compare on-demand delazification (= 0) with concurrent depth-first
3520 # delazification (= 2).
3522 # 2: Depth-first. Delazify all functions off-thread in the order of appearance
3525 # 3: Large-first. Delazify all functions off-thread starting with the largest
3526 # functions first, and the smallest as the last one to be delazified, where
3527 # the size of function is measured in bytes between the start to the end of
3530 # 255: Parse everything eagerly, from the first parse. All functions are parsed
3531 # at the same time as the top-level of a file.
3532 - name: dom.script_loader.delazification.strategy
3537 # Maximum total size after which the delazification strategy, specified by
3538 # `dom.script_loader.delazification.strategy`, is no longer applied, and the
3539 # on-demand strategy is used by default.
3541 # -1 disable the threshold, and delazification strategy is applied to all
3544 # Default value is 10MB for utf8 scripts.
3545 - name: dom.script_loader.delazification.max_size
3550 # Minimum memory, in GB, required to enable delazification strategy, specified
3551 # by `dom.script_loader.delazification.strategy`. Otherwise, the on-demand
3552 # delazification strategy is used.
3553 - name: dom.script_loader.delazification.min_mem
3558 # Enable speculative off main thread parsing of external scripts as
3559 # soon as they are fetched.
3560 - name: dom.script_loader.external_scripts.speculative_omt_parse.enabled
3565 # Speculatively compile non parser inserted scripts
3566 - name: dom.script_loader.external_scripts.speculate_non_parser_inserted.enabled
3571 # Speculatively compile async scripts
3572 - name: dom.script_loader.external_scripts.speculate_async.enabled
3577 # Speculatively compile link preload scripts
3578 - name: dom.script_loader.external_scripts.speculate_link_preload.enabled
3583 - name: dom.securecontext.allowlist_onions
3588 # This pref enables the featurePolicy header support.
3589 - name: dom.security.featurePolicy.header.enabled
3594 - name: dom.security.featurePolicy.experimental.enabled
3599 # Expose the 'featurePolicy' attribute in document and HTMLIFrameElement
3600 - name: dom.security.featurePolicy.webidl.enabled
3605 # Perform IPC based Principal vetting in ContentParent
3606 - name: dom.security.enforceIPCBasedPrincipalVetting
3607 type: RelaxedAtomicBool
3611 # For testing purposes only: Flipping this pref to true allows
3612 # to skip the allowlist for about: pages and do not ship with a
3613 # CSP and NS_ASSERT right away.
3614 - name: dom.security.skip_about_page_csp_allowlist_and_assert
3615 type: RelaxedAtomicBool
3619 # For testing purposes only: Flipping this pref to true allows
3620 # to skip the assertion that every about page ships with a CSP.
3621 - name: dom.security.skip_about_page_has_csp_assert
3622 type: RelaxedAtomicBool
3626 # For testing purposes only: Flipping this pref to true allows
3627 # to skip the assertion that HTML fragments (e.g. innerHTML) can
3628 # not be used within chrome code or about: pages.
3629 - name: dom.security.skip_html_fragment_assertion
3630 type: RelaxedAtomicBool
3634 # For testing purposes only; Flipping this pref to true allows
3635 # to skip the assertion that remote scripts can not be loaded
3636 # in system privileged contexts.
3637 - name: dom.security.skip_remote_script_assertion_in_system_priv_context
3638 type: RelaxedAtomicBool
3642 # If true, all content requests will get upgraded to HTTPS://
3643 # (some Firefox functionality requests, like OCSP will not be affected)
3644 - name: dom.security.https_only_mode
3645 type: RelaxedAtomicBool
3649 # If true, all content requests in Private Browsing Mode will get
3650 # upgraded to HTTPS://. (If dom.security.https_only_mode is set
3651 # to true then this pref has no effect)
3652 - name: dom.security.https_only_mode_pbm
3653 type: RelaxedAtomicBool
3657 # If true, sends http background request for top-level sites to
3658 # counter long timeouts.
3659 - name: dom.security.https_only_mode_send_http_background_request
3660 type: RelaxedAtomicBool
3664 # Time limit, in milliseconds, before sending the http background
3665 # request for HTTPS-Only and HTTPS-First
3666 - name: dom.security.https_only_fire_http_request_background_timer_ms
3667 type: RelaxedAtomicUint32
3671 # If true, tries to break upgrade downgrade cycles where https-only tries
3672 # to upgrad ethe connection, but the website tries to downgrade again.
3673 - name: dom.security.https_only_mode_break_upgrade_downgrade_endless_loop
3674 type: RelaxedAtomicBool
3678 # If true, when checking if it's upgrade downgrade cycles, the URI path will be
3680 - name: dom.security.https_only_check_path_upgrade_downgrade_endless_loop
3681 type: RelaxedAtomicBool
3685 # If true and HTTPS-only mode is enabled, requests
3686 # to local IP addresses are also upgraded
3687 - name: dom.security.https_only_mode.upgrade_local
3688 type: RelaxedAtomicBool
3692 # If true and HTTPS-only mode is enabled, requests
3693 # to .onion hosts are also upgraded
3694 - name: dom.security.https_only_mode.upgrade_onion
3695 type: RelaxedAtomicBool
3699 # WARNING: Don't ever update that pref manually! It is only used
3700 # for telemetry purposes and allows to reason about retention of
3701 # the pref dom.security.https_only_mode from above.
3702 - name: dom.security.https_only_mode_ever_enabled
3703 type: RelaxedAtomicBool
3707 # WARNING: Don't ever update that pref manually! It is only used
3708 # for telemetry purposes and allows to reason about retention of
3709 # the pref dom.security.https_only_mode_pbm from above.
3710 - name: dom.security.https_only_mode_ever_enabled_pbm
3711 type: RelaxedAtomicBool
3715 # If true checks for secure www connections when https fails
3716 # and gives the user suggestions on the error page
3717 - name: dom.security.https_only_mode_error_page_user_suggestions
3718 type: RelaxedAtomicBool
3722 # If true, top-level request will get upgraded to HTTPS and
3723 # downgraded again if the request failed.
3724 - name: dom.security.https_first
3725 type: RelaxedAtomicBool
3729 # If true, top-level requests in Private Browsing Mode will get
3730 # upgraded to HTTPS. (If dom.security.https_first
3731 # is set to true then this pref has no effect)
3732 - name: dom.security.https_first_pbm
3733 type: RelaxedAtomicBool
3737 # If true, top-level requests that are initiated from the address
3738 # bar and with an empty scheme get upgraded to HTTPS
3740 - name: dom.security.https_first_schemeless
3741 type: RelaxedAtomicBool
3742 value: @IS_EARLY_BETA_OR_EARLIER@
3745 - name: dom.security.unexpected_system_load_telemetry_enabled
3750 # pref controls `Sanitizer` API being exposed
3751 # https://wicg.github.io/sanitizer-api/
3752 - name: dom.security.sanitizer.enabled
3757 # Pref that controls the Element.setHTML API idenpendetly of the sanitizer
3759 - name: dom.security.setHTML.enabled
3764 # Logs elements and attributes removed by the Sanitizer API to the console.
3765 - name: dom.security.sanitizer.logging
3770 # pref controls `identity` credentials being exposed
3771 - name: dom.security.credentialmanagement.identity.enabled
3776 # pref controls `identity` credential UI for testing. When true, UI is not shown and
3777 # the first option in the account and provider lists are chosen
3778 - name: dom.security.credentialmanagement.identity.select_first_in_ui_lists
3783 # pref controls `identity` credential platform behavior for testing. When true,
3784 # the .well-known file check is not performed.
3785 - name: dom.security.credentialmanagement.identity.test_ignore_well_known
3790 # pref controls whether we should delay identity credential rejections at all
3791 - name: dom.security.credentialmanagement.identity.reject_delay.enabled
3796 # pref controls how long we should delay identity credential rejections if enabled
3797 - name: dom.security.credentialmanagement.identity.reject_delay.duration_ms
3802 # SetDocumentURI security option, enforces origin check
3803 - name: dom.security.setdocumenturi
3808 # Whether or not selection events on text controls are enabled.
3809 - name: dom.select_events.textcontrols.selectionchange.enabled
3814 - name: dom.select_events.textcontrols.selectstart.enabled
3819 - name: dom.select.showPicker.enabled
3824 - name: dom.separate_event_queue_for_post_message.enabled
3829 - name: dom.arena_allocator.enabled
3834 - name: dom.serviceWorkers.enabled
3835 type: RelaxedAtomicBool
3839 - name: dom.serviceWorkers.navigationPreload.enabled
3840 type: RelaxedAtomicBool
3844 # Mitigates ServiceWorker navigation faults by bypassing the ServiceWorker on
3845 # navigation faults. This is more extensive than just resetting interception
3846 # because we also mark the page as uncontrolled so that subresources will not
3847 # go to the ServiceWorker either.
3848 - name: dom.serviceWorkers.mitigations.bypass_on_fault
3853 # Additional ServiceWorker navigation mitigation control to unregister the
3854 # ServiceWorker after multiple faults are encountered. The mitigation is
3855 # disabled when this is set to zero, otherwise this is the number of faults that
3856 # need to occur for a specific ServiceWorker before it will be unregistered.
3857 - name: dom.serviceWorkers.mitigations.navigation_fault_threshold
3862 # This is the group usage head room for service workers.
3863 # The quota usage mitigation algorithm uses this preference to determine if the
3864 # origin or also group data should be cleared or not.
3865 # The default value is 400 MiB.
3866 - name: dom.serviceWorkers.mitigations.group_usage_headroom_kb
3871 - name: dom.serviceWorkers.testing.enabled
3872 type: RelaxedAtomicBool
3876 # Whether ServiceWorkerManager should persist the service worker
3877 # registered by temporary installed extension (only meant to be used
3878 # for testing purpose, to make it easier to test some particular scenario
3879 # with a temporary installed addon, which doesn't need to be signed to be
3880 # installed on release channel builds).
3881 - name: dom.serviceWorkers.testing.persistTemporarilyInstalledAddons
3882 type: RelaxedAtomicBool
3886 - name: dom.storage.enabled
3887 type: RelaxedAtomicBool
3891 # ReadableStream.from(asyncIterable)
3892 - name: dom.streams.from.enabled
3893 type: RelaxedAtomicBool
3897 - name: dom.workers.pFetch.enabled
3898 type: RelaxedAtomicBool
3902 - name: dom.workers.importScripts.enforceStrictMimeType
3903 type: RelaxedAtomicBool
3907 # Is support for modules (new Worker(..., {type: "module"})) enabled for workers?
3908 - name: dom.workers.modules.enabled
3909 type: RelaxedAtomicBool
3913 - name: dom.workers.serialized-sab-access
3914 type: RelaxedAtomicBool
3918 # Enable stronger diagnostics on worker shutdown.
3919 # If this is true, we will potentially run an extra GCCC when a worker should
3920 # exit its DoRunLoop but holds any WorkerRef and we will MOZ_DIAGNOSTIC_ASSERT
3921 # when during that extra GCCC such a WorkerRef is freed.
3922 - name: dom.workers.GCCC_on_potentially_last_event
3923 type: RelaxedAtomicBool
3924 #if defined(FUZZING) || defined(DEBUG)
3931 - name: dom.sitepermsaddon-provider.enabled
3933 value: @IS_NOT_ANDROID@
3936 # Whether automatic storage access granting heuristics should be turned on.
3937 - name: dom.storage_access.auto_grants
3942 - name: dom.storage_access.auto_grants.delayed
3947 # Storage-access API.
3948 - name: dom.storage_access.enabled
3953 # Forward-Declared Storage-access API.
3954 - name: dom.storage_access.forward_declared.enabled
3959 # How long the Forward-Declared Storage-access API allows between pair requests
3961 - name: dom.storage_access.forward_declared.lifetime
3966 # The maximum number of origins that a given third-party tracker is allowed
3967 # to have concurrent access to before the user is presented with a storage
3968 # access prompt. Only effective when the auto_grants pref is turned on.
3969 - name: dom.storage_access.max_concurrent_auto_grants
3974 - name: dom.storage_access.frame_only
3979 # Only grant storage access to secure contexts.
3980 - name: dom.storage_access.dont_grant_insecure_contexts
3981 type: RelaxedAtomicBool
3985 # Whether the File System API is enabled
3986 - name: dom.fs.enabled
3987 type: RelaxedAtomicBool
3991 # Whether the WritableFileStream is enabled or disabled.
3992 - name: dom.fs.writable_file_stream.enabled
3993 type: RelaxedAtomicBool
3997 # LocalStorage data limit as determined by summing up the lengths of all string
3998 # keys and values. This is consistent with the legacy implementation and other
3999 # browser engines. This value should really only ever change in unit testing
4000 # where being able to lower it makes it easier for us to test certain edge
4001 # cases. Measured in KiBs.
4002 - name: dom.storage.default_quota
4003 type: RelaxedAtomicUint32
4004 # Only allow relatively small amounts of data since performance of the
4005 # synchronous IO is very bad. We are enforcing simple per-origin quota only.
4009 # Per-site quota for legacy LocalStorage implementation.
4010 - name: dom.storage.default_site_quota
4011 type: RelaxedAtomicUint32
4015 # Whether or not the unsupported legacy implemenation should be enabled. Please
4016 # don't advertise this pref as a way for disabling LSNG. This pref is intended
4017 # for internal testing only and will be removed in near future. Accidental
4018 # disabling of LSNG can lead to a data loss in a combination with disabled
4019 # shadow writes. Disabling of shadow writes is the initial step towards
4020 # removing legacy implementation and will be done soon.
4021 - name: dom.storage.enable_unsupported_legacy_implementation
4022 type: RelaxedAtomicBool
4025 do_not_use_directly: true
4027 # The amount of snapshot peak usage which is attempted to be pre-incremented
4028 # during snapshot creation.
4029 - name: dom.storage.snapshot_peak_usage.initial_preincrement
4030 type: RelaxedAtomicUint32
4034 # The amount of snapshot peak usage which is attempted to be pre-incremented
4035 # during snapshot creation if the LocalStorage usage was already close to the
4036 # limit (a fallback for dom.storage.snapshot_peak_usage.initial_preincrement).
4037 - name: dom.storage.snapshot_peak_usage.reduced_initial_preincrement
4038 type: RelaxedAtomicUint32
4042 # The amount of snapshot peak usage which is attempted to be pre-incremented
4043 # beyond the specific values which are subsequently requested after snapshot
4045 - name: dom.storage.snapshot_peak_usage.gradual_preincrement
4046 type: RelaxedAtomicUint32
4050 # The amount of snapshot peak usage which is attempted to be pre-incremented
4051 # beyond the specific values which are subsequently requested after snapshot
4052 # creation if the LocalStorage total usage was already close to the limit
4053 # (a fallback for dom.storage.snapshot_peak_usage.gradual_preincrement).
4054 - name: dom.storage.snapshot_peak_usage.reduced_gradual_preincrement
4055 type: RelaxedAtomicUint32
4059 # How long between a snapshot becomes idle and when we actually finish the
4060 # snapshot. This preference is only used when "dom.storage.snapshot_reusing"
4062 - name: dom.storage.snapshot_idle_timeout_ms
4067 # Is support for Storage test APIs enabled?
4068 - name: dom.storage.testing
4073 # For area and anchor elements with target=_blank and no rel set to
4075 - name: dom.targetBlankNoOpener.enabled
4080 # Is support for Selection.GetRangesForInterval enabled?
4081 - name: dom.testing.selection.GetRangesForInterval
4086 - name: dom.testing.structuredclonetester.enabled
4087 type: RelaxedAtomicBool
4091 - name: dom.testing.sync-content-blocking-notifications
4096 # To enable TestUtils interface on WPT
4097 - name: dom.testing.testutils.enabled
4098 type: RelaxedAtomicBool
4102 - name: dom.textMetrics.actualBoundingBox.enabled
4103 type: RelaxedAtomicBool
4107 - name: dom.textMetrics.baselines.enabled
4108 type: RelaxedAtomicBool
4112 - name: dom.textMetrics.emHeight.enabled
4113 type: RelaxedAtomicBool
4117 - name: dom.textMetrics.fontBoundingBox.enabled
4118 type: RelaxedAtomicBool
4122 # Time (in ms) that it takes to regenerate 1ms.
4123 - name: dom.timeout.background_budget_regeneration_rate
4128 # Time (in ms) that it takes to regenerate 1ms.
4129 - name: dom.timeout.foreground_budget_regeneration_rate
4134 # Maximum value (in ms) for the background budget. Only valid for
4135 # values greater than 0.
4136 - name: dom.timeout.background_throttling_max_budget
4141 # Maximum value (in ms) for the foreground budget. Only valid for
4142 # values greater than 0.
4143 - name: dom.timeout.foreground_throttling_max_budget
4148 # The maximum amount a timeout can be delayed by budget throttling.
4149 - name: dom.timeout.budget_throttling_max_delay
4154 # Turn on budget throttling by default.
4155 - name: dom.timeout.enable_budget_timer_throttling
4160 # Should we defer timeouts and intervals while loading a page. Released
4161 # on Idle or when the page is loaded.
4162 - name: dom.timeout.defer_during_load
4167 # Maximum amount of time in milliseconds consecutive setTimeout()/setInterval()
4168 # callback are allowed to run before yielding the event loop.
4169 - name: dom.timeout.max_consecutive_callbacks_ms
4174 # Maximum deferral time for setTimeout/Interval in milliseconds
4175 - name: dom.timeout.max_idle_defer_ms
4180 # Delay in ms from document load until we start throttling background timeouts.
4181 - name: dom.timeout.throttling_delay
4187 - name: dom.udpsocket.enabled
4192 # Whether to dump worker use counters
4193 - name: dom.use_counters.dump.worker
4194 type: RelaxedAtomicBool
4198 # Whether to dump document use counters
4199 - name: dom.use_counters.dump.document
4204 # Whether to dump page use counters
4205 - name: dom.use_counters.dump.page
4210 # Time limit, in milliseconds, for user gesture transient activation.
4211 - name: dom.user_activation.transient.timeout
4216 # Whether to treat the clicks on scrollbars as user interaction with web content.
4217 - name: dom.user_activation.ignore_scrollbars
4222 # Whether to shim a Components object on untrusted windows.
4223 - name: dom.use_components_shim
4225 value: @IS_NOT_NIGHTLY_BUILD@
4228 - name: dom.vibrator.enabled
4233 - name: dom.vibrator.max_vibrate_ms
4234 type: RelaxedAtomicUint32
4238 - name: dom.vibrator.max_vibrate_list_len
4239 type: RelaxedAtomicUint32
4243 # Is support for WebVR APIs enabled?
4244 # Disabled everywhere, but not removed.
4245 - name: dom.vr.enabled
4246 type: RelaxedAtomicBool
4250 # Should VR sessions always be reported as supported, without first
4251 # checking for VR runtimes? This will prevent permission prompts
4252 # from being suppressed on machines without VR runtimes and cause
4253 # navigator.xr.isSessionSupported to always report that immersive-vr
4255 - name: dom.vr.always_support_vr
4256 type: RelaxedAtomicBool
4260 # Should AR sessions always be reported as supported, without first
4261 # checking for AR runtimes? This will prevent permission prompts
4262 # from being suppressed on machines without AR runtimes and cause
4263 # navigator.xr.isSessionSupported to always report that immersive-ar
4265 - name: dom.vr.always_support_ar
4266 type: RelaxedAtomicBool
4270 # It is often desirable to automatically start vr presentation when
4271 # a user puts on the VR headset. This is done by emitting the
4272 # Window.vrdisplayactivate event when the headset's sensors detect it
4273 # being worn. This can result in WebVR content taking over the headset
4274 # when the user is using it outside the browser or inadvertent start of
4275 # presentation due to the high sensitivity of the proximity sensor in some
4276 # headsets, so it is off by default.
4277 - name: dom.vr.autoactivate.enabled
4278 type: RelaxedAtomicBool
4282 # Minimum number of milliseconds that the browser will wait before
4283 # attempting to poll again for connected VR controllers. The browser
4284 # will not attempt to poll for VR controllers until it needs to use them.
4285 - name: dom.vr.controller.enumerate.interval
4286 type: RelaxedAtomicInt32
4290 # The threshold value of trigger inputs for VR controllers.
4291 - name: dom.vr.controller_trigger_threshold
4296 # Minimum number of milliseconds that the browser will wait before
4297 # attempting to poll again for connected VR displays. The browser
4298 # will not attempt to poll for VR displays until it needs to use
4299 # them, such as when detecting a WebVR site.
4300 - name: dom.vr.display.enumerate.interval
4301 type: RelaxedAtomicInt32
4305 # The number of milliseconds since last frame start before triggering a new
4306 # frame. When content is failing to submit frames on time or the lower level
4307 # VR platform APIs are rejecting frames, it determines the rate at which RAF
4308 # callbacks will be called.
4309 - name: dom.vr.display.rafMaxDuration
4310 type: RelaxedAtomicUint32
4314 # Minimum number of milliseconds the browser will wait before attempting
4315 # to re-start the VR service after an enumeration returned no devices.
4316 - name: dom.vr.external.notdetected.timeout
4317 type: RelaxedAtomicInt32
4321 # Minimum number of milliseconds the browser will wait before attempting
4322 # to re-start the VR service after a VR API (eg, OpenVR or Oculus)
4323 # requests that we shutdown and unload its libraries.
4324 # To ensure that we don't interfere with VR runtime software auto-updates,
4325 # we will not attempt to re-load the service until this timeout has elapsed.
4326 - name: dom.vr.external.quit.timeout
4327 type: RelaxedAtomicInt32
4331 # Minimum number of milliseconds that the VR session will be kept
4332 # alive after the browser and content no longer are using the
4333 # hardware. If a VR multitasking environment, this should be set
4334 # very low or set to 0.
4335 - name: dom.vr.inactive.timeout
4336 type: RelaxedAtomicInt32
4340 # Maximum number of milliseconds the browser will wait for content to call
4341 # VRDisplay.requestPresent after emitting vrdisplayactivate during VR
4342 # link traversal. This prevents a long running event handler for
4343 # vrdisplayactivate from later calling VRDisplay.requestPresent, which would
4344 # result in a non-responsive browser in the VR headset.
4345 - name: dom.vr.navigation.timeout
4346 type: RelaxedAtomicInt32
4351 - name: dom.vr.oculus.enabled
4352 type: RelaxedAtomicBool
4353 #if defined(HAVE_64BIT_BUILD) && !defined(ANDROID)
4354 # We are only enabling WebVR by default on 64-bit builds (Bug 1384459).
4357 # On Android, this pref is irrelevant.
4362 # When enabled, Oculus sessions may be created with the ovrInit_Invisible
4363 # flag if a page is using tracking but not presenting. When a page
4364 # begins presenting VR frames, the session will be re-initialized without
4365 # the flag. This eliminates the "Firefox not responding" warnings in
4366 # the headset, but might not be compatible with all versions of the Oculus
4368 - name: dom.vr.oculus.invisible.enabled
4369 type: RelaxedAtomicBool
4373 # Minimum number of milliseconds after content has stopped VR presentation
4374 # before the Oculus session is re-initialized to an invisible / tracking
4375 # only mode. If this value is too high, users will need to wait longer
4376 # after stopping WebVR presentation before automatically returning to the
4377 # Oculus home interface. (They can immediately return to the Oculus Home
4378 # interface through the Oculus HUD without waiting this duration)
4379 # If this value is too low, the Oculus Home interface may be visible
4380 # momentarily during VR link navigation.
4381 - name: dom.vr.oculus.present.timeout
4382 type: RelaxedAtomicInt32
4387 - name: dom.vr.openvr.enabled
4388 type: RelaxedAtomicBool
4389 #if !defined(HAVE_64BIT_BUILD) && !defined(ANDROID)
4390 # We are only enabling WebVR by default on 64-bit builds (Bug 1384459).
4392 #elif defined(XP_WIN) || defined(XP_MACOSX)
4393 # We enable OpenVR by default for Windows and macOS.
4396 # See Bug 1310663 (Linux). On Android, this pref is irrelevant.
4402 - name: dom.vr.osvr.enabled
4403 type: RelaxedAtomicBool
4407 # Pose prediction reduces latency effects by returning future predicted HMD
4408 # poses to callers of the WebVR API. This currently only has an effect for
4409 # Oculus Rift on SDK 0.8 or greater.
4410 - name: dom.vr.poseprediction.enabled
4411 type: RelaxedAtomicBool
4415 # Enable a separate process for VR module.
4416 - name: dom.vr.process.enabled
4425 - name: dom.vr.process.startup_timeout_ms
4430 # Puppet device, used for simulating VR hardware within tests and dev tools.
4431 - name: dom.vr.puppet.enabled
4432 type: RelaxedAtomicBool
4436 # Starting VR presentation is only allowed within a user gesture or event such
4437 # as VRDisplayActivate triggered by the system. dom.vr.require-gesture allows
4438 # this requirement to be disabled for special cases such as during automated
4439 # tests or in a headless kiosk system.
4440 - name: dom.vr.require-gesture
4441 type: RelaxedAtomicBool
4445 # Is support for WebXR APIs enabled?
4446 - name: dom.vr.webxr.enabled
4447 type: RelaxedAtomicBool
4451 # Points in the native bounds geometry are required to be quantized
4452 # sufficiently to prevent fingerprinting. The WebXR spec suggests
4453 # quantizing to the nearest 5 centimeters.
4454 - name: dom.vr.webxr.quantization
4459 # Whether MouseEvent.region is exposed as a property.
4460 - name: dom.mouse_event.region.enabled
4466 # Control firing WidgetMouseEvent by handling Windows pointer messages or
4468 - name: dom.w3c_pointer_events.dispatch_by_pointer_messages
4473 - name: dom.w3c_pointer_events.scroll_by_pen.enabled
4479 # If the value is >= 0, it will be used for max touch points in child processes.
4480 - name: dom.maxtouchpoints.testing.value
4485 # Maximum value of navigator.hardwareConcurrency.
4486 - name: dom.maxHardwareConcurrency
4487 type: RelaxedAtomicUint32
4488 #ifdef NIGHTLY_BUILD
4495 # W3C pointer events draft.
4496 - name: dom.w3c_pointer_events.implicit_capture
4501 - name: dom.w3c_pointer_events.getcoalescedevents_only_in_securecontext
4503 value: @IS_NIGHTLY_BUILD@
4506 # In case Touch API is enabled, this pref controls whether to support
4507 # ontouch* event handlers, document.createTouch, document.createTouchList and
4508 # document.createEvent("TouchEvent").
4509 - name: dom.w3c_touch_events.legacy_apis.enabled
4515 # 0 - disabled, 1 - enabled, 2 - autodetect
4516 # Autodetection is currently only supported on Windows and GTK3 (and assumed on
4518 - name: dom.w3c_touch_events.enabled
4520 #if defined(XP_MACOSX)
4527 # Is support for the Web Audio API enabled?
4528 - name: dom.webaudio.enabled
4533 - name: dom.webkitBlink.dirPicker.enabled
4534 type: RelaxedAtomicBool
4535 value: @IS_NOT_ANDROID@
4538 # NOTE: This preference is used in unit tests. If it is removed or its default
4539 # value changes, please update test_sharedMap_static_prefs.js accordingly.
4540 - name: dom.webcomponents.shadowdom.report_usage
4545 # Is support for Declarative ShadowDOM enabled?
4546 - name: dom.webcomponents.shadowdom.declarative.enabled
4548 value: @IS_NIGHTLY_BUILD@
4551 # Is support for the Web GPU API enabled?
4552 - name: dom.webgpu.enabled
4553 type: RelaxedAtomicBool
4554 value: @IS_NIGHTLY_BUILD@
4557 # Is support for the Web GPU API enabled on DOM workers?
4558 - name: dom.webgpu.workers.enabled
4559 type: RelaxedAtomicBool
4563 # Are WebGPU indirect draws/dispatches enabled?
4564 - name: dom.webgpu.indirect-dispatch.enabled
4565 type: RelaxedAtomicBool
4569 # Comma-separated list of wgpu backend names to permit in WebGPU adapters.
4571 # If non-empty, this is parsed by `wgpu_core::instance::parse_backends_from_comma_list` to
4572 # produce a `wgpu_types::Backends` bitset used to create a `wgpu_core::hub::Global`. As of
4573 # 2023-3-22, recognized names are:
4575 # "vulkan" | "vk" => Backends::VULKAN,
4576 # "dx12" | "d3d12" => Backends::DX12,
4577 # "dx11" | "d3d11" => Backends::DX11,
4578 # "metal" | "mtl" => Backends::METAL,
4579 # "opengl" | "gles" | "gl" => Backends::GL,
4580 # "webgpu" => Backends::BROWSER_WEBGPU,
4581 - name: dom.webgpu.wgpu-backend
4582 type: DataMutexString
4587 - name: dom.webgpu.swap-chain.external-texture-dx12
4588 type: RelaxedAtomicBool
4593 # For testing purposes, crash if we don't get a hardware adapter.
4594 - name: dom.webgpu.testing.assert-hardware-adapter
4595 type: RelaxedAtomicBool
4600 # Whether to pass labels to the hardware abstraction layer. This is only useful when
4601 # inspecting a WebGPU workload in a GPU debugging tool like renderdoc. Enabling it
4602 # exposes poorly tested driver API surfaces so it should not be enabled by default.
4603 - name: dom.webgpu.hal-labels
4609 # Is support for HTMLInputElement.webkitEntries enabled?
4610 - name: dom.webkitBlink.filesystem.enabled
4612 value: @IS_NOT_ANDROID@
4615 # Whether the WebMIDI API is enabled
4616 - name: dom.webmidi.enabled
4618 value: @IS_NOT_ANDROID@
4621 # midi permission is addon-gated
4622 - name: dom.webmidi.gated
4627 - name: dom.webnotifications.allowcrossoriginiframe
4628 type: RelaxedAtomicBool
4632 - name: dom.webnotifications.enabled
4633 type: RelaxedAtomicBool
4637 - name: dom.webnotifications.privateBrowsing.enableDespiteLimitations
4638 type: RelaxedAtomicBool
4642 - name: dom.webnotifications.requireuserinteraction
4643 type: RelaxedAtomicBool
4647 - name: dom.webnotifications.requireinteraction.enabled
4648 type: RelaxedAtomicBool
4652 value: @IS_NIGHTLY_BUILD@
4656 - name: dom.webnotifications.silent.enabled
4657 type: RelaxedAtomicBool
4658 value: @IS_NIGHTLY_BUILD@
4661 - name: dom.webnotifications.vibrate.enabled
4662 type: RelaxedAtomicBool
4663 #if defined(MOZ_WIDGET_ANDROID)
4664 value: @IS_NIGHTLY_BUILD@
4670 # Is support for Window.event enabled?
4671 - name: dom.window.event.enabled
4676 - name: dom.window.clientinformation.enabled
4681 # Whether Window.sizeToContent() is enabled.
4682 - name: dom.window.sizeToContent.enabled
4687 - name: dom.worker.canceling.timeoutMilliseconds
4688 type: RelaxedAtomicUint32
4689 value: 30000 # 30 seconds
4692 - name: dom.worker.use_medium_high_event_queue
4693 type: RelaxedAtomicBool
4697 # Enables the dispatching of console log events from worker threads to the
4699 - name: dom.worker.console.dispatch_events_to_main_thread
4700 type: RelaxedAtomicBool
4704 - name: dom.workers.testing.enabled
4705 type: RelaxedAtomicBool
4709 # When this pref is set, parent documents may consider child iframes have
4710 # loaded while they are still loading.
4711 - name: dom.cross_origin_iframes_loaded_in_background
4716 # WebIDL test prefs.
4717 - name: dom.webidl.test1
4721 - name: dom.webidl.test2
4726 - name: dom.webidl.crosscontext_hasinstance.enabled
4727 type: RelaxedAtomicBool
4731 # WebShare API - exposes navigator.share()
4732 - name: dom.webshare.enabled
4735 value: @IS_EARLY_BETA_OR_EARLIER@
4741 # WebShare API - allows WebShare without user interaction (for tests only).
4742 - name: dom.webshare.requireinteraction
4747 # Hide the confirm dialog when a POST request is reloaded.
4748 - name: dom.confirm_repost.testing.always_accept
4753 # Whether we should suspend inactive tabs or not
4754 - name: dom.suspend_inactive.enabled
4759 # The following three prefs control the maximum script run time before slow
4762 # Controls the time that a content script can run before showing a
4764 - name: dom.max_script_run_time
4769 # Controls whether we want to wait for user input before surfacing notifying
4770 # the parent process about a long-running script.
4771 - name: dom.max_script_run_time.require_critical_input
4773 # On desktop, we don't want to annoy the user with a notification if they're
4774 # not interacting with the browser. On Android however, we automatically
4775 # terminate long-running scripts, so we want to make sure we don't get in the
4776 # way of that by waiting for input.
4777 #if defined(MOZ_WIDGET_ANDROID)
4784 # Controls if a content script will be aborted on child process shutdown.
4785 - name: dom.abort_script_on_child_shutdown
4790 - name: dom.max_chrome_script_run_time
4795 - name: dom.max_ext_content_script_run_time
4800 # Let Resize Observer report the size of all fragments, and not just the
4801 # first one, as per CSSWG resolution:
4802 # https://github.com/w3c/csswg-drafts/issues/3673#issuecomment-467221565
4803 - name: dom.resize_observer.support_fragments
4808 # <iframe loading="lazy">
4809 - name: dom.iframe_lazy_loading.enabled
4810 type: RelaxedAtomicBool
4814 #---------------------------------------------------------------------------
4815 # Prefs starting with "editor"
4816 #---------------------------------------------------------------------------
4818 # Default background color of HTML editor. This is referred only when
4819 # "editor.use_custom_colors" is set to `true`.
4820 - name: editor.background_color
4825 # Whether HTMLEditor consides block or inline element with computed style or
4826 # only with the default style of HTML definition.
4827 - name: editor.block_inline_check.use_computed_style
4829 value: @IS_EARLY_BETA_OR_EARLIER@
4832 # Use compatible range computation when applying inline style. This is used
4833 # for making it possible to backout with Normandy Pref Rollout.
4834 - name: editor.inline_style.range.compatible_with_the_other_browsers
4839 # Delay to mask last input character in password fields.
4840 # If negative value, to use platform's default behavior.
4841 # If 0, no delay to mask password.
4842 # Otherwise, password fields unmask last input character(s) during specified
4843 # time (in milliseconds).
4844 - name: editor.password.mask_delay
4849 # Set to true when you test mask_delay of password editor. If this is set
4850 # to true, "MozLastInputMasked" is fired when last input characters are
4851 # masked by timeout.
4852 - name: editor.password.testing.mask_delay
4857 # How line breakers are treated in single line editor:
4858 # * 0: Only remove the leading and trailing newlines.
4859 # * 1: Remove the first newline and all characters following it.
4860 # * 2: Replace newlines with spaces (default of Firefox).
4861 # * 3: Remove newlines from the string.
4862 # * 4: Replace newlines with commas (default of Thunderbird).
4863 # * 5: Collapse newlines and surrounding white space characters and
4864 # remove them from the string.
4865 # Other values are treated as 1.
4866 - name: editor.singleLine.pasteNewlines
4871 # Whether user pastes should be truncated.
4872 - name: editor.truncate_user_pastes
4877 # When this is set to `true`, "editor.background_color" must be set, then,
4878 # the value is treated as default background color of the HTML editor.
4879 # If `false` and "browser.display.use_system_colors" is set to `true`,
4880 # "browser.display.background_color" is used instead.
4881 # Otherwise, no color is used as default background color.
4882 # This pref is for Thunderbird and SeaMonkey.
4883 - name: editor.use_custom_colors
4888 # If this is set to `true`, CSS mode of style editor is enabled by default
4889 # unless it's a mail editor.
4890 # This pref is for Thunderbird and SeaMonkey.
4891 - name: editor.use_css
4896 # Whether enabling blink compatible white-space normalizer or keep using
4897 # Gecko's traditional white-space normalizer.
4898 - name: editor.white_space_normalization.blink_compatible
4903 # General prefs for editor, indicating whether Gecko-specific editing UI is
4904 # enabled by default. Those UIs are not implemented by any other browsers. So,
4905 # only Firefox users can change some styles with them. This means that Firefox
4906 # users may get unexpected result of some web apps if they assume that users
4907 # cannot change such styles.
4908 - name: editor.resizing.enabled_by_default
4912 - name: editor.inline_table_editing.enabled_by_default
4916 - name: editor.positioning.enabled_by_default
4921 # Controls if a double click word selection also deletes one adjacent whitespace
4922 # (if feasible). This mimics native behaviour on MacOS.
4923 - name: editor.word_select.delete_space_after_doubleclick_selection
4932 #---------------------------------------------------------------------------
4933 # Prefs starting with "extensions."
4934 #---------------------------------------------------------------------------
4936 # Pref that enforces the use of web_accessible_resources for content loads.
4937 # This behavior is default for MV3. The pref controls this for MV2.
4938 - name: extensions.content_web_accessible.enabled
4943 # Whether the InstallTrigger implementation should be enabled (or hidden and
4944 # none of its methods available).
4945 - name: extensions.InstallTriggerImpl.enabled
4950 # Whether the InstallTrigger implementation should be enabled (or completely
4951 # hidden), separate from InstallTriggerImpl because InstallTrigger is improperly
4952 # used also for UA detection.
4953 - name: extensions.InstallTrigger.enabled
4955 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
4959 # Whether the background.service_worker in the extension manifest.json file
4961 # all.js locks the pref to false when MOZ_WEBEXT_WEBIDL_ENABLED is false.
4962 - name: extensions.backgroundServiceWorker.enabled
4967 # Maximum number of misspelled words in a text.
4968 - name: extensions.spellcheck.inline.max-misspellings
4973 # Whether the extensions can register a service worker on its own.
4974 # NOTE: WebExtensions Framework ability to register a background service worker
4975 # is not controlled by this pref, only the extension code ability to use
4976 # navigator.serviceWorker.register is locked behind this pref.
4977 - name: extensions.serviceWorkerRegister.allowed
4982 # Temporary pref to allow reverting the fix to bug 1853409.
4983 # TODO bug 1856071: Remove this pref.
4984 # When true, extensions can run content scripts in about:blank documents that
4985 # have a null principal. When false, extensions require permissions to all URLs.
4986 - name: extensions.script_about_blank_without_permission
4991 # Legacy behavior on filterResponse calls on intercepted sw script requests.
4992 - name: extensions.filterResponseServiceWorkerScript.disabled
4997 # This pref governs whether we run webextensions in a separate process (true)
4998 # or the parent/main process (false)
4999 - name: extensions.webextensions.remote
5000 type: RelaxedAtomicBool
5004 # Whether to expose the MockExtensionAPI test interface in tests.
5005 # The interface MockExtensionAPI doesn't represent a real extension API,
5006 # it is only available in test and does include a series of cases useful
5007 # to test the API request handling without tying the unit test to a
5008 # specific WebExtensions API.
5009 - name: extensions.webidl-api.expose_mock_interface
5010 type: RelaxedAtomicBool
5014 # Whether to allow acccess to AddonManager to developer sites for testing
5015 # NOTE: We'd like this to be a "hidden" pref once StaticPrefs supports it.
5016 - name: extensions.webapi.testing
5017 type: RelaxedAtomicBool
5021 # Automation-only pref to allow AddonManager over insecure protocols.
5022 # NOTE: We'd like this to be a "hidden" pref once StaticPrefs supports it.
5023 - name: extensions.webapi.testing.http
5024 type: RelaxedAtomicBool
5028 # Whether to expose the AddonManager web API.
5029 - name: extensions.webapi.enabled
5030 type: RelaxedAtomicBool
5031 value: @IS_NOT_ANDROID@
5034 #---------------------------------------------------------------------------
5035 # Prefs starting with "fission."
5036 #---------------------------------------------------------------------------
5038 # Whether to enable Fission in new windows by default.
5039 # IMPORTANT: This preference should *never* be checked directly, since any
5040 # session can contain a mix of Fission and non-Fission windows. Instead,
5041 # callers should check whether the relevant nsILoadContext has the
5042 # `useRemoteSubframes` flag set.
5043 # Callers which cannot use `useRemoteSubframes` must use
5044 # `Services.appinfo.fissionAutostart` or `mozilla::FissionAutostart()` to check
5045 # whether fission is enabled by default.
5046 - name: fission.autostart
5048 value: @IS_NOT_ANDROID@
5051 # This pref has no effect within fission windows, it only controls the
5052 # behaviour within non-fission windows. If true, preserve browsing contexts
5053 # between process swaps.
5054 - name: fission.preserve_browsing_contexts
5059 # Disable storing the session history in the parent process, and accessing it
5060 # over IPC from the child processes.
5061 - name: fission.disableSessionHistoryInParent
5065 do_not_use_directly: true
5067 # If session history is stored in the parent process, enable bfcache for it.
5068 - name: fission.bfcacheInParent
5072 do_not_use_directly: true
5074 # Allow renaming of processes from Private Windows to the eTLD+1 on nightly
5075 # Setting this pref creates a privacy leak, but helps greatly with
5077 - name: fission.processPrivateWindowSiteNames
5082 # Allow renaming of process names to the eTLD+1 on all versions, NOT
5083 # including processes from Private Windows
5084 # Setting this pref creates a privacy leak, but helps greatly with
5086 - name: fission.processSiteNames
5091 # Allow showing of current profile along with process names, NOT
5092 # including processes from Private Windows
5093 # Setting this pref creates a privacy leak, but helps greatly with
5095 - name: fission.processProfileName
5100 # If true, allow process-switching documents loaded by <object> and <embed>
5101 # elements into a remote process.
5102 # NOTE: This pref has no impact outside of windows with the
5103 # `useRemoteSubframes` flag set.
5104 - name: fission.remoteObjectEmbed
5109 # The strategy used to control how sites are isolated into separate processes
5110 # when Fisison is enabled. This pref has no effect if Fission is disabled.
5111 # See the `WebContentIsolationStrategy` enum in `ProcessIsolation.cpp`.
5112 - name: fission.webContentIsolationStrategy
5117 # Time in seconds before a site loaded with the Cross-Origin-Opener-Policy
5118 # header is no longer considered high-value and isolated in the "highValueCOOP"
5120 - name: fission.highValue.coop.expiration
5122 value: 2592000 # 30 days (in seconds)
5125 # Time in seconds before a site are considered high-value by the login detection
5126 # service is no longer considered high-value and isolated in the "highValueHasSavedLogin"
5127 # or "highValueIsLoggedIn" configuration.
5128 - name: fission.highValue.login.expiration
5130 value: 2592000 # 30 days (in seconds)
5133 # If true, capture login attemp, and add "highValueIsLoggedIn" permission to
5134 # the permission manager no matter whether fission is enabled and
5135 # WebContentIsolationStrateg is set to IsolateHighvalue.
5136 - name: fission.highValue.login.monitor
5141 # If true, do not send blocklisted preference values to the subprocess
5142 - name: fission.omitBlocklistedPrefsInSubprocesses
5143 type: RelaxedAtomicBool
5147 # If true, crash when a blocklisted preference is accessed in a subprocess
5148 - name: fission.enforceBlocklistedPrefsInSubprocesses
5149 type: RelaxedAtomicBool
5150 value: @IS_EARLY_BETA_OR_EARLIER@
5153 #---------------------------------------------------------------------------
5154 # Prefs starting with "font."
5155 #---------------------------------------------------------------------------
5157 # A value greater than zero enables font size inflation for
5158 # pan-and-zoom UIs, so that the fonts in a block are at least the size
5159 # that, if a block's width is scaled to match the device's width, the
5160 # fonts in the block are big enough that at most the pref value ems of
5161 # text fit in *the width of the device*.
5163 # When both this pref and the next are set, the larger inflation is used.
5164 - name: font.size.inflation.emPerLine
5169 # A value greater than zero enables font size inflation for
5170 # pan-and-zoom UIs, so that if a block's width is scaled to match the
5171 # device's width, the fonts in a block are at least the given font size.
5172 # The value given is in twips, i.e., 1/20 of a point, or 1/1440 of an inch.
5174 # When both this pref and the previous are set, the larger inflation is used.
5175 - name: font.size.inflation.minTwips
5180 # In products with multi-mode pan-and-zoom and non-pan-and-zoom UIs,
5181 # this pref forces font inflation to always be enabled in all modes.
5182 # That is, any heuristics used to detect pan-and-zoom
5183 # vs. non-pan-and-zoom modes are disabled and all content is treated
5184 # as pan-and-zoom mode wrt font inflation.
5186 # This pref has no effect if font inflation is not enabled through
5187 # either of the prefs above. It has no meaning in single-mode UIs.
5188 - name: font.size.inflation.forceEnabled
5193 # In products with multi-mode pan-and-zoom and non-pan-and-zoom UIs,
5194 # this pref disables font inflation in master-process contexts where
5195 # existing heuristics can't be used determine enabled-ness.
5197 # This pref has no effect if font inflation is not enabled through
5198 # either of the prefs above. The "forceEnabled" pref above overrides
5200 - name: font.size.inflation.disabledInMasterProcess
5205 # Defines the font size inflation mapping intercept parameter.
5207 # Font size inflation computes a minimum font size, m, based on
5208 # other preferences (see font.size.inflation.minTwips and
5209 # font.size.inflation.emPerLine, above) and the width of the
5210 # frame in which the text resides. Using this minimum, a specified
5211 # font size, s, is mapped to an inflated font size, i, using an
5212 # equation that varies depending on the value of the font size
5213 # inflation mapping intercept parameter, P.
5215 # If the intercept parameter is negative, then the following mapping
5220 # If the intercept parameter is non-negative, then the mapping function
5221 # is a function such that its graph meets the graph of i = s at the
5222 # point where both i and s are (1 + P/2) * m for values of s that are
5223 # large enough. This means that when s=0, i is always equal to m.
5224 - name: font.size.inflation.mappingIntercept
5229 # Since the goal of font size inflation is to avoid having to
5230 # repeatedly scroll side to side to read a block of text, and there are
5231 # a number of page layouts where a relatively small chunk of text is
5232 # better off not being inflated according to the same algorithm we use
5233 # for larger chunks of text, we want a threshold for an amount of text
5234 # that triggers font size inflation. This preference controls that
5237 # It controls the threshold used within an *approximation* of the
5238 # number of lines of text we use. In particular, if we assume that
5239 # each character (collapsing collapsible whitespace) has a width the
5240 # same as the em-size of the font (when, normally, it's actually quite
5241 # a bit smaller on average), this preference gives the percentage of a
5242 # number of lines of text we'd need to trigger inflation. This means
5243 # that a percentage of 100 means that we'd need a number of characters
5244 # (we know the font size and the width) equivalent to one line of
5245 # square text (which is actually a lot less than a real line of text).
5247 # A value of 0 means there's no character length threshold.
5248 - name: font.size.inflation.lineThreshold
5253 # This controls the percentage that fonts will be inflated, if font
5254 # size inflation is enabled. Essentially, if we have a specified font
5255 # size, s, and an inflated font size, i, this specifies that the ratio
5256 # i/s * 100 should never exceed the value of this preference. In order
5257 # for this preference to have any effect, its value must be greater
5258 # than 100, since font inflation can never decrease the ratio i/s.
5259 - name: font.size.inflation.maxRatio
5264 #---------------------------------------------------------------------------
5265 # Prefs starting with "full-screen-api."
5266 #---------------------------------------------------------------------------
5268 - name: full-screen-api.enabled
5273 - name: full-screen-api.allow-trusted-requests-only
5278 - name: full-screen-api.mouse-event-allow-left-button-only
5283 - name: full-screen-api.exit-on.windowOpen
5288 - name: full-screen-api.exit-on.windowRaise
5293 - name: full-screen-api.pointer-lock.enabled
5298 # whether to prevent the top level widget from going fullscreen
5299 - name: full-screen-api.ignore-widgets
5304 #---------------------------------------------------------------------------
5305 # Prefs starting with "fuzzing.". It's important that these can only be
5306 # checked in fuzzing builds (when FUZZING is defined), otherwise you could
5307 # enable the fuzzing stuff on your regular build which would be bad :)
5308 #---------------------------------------------------------------------------
5311 - name: fuzzing.enabled
5313 #ifdef FUZZING_SNAPSHOT
5320 - name: fuzzing.necko.enabled
5321 type: RelaxedAtomicBool
5325 - name: fuzzing.necko.http3
5326 type: RelaxedAtomicBool
5331 # This configures a virtual authenticator for WebAuthn. The value encodes the
5332 # arguments to the WebDriver "Add Virtual Authenticator" extension command.
5333 # Bits 0, 1, 2, and 3 encode "is_user_verified", "is_user_consenting",
5334 # "has_user_verification", and "has_resident_key" in that order. Bit 5 encodes
5335 # the transport, either "usb" (0) or "internal" (1). Bits 6 and 7 encode the
5336 # protocol, either "ctap1/u2f" (1), "ctap2" (2), or "ctap2_1" (3). Note that
5337 # the valid protocol values are non-zero---an authenticator will not be
5338 # configured if this pref is set to zero. Changing this pref requires
5340 - name: fuzzing.webauthn.authenticator_config
5341 type: RelaxedAtomicUint32
5347 #---------------------------------------------------------------------------
5348 # Prefs starting with "general."
5349 #---------------------------------------------------------------------------
5351 - name: general.aboutConfig.enable
5356 # Limits the depth of recursive conversion of data when opening
5357 # a content to view. This is mostly intended to prevent infinite
5358 # loops with faulty converters involved.
5359 - name: general.document_open_conversion_depth_limit
5364 - name: general.smoothScroll
5365 type: RelaxedAtomicBool
5369 # This pref and general.smoothScroll.stopDecelerationWeighting determine
5370 # the timing function.
5371 - name: general.smoothScroll.currentVelocityWeighting
5376 # To connect consecutive scroll events into a continuous flow, the animation's
5377 # duration should be longer than scroll events intervals (or else the scroll
5378 # will stop before the next event arrives - we're guessing the next interval
5379 # by averaging recent intervals).
5380 # This defines how much longer the duration is compared to the events
5381 # interval (percentage).
5382 - name: general.smoothScroll.durationToIntervalRatio
5383 type: RelaxedAtomicInt32
5387 - name: general.smoothScroll.lines
5388 type: RelaxedAtomicBool
5392 - name: general.smoothScroll.lines.durationMaxMS
5393 type: RelaxedAtomicInt32
5397 - name: general.smoothScroll.lines.durationMinMS
5398 type: RelaxedAtomicInt32
5402 - name: general.smoothScroll.mouseWheel
5403 type: RelaxedAtomicBool
5407 - name: general.smoothScroll.mouseWheel.durationMaxMS
5408 type: RelaxedAtomicInt32
5412 - name: general.smoothScroll.mouseWheel.durationMinMS
5413 type: RelaxedAtomicInt32
5417 - name: general.smoothScroll.other
5418 type: RelaxedAtomicBool
5422 - name: general.smoothScroll.other.durationMaxMS
5423 type: RelaxedAtomicInt32
5427 - name: general.smoothScroll.other.durationMinMS
5428 type: RelaxedAtomicInt32
5432 - name: general.smoothScroll.pages
5433 type: RelaxedAtomicBool
5437 - name: general.smoothScroll.pages.durationMaxMS
5438 type: RelaxedAtomicInt32
5442 - name: general.smoothScroll.pages.durationMinMS
5443 type: RelaxedAtomicInt32
5447 - name: general.smoothScroll.scrollbars
5448 type: RelaxedAtomicBool
5452 - name: general.smoothScroll.scrollbars.durationMaxMS
5453 type: RelaxedAtomicInt32
5457 - name: general.smoothScroll.scrollbars.durationMinMS
5458 type: RelaxedAtomicInt32
5462 - name: general.smoothScroll.pixels
5463 type: RelaxedAtomicBool
5467 - name: general.smoothScroll.pixels.durationMaxMS
5468 type: RelaxedAtomicInt32
5472 - name: general.smoothScroll.pixels.durationMinMS
5473 type: RelaxedAtomicInt32
5477 # This pref and general.smoothScroll.currentVelocityWeighting determine
5478 # the timing function.
5479 - name: general.smoothScroll.stopDecelerationWeighting
5484 # Alternative smooth scroll physics. ("MSD" = Mass-Spring-Damper)
5485 - name: general.smoothScroll.msdPhysics.enabled
5486 type: RelaxedAtomicBool
5487 value: @IS_NIGHTLY_BUILD@
5490 - name: general.smoothScroll.msdPhysics.continuousMotionMaxDeltaMS
5491 type: RelaxedAtomicInt32
5495 - name: general.smoothScroll.msdPhysics.motionBeginSpringConstant
5496 type: RelaxedAtomicInt32
5500 - name: general.smoothScroll.msdPhysics.slowdownMinDeltaMS
5501 type: RelaxedAtomicInt32
5505 - name: general.smoothScroll.msdPhysics.slowdownMinDeltaRatio
5510 - name: general.smoothScroll.msdPhysics.slowdownSpringConstant
5511 type: RelaxedAtomicInt32
5515 - name: general.smoothScroll.msdPhysics.regularSpringConstant
5516 type: RelaxedAtomicInt32
5520 #---------------------------------------------------------------------------
5521 # Prefs starting with "geo."
5522 #---------------------------------------------------------------------------
5524 # Is support for Navigator.geolocation enabled?
5530 # Time, in milliseconds, to wait for the location provider to spin up.
5536 #ifdef MOZ_ENABLE_DBUS
5537 # Whether to use Geoclue location provider (if available on the system).
5538 - name: geo.provider.use_geoclue
5543 # Whether to always provide high location accuracy, even if site
5544 # doesn't actually request this level of accuracy.
5545 # Almost no site correctly requests high accuracy so force it by default
5546 # for compatibility with other geolocation providers.
5547 - name: geo.provider.geoclue.always_high_accuracy
5553 #---------------------------------------------------------------------------
5554 # Prefs starting with "gfx."
5555 #---------------------------------------------------------------------------
5557 # Allow 24-bit colour when the hardware supports it.
5558 - name: gfx.android.rgb16.force
5563 - name: gfx.apitrace.enabled
5568 - name: gfx.blithelper.precision
5569 type: RelaxedAtomicUint32
5570 value: 2 # { 0: lowp, 1: mediump, 2: highp }
5573 - name: gfx.blithelper.lut-size.rgb.b
5574 type: RelaxedAtomicUint32
5577 - name: gfx.blithelper.lut-size.rgb.g
5578 type: RelaxedAtomicUint32
5581 - name: gfx.blithelper.lut-size.rgb.r
5582 type: RelaxedAtomicUint32
5586 - name: gfx.blithelper.lut-size.ycbcr.cb
5587 type: RelaxedAtomicUint32
5590 - name: gfx.blithelper.lut-size.ycbcr.cr
5591 type: RelaxedAtomicUint32
5594 - name: gfx.blithelper.lut-size.ycbcr.y
5595 type: RelaxedAtomicUint32
5599 # Nb: we ignore this pref on release and beta.
5600 - name: gfx.blocklist.all
5605 #if defined(XP_MACOSX)
5606 - name: gfx.cairo_quartz_cg_layer.enabled
5612 - name: gfx.canvas.accelerated
5614 #if defined(XP_MACOSX) || defined(XP_LINUX) && !defined(ANDROID)
5616 #elif defined(MOZ_WIDGET_ANDROID)
5623 # Whether to attempt to enable Accelerated Canvas2D regardless of blocklisting.
5624 - name: gfx.canvas.accelerated.force-enabled
5629 - name: gfx.canvas.accelerated.async-present
5630 type: RelaxedAtomicBool
5634 - name: gfx.canvas.accelerated.cache-items
5635 type: RelaxedAtomicUint32
5639 - name: gfx.canvas.accelerated.cache-size
5640 type: RelaxedAtomicUint32
5644 - name: gfx.canvas.accelerated.reserve-empty-cache
5645 type: RelaxedAtomicUint32
5649 - name: gfx.canvas.accelerated.max-draw-target-count
5650 type: RelaxedAtomicInt32
5654 - name: gfx.canvas.accelerated.max-size
5655 type: RelaxedAtomicInt32
5659 - name: gfx.canvas.accelerated.min-size
5660 type: RelaxedAtomicInt32
5664 - name: gfx.canvas.accelerated.max-surface-size
5665 type: RelaxedAtomicUint32
5669 - name: gfx.canvas.accelerated.shared-page-size
5670 type: RelaxedAtomicUint32
5674 # The minimum number of frames before acting on performance profile info
5675 - name: gfx.canvas.accelerated.profile-frames
5676 type: RelaxedAtomicUint32
5680 # The ratio of failed frames to total frames when to fall back from acceleration
5681 - name: gfx.canvas.accelerated.profile-fallback-ratio
5686 # The ratio of cache misses at which to fail a profile frame
5687 - name: gfx.canvas.accelerated.profile-cache-miss-ratio
5692 # The maximum size of the GPU path cache in MB.
5693 - name: gfx.canvas.accelerated.gpu-path-size
5694 type: RelaxedAtomicUint32
5698 # The maximum allowed complexity of a GPU path.
5699 - name: gfx.canvas.accelerated.gpu-path-complexity
5700 type: RelaxedAtomicUint32
5704 # Whether to accelerate stroked paths by converting them to fill paths.
5705 - name: gfx.canvas.accelerated.stroke-to-fill-path
5706 type: RelaxedAtomicBool
5710 # Whether to use aa-stroke to accelerate stroked paths.
5711 - name: gfx.canvas.accelerated.aa-stroke.enabled
5712 type: RelaxedAtomicBool
5716 # Draws an indicator if acceleration is used.
5717 - name: gfx.canvas.accelerated.debug
5718 type: RelaxedAtomicBool
5722 # 0x7fff is the maximum supported xlib surface size and is more than enough for canvases.
5723 - name: gfx.canvas.max-size
5724 type: RelaxedAtomicInt32
5728 - name: gfx.canvas.remote
5737 - name: gfx.canvas.remote.allow-in-parent
5742 # How long to wait in milliseconds for a texture to be resolved
5743 - name: gfx.canvas.remote.texture-timeout-ms
5744 type: RelaxedAtomicUint32
5748 # How many worker threads spawned for remote canvas
5749 # -1 - Calculate based on processor cores
5750 # 0 - No worker threads spawned, will do work on CanvasRenderThread
5751 # >0 - Create worker thread pool with given size
5752 - name: gfx.canvas.remote.worker-threads
5761 # Default size of the shmem buffers used for recording
5762 - name: gfx.canvas.remote.default-buffer-size
5763 type: RelaxedAtomicUint32
5767 # How many times to spin before waiting in remote canvas
5768 - name: gfx.canvas.remote.max-spin-count
5769 type: RelaxedAtomicUint32
5773 # How long to wait in milliseconds for the next event while in a transaction
5774 - name: gfx.canvas.remote.event-timeout-ms
5775 type: RelaxedAtomicUint32
5779 # How many times we have a spare buffer before we drop one
5780 - name: gfx.canvas.remote.drop-buffer-limit
5781 type: RelaxedAtomicUint32
5785 # Delay in milliseconds to drop buffers when there have been no non-empty transactions
5786 - name: gfx.canvas.remote.drop-buffer-milliseconds
5787 type: RelaxedAtomicUint32
5791 - name: gfx.canvas.willreadfrequently.enabled
5801 - name: gfx.color_management.display_profile
5802 type: DataMutexString
5804 mirror: always # But be warned: We cache the result.
5806 - name: gfx.color_management.force_srgb
5807 type: RelaxedAtomicBool
5811 - name: gfx.color_management.native_srgb
5812 type: RelaxedAtomicBool
5813 #if defined(XP_MACOSX)
5820 - name: gfx.color_management.enablev4
5821 type: RelaxedAtomicBool
5825 # 0 = Off, 1 = Full, 2 = Tagged Images Only.
5826 # See CMSMode in gfx/thebes/gfxPlatform.h.
5827 - name: gfx.color_management.mode
5828 type: RelaxedAtomicInt32
5832 # The zero default here should match QCMS_INTENT_DEFAULT from qcms.h
5833 - name: gfx.color_management.rendering_intent
5834 type: RelaxedAtomicInt32
5838 - name: gfx.color_management.rec709_gamma_as_srgb
5839 type: RelaxedAtomicBool
5840 value: true # Tragic backwards compat.
5843 - name: gfx.color_management.rec2020_gamma_as_rec709
5844 type: RelaxedAtomicBool
5845 value: true # Match naive behavior, but hopefully we can stop soon!
5848 # Whether GL contexts can be migrated to a different GPU (to match the one the
5849 # OS is using for composition).
5851 # 0 = force disable migration
5852 # 1 = use migration where in safe configurations (the default)
5853 # 2 = force enable migration (for testing)
5854 - name: gfx.compositor.gpu-migration
5855 type: RelaxedAtomicInt32
5859 - name: gfx.core-animation.tint-opaque
5860 type: RelaxedAtomicBool
5865 # Create specialized video-only layers for video content in
5866 # fullscreen windows. Consistently works well on Apple Silicon,
5867 # some issues remain on Intel hardware.
5868 - name: gfx.core-animation.specialize-video
5869 type: RelaxedAtomicBool
5870 #if defined(MOZ_AARCH64)
5878 #if defined(XP_MACOSX) && defined(NIGHTLY_BUILD)
5879 # Spoof the timing of the video sample instead of marking the untimed
5880 # sample to be displayed immediately.
5881 - name: gfx.core-animation.specialize-video.spoof-timing
5882 type: RelaxedAtomicBool
5886 # Check that the sample has a color space and if it doesn't, log that
5887 # and supply the default color space from the main display.
5888 - name: gfx.core-animation.specialize-video.check-color-space
5889 type: RelaxedAtomicBool
5893 # Log properties of the video surface, buffer, and format.
5894 - name: gfx.core-animation.specialize-video.log
5895 type: RelaxedAtomicBool
5901 - name: gfx.core-animation.low-power-telemetry-frames
5907 #if defined(MOZ_WIDGET_ANDROID)
5908 # Overrides the glClear color used when the surface origin is not (0, 0)
5909 # Used for drawing a border around the content.
5910 - name: gfx.compositor.override.clear-color.r
5915 - name: gfx.compositor.override.clear-color.g
5920 - name: gfx.compositor.override.clear-color.b
5925 - name: gfx.compositor.override.clear-color.a
5929 #endif # defined(MOZ_WIDGET_ANDROID)
5931 - name: gfx.content.always-paint
5932 type: RelaxedAtomicBool
5937 - name: gfx.content.skia-font-cache-size
5942 - name: gfx.device-reset.limit
5947 - name: gfx.device-reset.threshold-ms
5953 # Whether to disable the automatic detection and use of direct2d.
5954 - name: gfx.direct2d.disabled
5959 # Whether to attempt to enable Direct2D regardless of automatic detection or
5961 - name: gfx.direct2d.force-enabled
5966 - name: gfx.direct2d.target-independent-rasterization.disabled
5971 - name: gfx.direct3d11.reuse-decoder-device
5975 # Enable reuse decoder device even when it is blocked.
5976 - name: gfx.direct3d11.reuse-decoder-device-force-enabled
5981 - name: gfx.direct3d11.allow-keyed-mutex
5982 type: RelaxedAtomicBool
5986 - name: gfx.direct3d11.use-double-buffering
5987 type: RelaxedAtomicBool
5991 - name: gfx.direct3d11.enable-debug-layer
5996 - name: gfx.direct3d11.break-on-error
6001 - name: gfx.direct3d11.sleep-on-create-device
6006 # Rate by which the frame rate is divided. I.e. at a number higher than 1 we
6007 # will only refresh every <x> frames.
6008 - name: gfx.display.frame-rate-divisor
6009 type: RelaxedAtomicInt32
6013 - name: gfx.display.max-frame-rate
6014 type: RelaxedAtomicInt32
6018 # Whether to preserve color bitmap tables in fonts (bypassing OTS).
6019 # Currently these are supported only on platforms where we use Freetype
6020 # to render fonts (Linux/Gtk and Android).
6021 - name: gfx.downloadable_fonts.keep_color_bitmaps
6022 type: RelaxedAtomicBool
6026 # Whether to validate OpenType variation tables in fonts.
6027 - name: gfx.downloadable_fonts.validate_variation_tables
6028 type: RelaxedAtomicBool
6032 # Whether OTS validation should be applied to OpenType Layout (OTL) tables.
6033 - name: gfx.downloadable_fonts.otl_validation
6034 type: RelaxedAtomicBool
6035 value: @IS_NOT_RELEASE_OR_BETA@
6038 - name: gfx.e10s.font-list.shared
6043 # Do we fire a notification about missing fonts, so the front-end can decide
6044 # whether to try and do something about it (e.g. download additional fonts)?
6045 - name: gfx.missing_fonts.notify
6046 type: RelaxedAtomicBool
6050 #if !defined(MOZ_WIDGET_ANDROID)
6051 - name: gfx.egl.prefer-gles.enabled
6053 #if defined(MOZ_WIDGET_GTK) && defined(MOZ_AARCH64)
6061 # [Windows] Whether registry FontSubstitutes entries are used unconditionally,
6062 # or only if the original font is not available.
6064 - name: gfx.windows-font-substitutes.always
6070 - name: gfx.font-list-omt.enabled
6072 #if defined(XP_MACOSX)
6079 # [Android] OPPO, realme and OnePlus device seem to crash when using Font
6080 # Match API. We turn off this feature on these devices. Set true if you want to
6081 # turn on it at force.
6082 #if defined(MOZ_WIDGET_ANDROID)
6083 - name: gfx.font-list.use_font_match_api.force-enabled
6089 # Whether to load fonts (e.g. Twemoji Mozilla) bundled with the application:
6090 # -1 - Auto behavior based on OS version (currently, disables loading on
6091 # "low-memory" Android devices)
6092 # 0 - Skip loading any bundled fonts
6093 # 1 - Always load bundled fonts
6094 - name: gfx.bundled-fonts.activate
6099 - name: gfx.font_loader.delay
6108 # Disable antialiasing of Ahem, for use in tests.
6109 - name: gfx.font_rendering.ahem_antialias_none
6110 type: RelaxedAtomicBool
6114 #if defined(XP_MACOSX)
6115 # Set to true to revert from HarfBuzz AAT shaping to the old Core Text
6117 - name: gfx.font_rendering.coretext.enabled
6118 type: RelaxedAtomicBool
6123 - name: gfx.font_rendering.colr_v1.enabled
6124 type: RelaxedAtomicBool
6128 - name: gfx.font_rendering.opentype_svg.enabled
6129 type: RelaxedAtomicBool
6134 - name: gfx.font_rendering.fallback.async
6135 type: RelaxedAtomicBool
6139 # whether to always search all font cmaps during system font fallback
6140 - name: gfx.font_rendering.fallback.always_use_cmaps
6141 type: RelaxedAtomicBool
6145 # whether to do font fallback for codepoints with General Category = Unassigned
6146 - name: gfx.font_rendering.fallback.unassigned_chars
6147 type: RelaxedAtomicBool
6151 #ifdef MOZ_WIDGET_GTK
6152 - name: gfx.font_rendering.fontconfig.max_generic_substitutions
6153 type: RelaxedAtomicUint32
6159 # Whether the DirectWrite bold simulation should be used when a bold font-weight
6160 # is requested but no bold face available in the family. This renders poorly with
6161 # some third-party fonts, so by default we disable it for webfonts and allow it
6162 # only with locally-installed fonts.
6164 # 0 - never use DWrite bold simulation; always multi-strike instead
6165 # 1 - use DWrite bold for installed fonts, multi-strike for webfont resources
6166 # 2 - use DWrite bold for all fonts
6167 - name: gfx.font_rendering.directwrite.bold_simulation
6168 type: RelaxedAtomicUint32
6173 - name: gfx.font_rendering.graphite.enabled
6174 type: RelaxedAtomicBool
6178 # Cache shaped word results
6179 - name: gfx.font_rendering.wordcache.charlimit
6180 type: RelaxedAtomicUint32
6184 # Cache shaped word results
6185 - name: gfx.font_rendering.wordcache.maxentries
6186 type: RelaxedAtomicUint32
6190 # The level of logging:
6193 # - 2: adds warnings;
6194 # - 3 or 4: adds debug logging.
6195 # If you set the value to 4, you will also need to set the environment
6196 # variable MOZ_LOG to gfx:4. See mozilla/Logging.h for details.
6197 - name: gfx.logging.level
6198 type: RelaxedAtomicInt32
6199 value: mozilla::gfx::LOG_DEFAULT
6201 include: mozilla/gfx/LoggingConstants.h
6203 - name: gfx.logging.crash.length
6208 # The maximums here are quite conservative, we can tighten them if problems show up.
6209 - name: gfx.logging.texture-usage.enabled
6214 - name: gfx.logging.peak-texture-usage.enabled
6219 - name: gfx.logging.slow-frames.enabled
6224 # Use gfxPlatform::MaxAllocSize instead of the pref directly.
6225 - name: gfx.max-alloc-size
6227 value: (int32_t)0x7FFFFFFF
6229 do_not_use_directly: true
6231 # Use gfxPlatform::MaxTextureSize instead of the pref directly.
6232 - name: gfx.max-texture-size
6234 value: (int32_t)32767
6236 do_not_use_directly: true
6238 # Enable OffscreenCanvas everywhere.
6239 - name: gfx.offscreencanvas.enabled
6240 type: RelaxedAtomicBool
6244 - name: gfx.omta.background-color
6249 - name: gfx.partialpresent.force
6250 type: RelaxedAtomicInt32
6255 - name: gfx.swap-interval.glx
6256 type: RelaxedAtomicBool
6260 - name: gfx.swap-interval.egl
6261 type: RelaxedAtomicBool
6263 #ifdef MOZ_WIDGET_ANDROID
6270 # Log severe performance warnings to the error console and profiles.
6271 # This should be use to quickly find which slow paths are used by test cases.
6272 - name: gfx.perf-warnings.enabled
6273 type: RelaxedAtomicBool
6278 # Whether to force using GLX over EGL.
6279 - name: gfx.x11-egl.force-disabled
6284 # Whether to force using EGL over GLX.
6285 - name: gfx.x11-egl.force-enabled
6290 - name: gfx.x11.glx_sgi_video_sync
6296 - name: gfx.testing.device-fail
6297 type: RelaxedAtomicBool
6301 - name: gfx.testing.device-reset
6302 type: RelaxedAtomicInt32
6306 - name: gfx.text.disable-aa
6311 - name: gfx.text.subpixel-position.force-enabled
6316 - name: gfx.text.subpixel-position.force-disabled
6321 - name: gfx.use-iosurface-textures
6326 - name: gfx.use-mutex-on-present
6331 # Use SurfaceTextures as preferred backend for TextureClient/Host.
6332 - name: gfx.use-surfacetexture-textures
6337 - name: gfx.vsync.compositor.unobserve-count
6342 - name: gfx.vsync.force-disable-waitforvblank
6343 type: RelaxedAtomicBool
6347 - name: gfx.will-change.ignore-opacity
6348 type: RelaxedAtomicBool
6352 # Should we override the blocklist to enable WebGPU?
6353 - name: gfx.webgpu.ignore-blocklist
6358 # Whether to use the WebRender hardware backend
6359 - name: gfx.webrender.all
6365 - name: gfx.webrender.force-angle
6371 # WebRender is not enabled when there is no GPU process on window when
6372 # WebRender uses ANGLE. It is for avoiding that WebGL and WebRender use ANGLE
6373 # at once. But there is a case that we want to enable WebRender for testing.
6375 - name: gfx.webrender.enabled-no-gpu-process-with-angle-win
6381 - name: gfx.webrender.svg-images
6382 type: RelaxedAtomicBool
6386 - name: gfx.webrender.svg-shapes
6387 type: RelaxedAtomicBool
6391 - name: gfx.webrender.debug.blob.paint-flashing
6392 type: RelaxedAtomicBool
6396 - name: gfx.webrender.debug.enable-capture
6401 - name: gfx.webrender.debug.dl.dump-parent
6402 type: RelaxedAtomicBool
6406 - name: gfx.webrender.debug.dl.dump-content
6407 type: RelaxedAtomicBool
6411 - name: gfx.webrender.debug.dl.dump-content-serialized
6412 type: RelaxedAtomicBool
6416 #ifdef MOZ_WIDGET_GTK
6417 - name: gfx.webrender.reject-software-driver
6423 - name: gfx.webrender.debug.highlight-painted-layers
6424 type: RelaxedAtomicBool
6428 - name: gfx.webrender.late-scenebuild-threshold
6429 type: RelaxedAtomicInt32
6433 - name: gfx.webrender.max-filter-ops-per-chain
6434 type: RelaxedAtomicUint32
6438 - name: gfx.webrender.batching.lookback
6443 - name: gfx.webrender.blob-tile-size
6448 - name: gfx.webrender.batched-upload-threshold
6450 #if defined(MOZ_WIDGET_ANDROID)
6457 - name: gfx.webrender.compositor
6459 #if defined(XP_WIN) || defined(XP_MACOSX)
6466 - name: gfx.webrender.scissored-cache-clears.enabled
6471 - name: gfx.webrender.scissored-cache-clears.force-enabled
6476 - name: gfx.webrender.compositor.force-enabled
6481 - name: gfx.webrender.compositor.max_update_rects
6486 - name: gfx.webrender.compositor.surface-pool-size
6491 # Number of damage rects we can give to the compositor for a new frame with
6492 # partial present. This controls whether partial present is used or not.
6493 - name: gfx.webrender.max-partial-present-rects
6495 #if defined(XP_WIN) || defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GTK)
6502 # Whether or not we can reuse the buffer contents using the GL buffer age
6503 # extension, if supported by the platform. This requires partial present
6505 - name: gfx.webrender.allow-partial-present-buffer-age
6510 # Whether or not we should force partial present on.
6511 - name: gfx.webrender.force-partial-present
6516 - name: gfx.webrender.enable-gpu-markers
6525 - name: gfx.webrender.enable-item-cache
6530 # Whether or not to fallback from WebRender to Software WebRender.
6531 - name: gfx.webrender.fallback.software
6537 # Whether to use an overlay of hardware decoded video with DirectComposition
6538 - name: gfx.webrender.dcomp-video-hw-overlay-win
6542 # Enable hardware decoded video overlay even when it is blocked.
6543 - name: gfx.webrender.dcomp-video-hw-overlay-win-force-enabled
6547 # Whether to use a yuv video overlay layers with DirectComposition
6548 - name: gfx.webrender.dcomp-video-yuv-overlay-win
6552 - name: gfx.webrender.dcomp-video-vp-scaling-win
6556 # Whether to use virtual surfaces, as opposed to each tile owning a surface.
6557 - name: gfx.webrender.dcomp-use-virtual-surfaces
6561 # Whether to use an overlay of software decoded video with DirectComposition
6562 - name: gfx.webrender.dcomp-video-sw-overlay-win
6566 # Enable software decoded video overlay even when it is blocked.
6567 - name: gfx.webrender.dcomp-video-sw-overlay-win-force-enabled
6571 - name: gfx.webrender.dcomp-video-check-slow-present
6572 type: RelaxedAtomicBool
6575 # Force triple buffering in overlay's video swap chain
6576 - name: gfx.webrender.dcomp-video-force-triple-buffering
6577 type: RelaxedAtomicBool
6580 - name: gfx.webrender.dcomp-video-swap-chain-present-interval-0
6581 type: RelaxedAtomicBool
6584 - name: gfx.video.convert-yuv-to-nv12.image-host-win
6585 type: RelaxedAtomicBool
6590 # Whether or not fallback to Software WebRender requires the GPU process.
6591 - name: gfx.webrender.fallback.software.requires-gpu-process
6596 - name: gfx.webrender.program-binary-disk
6598 #if defined(XP_WIN) || defined(ANDROID)
6605 - name: gfx.webrender.use-optimized-shaders
6610 - name: gfx.webrender.precache-shaders
6615 # When gl debug message is a high severity message, forwward it to gfx critical
6617 - name: gfx.webrender.gl-debug-message-critical-note
6619 #if defined(XP_WIN) && defined(NIGHTLY_BUILD)
6626 # Enable printing gl debug messages
6627 - name: gfx.webrender.gl-debug-message-print
6632 #ifdef NIGHTLY_BUILD
6633 # Keep this pref hidden on non-nightly builds to avoid people accidentally
6635 - name: gfx.webrender.panic-on-gl-error
6642 # Enables display of performance debugging counters when DirectComposition
6644 # Performance counters are displayed on the top-right corner of the screen.
6645 - name: gfx.webrender.debug.dcomp-counter
6646 type: RelaxedAtomicBool
6649 # Enables highlighting redraw regions of DCompositionVisual
6650 - name: gfx.webrender.debug.dcomp-redraw-regions
6651 type: RelaxedAtomicBool
6657 # Files show up in $HOME/Desktop/nativelayerdumps-PID/frame-123.html
6658 - name: gfx.webrender.debug.dump-native-layer-tree-to-file
6659 type: RelaxedAtomicBool
6664 - name: gfx.webrender.enable-low-priority-pool
6665 type: RelaxedAtomicBool
6666 #if defined(ANDROID)
6673 # Force subpixel anti-aliasing as much as possible, despite performance cost.
6674 - name: gfx.webrender.quality.force-subpixel-aa-where-possible
6679 - name: gfx.webrender.enable-subpixel-aa
6682 #ifdef MOZ_WIDGET_ANDROID
6689 - name: gfx.webrender.enable-client-storage
6695 # Width of WebRender tile size
6696 - name: gfx.webrender.picture-tile-width
6697 type: RelaxedAtomicInt32
6701 # Width of WebRender tile size
6702 - name: gfx.webrender.picture-tile-height
6703 type: RelaxedAtomicInt32
6707 # WebRender upper bound for shared surface size
6708 # According to apitrace, textures larger than 2048 break fast clear
6709 # optimizations on some intel drivers. We sometimes need to go larger, but
6710 # we try to avoid it.
6711 - name: gfx.webrender.max-shared-surface-size
6716 # Whether to use EGL robustness or not.
6717 - name: gfx.webrender.prefer-robustness
6719 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
6726 # Whether to use the WebRender software backend
6727 - name: gfx.webrender.software
6732 # Whether to use the D3D11 RenderCompositor when using WebRender software backend
6733 - name: gfx.webrender.software.d3d11
6738 - name: gfx.webrender.software.opengl
6740 #if defined(MOZ_WIDGET_ANDROID)
6747 - name: gfx.webrender.software.d3d11.upload-mode
6748 type: RelaxedAtomicInt32
6752 # Whether to force widgets to don't support acceleration to use WebRender
6754 - name: gfx.webrender.unaccelerated-widget.force
6755 type: RelaxedAtomicBool
6759 # Enable a lower quality, but higher performance pinch-zoom mode. Primarily
6760 # for devices with weak GPUs, or when running SWGL.
6761 - name: gfx.webrender.low-quality-pinch-zoom
6763 #if defined(MOZ_WIDGET_ANDROID) && defined(NIGHTLY_BUILD)
6770 # Disable wait of GPU execution completion
6771 - name: gfx.webrender.wait-gpu-finished.disabled
6780 # Enable NVIDIA RTX Video Super Resolution for video overlay on Windows
6781 # Note: This is also a setting in NVIDIA's driver settings, so once this is
6782 # stable, it should default to true
6783 - name: gfx.webrender.super-resolution.nvidia
6788 # Use vsync events generated by hardware
6789 - name: gfx.work-around-driver-bugs
6794 - name: gfx.ycbcr.accurate-conversion
6795 type: RelaxedAtomicBool
6799 #---------------------------------------------------------------------------
6800 # Prefs starting with "gl." (OpenGL)
6801 #---------------------------------------------------------------------------
6803 - name: gl.allow-high-power
6804 type: RelaxedAtomicBool
6808 - name: gl.ignore-dx-interop2-blacklist
6809 type: RelaxedAtomicBool
6813 - name: gl.use-tls-is-current
6814 type: RelaxedAtomicInt32
6818 #---------------------------------------------------------------------------
6819 # Prefs starting with "html5."
6820 #---------------------------------------------------------------------------
6822 # Time in milliseconds between the time a network buffer is seen and the timer
6823 # firing when the timer hasn't fired previously in this parse in the
6824 # off-the-main-thread HTML5 parser.
6825 - name: html5.flushtimer.initialdelay
6826 type: RelaxedAtomicInt32
6830 # Time in milliseconds between the time a network buffer is seen and the timer
6831 # firing when the timer has already fired previously in this parse.
6832 - name: html5.flushtimer.subsequentdelay
6833 type: RelaxedAtomicInt32
6837 #---------------------------------------------------------------------------
6838 # Prefs starting with "idle_period."
6839 #---------------------------------------------------------------------------
6841 - name: idle_period.min
6846 - name: idle_period.during_page_load.min
6851 - name: idle_period.cross_process_scheduling
6852 type: RelaxedAtomicBool
6856 #---------------------------------------------------------------------------
6857 # Prefs starting with "image."
6858 #---------------------------------------------------------------------------
6860 # The maximum size (in kB) that the aggregate frames of an animation can use
6861 # before it starts to discard already displayed frames and redecode them as
6863 - name: image.animated.decode-on-demand.threshold-kb
6864 type: RelaxedAtomicUint32
6868 # The minimum number of frames we want to have buffered ahead of an
6869 # animation's currently displayed frame.
6870 - name: image.animated.decode-on-demand.batch-size
6871 type: RelaxedAtomicUint32
6875 # Whether we should recycle already displayed frames instead of discarding
6876 # them. This saves on the allocation itself, and may be able to reuse the
6877 # contents as well. Only applies if generating full frames.
6878 - name: image.animated.decode-on-demand.recycle
6883 # Resume an animated image from the last displayed frame rather than
6884 # advancing when out of view.
6885 - name: image.animated.resume-from-last-displayed
6886 type: RelaxedAtomicBool
6890 # Maximum number of surfaces for an image before entering "factor of 2" mode.
6891 # This in addition to the number of "native" sizes of an image. A native size
6892 # is a size for which we can decode a frame without up or downscaling. Most
6893 # images only have 1, but some (i.e. ICOs) may have multiple frames for the
6894 # same data at different sizes.
6895 - name: image.cache.factor2.threshold-surfaces
6896 type: RelaxedAtomicInt32
6900 # Maximum size of a surface in KB we are willing to produce when rasterizing
6902 - name: image.cache.max-rasterized-svg-threshold-kb
6903 type: RelaxedAtomicInt32
6907 # The maximum size, in bytes, of the decoded images we cache.
6908 - name: image.cache.size
6913 # A weight, from 0-1000, to place on time when comparing to size.
6914 # Size is given a weight of 1000 - timeweight.
6915 - name: image.cache.timeweight
6920 # Decode all images automatically on load, ignoring our normal heuristics.
6921 - name: image.decode-immediately.enabled
6922 type: RelaxedAtomicBool
6926 # Decode all images synchronously
6927 - name: image.decode-sync.enabled
6932 # Whether we attempt to downscale images during decoding.
6933 - name: image.downscale-during-decode.enabled
6934 type: RelaxedAtomicBool
6938 # Whether we use EXIF metadata for image density.
6939 - name: image.exif-density-correction.enabled
6940 type: RelaxedAtomicBool
6944 # Whether EXIF density metadata is sanity checked against PixelXDimension and PixelYDimension
6945 - name: image.exif-density-correction.sanity-check.enabled
6946 type: RelaxedAtomicBool
6950 # The threshold for inferring that changes to an <img> element's |src|
6951 # attribute by JavaScript represent an animation, in milliseconds. If the |src|
6952 # attribute is changing more frequently than this value, then we enter a
6953 # special "animation mode" which is designed to eliminate flicker. Set to 0 to
6955 - name: image.infer-src-animation.threshold-ms
6956 type: RelaxedAtomicUint32
6960 # Whether the network request priority should be adjusted according
6961 # the layout and view frame position of each particular image.
6962 - name: image.layout_network_priority
6963 type: RelaxedAtomicBool
6967 # Chunk size for calls to the image decoders.
6968 - name: image.mem.decode_bytes_at_a_time
6973 # Discards inactive image frames and re-decodes them on demand from
6975 - name: image.mem.discardable
6976 type: RelaxedAtomicBool
6980 # Discards inactive image frames of _animated_ images and re-decodes them on
6981 # demand from compressed data. Has no effect if image.mem.discardable is false.
6982 - name: image.mem.animated.discardable
6987 # Enable extra information for debugging in the image memory reports.
6988 - name: image.mem.debug-reporting
6989 type: RelaxedAtomicBool
6993 # Force unmapping of unused shared surfaces after a timeout period or when we
6994 # encounter virtual memory pressure. By default this is only enabled on 32-bit
6996 - name: image.mem.shared.unmap.force-enabled
7001 # Minimum timeout to unmap shared surfaces since they have been last used,
7003 - name: image.mem.shared.unmap.min_expiration_ms
7008 # Mininum size for shared surfaces to consider unmapping, in kilobytes.
7009 - name: image.mem.shared.unmap.min_threshold_kb
7014 # How much of the data in the surface cache is discarded when we get a memory
7015 # pressure notification, as a fraction. The discard factor is interpreted as a
7016 # reciprocal, so a discard factor of 1 means to discard everything in the
7017 # surface cache on memory pressure, a discard factor of 2 means to discard half
7018 # of the data, and so forth. The default should be a good balance for desktop
7019 # and laptop systems, where we never discard visible images.
7020 - name: image.mem.surfacecache.discard_factor
7025 # Maximum size for the surface cache, in kilobytes.
7026 - name: image.mem.surfacecache.max_size_kb
7031 # Minimum timeout for expiring unused images from the surface cache, in
7032 # milliseconds. This controls how long we store cached temporary surfaces.
7033 - name: image.mem.surfacecache.min_expiration_ms
7038 # The surface cache's size, within the constraints of the maximum size set
7039 # above, is determined as a fraction of main memory size. The size factor is
7040 # interpreted as a reciprocal, so a size factor of 4 means to use no more than
7041 # 1/4 of main memory. The default should be a good balance for most systems.
7042 - name: image.mem.surfacecache.size_factor
7047 # Maximum size in kilobytes that we allow to allocate an imgFrame, meant for
7048 # testing/fuzzing purposes. -1 disables this limit (there are other limits in
7050 - name: image.mem.max_legal_imgframe_size_kb
7055 # Whether we record SVG images as blobs or not.
7056 - name: image.svg.blob-image
7057 type: RelaxedAtomicBool
7061 # Whether we attempt to decode AVIF images or not.
7062 - name: image.avif.enabled
7063 type: RelaxedAtomicBool
7064 #if defined(MOZ_AV1)
7071 # How strict we are in accepting/rejecting AVIF inputs according to whether they
7072 # conform to the specification
7073 # 0 = Permissive: accept whatever we can simply, unambiguously interpret
7074 # 1 = Normal: reject violations of "shall" specification directives
7075 # 2 = Strict: reject violations of "should" specification directives
7076 - name: image.avif.compliance_strictness
7077 type: RelaxedAtomicInt32
7081 # Whether we apply container-level transforms like mirroring and rotation
7082 - name: image.avif.apply_transforms
7083 type: RelaxedAtomicBool
7087 # Whether we use dav1d (true) or libaom (false) to decode AVIF image
7088 - name: image.avif.use-dav1d
7089 type: RelaxedAtomicBool
7093 # Whether to allow decoding of animated AVIF sequences.
7094 - name: image.avif.sequence.enabled
7095 type: RelaxedAtomicBool
7099 # Whether AVIF files containing sequences should be animated even when the
7100 # major brand is set to 'avif'.
7101 - name: image.avif.sequence.animate_avif_major_branded_images
7102 type: RelaxedAtomicBool
7106 # Whether we attempt to decode JXL images or not.
7107 - name: image.jxl.enabled
7108 type: RelaxedAtomicBool
7112 #---------------------------------------------------------------------------
7113 # Prefs starting with "intl."
7114 #---------------------------------------------------------------------------
7117 # Whether making Gecko TSF-aware or only working with IMM. TSF is a modern
7118 # IME API set of Windows which replaces IMM APIs. Unless you can avoid the
7119 # problem which you see with enabling TSF, you shouldn't change this pref
7120 # to false since IMM handler is now not maintained nor tested with latest
7121 # Windows. If you need to change this pref to false, please file a bug to
7122 # <https://bugzilla.mozilla.org>.
7123 # Restart required to apply this pref change.
7124 - name: intl.tsf.enabled
7129 # Whether Gecko creates or does not create native caret for legacy ATOK
7131 - name: intl.tsf.hack.atok.create_native_caret
7136 # Whether Gecko returns available composition string rect or TS_E_NOLAYOUT
7137 # from ITextStoreACP::GetTextExt() when the specified range is same as the
7138 # range of composition string but some character rects in it are still
7139 # dirty if and only if ATOK is active TIP.
7140 # Note that this is ignored if active ATOK is or older than 2016 and
7141 # create_native_caret is true.
7142 - name: intl.tsf.hack.atok.do_not_return_no_layout_error_of_composition_string
7147 # Whether Gecko sets input scope of ATOK to "search" or never does it.
7148 # When "search" is set to the input scope, ATOK may stop their suggestions.
7149 # To avoid it, turn this pref on, or changing the settings in ATOK.
7150 # Note that if you enable this pref and you use the touch keyboard for touch
7151 # screens, you cannot access some specific features for a "search" input
7153 - name: intl.tsf.hack.atok.search_input_scope_disabled
7158 # Whether Gecko returns caret rect before composition string or TS_E_NOLAYOUT
7159 # from ITextStoreACP::GetTextExt() when the specified range is larger than
7160 # composition start offset if and only if Free ChangJie is active TIP.
7161 - name: intl.tsf.hack.free_chang_jie.do_not_return_no_layout_error
7166 # Whether Gecko returns available composition string rect or TS_E_NOLAYOUT
7167 # from ITextStoreACP::GetTextExt() when the specified range is same as the
7168 # range of composition string but some character rects in it are still
7169 # dirty if and only if Japanist 10 is active TIP.
7170 - name: intl.tsf.hack.japanist10.do_not_return_no_layout_error_of_composition_string
7175 # Whether Gecko returns previous character rect or TS_E_NOLAYOUT from
7176 # ITfContextView::GetTextExt() when the specified range is the first
7177 # character of selected clause of composition string if and only if Japanese TIP
7178 # of Microsoft is active.
7179 - name: intl.tsf.hack.ms_japanese_ime.do_not_return_no_layout_error_at_first_char
7184 # Whether Gecko returns previous character rect or TS_E_NOLAYOUT from
7185 # ITfContextView::GetTextExt() when the specified range is the caret of
7186 # composition string if and only if Japanese TIP of Microsoft is active.
7187 - name: intl.tsf.hack.ms_japanese_ime.do_not_return_no_layout_error_at_caret
7192 # Whether Gecko returns caret rect before composition string or TS_E_NOLAYOUT
7193 # from ITfContextView::GetTextExt() when the specified range is larger than
7194 # composition start offset if and only Simplified Chinese TIP of Microsoft
7196 - name: intl.tsf.hack.ms_simplified_chinese.do_not_return_no_layout_error
7201 # Whether Geckos hacks ITextStoreACP::QueryInsert() or not. The method should
7202 # return new selection after specified length text is inserted at specified
7203 # range. However, Microsoft Pinyin and Microsoft Wubi expect that the result
7204 # is same as specified range. If following prefs are true,
7205 # ITextStoreACP::QueryInsert() returns specified range only when one of the
7207 - name: intl.tsf.hack.ms_simplified_chinese.query_insert_result
7212 # Whether Gecko returns caret rect before composition string or TS_E_NOLAYOUT
7213 # from ITfContextView::GetTextExt() when the specified range is larger than
7214 # composition start offset if and only Traditional Chinese TIP of Microsoft
7216 - name: intl.tsf.hack.ms_traditional_chinese.do_not_return_no_layout_error
7221 # Whether Geckos hacks ITextStoreACP::QueryInsert() or not. The method should
7222 # return new selection after specified length text is inserted at specified
7223 # range. However, Microsoft ChangJie and Microsoft Quick expect that the
7224 # result is same as specified range. If following prefs are true,
7225 # ITextStoreACP::QueryInsert() returns specified range only when one of the
7227 - name: intl.tsf.hack.ms_traditional_chinese.query_insert_result
7232 # Whether Gecko sets input scope of the URL bar to IS_DEFAULT when black
7233 # listed IMEs are active or does not. If you use tablet mode mainly and you
7234 # want to use touch keyboard for URL when you set focus to the URL bar, you
7235 # can set this to false. Then, you'll see, e.g., ".com" key on the keyboard.
7236 # However, if you set this to false, such IMEs set its open state to "closed"
7237 # when you set focus to the URL bar. I.e., input mode is automatically
7238 # changed to English input mode.
7239 # Known buggy IME list:
7240 # - Microsoft IME for Japanese
7241 # - Google Japanese Input
7242 # - Microsoft Bopomofo
7243 # - Microsoft ChangJie
7244 # - Microsoft Phonetic
7246 # - Microsoft New ChangJie
7247 # - Microsoft New Phonetic
7248 # - Microsoft New Quick
7249 # - Microsoft Pinyin
7250 # - Microsoft Pinyin New Experience Input Style
7252 # - Microsoft IME for Korean (except on Win7)
7253 # - Microsoft Old Hangul
7254 - name: intl.ime.hack.set_input_scope_of_url_bar_to_default
7259 # On Windows 10 Build 17643 (an Insider Preview build of RS5), Microsoft
7260 # have fixed the caller of ITextACPStore::GetTextExt() to return
7261 # TS_E_NOLAYOUT to TIP as-is, rather than converting to E_FAIL.
7262 # Therefore, if TIP supports asynchronous layout computation perfectly, we
7263 # can return TS_E_NOLAYOUT and TIP waits next OnLayoutChange()
7264 # notification. However, some TIPs still have some bugs of asynchronous
7265 # layout support. We keep hacking the result of GetTextExt() like running
7266 # on Windows 10, however, there could be unknown TIP bugs if we stop
7267 # hacking the result. So, user can stop checking build ID to make Gecko
7268 # hack the result forcibly.
7269 - name: intl.tsf.hack.allow_to_stop_hacking_on_build_17643_or_later
7271 value: @IS_EARLY_BETA_OR_EARLIER@
7274 # If true, automatically extend selection to cluster boundaries when
7275 # TSF/TIP requests to select from/by middle of a cluster.
7276 - name: intl.tsf.hack.extend_setting_selection_range_to_cluster_boundaries
7278 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
7281 # Whether Gecko supports IMM even if TSF is enabled. This pref exists
7282 # only for check TSF behavior of new versions. Therefore, users should
7283 # not set this to false for daily use.
7284 - name: intl.tsf.support_imm
7289 # If true, TSF and TIP (IME) can retrieve URL of the document containing
7290 # the focused element. When this is set to true, Gecko exposes the spec
7292 # And Gecko exposes only "http" and "https" URLs. E.g., "data", "blob",
7293 # "file" URLs are never exposed.
7294 - name: intl.tsf.expose_url.allowed
7299 # If true, TSF and TIP (IME) can retrieve URL of the document containing
7300 # the focused element in the private browsing mode too.
7301 - name: intl.tsf.expose_url_in_private_browsing.allowed
7306 #if defined(ENABLE_TESTS)
7307 # If true, NS_GetComplexLineBreaks compares the line breaks produced in the
7308 # content process using the Uniscribe line breaker, with those from a
7309 # brokered call to the parent.
7310 - name: intl.compare_against_brokered_complex_line_breaks
7317 # If you use legacy Chinese IME which puts an ideographic space to composition
7318 # string as placeholder, this pref might be useful. If this is true and when
7319 # web contents forcibly commits composition (e.g., moving focus), the
7320 # ideographic space will be ignored (i.e., commits with empty string).
7321 - name: intl.ime.remove_placeholder_character_at_commit
7327 #if defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK)
7328 # Whether text input without keyboard press nor IME composition should cause a
7329 # set of composition events or not. E.g., when you use Emoji picker on macOS,
7330 # it inserts an Emoji character directly. If set to true, `compositionstart`,
7331 # `compositionupdate` and `compositionend` events will be fired, and the
7332 # correspnding `beforeinput` events are not cancelable. Otherwise, if set to
7333 # false, any user input events are not exposed to web apps but only
7334 # `beforeinput` event is fired as "insert text" as a cancelable event.
7335 - name: intl.ime.use_composition_events_for_insert_text
7341 # If true, we use UAX14/29 compatible segmenter rules using ICU4X
7342 - name: intl.icu4x.segmenter.enabled
7343 type: RelaxedAtomicBool
7347 #---------------------------------------------------------------------------
7348 # Prefs starting with "javascript."
7350 # NOTE: SpiderMonkey starts up before `mirror: once` preferences are sealed and
7351 # we cannot use them (Bug 1698311). Instead, we use `mirror: always`
7352 # prefs but mark as `do_not_use_directly` and `LoadStartupJSPrefs` will
7353 # mirror them into SpiderMonkey.
7354 #---------------------------------------------------------------------------
7356 # The JavaScript JIT compilers. These are read once on startup so a browser may
7357 # need to be restarted if toggling them. In general each subsequent JIT depends
7358 # on the ones before it being enabled.
7359 - name: javascript.options.blinterp
7362 mirror: always # LoadStartupJSPrefs
7363 do_not_use_directly: true
7365 - name: javascript.options.baselinejit
7368 mirror: always # LoadStartupJSPrefs
7369 do_not_use_directly: true
7371 - name: javascript.options.ion
7374 mirror: always # LoadStartupJSPrefs
7375 do_not_use_directly: true
7377 # The irregexp JIT for regex evaluation.
7378 - name: javascript.options.native_regexp
7381 mirror: always # LoadStartupJSPrefs
7382 do_not_use_directly: true
7384 # Jit Hints Cache - An in-process cache for the
7385 # content process to accelerate repeated baseline
7387 - name: javascript.options.jithints
7390 mirror: always # LoadStartupJSPrefs
7391 do_not_use_directly: true
7393 # "Warm-up" thresholds at which we attempt to compile a script/function with
7394 # the next JIT tier.
7396 # NOTE: These must match JitOptions defaults.
7397 - name: javascript.options.blinterp.threshold
7400 mirror: always # LoadStartupJSPrefs
7401 do_not_use_directly: true
7403 - name: javascript.options.baselinejit.threshold
7406 mirror: always # LoadStartupJSPrefs
7407 do_not_use_directly: true
7409 - name: javascript.options.ion.threshold
7412 mirror: always # LoadStartupJSPrefs
7413 do_not_use_directly: true
7415 # Enable off-main-thread Warp compilation.
7416 - name: javascript.options.ion.offthread_compilation
7419 mirror: always # LoadStartupJSPrefs
7420 do_not_use_directly: true
7423 # Enable extra correctness checks in the JITs that are slow and only available
7425 - name: javascript.options.jit.full_debug_checks
7428 mirror: always # LoadStartupJSPrefs
7429 do_not_use_directly: true
7432 # Heuristic threshold for Warp/Ion to decide that too many bailouts are
7433 # happening and an IonScript should be discarded.
7435 # NOTE: This must match JitOptions defaults.
7436 - name: javascript.options.ion.frequent_bailout_threshold
7439 mirror: always # LoadStartupJSPrefs
7440 do_not_use_directly: true
7442 # A threshold for Warp to decide whether a function can be inlined.
7443 # If the size of a function is smaller than this threshold, then it
7446 # NOTE: These must match JitOptions defaults.
7447 - name: javascript.options.inlining_bytecode_max_length
7451 do_not_use_directly: true
7453 # Whether the megamorphic property lookup cache is enabled.
7455 # NOTE: This must match JitOptions defaults.
7456 - name: javascript.options.watchtower.megamorphic
7459 mirror: always # LoadStartupJSPrefs
7460 do_not_use_directly: true
7462 - name: javascript.options.compact_on_user_inactive
7467 # The default amount of time to wait from the user being idle to starting a
7468 # shrinking GC. Measured in milliseconds.
7469 - name: javascript.options.compact_on_user_inactive_delay
7471 #ifdef NIGHTLY_BUILD
7478 # Use better error message when accessing property of null or undefined.
7479 - name: javascript.options.property_error_message_fix
7481 value: @IS_NIGHTLY_OR_DEV_EDITION@
7484 # Support for weak references in JavaScript (WeakRef and FinalizationRegistry).
7485 - name: javascript.options.weakrefs
7490 # Whether to expose the FinalizationRegistry.prototype.cleanupSome method.
7491 - name: javascript.options.experimental.weakrefs.expose_cleanupSome
7496 # ShadowRealms: https://github.com/tc39/proposal-shadowrealm
7497 - name: javascript.options.experimental.shadow_realms
7498 # Atomic, as we assert the preference, and that assertion may happen
7500 type: RelaxedAtomicBool
7504 # Support for String.prototype.{is,to}WellFormed in JavaScript.
7505 - name: javascript.options.well_formed_unicode_strings
7510 # Support for Object.groupBy/Map.groupBy in JavaScript.
7511 - name: javascript.options.array_grouping
7516 #ifdef NIGHTLY_BUILD
7517 # Experimental support for Iterator Helpers in JavaScript.
7518 - name: javascript.options.experimental.iterator_helpers
7523 # Experimental support for New Set methods
7524 - name: javascript.options.experimental.new_set_methods
7529 # Experimental support for Symbols as WeakMap keys in JavaScript.
7530 - name: javascript.options.experimental.symbols_as_weakmap_keys
7534 #endif // NIGHTLY_BUILD
7536 # Experimental support for ArrayBuffer.prototype.transfer{,ToFixedLength}() in JavaScript.
7537 - name: javascript.options.arraybuffer_transfer
7542 #ifdef NIGHTLY_BUILD
7543 # Experimental support for Import Assertions in JavaScript.
7544 - name: javascript.options.experimental.import_assertions
7548 #endif // NIGHTLY_BUILD
7550 - name: javascript.options.wasm_caching
7555 # The amount of time we wait between a request to GC (due to leaving a page) and doing the actual GC, in ms.
7556 - name: javascript.options.gc_delay
7561 # The amount of time we wait from the first request to GC to actually doing the first GC, in ms.
7562 - name: javascript.options.gc_delay.first
7567 # After doing a zonal GC, wait this much time (in ms) and then do a full GC,
7568 # unless one is already pending.
7569 - name: javascript.options.gc_delay.full
7574 # Maximum amount of time that should elapse between incremental GC slices, in ms.
7575 - name: javascript.options.gc_delay.interslice
7580 # nsJSEnvironmentObserver observes the memory-pressure notifications and
7581 # forces a garbage collection and cycle collection when it happens, if the
7582 # appropriate pref is set.
7583 - name: javascript.options.gc_on_memory_pressure
7585 # Disable the JS engine's GC on memory pressure, since we do one in the
7586 # mobile browser (bug 669346).
7587 # XXX: this value possibly should be changed, or the pref removed entirely.
7589 value: @IS_NOT_ANDROID@
7592 # We allow at most MIN(max, MAX(NUM_CPUS / cpu_divisor, 1)) concurrent GCs
7594 - name: javascript.options.concurrent_multiprocess_gcs.cpu_divisor
7595 type: RelaxedAtomicUint32
7599 # See 'cpu_divisor' above, 0 means UINT_32_MAX.
7600 - name: javascript.options.concurrent_multiprocess_gcs.max
7601 type: RelaxedAtomicUint32
7605 - name: javascript.options.mem.log
7610 - name: javascript.options.mem.notify
7615 # Whether the Parent process allocates and shares memory with all content
7616 # processes. This is mirrored once, as the parent process will do this
7617 # allocation early on.
7618 - name: javascript.options.self_hosted.use_shared_memory
7621 mirror: always # LoadStartupJSPrefs
7622 do_not_use_directly: true
7624 - name: javascript.options.main_thread_stack_quota_cap
7626 #if defined(MOZ_ASAN)
7627 value: 6 * 1024 * 1024
7629 value: 2 * 1024 * 1024
7633 - name: javascript.options.wasm_optimizingjit
7638 #if defined(ENABLE_WASM_RELAXED_SIMD)
7639 - name: javascript.options.wasm_relaxed_simd
7641 value: @IS_NIGHTLY_BUILD@
7643 #endif // defined(ENABLE_WASM_RELAXED_SIMD)
7645 #if defined(ENABLE_WASM_MOZ_INTGEMM)
7646 - name: javascript.options.wasm_moz_intgemm
7648 value: @IS_NIGHTLY_BUILD@
7650 #endif // defined(ENABLE_WASM_MOZ_INTGEMM)
7652 #if defined(ENABLE_WASM_EXTENDED_CONST)
7653 - name: javascript.options.wasm_extended_const
7657 #endif // defined(ENABLE_WASM_EXTENDED_CONST)
7659 - name: javascript.options.wasm_exceptions
7664 #if defined(ENABLE_WASM_FUNCTION_REFERENCES)
7665 - name: javascript.options.wasm_function_references
7669 #endif // defined(ENABLE_WASM_FUNCTION_REFERENCES)
7671 #if defined(ENABLE_WASM_GC)
7672 - name: javascript.options.wasm_gc
7676 #endif // defined(ENABLE_WASM_GC)
7678 #if defined(ENABLE_WASM_MEMORY_CONTROL)
7679 - name: javascript.options.wasm_memory_control
7683 #endif // defined(ENABLE_WASM_MEMORY_CONTROL)
7685 #if defined(ENABLE_WASM_SIMD)
7686 #if defined(JS_CODEGEN_X64) || defined(JS_CODEGEN_X86)
7687 # Enables AVX instructions support on X86/X64 platforms.
7688 # Changing these prefs requires a restart.
7689 - name: javascript.options.wasm_simd_avx
7696 #if defined(ENABLE_WASM_MEMORY64)
7697 - name: javascript.options.wasm_memory64
7699 value: @IS_NIGHTLY_BUILD@
7701 #endif // defined(ENABLE_WASM_MEMORY64)
7703 #if defined(ENABLE_WASM_TAIL_CALLS)
7704 - name: javascript.options.wasm_tail_calls
7708 #endif // defined(ENABLE_WASM_TAIL_CALLS)
7710 # Support for pretenuring allocations based on their allocation site.
7711 - name: javascript.options.site_based_pretenuring
7714 mirror: always # LoadStartupJSPrefs
7715 do_not_use_directly: true
7717 #if !defined(JS_CODEGEN_MIPS32) && !defined(JS_CODEGEN_MIPS64) && !defined(JS_CODEGEN_LOONG64)
7718 # Spectre security vulnerability mitigations for the JS JITs.
7720 # NOTE: The MIPS and LoongArch backends do not support these mitigations (and generally
7721 # do not need them). In that case, leave the pref unlisted with its
7722 # default value of false.
7723 - name: javascript.options.spectre.index_masking
7726 mirror: always # LoadStartupJSPrefs
7727 do_not_use_directly: true
7729 - name: javascript.options.spectre.object_mitigations
7732 mirror: always # LoadStartupJSPrefs
7733 do_not_use_directly: true
7735 - name: javascript.options.spectre.string_mitigations
7738 mirror: always # LoadStartupJSPrefs
7739 do_not_use_directly: true
7741 - name: javascript.options.spectre.value_masking
7744 mirror: always # LoadStartupJSPrefs
7745 do_not_use_directly: true
7747 - name: javascript.options.spectre.jit_to_cxx_calls
7750 mirror: always # LoadStartupJSPrefs
7751 do_not_use_directly: true
7752 #endif // !defined(JS_CODEGEN_MIPSXX) && !defined(JS_CODEGEN_LOONG64)
7754 # Separate pref to override the values of the Spectre-related prefs above for
7755 # isolated web content processes, where we don't need these mitigations.
7756 - name: javascript.options.spectre.disable_for_isolated_content
7761 # Whether the W^X policy is enforced to mark JIT code pages as either writable
7762 # or executable but never both at the same time. OpenBSD defaults to W^X.
7763 - name: javascript.options.content_process_write_protect_code
7765 #if defined(XP_OPENBSD)
7772 # Whether to use the XPCOM thread pool for JS helper tasks.
7773 - name: javascript.options.external_thread_pool
7777 do_not_use_directly: true
7779 # Whether to use the off-thread script compilation and decoding.
7780 - name: javascript.options.parallel_parsing
7785 # Whether to use fdlibm for Math.sin, Math.cos, and Math.tan. When
7786 # privacy.resistFingerprinting is true, this pref is ignored and fdlibm is used
7788 - name: javascript.options.use_fdlibm_for_sin_cos_tan
7790 value: @IS_EARLY_BETA_OR_EARLIER@
7793 # Whether to support parsing '//(#@) source(Mapping)?URL=' pragmas.
7794 - name: javascript.options.source_pragmas
7800 - name: javascript.options.asmjs
7805 # Whether to throw a TypeError if asm.js code hits validation failure.
7806 - name: javascript.options.throw_on_asmjs_validation_failure
7811 #---------------------------------------------------------------------------
7812 # Prefs starting with "layers."
7813 #---------------------------------------------------------------------------
7815 # Whether to disable acceleration for all widgets.
7816 - name: layers.acceleration.disabled
7820 do_not_use_directly: true
7821 # Instead, use gfxConfig::IsEnabled(Feature::HW_COMPOSITING).
7823 # Whether to force acceleration on, ignoring blacklists.
7825 # bug 838603 -- on Android, accidentally blacklisting OpenGL layers
7826 # means a startup crash for everyone.
7827 # Temporarily force-enable GL compositing. This is default-disabled
7828 # deep within the bowels of the widgetry system. Remove me when GL
7829 # compositing isn't default disabled in widget/android.
7830 - name: layers.acceleration.force-enabled
7834 do_not_use_directly: true
7836 # Whether we allow AMD switchable graphics.
7837 - name: layers.amd-switchable-gfx.enabled
7842 # Whether to use async panning and zooming.
7843 - name: layers.async-pan-zoom.enabled
7847 do_not_use_directly: true
7849 - name: layers.child-process-shutdown
7850 type: RelaxedAtomicBool
7854 - name: layers.d3d11.force-warp
7859 - name: layers.d3d11.enable-blacklist
7864 # Enable DEAA antialiasing for transformed layers in the compositor.
7865 - name: layers.deaa.enabled
7866 type: RelaxedAtomicBool
7867 #if defined(MOZ_WIDGET_ANDROID)
7874 # Force all possible layers to be always active layers.
7875 - name: layers.force-active
7880 - name: layers.force-shmem-tiles
7885 - name: layers.draw-mask-debug
7886 type: RelaxedAtomicBool
7890 - name: layers.force-synchronous-resize
7891 type: RelaxedAtomicBool
7893 # We want to control it by nsWindow::SynchronouslyRepaintOnResize() on Linux/Wayland.
7900 - name: layers.gpu-process.allow-software
7909 - name: layers.gpu-process.enabled
7911 #if defined(XP_WIN) || defined(MOZ_WIDGET_ANDROID)
7918 - name: layers.gpu-process.force-enabled
7923 - name: layers.gpu-process.ipc_reply_timeout_ms
7928 # How many unstable GPU process restarts we allow for a given configuration.
7929 - name: layers.gpu-process.max_restarts
7930 type: RelaxedAtomicInt32
7931 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_ANDROID)
7938 # How many frames we must render before declaring the GPU process stable, and
7939 # allow restarts without it counting against our maximum restarts.
7940 - name: layers.gpu-process.stable.frame-threshold
7941 type: RelaxedAtomicUint32
7945 # How many milliseconds the GPU process must have lived before we accept that
7946 # it is stable, and allow restarts without it counting against our maximum
7948 - name: layers.gpu-process.stable.min-uptime-ms
7949 type: RelaxedAtomicInt32
7953 # Note: This pref will only be used if it is less than layers.gpu-process.max_restarts.
7954 - name: layers.gpu-process.max_restarts_with_decoder
7955 type: RelaxedAtomicInt32
7959 - name: layers.gpu-process.startup_timeout_ms
7964 - name: layers.gpu-process.crash-also-crashes-browser
7969 # Whether to animate simple opacity and transforms on the compositor.
7970 - name: layers.offmainthreadcomposition.async-animations
7975 # Whether to log information about off main thread animations to stderr.
7976 - name: layers.offmainthreadcomposition.log-animations
7981 - name: layers.offmainthreadcomposition.force-disabled
7986 # Compositor target frame rate. NOTE: If vsync is enabled the compositor
7987 # frame rate will still be capped.
7988 # -1 -> default (match layout.frame_rate or 60 FPS)
7989 # 0 -> full-tilt mode: Recomposite even if not transaction occured.
7990 - name: layers.offmainthreadcomposition.frame-rate
7991 type: RelaxedAtomicInt32
7996 - name: layers.prefer-opengl
8002 # Copy-on-write canvas.
8003 - name: layers.shared-buffer-provider.enabled
8004 type: RelaxedAtomicBool
8008 - name: layers.recycle-allocator-rdd
8013 - name: layers.iosurfaceimage.recycle-limit
8014 type: RelaxedAtomicUint32
8018 - name: layers.iosurfaceimage.use-nv12
8023 #---------------------------------------------------------------------------
8024 # Prefs starting with "layout."
8025 #---------------------------------------------------------------------------
8027 # Debug-only pref to force enable the AccessibleCaret. If you want to
8028 # control AccessibleCaret by mouse, you'll need to set
8029 # "layout.accessiblecaret.hide_carets_for_mouse_input" to false.
8030 - name: layout.accessiblecaret.enabled
8035 # Enable the accessible caret on platforms/devices
8036 # that we detect have touch support. Note that this pref is an
8037 # additional way to enable the accessible carets, rather than
8038 # overriding the layout.accessiblecaret.enabled pref.
8039 - name: layout.accessiblecaret.enabled_on_touch
8044 # By default, carets become tilt only when they are overlapping.
8045 - name: layout.accessiblecaret.always_tilt
8050 # Show caret in cursor mode when long tapping on an empty content. This
8051 # also changes the default update behavior in cursor mode, which is based
8052 # on the emptiness of the content, into something more heuristic. See
8053 # AccessibleCaretManager::UpdateCaretsForCursorMode() for the details.
8054 - name: layout.accessiblecaret.caret_shown_when_long_tapping_on_empty_content
8059 # 0 = by default, always hide carets for selection changes due to JS calls.
8060 # 1 = update any visible carets for selection changes due to JS calls,
8061 # but don't show carets if carets are hidden.
8062 # 2 = always show carets for selection changes due to JS calls.
8063 - name: layout.accessiblecaret.script_change_update_mode
8068 # Allow one caret to be dragged across the other caret without any limitation.
8069 # This matches the built-in convention for all desktop platforms.
8070 - name: layout.accessiblecaret.allow_dragging_across_other_caret
8075 # Optionally provide haptic feedback on long-press selection events.
8076 - name: layout.accessiblecaret.hapticfeedback
8081 # Smart phone-number selection on long-press is not enabled by default.
8082 - name: layout.accessiblecaret.extend_selection_for_phone_number
8087 # Keep the accessible carets hidden when the user is using mouse input (as
8088 # opposed to touch/pen/etc.).
8089 - name: layout.accessiblecaret.hide_carets_for_mouse_input
8094 # CSS attributes (width, height, margin-left) of the AccessibleCaret in CSS
8096 - name: layout.accessiblecaret.width
8101 - name: layout.accessiblecaret.height
8106 - name: layout.accessiblecaret.margin-left
8111 - name: layout.accessiblecaret.transition-duration
8116 # Simulate long tap events to select words. Mainly used in manual testing
8118 - name: layout.accessiblecaret.use_long_tap_injector
8123 # To support magnify glass, whether we dispatch additional chrome event such as
8125 - name: layout.accessiblecaret.magnifier.enabled
8130 # One of several prefs affecting the maximum area to pre-render when animating
8131 # a large element on the compositor.
8132 # This pref enables transform (and transform like properties) animations on a
8133 # large element run on the compositor with rendering partial area of the
8134 # element on the main thread instead of rendering the whole area. Once the
8135 # animation tried to composite out of the partial rendered area, the animation
8136 # is rendered again with the latest visible partial area.
8137 - name: layout.animation.prerender.partial
8138 type: RelaxedAtomicBool
8142 # One of several prefs affecting the maximum area to pre-render when animating
8143 # a large element on the compositor.
8144 # This value is applied to both x and y axes and a perfect square contructed
8145 # by the greater axis value which will be capped by the absolute limits is used
8146 # for the partial pre-render area.
8147 - name: layout.animation.prerender.viewport-ratio-limit
8152 # One of several prefs affecting the maximum area to pre-render when animating
8153 # a large element on the compositor.
8154 - name: layout.animation.prerender.absolute-limit-x
8155 type: RelaxedAtomicUint32
8159 # One of several prefs affecting the maximum area to pre-render when animating
8160 # a large element on the compositor.
8161 - name: layout.animation.prerender.absolute-limit-y
8162 type: RelaxedAtomicUint32
8166 # Test-only pref, if this is true, partial pre-rendered transform animations
8167 # get stuck when it reaches to the pre-rendered boundaries and the pre-render
8168 # region is never updated.
8169 - name: layout.animation.prerender.partial.jank
8170 type: RelaxedAtomicBool
8174 # Override DPI. A value of -1 means use the maximum of 96 and the system DPI.
8175 # A value of 0 means use the system DPI. A positive value is used as the DPI.
8176 # This sets the physical size of a device pixel and thus controls the
8177 # interpretation of physical units such as "pt".
8178 - name: layout.css.dpi
8183 # Whether to always underline links.
8184 - name: layout.css.always_underline_links
8185 type: RelaxedAtomicBool
8190 # Whether Container Queries are enabled
8191 - name: layout.css.container-queries.enabled
8192 type: RelaxedAtomicBool
8197 # Whether content-box and stroke-box are enabled for transform-box.
8198 - name: layout.css.transform-box-content-stroke.enabled
8199 type: RelaxedAtomicBool
8200 value: @IS_NIGHTLY_BUILD@
8204 # Whether trigonometric constants and functions are enabled in calc().
8205 - name: layout.css.trig.enabled
8206 type: RelaxedAtomicBool
8211 # Whether the round() function is enabled in calc().
8212 - name: layout.css.round.enabled
8213 type: RelaxedAtomicBool
8218 # Whether the mod() / rem() functions are enabled in calc().
8219 - name: layout.css.mod-rem.enabled
8220 type: RelaxedAtomicBool
8225 # Whether exponential functions are enabled in calc().
8226 - name: layout.css.exp.enabled
8227 type: RelaxedAtomicBool
8232 # Whether sign/abs functions are enabled in calc().
8233 - name: layout.css.abs-sign.enabled
8234 type: RelaxedAtomicBool
8239 # Whether infinity / nan constants are enabled in calc().
8240 - name: layout.css.nan-inf.enabled
8241 type: RelaxedAtomicBool
8246 # Should we look for counter ancestor scopes first?
8247 - name: layout.css.counter-ancestor-scope.enabled
8252 # Whether the `-moz-control-character-visibility` property is exposed to
8255 # Only for testing purposes.
8256 - name: layout.css.moz-control-character-visibility.enabled
8257 type: RelaxedAtomicBool
8262 # This pref controls whether the `prefers-color-scheme` value of iframes images
8263 # reacts to the embedder `color-scheme` in content.
8264 - name: layout.css.iframe-embedder-prefers-color-scheme.content.enabled
8265 type: RelaxedAtomicBool
8269 # Controls the transparency of the initial about:blank document. Generally you
8270 # don't ever want a white flash in dark mode, but due to backwards compat we
8271 # have some extra control over this, for now at least.
8273 # See https://github.com/w3c/csswg-drafts/issues/9624 for iframes.
8276 # 1: content-inaccessible top-level only.
8277 # 2: frames and content-inaccessible top-level only.
8279 # Others: don't treat this document specially.
8280 - name: layout.css.initial-document-transparency
8281 type: RelaxedAtomicInt32
8285 # The minimum contrast ratio between the accent color foreground and background
8288 # We don't use this for text, so we need a contrast of at least AA (for user
8289 # interface components and graphical objects), which per WCAG is 3:1
8290 - name: layout.css.accent-color.min-contrast-ratio
8295 # The target contrast ratio between the accent color foreground and background
8296 # colors when darkening.
8298 # We aim a bit further than the minimum contrast ratio, which seems to provide
8299 # nice results in practice.
8300 - name: layout.css.accent-color.darkening-target-contrast-ratio
8305 # Whether the `animation-composition` in css-animations-2 is enabled.
8306 - name: layout.css.animation-composition.enabled
8311 # Is the codepath for using cached scrollbar styles enabled?
8312 - name: layout.css.cached-scrollbar-styles.enabled
8317 # Whether we cache inline styles in a document unconditionally or not.
8318 - name: layout.css.inline-style-caching.always-enabled
8323 # Whether computed local-fragment-only image urls serialize using the same
8324 # rules as filter/mask/etc (not resolving the URL for local refs).
8326 # See https://github.com/w3c/csswg-drafts/issues/3195
8327 - name: layout.css.computed-style.dont-resolve-image-local-refs
8328 type: RelaxedAtomicBool
8333 # Whether we should expose all shorthands in getComputedStyle().
8334 - name: layout.css.computed-style.shorthands
8339 # Are implicit tracks in computed grid templates serialized?
8340 - name: layout.css.serialize-grid-implicit-tracks
8341 type: RelaxedAtomicBool
8345 # Whether the system-ui generic family is enabled.
8346 - name: layout.css.system-ui.enabled
8347 type: RelaxedAtomicBool
8352 # Set the number of device pixels per CSS pixel. A value <= 0 means choose
8353 # automatically based on user settings for the platform (e.g., "UI scale factor"
8354 # on Mac). If browser.display.os-zoom-behavior == 1, then a positive value
8355 # will be multiplied by the text scale factor; otherwise a positive value is
8356 # used as-is. This controls the size of a CSS "px" at 100% full-zoom.
8357 # The size of system fonts is also changed in proportion with the change in
8358 # "px" sizes. Use "ui.textScaleFactor" instead to only change the size of "px".
8359 # This is only used for windows on the screen, not for printing.
8360 - name: layout.css.devPixelsPerPx
8365 # Is support for CSS backdrop-filter enabled?
8366 - name: layout.css.backdrop-filter.enabled
8371 # Do we override the blocklist for CSS backdrop-filter?
8372 - name: layout.css.backdrop-filter.force-enabled
8377 # Is support for rect() enabled?
8378 - name: layout.css.basic-shape-rect.enabled
8379 type: RelaxedAtomicBool
8384 # Is support for xywh() enabled?
8385 - name: layout.css.basic-shape-xywh.enabled
8386 type: RelaxedAtomicBool
8391 # Should stray control characters be rendered visibly?
8392 - name: layout.css.control-characters.visible
8393 type: RelaxedAtomicBool
8394 value: @IS_NOT_RELEASE_OR_BETA@
8398 # Whether the `content-visibility` CSS property is enabled
8399 - name: layout.css.content-visibility.enabled
8400 type: RelaxedAtomicBool
8401 value: @IS_NIGHTLY_BUILD@
8405 # Whether the `contain-intrinsic-size` CSS property is enabled
8406 - name: layout.css.contain-intrinsic-size.enabled
8407 type: RelaxedAtomicBool
8412 # Is support for GeometryUtils.convert*FromNode enabled?
8413 - name: layout.css.convertFromNode.enabled
8415 value: @IS_NOT_RELEASE_OR_BETA@
8418 - name: layout.css.cross-fade.enabled
8419 type: RelaxedAtomicBool
8424 # Is support for color-mix on content enabled?
8425 - name: layout.css.color-mix.enabled
8426 type: RelaxedAtomicBool
8431 # Is support for light-dark() on content enabled?
8432 - name: layout.css.light-dark.enabled
8433 type: RelaxedAtomicBool
8438 # Is support for color-mix with non-SRGB color spaces on content enabled?
8439 - name: layout.css.color-mix.color-spaces.enabled
8440 type: RelaxedAtomicBool
8445 # Is support for fit-content() enabled?
8446 - name: layout.css.fit-content-function.enabled
8447 type: RelaxedAtomicBool
8452 # Whether to use tight bounds for floating ::first-letter (legacy Gecko behavior)
8453 # or loose bounds based on overall font metrics (WebKit/Blink-like behavior)?
8455 # 1 legacy Gecko behavior (tight bounds)
8456 # 0 loose typographic bounds (similar to webkit/blink)
8457 # -1 auto behavior: use loose bounds if reduced line-height (<1em) or negative
8458 # block-start margin is present; otherwise use tight bounds.
8459 - name: layout.css.floating-first-letter.tight-glyph-bounds
8461 #ifdef NIGHTLY_BUILD
8468 # Is support for the font-display @font-face descriptor enabled?
8469 - name: layout.css.font-display.enabled
8470 type: RelaxedAtomicBool
8475 # Is support for the @font-palette-values rule and font-palette property enabled?
8476 - name: layout.css.font-palette.enabled
8477 type: RelaxedAtomicBool
8482 # Is support for variation fonts enabled?
8483 - name: layout.css.font-variations.enabled
8484 type: RelaxedAtomicBool
8489 # Is support for the size-adjust @font-face descriptor enabled?
8490 - name: layout.css.size-adjust.enabled
8491 type: RelaxedAtomicBool
8496 # Is support for the tech() function in the @font-face src descriptor enabled?
8497 - name: layout.css.font-tech.enabled
8498 type: RelaxedAtomicBool
8503 # Is support for font-variant-emoji enabled?
8504 - name: layout.css.font-variant-emoji.enabled
8505 type: RelaxedAtomicBool
8506 value: @IS_NIGHTLY_BUILD@
8510 # Visibility level of font families available to CSS font-matching:
8511 # 1 - only base system fonts
8512 # 2 - also fonts from optional language packs
8513 # 3 - also user-installed fonts
8514 - name: layout.css.font-visibility
8519 # Is support for GeometryUtils.getBoxQuads enabled?
8520 - name: layout.css.getBoxQuads.enabled
8522 value: @IS_NOT_RELEASE_OR_BETA@
8525 # Is support for (linear|radial|conic)-gradient color interpolation methods enabled?
8526 - name: layout.css.gradient-color-interpolation-method.enabled
8527 type: RelaxedAtomicBool
8528 value: @IS_NIGHTLY_BUILD@
8532 # Is support for CSS masonry layout enabled?
8533 - name: layout.css.grid-template-masonry-value.enabled
8534 type: RelaxedAtomicBool
8535 value: @IS_NIGHTLY_BUILD@
8539 # Is support for :has() enabled?
8540 - name: layout.css.has-selector.enabled
8541 type: RelaxedAtomicBool
8546 # Is support for CSS individual transform enabled?
8547 - name: layout.css.individual-transform.enabled
8552 # Is support for CSS initial-letter property enabled?
8553 - name: layout.css.initial-letter.enabled
8558 # Is support for motion-path <basic-shape> other than path() enabled?
8559 # https://drafts.fxtf.org/motion-1/#valdef-offset-path-basic-shape
8560 - name: layout.css.motion-path-basic-shapes.enabled
8561 type: RelaxedAtomicBool
8566 # Is support for motion-path <coord-box> enabled?
8567 # https://drafts.fxtf.org/motion-1/#valdef-offset-path-coord-box
8568 - name: layout.css.motion-path-coord-box.enabled
8569 type: RelaxedAtomicBool
8574 # Is support for motion-path ray() enabled?
8575 - name: layout.css.motion-path-ray.enabled
8576 type: RelaxedAtomicBool
8581 # Is support for motion-path offset-position enabled?
8582 - name: layout.css.motion-path-offset-position.enabled
8583 type: RelaxedAtomicBool
8588 # Is support for motion-path url enabled?
8589 - name: layout.css.motion-path-url.enabled
8590 type: RelaxedAtomicBool
8595 # Pref to control whether the ::marker property restrictions defined in [1]
8598 # [1]: https://drafts.csswg.org/css-pseudo-4/#selectordef-marker
8599 - name: layout.css.marker.restricted
8600 type: RelaxedAtomicBool
8605 # Is support for math-style enabled?
8606 - name: layout.css.math-style.enabled
8607 type: RelaxedAtomicBool
8612 # Is support for math-depth enabled?
8613 - name: layout.css.math-depth.enabled
8614 type: RelaxedAtomicBool
8619 # Is -moz-osx-font-smoothing enabled? (Only supported in OSX builds)
8620 - name: layout.css.osx-font-smoothing.enabled
8622 #if defined(XP_MACOSX)
8629 # Is support for CSS overflow-clip-box enabled for non-UA sheets?
8630 - name: layout.css.overflow-clip-box.enabled
8635 # Is support for CSS overflow: -moz-hidden-unscrollable enabled
8636 - name: layout.css.overflow-moz-hidden-unscrollable.enabled
8637 type: RelaxedAtomicBool
8638 value: @IS_NOT_NIGHTLY_BUILD@
8642 # Is support for CSS overflow: overlay enabled
8643 - name: layout.css.overflow-overlay.enabled
8644 type: RelaxedAtomicBool
8649 # Is support for overscroll-behavior enabled?
8650 - name: layout.css.overscroll-behavior.enabled
8655 # Enables support for the page-orientation property inside of CSS @page rules.
8656 - name: layout.css.page-orientation.enabled
8657 type: RelaxedAtomicBool
8662 # Enables support for different CSS page sizes on each page when printing.
8663 - name: layout.css.allow-mixed-page-sizes
8664 type: RelaxedAtomicBool
8668 # Enables support for @margin rules.
8669 - name: layout.css.margin-rules.enabled
8670 type: RelaxedAtomicBool
8675 # Whether Properties and Values is enabled
8676 - name: layout.css.properties-and-values.enabled
8677 type: RelaxedAtomicBool
8678 value: @IS_NIGHTLY_BUILD@
8682 # Dictates whether or not the prefers contrast media query will be
8684 # true: prefers-contrast will toggle based on OS and browser settings.
8685 # false: prefers-contrast will only parse and toggle in the browser
8687 - name: layout.css.prefers-contrast.enabled
8688 type: RelaxedAtomicBool
8693 # An override for prefers-color-scheme for content documents.
8696 # 2: Auto (system color scheme unless overridden by browser theme)
8697 - name: layout.css.prefers-color-scheme.content-override
8698 type: RelaxedAtomicInt32
8702 # Dictates whether or not the forced-colors media query is enabled.
8703 - name: layout.css.forced-colors.enabled
8704 type: RelaxedAtomicBool
8709 # Dictates whether or not the prefers-reduced-transparency media query is enabled.
8710 - name: layout.css.prefers-reduced-transparency.enabled
8711 type: RelaxedAtomicBool
8716 # Dictates whether or not the inverted-colors media query is enabled.
8717 - name: layout.css.inverted-colors.enabled
8718 type: RelaxedAtomicBool
8723 # Is support for forced-color-adjust properties enabled?
8724 - name: layout.css.forced-color-adjust.enabled
8725 type: RelaxedAtomicBool
8730 # Is support for -moz-prefixed animation properties enabled?
8731 - name: layout.css.prefixes.animations
8736 # Is support for -moz-border-image enabled?
8737 - name: layout.css.prefixes.border-image
8742 # Is support for -moz-box-sizing enabled?
8743 - name: layout.css.prefixes.box-sizing
8748 # Is support for -moz-prefixed font feature properties enabled?
8749 - name: layout.css.prefixes.font-features
8754 # Is support for -moz-prefixed transform properties enabled?
8755 - name: layout.css.prefixes.transforms
8757 value: @IS_NOT_NIGHTLY_BUILD@
8760 # Is support for -moz-prefixed transition properties enabled?
8761 - name: layout.css.prefixes.transitions
8763 value: @IS_NOT_NIGHTLY_BUILD@
8766 # Is CSS error reporting enabled?
8767 - name: layout.css.report_errors
8772 # Are inter-character ruby annotations enabled?
8773 - name: layout.css.ruby.intercharacter.enabled
8778 - name: layout.css.scroll-behavior.damping-ratio
8783 # Tuning of the smooth scroll motion used by CSSOM-View scroll-behavior.
8784 # Spring-constant controls the strength of the simulated MSD
8785 # (Mass-Spring-Damper).
8786 - name: layout.css.scroll-behavior.spring-constant
8791 # Whether the scroll-driven animations generated by CSS is enabled. This
8792 # also include animation-timelime property.
8793 - name: layout.css.scroll-driven-animations.enabled
8794 type: RelaxedAtomicBool
8799 # When selecting the snap point for CSS scroll snapping, the velocity of the
8800 # scroll frame is clamped to this speed, in CSS pixels / s.
8801 - name: layout.css.scroll-snap.prediction-max-velocity
8802 type: RelaxedAtomicInt32
8806 # When selecting the snap point for CSS scroll snapping, the velocity of the
8807 # scroll frame is integrated over this duration, in seconds. The snap point
8808 # best suited for this position is selected, enabling the user to perform fling
8810 - name: layout.css.scroll-snap.prediction-sensitivity
8815 # Stylo thread-pool size.
8816 # Negative means auto, 0 disables the thread-pool (main-thread styling), other
8817 # numbers override as specified.
8818 # Note that 1 still creates a thread-pool of one thread!
8819 - name: layout.css.stylo-threads
8825 # Stylo work unit size. This is the amount of nodes we'll process in a single
8826 # unit of work of the thread-pool.
8828 # Larger values will increase style sharing cache hits and general DOM locality
8829 # at the expense of decreased opportunities for parallelism. There are some
8830 # measurements in bug 1385982 comments 11, 12, 13 that investigate some
8831 # slightly different values for the work unit size.
8833 # If the size is significantly increased, make sure to also review
8834 # stylo-local-work-queue prefs, since we might end up doing too much work
8837 # A value of 0 disables parallelism altogether.
8838 - name: layout.css.stylo-work-unit-size
8839 type: RelaxedAtomicUint32
8844 # The minimum amount of work that a thread doing styling will try to keep
8845 # locally before sending work to other threads, in a worker.
8846 - name: layout.css.stylo-local-work-queue.in-worker
8847 type: RelaxedAtomicUint32
8852 # As above but for the main thread. The main thread can't really steal from
8853 # other threads so it might want a bigger min queue size before giving work to
8855 - name: layout.css.stylo-local-work-queue.in-main-thread
8856 type: RelaxedAtomicUint32
8861 # Are counters for implemented CSS properties enabled?
8862 - name: layout.css.use-counters.enabled
8867 # Are counters for unimplemented CSS properties enabled?
8868 - name: layout.css.use-counters-unimplemented.enabled
8869 type: RelaxedAtomicBool
8874 # Should the :visited selector ever match (otherwise :link matches instead)?
8875 - name: layout.css.visited_links_enabled
8880 # Enable experimental enhanced color CSS color spaces. (lab(), lch(), oklab(), oklch(), color())
8881 - name: layout.css.more_color_4.enabled
8882 type: RelaxedAtomicBool
8887 # The margin used for detecting relevancy for `content-visibility: auto`.
8888 - name: layout.css.content-visibility-relevant-content-margin
8893 # Whether the `hanging` and `each-line` keywords are supported by `text-indent`
8894 - name: layout.css.text-indent-keywords.enabled
8895 type: RelaxedAtomicBool
8900 # Whether the "modern" uppercase mapping of ß to ẞ (rather than SS) is used.
8901 - name: layout.css.text-transform.uppercase-eszett.enabled
8906 - name: layout.css.text-wrap-balance.enabled
8911 # Maximum number of lines to try balancing.
8912 - name: layout.css.text-wrap-balance.limit
8917 - name: layout.css.text-wrap-balance-after-clamp.enabled
8922 - name: layout.css.text-align.justify-only-after-last-tab
8927 # Support for the css Zoom property.
8928 - name: layout.css.zoom.enabled
8929 type: RelaxedAtomicBool
8930 value: @IS_NIGHTLY_BUILD@
8934 # Whether to block large cursors intersecting UI.
8935 - name: layout.cursor.block.enabled
8940 # The maximum width or height of the cursor we should allow when intersecting
8941 # the UI, in CSS pixels.
8942 - name: layout.cursor.block.max-size
8947 - name: layout.display-list.build-twice
8948 type: RelaxedAtomicBool
8952 # Toggle retaining display lists between paints.
8953 - name: layout.display-list.retain
8954 type: RelaxedAtomicBool
8958 # Toggle retaining display lists between paints.
8959 - name: layout.display-list.retain.chrome
8960 type: RelaxedAtomicBool
8964 - name: layout.display-list.retain.sc
8965 type: RelaxedAtomicBool
8969 # Set the maximum number of modified frames allowed before doing a full
8970 # display list rebuild.
8971 - name: layout.display-list.rebuild-frame-limit
8972 type: RelaxedAtomicUint32
8976 # Pref to dump the display list to the log. Useful for debugging drawing.
8977 - name: layout.display-list.dump
8978 type: RelaxedAtomicBool
8982 # Pref to dump the display list to the log. Useful for debugging drawing.
8983 - name: layout.display-list.dump-content
8984 type: RelaxedAtomicBool
8988 # Pref to dump the display list to the log. Useful for debugging drawing.
8989 - name: layout.display-list.dump-parent
8990 type: RelaxedAtomicBool
8994 - name: layout.display-list.show-rebuild-area
8995 type: RelaxedAtomicBool
8999 - name: layout.display-list.improve-fragmentation
9000 type: RelaxedAtomicBool
9004 # Are dynamic reflow roots enabled?
9005 - name: layout.dynamic-reflow-roots.enabled
9007 value: @IS_EARLY_BETA_OR_EARLIER@
9010 # Enables the mechanism to optimize away flex item's final reflow.
9011 # Warning: Disabling the pref will impact the performance. This is useful only for
9012 # debugging flexbox issues.
9013 - name: layout.flexbox.item-final-reflow-optimization.enabled
9018 # Enables the <input type=search> custom layout frame with a clear icon.
9019 # Still needs tests and a web-exposed way to remove that icon, see bug 1654288.
9020 - name: layout.forms.input-type-search.enabled
9025 # Enables the Reveal Password button inside a <input type=password>.
9026 - name: layout.forms.reveal-password-button.enabled
9031 # Enables the Reveal Password context-menu entry.
9032 - name: layout.forms.reveal-password-context-menu.enabled
9037 # Pref to control browser frame rate, in Hz. A value <= 0 means choose
9038 # automatically based on knowledge of the platform (or 60Hz if no platform-
9039 # specific information is available).
9040 - name: layout.frame_rate
9041 type: RelaxedAtomicInt32
9045 # If it has been this many frame periods since a refresh, assume that painting
9046 # is quiescent (will not happen again soon).
9047 - name: layout.idle_period.required_quiescent_frames
9052 # The amount of time (milliseconds) needed between an idle period's
9053 # end and the start of the next tick to avoid jank.
9054 - name: layout.idle_period.time_limit
9059 # The minimum amount of time (milliseconds) required to be remaining
9060 # in the current vsync interval for us to attempt an extra tick, or
9061 # <0 to disable extra ticks entirely.
9062 - name: layout.extra-tick.minimum-ms
9067 # Whether to load the broken image icon eagerly. This is mostly needed for
9068 # reftests, since the broken image icon doesn't block the load event and thus
9069 # there's no easy way to guarantee it's loaded.
9070 - name: layout.image.eager_broken_image_icon
9075 # Enable/disable interruptible reflow, which allows reflows to stop
9076 # before completion (and display the partial results) when user events
9078 - name: layout.interruptible-reflow.enabled
9083 # On Android, don't synth mouse move events after scrolling, as they cause
9084 # unexpected user-visible behaviour. Can remove this after bug 1633450 is
9085 # satisfactorily resolved.
9086 - name: layout.reflow.synthMouseMove
9088 value: @IS_NOT_ANDROID@
9091 # This pref is to be set by test code only.
9092 - name: layout.scrollbars.always-layerize-track
9093 type: RelaxedAtomicBool
9097 - name: layout.scrollbars.click_and_hold_track.continue_to_end
9099 # On Linux, click-and-hold on the scrollbar track should continue scrolling
9100 # until the mouse is released. On the other platforms we want to stop
9101 # scrolling as soon as the scrollbar thumb has reached the current mouse
9103 #ifdef MOZ_WIDGET_GTK
9110 # Whether anchor is kept selected.
9111 - name: layout.selectanchor
9116 # Controls caret style and word-delete during text selection.
9117 # 0: Use platform default
9118 # 1: Caret moves and blinks as when there is no selection; word
9119 # delete deselects the selection and then deletes word.
9120 # 2: Caret moves to selection edge and is not visible during selection;
9121 # word delete deletes the selection (Mac and Linux default).
9122 # 3: Caret moves and blinks as when there is no selection; word delete
9123 # deletes the selection.
9124 # Windows default is 1 for word delete behavior, the rest as for 2.
9125 - name: layout.selection.caret_style
9130 # If layout.show_previous_page is true then during loading of a new page we
9131 # will draw the previous page if the new page has painting suppressed.
9132 - name: layout.show_previous_page
9137 # Pref to stop overlay scrollbars from fading out, for testing purposes.
9138 - name: layout.testing.overlay-scrollbars.always-visible
9143 # Throttled frame rate, in frames per second.
9144 - name: layout.throttled_frame_rate
9149 # Whether we should throttle in-process iframes in the active tab.
9150 - name: layout.throttle_in_process_iframes
9155 - name: layout.lower_priority_refresh_driver_during_load
9160 # If > 0, nsRefreshDriver will keep ticking this amount of milliseconds after
9161 # top level page load.
9162 - name: layout.keep_ticking_after_load_ms
9167 # Pref to control enabling scroll anchoring.
9168 - name: layout.css.scroll-anchoring.enabled
9173 # Pref to control whether to suspend also RefreshDriver::Tick when the page
9174 # itself is suspended because of some synchronous operation, like sync XHR.
9175 - name: layout.skip_ticks_while_page_suspended
9180 # Pref to control how many consecutive scroll-anchoring adjustments (since the
9181 # most recent user scroll or timeout) we'll average, before we consider whether
9182 # to automatically turn off scroll anchoring. When we hit this threshold, the
9183 # actual decision to disable also depends on the
9184 # min-average-adjustment-threshold pref, see below for more details.
9186 # Zero disables the heuristic.
9187 - name: layout.css.scroll-anchoring.max-consecutive-adjustments
9192 # Whether to reset counting the consecutive scroll-anchoring adjustments during
9193 # running async scrolling by APZ.
9194 - name: layout.css.scroll-anchoring.reset-heuristic-during-animation
9199 # The time after which we reset the max-consecutive-adjustments period, in
9202 # This prevents sporadic back-and-forth scroll anchoring to trigger the
9203 # max-consecutive-adjustments heuristic.
9204 - name: layout.css.scroll-anchoring.max-consecutive-adjustments-timeout-ms
9209 # Pref to control whether we should disable scroll anchoring on a scroller
9210 # where at least max-consecutive-adjustments have happened, and which the
9211 # average adjustment ends up being less than this number, in CSS pixels.
9213 # So, for example, given max-consecutive-adjustments=10 and
9214 # min-average-adjustment-treshold=3, we'll block scroll anchoring if there have
9215 # been 10 consecutive adjustments without a user scroll or more, and the
9216 # average offset difference between them amount to less than 3 CSS pixels.
9217 - name: layout.css.scroll-anchoring.min-average-adjustment-threshold
9222 # Pref to control disabling scroll anchoring suppression triggers, see
9224 # https://drafts.csswg.org/css-scroll-anchoring/#suppression-triggers
9226 # Those triggers should be unnecessary after bug 1561450.
9227 - name: layout.css.scroll-anchoring.suppressions.enabled
9232 - name: layout.css.scroll-anchoring.highlight
9237 # Pref to control whether we reselect scroll anchors if sub-optimal
9239 # See https://github.com/w3c/csswg-drafts/issues/6787
9240 - name: layout.css.scroll-anchoring.reselect-if-suboptimal
9245 # Handle scroll-anchoring adjustments as absolute scroll position updates.
9246 - name: layout.css.scroll-anchoring.absolute-update
9251 # Are shared memory User Agent style sheets enabled?
9252 - name: layout.css.shared-memory-ua-sheets.enabled
9257 # Is support for -webkit-line-clamp on regular blocks enabled?
9258 - name: layout.css.webkit-line-clamp.block.enabled
9263 # Is 'content:none' supported on (non-pseudo) elements?
9264 - name: layout.css.element-content-none.enabled
9265 type: RelaxedAtomicBool
9270 # Whether we want scrollbar-width: thin to behave as scrollbar-width: auto.
9271 - name: layout.css.scrollbar-width-thin.disabled
9272 type: RelaxedAtomicBool
9276 # Whether supports() conditions in @import is enabled
9277 - name: layout.css.import-supports.enabled
9278 type: RelaxedAtomicBool
9283 # Whether :-moz-broken is supported in content.
9284 - name: layout.css.moz-broken.content.enabled
9285 type: RelaxedAtomicBool
9290 # Whether the modern ::slider-* pseudos are enabled.
9291 - name: layout.css.modern-range-pseudos.enabled
9292 type: RelaxedAtomicBool
9297 # Whether frame visibility tracking is enabled globally.
9298 - name: layout.framevisibility.enabled
9303 # The fraction of the scrollport we allow to horizontally scroll by before we
9304 # schedule an update of frame visibility.
9305 - name: layout.framevisibility.amountscrollbeforeupdatehorizontal
9310 # The fraction of the scrollport we allow to vertically scroll by before we
9311 # schedule an update of frame visibility.
9312 - name: layout.framevisibility.amountscrollbeforeupdatevertical
9317 # The number of scrollports wide to expand when tracking frame visibility.
9318 - name: layout.framevisibility.numscrollportwidths
9327 # The number of scrollports high to expand when tracking frame visibility.
9328 - name: layout.framevisibility.numscrollportheights
9334 - name: layout.dynamic-toolbar-max-height
9335 type: RelaxedAtomicInt32
9339 # Whether outlines should include all overflowing descendants, or just the
9340 # border-box of a given element.
9342 # Historically we have included descendants but other browsers have not.
9343 - name: layout.outline.include-overflow
9348 - name: layout.visibility.min-recompute-interval-ms
9353 # Controls double click and Alt+Arrow word selection behavior.
9354 - name: layout.word_select.eat_space_to_next_word
9363 - name: layout.word_select.stop_at_punctuation
9364 type: RelaxedAtomicBool
9368 # Whether underscore should be treated as a word-breaking character for
9369 # word selection/arrow-key movement purposes.
9370 - name: layout.word_select.stop_at_underscore
9375 # Should deprecated plugin behavior fallback to normal behavior or use
9376 # the experimental design.
9377 - name: layout.use-plugin-fallback
9382 # Whether to draw images in CSS backgrounds if we only have a partial frame.
9383 - name: layout.display_partial_background_images
9388 # Controls whether nsRefreshDriver::IsInHighRateMode() may ever return true.
9389 - name: layout.expose_high_rate_mode_from_refreshdriver
9394 # Whether <details> is forced to be a block, see bug 1856374
9395 - name: layout.details.force-block-layout
9400 # Whether to disable layer pixel alignment in scroll related stuff.
9401 - name: layout.scroll.disable-pixel-alignment
9406 #---------------------------------------------------------------------------
9407 # Prefs starting with "mathml."
9408 #---------------------------------------------------------------------------
9410 # Whether to disable legacy names "thickmathspace", "mediummathspace",
9411 # "thickmathspace" etc for length attributes.
9412 - name: mathml.mathspace_names.disabled
9414 value: @IS_NIGHTLY_BUILD@
9417 # Whether to disable support for stretching operators with STIXGeneral fonts.
9418 # macos still has the deprecated STIXGeneral font pre-installed.
9419 - name: mathml.stixgeneral_operator_stretching.disabled
9421 #if defined(XP_MACOSX)
9422 value: @IS_NIGHTLY_BUILD@
9428 # Whether to disable fallback for mathvariant=italic/bold/bold-italic via
9429 # styling when lacking proper fonts for Mathematical Alphanumeric Symbols.
9430 # We expect all OSes to have relevant fonts, except Android, see bug 1789083.
9431 - name: mathml.mathvariant_styling_fallback.disabled
9433 #if defined(ANDROID)
9440 # Whether to disable the MathML3 support for the mathvariant attribute. For
9441 # MathML Core, support is restricted to the <mi> element and to value "normal".
9442 # Corresponding automatic italicization on single-char <mi> element is also
9443 # implemented via text-transform: auto when that flag is enabled.
9444 - name: mathml.legacy_mathvariant_attribute.disabled
9446 value: @IS_NIGHTLY_BUILD@
9450 #---------------------------------------------------------------------------
9451 # Prefs starting with "media."
9452 #---------------------------------------------------------------------------
9455 # This pref defines what the blocking policy would be used in blocking autoplay.
9456 # 0 : use sticky activation (default)
9457 # https://html.spec.whatwg.org/multipage/interaction.html#sticky-activation
9458 # 1 : use transient activation (the transient activation duration can be
9459 # adjusted by the pref `dom.user_activation.transient.timeout`)
9460 # https://html.spec.whatwg.org/multipage/interaction.html#transient-activation
9461 # 2 : user input depth (allow autoplay when the play is trigged by user input
9462 # which is determined by the user input depth)
9463 - name: media.autoplay.blocking_policy
9468 # Whether to allow autoplay on extension background pages.
9469 - name: media.autoplay.allow-extension-background-pages
9474 # Block autoplay, asking for permission by default.
9475 # 0=Allowed, 1=Blocked, 5=All Blocked
9476 - name: media.autoplay.default
9481 # File-backed MediaCache size.
9482 - name: media.cache_size
9483 type: RelaxedAtomicUint32
9484 value: 512000 # Measured in KiB
9487 # Size of file backed MediaCache while on a connection which is cellular (3G,
9488 # etc), and thus assumed to be "expensive".
9489 - name: media.cache_size.cellular
9490 type: RelaxedAtomicUint32
9491 value: 32768 # Measured in KiB
9494 # Whether cubeb is sandboxed (AudioIPC)
9495 - name: media.cubeb.sandbox
9498 #if defined(XP_LINUX) || defined(XP_WIN) || defined(XP_MACOSX)
9504 # Whether or not to pass AUDCLNT_STREAMOPTIONS_RAW when initializing audio
9505 # streams when using WASAPI.
9506 # 0 - don't use RAW streams
9507 # 1 - use RAW streams for input streams only
9508 # 2 - use RAW streams for output streams only
9509 # 3 - use RAW streams for input and output streams
9510 #if defined (XP_WIN)
9511 - name: media.cubeb.wasapi-raw
9512 type: RelaxedAtomicUint32
9517 # Whether to make the start of cubeb stream slower, and by how many
9519 - name: media.cubeb.slow_stream_init_ms
9520 type: RelaxedAtomicUint32
9524 # If a resource is known to be smaller than this size (in kilobytes), a
9525 # memory-backed MediaCache may be used; otherwise the (single shared global)
9526 # file-backed MediaCache is used.
9527 - name: media.memory_cache_max_size
9529 value: 8192 # Measured in KiB
9532 # Don't create more memory-backed MediaCaches if their combined size would go
9533 # above this absolute size limit.
9534 - name: media.memory_caches_combined_limit_kb
9539 # Don't create more memory-backed MediaCaches if their combined size would go
9540 # above this relative size limit (a percentage of physical memory).
9541 - name: media.memory_caches_combined_limit_pc_sysmem
9543 value: 5 # A percentage
9546 # When a network connection is suspended, don't resume it until the amount of
9547 # buffered data falls below this threshold (in seconds).
9548 - name: media.cache_resume_threshold
9549 type: RelaxedAtomicUint32
9552 - name: media.cache_resume_threshold.cellular
9553 type: RelaxedAtomicUint32
9557 # Stop reading ahead when our buffered data is this many seconds ahead of the
9558 # current playback position. This limit can stop us from using arbitrary
9559 # amounts of network bandwidth prefetching huge videos.
9560 - name: media.cache_readahead_limit
9561 type: RelaxedAtomicUint32
9564 - name: media.cache_readahead_limit.cellular
9565 type: RelaxedAtomicUint32
9570 - name: media.mediacapabilities.drop-threshold
9571 type: RelaxedAtomicInt32
9575 - name: media.mediacapabilities.from-database
9576 type: RelaxedAtomicBool
9577 value: @IS_NIGHTLY_BUILD@
9581 - name: media.resampling.enabled
9582 type: RelaxedAtomicBool
9586 # libcubeb backend implements .get_preferred_channel_layout
9587 - name: media.forcestereo.enabled
9588 type: RelaxedAtomicBool
9589 #if defined(XP_WIN) || defined(XP_DARWIN) || defined(MOZ_PULSEAUDIO)
9598 # Whether to enable MediaSource support.
9599 - name: media.mediasource.enabled
9600 type: RelaxedAtomicBool
9604 - name: media.mediasource.mp4.enabled
9605 type: RelaxedAtomicBool
9609 - name: media.mediasource.webm.enabled
9610 type: RelaxedAtomicBool
9614 # Check if vp9 is enabled by default in mediasource. False on Android.
9615 # If disabled, vp9 will only be enabled under some conditions:
9616 # - h264 HW decoding is not supported
9617 # - mp4 is not enabled
9618 # - Device was deemed fast enough to decode VP9 via the VP9Benchmark utility
9619 # - A VP9 HW decoder is present.
9620 - name: media.mediasource.vp9.enabled
9621 type: RelaxedAtomicBool
9622 value: @IS_NOT_ANDROID@
9625 - name: media.mediasource.webm.audio.enabled
9626 type: RelaxedAtomicBool
9630 # Whether to enable MediaSource v2 support.
9631 - name: media.mediasource.experimental.enabled
9632 type: RelaxedAtomicBool
9637 - name: media.ruin-av-sync.enabled
9638 type: RelaxedAtomicBool
9642 # Encrypted Media Extensions
9643 - name: media.eme.enabled
9645 #if defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID)
9646 # On Linux EME is visible but disabled by default. This is so that the "Play
9647 # DRM content" checkbox in the Firefox UI is unchecked by default. DRM
9648 # requires downloading and installing proprietary binaries, which users on an
9649 # open source operating systems didn't opt into. The first time a site using
9650 # EME is encountered, the user will be prompted to enable DRM, whereupon the
9651 # EME plugin binaries will be downloaded if permission is granted.
9658 # Whether we expose the functionality proposed in
9659 # https://github.com/WICG/encrypted-media-encryption-scheme/blob/master/explainer.md
9660 # I.e. if true, apps calling navigator.requestMediaKeySystemAccess() can pass
9661 # an optional encryption scheme as part of MediaKeySystemMediaCapability
9662 # objects. If a scheme is present when we check for support, we must ensure we
9663 # support that scheme in order to provide key system access.
9664 - name: media.eme.encrypted-media-encryption-scheme.enabled
9669 # Do we need explicit approval from the application to allow access to EME?
9670 # If true, Gecko will ask for permission before allowing MediaKeySystemAccess.
9671 # At time of writing this is aimed at GeckoView, and setting this to true
9672 # outside of GeckoView or test environments will likely break EME.
9673 - name: media.eme.require-app-approval
9678 - name: media.eme.audio.blank
9679 type: RelaxedAtomicBool
9683 - name: media.eme.video.blank
9684 type: RelaxedAtomicBool
9688 - name: media.eme.chromium-api.video-shmems
9689 type: RelaxedAtomicUint32
9693 # Is support for MediaKeys.getStatusForPolicy enabled?
9694 - name: media.eme.hdcp-policy-check.enabled
9699 - name: media.eme.max-throughput-ms
9700 type: RelaxedAtomicUint32
9704 - name: media.clearkey.persistent-license.enabled
9709 # Are test specific clearkey key systems enabled and exposed?
9710 - name: media.clearkey.test-key-systems.enabled
9715 - name: media.cloneElementVisually.testing
9720 # Does the GMPlugin process initialize minimal XPCOM
9721 - name: media.gmp.use-minimal-xpcom
9722 type: RelaxedAtomicBool
9726 # Does the GMPlugin process use native event processing
9727 - name: media.gmp.use-native-event-processing
9728 type: RelaxedAtomicBool
9729 value: @IS_NOT_XP_MACOSX@
9732 #if defined(XP_LINUX) && defined(MOZ_SANDBOX)
9733 # Whether to allow, on a Linux system that doesn't support the necessary
9734 # sandboxing features, loading Gecko Media Plugins unsandboxed. However, EME
9735 # CDMs will not be loaded without sandboxing even if this pref is changed.
9736 - name: media.gmp.insecure.allow
9737 type: RelaxedAtomicBool
9742 # (When reading the next line, know that preprocessor.py doesn't
9743 # understand parentheses, but && is higher precedence than ||.)
9744 #if defined(XP_WIN) && defined(_ARM64_) || defined(XP_MACOSX)
9745 # These prefs control whether or not we will allow x86/x64 plugins
9746 # to run on Windows ARM or Apple Silicon machines. This requires
9747 # launching the GMP child process executable in x86/x64 mode. We
9748 # expect to allow this for Widevine until an arm64 version of
9749 # Widevine and Clearkey is made available. We don't expect to need
9750 # to allow this for OpenH264.
9752 # For Apple Silicon and OSX, it will be for universal builds and
9753 # whether or not it can use the x64 Widevine plugin.
9755 # For Windows ARM, it will be for ARM builds and whether or not it
9756 # can use x86 Widevine or Clearkey plugins.
9758 # May a Widevine GMP x64 process be executed on ARM builds.
9759 - name: media.gmp-widevinecdm.allow-x64-plugin-on-arm64
9760 type: RelaxedAtomicBool
9764 # May an OpenH264 GMP x64 process be executed on ARM builds.
9765 - name: media.gmp-gmpopenh264.allow-x64-plugin-on-arm64
9766 type: RelaxedAtomicBool
9770 # May a Clearkey GMP x64 process be executed on ARM builds.
9771 - name: media.gmp-gmpclearkey.allow-x64-plugin-on-arm64
9772 type: RelaxedAtomicBool
9777 # Specifies whether the PDMFactory can create a test decoder that just outputs
9778 # blank frames/audio instead of actually decoding. The blank decoder works on
9780 - name: media.use-blank-decoder
9781 type: RelaxedAtomicBool
9785 - name: media.gpu-process-decoder
9786 type: RelaxedAtomicBool
9794 - name: media.rdd-process.enabled
9795 type: RelaxedAtomicBool
9798 #elif defined(XP_MACOSX)
9800 #elif defined(XP_LINUX) && !defined(ANDROID)
9802 #elif defined(XP_FREEBSD)
9804 #elif defined(XP_OPENBSD)
9811 - name: media.rdd-retryonfailure.enabled
9812 type: RelaxedAtomicBool
9816 - name: media.rdd-process.startup_timeout_ms
9817 type: RelaxedAtomicInt32
9821 # Specifies how many times we restart RDD process after crash till we give up.
9822 # After first RDD restart we disable HW acceleration on Linux.
9823 - name: media.rdd-process.max-crashes
9824 type: RelaxedAtomicInt32
9829 - name: media.rdd-ffmpeg.enabled
9830 type: RelaxedAtomicBool
9836 - name: media.rdd-ffvpx.enabled
9837 type: RelaxedAtomicBool
9840 #elif defined(XP_MACOSX)
9842 #elif defined(XP_LINUX) && !defined(ANDROID)
9844 #elif defined(XP_FREEBSD)
9846 #elif defined(XP_OPENBSD)
9855 - name: media.rdd-wmf.enabled
9856 type: RelaxedAtomicBool
9861 #ifdef MOZ_APPLEMEDIA
9862 - name: media.rdd-applemedia.enabled
9863 type: RelaxedAtomicBool
9868 - name: media.rdd-theora.enabled
9869 type: RelaxedAtomicBool
9872 #elif defined(XP_MACOSX)
9874 #elif defined(XP_LINUX) && !defined(ANDROID)
9876 #elif defined(XP_FREEBSD)
9878 #elif defined(XP_OPENBSD)
9885 - name: media.rdd-vorbis.enabled
9886 type: RelaxedAtomicBool
9889 #elif defined(XP_MACOSX)
9891 #elif defined(XP_LINUX) && !defined(ANDROID)
9893 #elif defined(XP_FREEBSD)
9895 #elif defined(XP_OPENBSD)
9902 - name: media.rdd-vpx.enabled
9903 type: RelaxedAtomicBool
9906 #elif defined(XP_MACOSX)
9908 #elif defined(XP_LINUX) && !defined(ANDROID)
9910 #elif defined(XP_FREEBSD)
9912 #elif defined(XP_OPENBSD)
9919 - name: media.rdd-wav.enabled
9920 type: RelaxedAtomicBool
9923 #elif defined(XP_MACOSX)
9925 #elif defined(XP_LINUX) && !defined(ANDROID)
9927 #elif defined(XP_FREEBSD)
9929 #elif defined(XP_OPENBSD)
9936 - name: media.rdd-opus.enabled
9937 type: RelaxedAtomicBool
9940 #elif defined(XP_MACOSX)
9942 #elif defined(XP_LINUX) && !defined(ANDROID)
9944 #elif defined(XP_FREEBSD)
9946 #elif defined(XP_OPENBSD)
9953 - name: media.rdd-webaudio.batch.size
9954 type: RelaxedAtomicInt32
9958 # This pref is here to control whether we want to perform audio decoding by
9959 # using the IPC actor within the Utility process rather than the RDD process.
9960 # When it is set to true, then the utility process will take precedence over RDD
9961 # to perform audio decoding.
9962 # TODO: Enabling for Isolated Processes builds on Android
9963 - name: media.utility-process.enabled
9964 type: RelaxedAtomicBool
9967 #elif defined(XP_MACOSX)
9969 #elif defined(XP_LINUX) && !defined(ANDROID)
9971 #elif defined(ANDROID) && !defined(MOZ_ANDROID_CONTENT_SERVICE_ISOLATED_PROCESS)
9973 #elif defined(XP_OPENBSD)
9980 # Specifies how many times we restart Utility process after crash till we give
9982 - name: media.utility-process.max-crashes
9983 type: RelaxedAtomicInt32
9988 - name: media.utility-ffmpeg.enabled
9989 type: RelaxedAtomicBool
9995 - name: media.utility-ffvpx.enabled
9996 type: RelaxedAtomicBool
10002 - name: media.utility-wmf.enabled
10003 type: RelaxedAtomicBool
10008 #ifdef MOZ_APPLEMEDIA
10009 - name: media.utility-applemedia.enabled
10010 type: RelaxedAtomicBool
10015 - name: media.utility-vorbis.enabled
10016 type: RelaxedAtomicBool
10020 - name: media.utility-wav.enabled
10021 type: RelaxedAtomicBool
10025 - name: media.utility-opus.enabled
10026 type: RelaxedAtomicBool
10031 # Enable the MediaCodec PlatformDecoderModule by default.
10032 - name: media.android-media-codec.enabled
10033 type: RelaxedAtomicBool
10038 # Dont yet enable AndroidDecoderModule on Utility
10039 - name: media.utility-android-media-codec.enabled
10040 type: RelaxedAtomicBool
10044 - name: media.android-media-codec.preferred
10045 type: RelaxedAtomicBool
10050 # Now we will completely disable the ability to perform audio decoding outside
10052 # We do that only on nightly builds for now.
10053 - name: media.allow-audio-non-utility
10054 type: RelaxedAtomicBool
10055 #if defined(NIGHTLY_BUILD) || defined(EARLY_BETA_OR_EARLIER)
10059 #endif // defined(NIGHTLY_BUILD) || defined(EARLY_BETA_OR_EARLIER)
10063 - name: media.omx.enabled
10069 # Allow ffmpeg decoder to decode directly onto shmem buffer
10070 - name: media.ffmpeg.customized-buffer-allocation
10071 type: RelaxedAtomicBool
10076 - name: media.ffmpeg.enabled
10077 type: RelaxedAtomicBool
10078 #if defined(XP_MACOSX)
10085 - name: media.libavcodec.allow-obsolete
10089 #endif # MOZ_FFMPEG
10091 # Allow using ffmpeg encoder
10092 - name: media.ffmpeg.encoder.enabled
10093 type: RelaxedAtomicBool
10094 #if defined(MOZ_WIDGET_GTK)
10095 value: @IS_NIGHTLY_BUILD@
10101 #if defined(MOZ_FFMPEG) || defined(MOZ_FFVPX)
10102 # Allow using openh264 decoding with ffmpeg
10103 - name: media.ffmpeg.allow-openh264
10104 type: RelaxedAtomicBool
10105 value: @IS_NOT_NIGHTLY_BUILD@
10107 #endif # MOZ_FFMPEG || MOZ_FFVPX
10109 #ifdef MOZ_WIDGET_GTK
10110 # Use VA-API for ffmpeg video playback on Linux
10111 - name: media.ffmpeg.vaapi.enabled
10116 # Force to copy dmabuf video frames
10117 # Used for debugging/troubleshooting only
10118 # 0 - force disable
10121 - name: media.ffmpeg.vaapi.force-surface-zero-copy
10125 #endif # MOZ_WIDGET_GTK
10127 - name: media.ffvpx.enabled
10128 type: RelaxedAtomicBool
10136 - name: media.ffvpx.mp3.enabled
10137 type: RelaxedAtomicBool
10145 - name: media.ffvpx.vorbis.enabled
10146 type: RelaxedAtomicBool
10154 - name: media.ffvpx.opus.enabled
10155 type: RelaxedAtomicBool
10163 - name: media.ffvpx.wav.enabled
10164 type: RelaxedAtomicBool
10172 # Set to true in marionette tests to disable the sanity test
10173 # which would lead to unnecessary start of the RDD process.
10174 - name: media.sanity-test.disabled
10175 type: RelaxedAtomicBool
10181 - name: media.wmf.enabled
10182 type: RelaxedAtomicBool
10186 # Whether DD should consider WMF-disabled a WMF failure, useful for testing.
10187 - name: media.decoder-doctor.wmf-disabled-is-failure
10188 type: RelaxedAtomicBool
10192 - name: media.wmf.dxva.d3d11.enabled
10193 type: RelaxedAtomicBool
10197 - name: media.wmf.dxva.max-videos
10198 type: RelaxedAtomicUint32
10202 - name: media.wmf.use-nv12-format
10203 type: RelaxedAtomicBool
10207 - name: media.wmf.zero-copy-nv12-textures
10211 # Enable hardware decoded video no copy even when it is blocked.
10212 - name: media.wmf.zero-copy-nv12-textures-force-enabled
10217 - name: media.wmf.force.allow-p010-format
10218 type: RelaxedAtomicBool
10222 - name: media.wmf.use-sync-texture
10227 - name: media.wmf.low-latency.enabled
10228 type: RelaxedAtomicBool
10232 - name: media.wmf.skip-blacklist
10233 type: RelaxedAtomicBool
10237 - name: media.wmf.amd.highres.enabled
10238 type: RelaxedAtomicBool
10242 - name: media.wmf.allow-unsupported-resolutions
10243 type: RelaxedAtomicBool
10247 - name: media.wmf.vp9.enabled
10248 type: RelaxedAtomicBool
10252 - name: media.wmf.av1.enabled
10253 type: RelaxedAtomicBool
10257 # Using Windows Media Foundation Media Engine for encrypted playback
10258 # 0 : disable, 1 : enable for encrypted and clear,
10259 # 2 : enable for encrypted only, 3 : enable for clear only
10260 - name: media.wmf.media-engine.enabled
10261 type: RelaxedAtomicUint32
10265 # Testing purpose, enable media engine on channel decoder as well.
10266 - name: media.wmf.media-engine.channel-decoder.enabled
10267 type: RelaxedAtomicBool
10271 # The amount of video raw data the engine stream will queue
10272 - name: media.wmf.media-engine.raw-data-threshold.video
10273 type: RelaxedAtomicInt32
10277 # The amount of audio raw data the engine stream will queue
10278 - name: media.wmf.media-engine.raw-data-threshold.audio
10279 type: RelaxedAtomicInt32
10283 # Specifies how many times we restart MFCDM process after crash till we give up.
10284 - name: media.wmf.media-engine.max-crashes
10285 type: RelaxedAtomicInt32
10289 # Enable PlayReady DRM for EME
10290 - name: media.eme.playready.enabled
10291 type: RelaxedAtomicBool
10292 #if defined(MOZ_WMF_CDM) && defined(NIGHTLY_BUILD)
10293 value: false # TODO: enable this when ready to play.
10299 # Use IsTypeSupportedEx for PlayReady
10300 - name: media.eme.playready.istypesupportedex
10301 type: RelaxedAtomicBool
10305 # Enable HEVC support via the windows media foundation
10306 # 0 : disable, 1 : enable for media engine and MFT,
10307 # 2 : enable for media engine only
10308 - name: media.wmf.hevc.enabled
10309 type: RelaxedAtomicUint32
10310 #if defined(NIGHTLY_BUILD)
10317 # Enable Widevine experiment DRM for EME
10318 - name: media.eme.widevine.experiment.enabled
10319 type: RelaxedAtomicBool
10325 - name: media.decoder-doctor.testing
10330 - name: media.hardware-video-decoding.enabled
10335 - name: media.hardware-video-decoding.force-enabled
10340 # Whether to check the decoder supports recycling.
10341 - name: media.decoder.recycle.enabled
10342 type: RelaxedAtomicBool
10343 value: @IS_ANDROID@
10346 # Should MFR try to skip to the next key frame?
10347 - name: media.decoder.skip-to-next-key-frame.enabled
10348 type: RelaxedAtomicBool
10352 # When video continues later than the current media time for this period of
10353 # time, then it will trigger skip-to-next-keyframe mechanism. As this aims to
10354 # solve the drop frames issue where video decoding too slow for high
10355 # resolution videos. eg. 4k+. Therefore, the value is is determined by the
10356 # telemetry probe `video_inter_keyframe_max_ms` in the key of `AV,h>2160` which
10357 # shows that 95% video's key frame interval are less than ~5000. We use its
10358 # half value as a threashold to decide whether we should keep decoding in the
10359 # current video position or jump to the next keyframe in order to decode future
10360 # frames in advance.
10361 - name: media.decoder.skip_when_video_too_slow_ms
10362 type: RelaxedAtomicInt32
10366 # True if we want to decode in batches.
10367 - name: media.gmp.decoder.decode_batch
10368 type: RelaxedAtomicBool
10372 # True if we allow use of any decoders found in GMP plugins.
10373 - name: media.gmp.decoder.enabled
10374 type: RelaxedAtomicBool
10378 # True if we want to request the multithreaded GMP decoder.
10379 - name: media.gmp.decoder.multithreaded
10380 type: RelaxedAtomicBool
10384 # True if we want to try using the GMP plugin decoders first.
10385 - name: media.gmp.decoder.preferred
10386 type: RelaxedAtomicBool
10390 # True if we want to reorder frames from the decoder based on the timestamp.
10391 - name: media.gmp.decoder.reorder_frames
10392 type: RelaxedAtomicBool
10396 # Whether to suspend decoding of videos in background tabs.
10397 - name: media.suspend-background-video.enabled
10398 type: RelaxedAtomicBool
10402 # Delay, in ms, from time window goes to background to suspending
10403 # video decoders. Defaults to 10 seconds.
10404 - name: media.suspend-background-video.delay-ms
10405 type: RelaxedAtomicUint32
10409 - name: media.dormant-on-pause-timeout-ms
10410 type: RelaxedAtomicInt32
10414 # AudioTrack and VideoTrack support
10415 - name: media.track.enabled
10420 # This pref disables the reception of RTCP. It is used for testing.
10421 - name: media.webrtc.net.force_disable_rtcp_reception
10422 type: ReleaseAcquireAtomicBool
10426 # This pref controls whether dispatch testing-only events.
10427 - name: media.webvtt.testing.events
10432 - name: media.webspeech.synth.force_global_queue
10437 - name: media.webspeech.test.enable
10442 - name: media.webspeech.test.fake_fsm_events
10447 - name: media.webspeech.test.fake_recognition_service
10452 #ifdef MOZ_WEBSPEECH
10453 - name: media.webspeech.recognition.enable
10459 - name: media.webspeech.recognition.force_enable
10464 #ifdef MOZ_WEBSPEECH
10465 - name: media.webspeech.synth.enabled
10469 #endif # MOZ_WEBSPEECH
10471 - name: media.encoder.webm.enabled
10472 type: RelaxedAtomicBool
10476 - name: media.audio-max-decode-error
10478 #if defined(RELEASE_OR_BETA)
10481 # Zero tolerance in pre-release builds to detect any decoder regression.
10486 - name: media.video-max-decode-error
10488 #if defined(RELEASE_OR_BETA)
10491 # Zero tolerance in pre-release builds to detect any decoder regression.
10496 # Are video stats enabled? (Disabling can help prevent fingerprinting.)
10497 - name: media.video_stats.enabled
10502 # forces the number of dropped frames to 0
10503 - name: media.video.dropped_frame_stats.enabled
10509 - name: media.opus.enabled
10510 type: RelaxedAtomicBool
10515 - name: media.wave.enabled
10516 type: RelaxedAtomicBool
10521 - name: media.ogg.enabled
10522 type: RelaxedAtomicBool
10527 - name: media.webm.enabled
10528 type: RelaxedAtomicBool
10533 - name: media.av1.enabled
10534 type: RelaxedAtomicBool
10535 #if defined(XP_WIN) && !defined(_ARM64_)
10537 #elif defined(XP_MACOSX)
10539 #elif defined(MOZ_WIDGET_ANDROID)
10541 #elif defined(XP_UNIX)
10548 - name: media.av1.use-dav1d
10549 type: RelaxedAtomicBool
10550 #if defined(XP_WIN) && !defined(_ARM64_)
10552 #elif defined(XP_MACOSX)
10554 #elif defined(XP_UNIX)
10561 - name: media.av1.new-thread-count-strategy
10562 type: RelaxedAtomicBool
10566 - name: media.av1.force-thread-count
10567 type: RelaxedAtomicInt32
10571 - name: media.flac.enabled
10572 type: RelaxedAtomicBool
10577 - name: media.hls.enabled
10578 type: RelaxedAtomicBool
10579 value: @IS_ANDROID@
10582 # Max number of HLS players that can be created concurrently. Used only on
10583 # Android and when "media.hls.enabled" is true.
10585 - name: media.hls.max-allocations
10591 - name: media.mp4.enabled
10592 type: RelaxedAtomicBool
10596 - name: media.mp4.sniff_iso_brand
10597 type: RelaxedAtomicBool
10601 # Error/warning handling, Decoder Doctor.
10603 # Set to true to force demux/decode warnings to be treated as errors.
10604 - name: media.playback.warnings-as-errors
10605 type: RelaxedAtomicBool
10609 # Resume video decoding when the cursor is hovering on a background tab to
10610 # reduce the resume latency and improve the user experience.
10611 - name: media.resume-background-video-on-tabhover
10616 # Media Seamless Looping
10617 - name: media.seamless-looping
10618 type: RelaxedAtomicBool
10622 - name: media.seamless-looping-video
10623 type: RelaxedAtomicBool
10627 - name: media.autoplay.block-event.enabled
10632 - name: media.media-capabilities.enabled
10633 type: RelaxedAtomicBool
10637 - name: media.media-capabilities.screen.enabled
10638 type: RelaxedAtomicBool
10642 - name: media.benchmark.vp9.fps
10643 type: RelaxedAtomicUint32
10647 - name: media.benchmark.vp9.threshold
10648 type: RelaxedAtomicUint32
10652 - name: media.benchmark.vp9.versioncheck
10653 type: RelaxedAtomicUint32
10657 - name: media.benchmark.frames
10658 type: RelaxedAtomicUint32
10662 - name: media.benchmark.timeout
10663 type: RelaxedAtomicUint32
10667 - name: media.test.video-suspend
10668 type: RelaxedAtomicBool
10672 # MediaCapture prefs follow
10674 # Enables navigator.mediaDevices and getUserMedia() support. See also
10675 # media.peerconnection.enabled
10676 - name: media.navigator.enabled
10681 # This pref turns off window-focus checks on the navigator.mediaDevices methods,
10682 # for partner testing frameworks.
10683 # Prefer "focusmanager.testmode", which is already set by default for
10684 # web-platform tests.
10685 - name: media.devices.unfocused.enabled
10690 # This pref turns off [SecureContext] on the navigator.mediaDevices object, for
10691 # more compatible legacy behavior.
10692 - name: media.devices.insecure.enabled
10697 # If the above pref is also enabled, this pref enabled getUserMedia() support
10698 # in http, bypassing the instant NotAllowedError you get otherwise.
10699 - name: media.getusermedia.insecure.enabled
10704 # Enable tab sharing
10705 - name: media.getusermedia.browser.enabled
10706 type: RelaxedAtomicBool
10710 # The getDisplayMedia method is always SecureContext regardless of the above two
10711 # prefs. But it is not implemented on android, and can be turned off elsewhere.
10712 - name: media.getdisplaymedia.enabled
10714 value: @IS_NOT_ANDROID@
10717 # The getDisplayMedia prompt uses getDisplayMedia under the hood to show previews.
10718 # This can be turned off if, e.g. on systems with known issues like X11, or if
10719 # previews are not desired.
10720 - name: media.getdisplaymedia.previews.enabled
10722 value: @IS_NOT_ANDROID@
10725 # Turn off any cameras (but not mics) while in the background. This is desirable
10727 - name: media.getusermedia.camera.background.mute.enabled
10729 value: @IS_ANDROID@
10732 # Use the libwebrtc AVFoundation camera backend on Mac by default. When
10733 # disabled, an older forked capture module is used.
10734 - name: media.getusermedia.camera.macavf.enabled
10739 # This pref turns on legacy (non-spec) exposure of camera and microphone
10740 # information from enumerateDevices and devicechange ahead of successful
10741 # getUserMedia calls. Should only be turned on to resolve web compat issues,
10742 # since doing so reveals more user fingerprinting information to trackers.
10744 # In this mode, camera and microphone device labels are exposed if the site has a
10745 # persisted permission to either kind, as well as while actively capturing either
10746 # kind (temporary and tab-specific grace-period permissions do not count).
10748 # Planned next steps: true → @IS_NOT_NIGHTLY_BUILD@ → false
10749 - name: media.devices.enumerate.legacy.enabled
10754 # WebRTC prefs follow
10756 # Enables auto refresh of peerconnection stats by default
10757 - name: media.aboutwebrtc.auto_refresh.peerconnection_section
10759 value: @IS_NOT_NIGHTLY_BUILD@
10762 # Enables auto refresh of the transport connection log by default
10763 - name: media.aboutwebrtc.auto_refresh.connection_log_section
10768 # Enables auto refresh of user config by default
10769 - name: media.aboutwebrtc.auto_refresh.user_modified_config_section
10774 # Enables auto refresh of media context by default
10775 - name: media.aboutwebrtc.auto_refresh.media_ctx_section
10780 # Enables RTCPeerConnection support. Note that, when true, this pref enables
10781 # navigator.mediaDevices and getUserMedia() support as well.
10782 # See also media.navigator.enabled
10783 - name: media.peerconnection.enabled
10784 type: RelaxedAtomicBool
10788 - name: media.peerconnection.scripttransform.enabled
10789 type: RelaxedAtomicBool
10794 # Use MediaDataDecoder API for VP8/VP9 in WebRTC. This includes hardware
10795 # acceleration for decoding.
10796 - name: media.navigator.mediadatadecoder_vpx_enabled
10797 type: RelaxedAtomicBool
10798 #if defined(NIGHTLY_BUILD) || defined(MOZ_WIDGET_GTK)
10805 # Use MediaDataDecoder API for H264 in WebRTC. This includes hardware
10806 # acceleration for decoding.
10807 - name: media.navigator.mediadatadecoder_h264_enabled
10808 type: RelaxedAtomicBool
10809 #if defined(_ARM64_) && defined(XP_WIN)
10816 #if defined(MOZ_WIDGET_GTK)
10817 # Use hardware acceleration for VP8 decoding on Linux.
10818 - name: media.navigator.mediadatadecoder_vp8_hardware_enabled
10819 type: RelaxedAtomicBool
10824 # Interval in milliseconds at which to gather WebRTC stats for use in about:webrtc.
10825 - name: media.aboutwebrtc.hist.poll_interval_ms
10826 type: RelaxedAtomicUint32
10830 # History time depth in seconds to keep for webrtc:stats for use in about:webrtc.
10831 - name: media.aboutwebrtc.hist.storage_window_s
10832 type: RelaxedAtomicUint32
10836 # Time in minutes to retain peer connection stats after closing.
10837 - name: media.aboutwebrtc.hist.prune_after_m
10838 type: RelaxedAtomicUint32
10842 # Max number of closed PC stats histories to retain
10843 - name: media.aboutwebrtc.hist.closed_stats_to_retain
10844 type: RelaxedAtomicUint32
10848 # Gather PeerConnection stats history for display in about:webrtc. If
10849 # disabled history will only gather when about:webrtc is open. Additionally,
10850 # if disabled and when about:webrtc is not in the foreground history data
10851 # will become sparse.
10852 - name: media.aboutwebrtc.hist.enabled
10853 type: RelaxedAtomicBool
10854 #if defined(MOZ_WIDGET_ANDROID)
10857 value: @IS_NIGHTLY_BUILD@
10861 #endif # MOZ_WEBRTC
10863 # HTMLMediaElement.allowedToPlay should be exposed to web content when
10864 # block autoplay rides the trains to release. Until then, Nightly only.
10865 - name: media.allowed-to-play.enabled
10867 value: @IS_NIGHTLY_BUILD@
10870 # Is support for MediaDevices.ondevicechange enabled?
10871 - name: media.ondevicechange.enabled
10876 # Is support for HTMLMediaElement.seekToNextFrame enabled?
10877 - name: media.seekToNextFrame.enabled
10882 # Is the Audio Output Devices API enabled?
10883 - name: media.setsinkid.enabled
10885 #if defined(MOZ_WIDGET_ANDROID)
10886 value: false # bug 1473346
10892 # Turn on this pref can enable test-only events for media element.
10893 - name: media.testing-only-events
10898 - name: media.useAudioChannelService.testing
10903 - name: media.audioFocus.management
10905 #if defined(MOZ_WIDGET_ANDROID)
10912 - name: media.hardwaremediakeys.enabled
10917 # If this pref is on, then `media.mediacontrol.stopcontrol.timer.ms` would take
10918 # effect and determine the timing to stop controlling media.
10919 - name: media.mediacontrol.stopcontrol.timer
10924 # If media is being paused after a certain period, then we would think that
10925 # media doesn't need to be controlled anymore. Therefore, that media would stop
10926 # listening to the media control key events. The value of this pref is how long
10927 # media would stop listening to the event after it's paused. The default value
10928 # is set to 24 hrs (24*60*60*1000)
10929 - name: media.mediacontrol.stopcontrol.timer.ms
10930 type: RelaxedAtomicUint32
10934 # If this pref is on, we would stop controlling media after it reaches to the
10936 - name: media.mediacontrol.stopcontrol.aftermediaends
10941 # We would only use media control to control media which duration is longer
10943 - name: media.mediacontrol.eligible.media.duration.s
10948 - name: media.webrtc.platformencoder
10949 type: RelaxedAtomicBool
10950 #if defined(MOZ_WIDGET_ANDROID)
10952 #elif defined(MOZ_WIDGET_GTK)
10955 value: @IS_EARLY_BETA_OR_EARLIER@
10959 - name: media.webrtc.platformencoder.sw_only
10960 type: RelaxedAtomicBool
10961 #if defined(MOZ_WIDGET_ANDROID)
10968 - name: media.webrtc.software_encoder.fallback
10969 type: RelaxedAtomicBool
10970 #if !defined(MOZ_WIDGET_GTK)
10977 #if defined(XP_MACOSX)
10978 - name: media.webrtc.capture.allow-iosurface
10979 type: RelaxedAtomicBool
10984 #if defined(XP_WIN)
10985 - name: media.webrtc.capture.allow-directx
10986 type: RelaxedAtomicBool
10990 - name: media.webrtc.capture.screen.allow-wgc
10991 type: RelaxedAtomicBool
10995 - name: media.webrtc.capture.window.allow-wgc
10996 type: RelaxedAtomicBool
11000 - name: media.webrtc.capture.wgc.allow-zero-hertz
11001 type: RelaxedAtomicBool
11006 #if defined(MOZ_WIDGET_GTK)
11007 - name: media.webrtc.capture.allow-pipewire
11008 type: RelaxedAtomicBool
11012 - name: media.webrtc.camera.allow-pipewire
11018 - name: media.block-autoplay-until-in-foreground
11020 #if !defined(MOZ_WIDGET_ANDROID)
11027 - name: media.webrtc.hw.h264.enabled
11029 #if defined(MOZ_WIDGET_ANDROID)
11036 # If true, then we require explicit approval from the embedding app (ex. Fenix)
11037 # on GeckoView to know if we can allow audible, inaudible media or both kinds
11038 # of media to autoplay.
11039 - name: media.geckoview.autoplay.request
11044 # This is used in testing only, in order to skip the prompting process. This
11045 # pref works only when enabling the pref `media.geckoview.autoplay.request`.
11046 # 0=prompt as normal, 1=allow all, 2=deny all, 3=allow audible request,
11047 # 4=deny audible request, 5=allow inaudible request, 6=deny inaudible request.
11048 # 7=leave all requests pending.
11049 - name: media.geckoview.autoplay.request.testing
11054 - name: media.mediacontrol.testingevents.enabled
11059 #if defined(XP_MACOSX)
11060 - name: media.macos.screenrecording.oscheck.enabled
11066 # When the playback rate of an HTMLMediaElement is greater than this value, or
11067 # lower than the inverse of this value, the audio is muted.
11068 - name: media.audio.playbackrate.muting_threshold
11073 # The interval of time in milliseconds between attempts to reopen any
11074 # previously unavailable audio device.
11075 - name: media.audio.device.retry.ms
11076 type: RelaxedAtomicInt32
11080 # Time-stretch algorithm single processing sequence length in milliseconds.
11081 # This determines to how long sequences the original sound is chopped in the
11082 # time-stretch algorithm.
11083 - name: media.audio.playbackrate.soundtouch_sequence_ms
11084 type: RelaxedAtomicInt32
11088 # Time-stretch algorithm seeking window length in milliseconds for algorithm
11089 # that finds the best possible overlapping location. This determines from how
11090 # wide window the algorithm may look for an optimal joining location when mixing
11091 # the sound sequences back together.
11092 - name: media.audio.playbackrate.soundtouch_seekwindow_ms
11093 type: RelaxedAtomicInt32
11097 # Time-stretch algorithm overlap length in milliseconds. When the chopped sound
11098 # sequences are mixed back together, to form a continuous sound stream, this
11099 # parameter defines over how long period the two consecutive sequences are let
11100 # to overlap each other.
11101 - name: media.audio.playbackrate.soundtouch_overlap_ms
11102 type: RelaxedAtomicInt32
11106 # The duration, in milliseconds, of decoded audio to keep around in the
11107 # AudioSink ring-buffer. New decoding operations are started when this limit is
11108 # reached. The total size of the ring-buffer is slightly bigger than this.
11109 - name: media.audio.audiosink.threshold_ms
11111 #if defined(XP_MACOSX) && defined(MOZ_AARCH64)
11118 - name: media.video-wakelock
11119 type: RelaxedAtomicBool
11123 # On Mac, enables using the `<Brand> Media Plugin Helper` executable as the
11124 # GMP child process instead of the plugin-container executable.
11125 #if defined(XP_MACOSX)
11126 - name: media.plugin_helper_process.enabled
11127 type: RelaxedAtomicBool
11132 #---------------------------------------------------------------------------
11133 # Prefs starting with "memory."
11134 #---------------------------------------------------------------------------
11136 - name: memory.phc.enabled
11138 value: @IS_EARLY_BETA_OR_EARLIER@
11141 - name: memory.phc.min_ram_mb
11146 #---------------------------------------------------------------------------
11147 # Prefs starting with "midi."
11148 #---------------------------------------------------------------------------
11150 - name: midi.testing
11151 type: RelaxedAtomicBool
11155 #---------------------------------------------------------------------------
11156 # Prefs starting with "mousewheel."
11157 #---------------------------------------------------------------------------
11159 # This affects how line scrolls from wheel events will be accelerated.
11160 # Factor to be multiplied for constant acceleration.
11161 - name: mousewheel.acceleration.factor
11162 type: RelaxedAtomicInt32
11166 # This affects how line scrolls from wheel events will be accelerated.
11167 # Number of mousewheel clicks when acceleration starts.
11168 # Acceleration can be turned off if pref is set to -1.
11169 - name: mousewheel.acceleration.start
11170 type: RelaxedAtomicInt32
11174 # Auto-dir is a feature which treats any single-wheel scroll as a scroll in the
11175 # only one scrollable direction if the target has only one scrollable
11176 # direction. For example, if the user scrolls a vertical wheel inside a target
11177 # which is horizontally scrollable but vertical unscrollable, then the vertical
11178 # scroll is converted to a horizontal scroll for that target.
11179 # Note that auto-dir only takes effect for |mousewheel.*.action|s and
11180 # |mousewheel.*.action.override_x|s whose values are 1.
11181 - name: mousewheel.autodir.enabled
11186 # When a wheel scroll is converted due to auto-dir, which side the converted
11187 # scroll goes towards is decided by one thing called "honoured target". If the
11188 # content of the honoured target horizontally starts from right to left, then
11189 # an upward scroll maps to a rightward scroll and a downward scroll maps to a
11190 # leftward scroll; otherwise, an upward scroll maps to a leftward scroll and a
11191 # downward scroll maps to a rightward scroll.
11192 # If this pref is set to false, then consider the scrolling target as the
11194 # If set to true, then consider the root element in the document where the
11195 # scrolling target is as the honoured target. But note that there's one
11196 # exception: for targets in an HTML document, the real root element(I.e. the
11197 # <html> element) is typically not considered as a root element, but the <body>
11198 # element is typically considered as a root element. If there is no <body>
11199 # element, then consider the <html> element instead.
11200 - name: mousewheel.autodir.honourroot
11205 - name: mousewheel.system_scroll_override.enabled
11206 type: RelaxedAtomicBool
11207 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
11214 # Prefs for overriding the system mouse wheel scrolling speed on
11215 # content of the web pages. When
11216 # "mousewheel.system_scroll_override.enabled" is true and the
11217 # system scrolling speed isn't customized by the user, the content scrolling
11218 # speed is multiplied by the following factors. The value will be used as
11219 # 1/100. E.g., 200 means 2.00.
11220 # NOTE: Even if "mousewheel.system_scroll_override.enabled" is
11221 # true, when Gecko detects the user customized the system scrolling speed
11222 # settings, the override isn't executed.
11223 - name: mousewheel.system_scroll_override.horizontal.factor
11224 type: RelaxedAtomicInt32
11227 - name: mousewheel.system_scroll_override.vertical.factor
11228 type: RelaxedAtomicInt32
11232 # Mouse wheel scroll transaction is held even if the mouse cursor is moved.
11233 - name: mousewheel.transaction.ignoremovedelay
11234 type: RelaxedAtomicInt32
11238 # Mouse wheel scroll transaction period of time (in milliseconds).
11239 - name: mousewheel.transaction.timeout
11240 type: RelaxedAtomicInt32
11244 # Mouse wheel scroll position is determined by GetMessagePos rather than
11246 - name: mousewheel.ignore_cursor_position_in_lparam
11247 type: RelaxedAtomicBool
11251 # If line-height is lower than this value (in device pixels), 1 line scroll
11252 # scrolls this height.
11253 - name: mousewheel.min_line_scroll_amount
11258 # Timeout period (in milliseconds) when the mouse wheel event is no longer
11259 # handled as the same series.
11260 - name: mousewheel.scroll_series_timeout
11261 type: RelaxedAtomicInt32
11265 #---------------------------------------------------------------------------
11266 # Prefs starting with "mozilla."
11267 #---------------------------------------------------------------------------
11269 - name: mozilla.widget.raise-on-setfocus
11274 #---------------------------------------------------------------------------
11275 # Prefs starting with "network."
11276 #---------------------------------------------------------------------------
11278 # Force less-secure NTLMv1 when needed (NTLMv2 is the default).
11279 - name: network.auth.force-generic-ntlm-v1
11280 type: RelaxedAtomicBool
11284 # Sub-resources HTTP-authentication:
11285 # 0 - don't allow sub-resources to open HTTP authentication credentials
11287 # 1 - allow sub-resources to open HTTP authentication credentials dialogs,
11288 # but don't allow it for cross-origin sub-resources
11289 # 2 - allow the cross-origin authentication as well.
11290 - name: network.auth.subresource-http-auth-allow
11295 # Sub-resources HTTP-authentication for cross-origin images:
11296 # - true: It is allowed to present http auth. dialog for cross-origin images.
11297 # - false: It is not allowed.
11298 # If network.auth.subresource-http-auth-allow has values 0 or 1 this pref does
11299 # not have any effect.
11300 - name: network.auth.subresource-img-cross-origin-http-auth-allow
11305 # Resources that are triggered by some non-web-content:
11306 # - true: They are allow to present http auth. dialog
11307 # - false: They are not allow to present http auth. dialog.
11308 - name: network.auth.non-web-content-triggered-resources-http-auth-allow
11313 # Whether to show anti-spoof confirmation prompts when navigating to a url
11315 - name: network.auth.confirmAuth.enabled
11320 # Whether to display auth prompts if X-Frame-Options header will block loading
11322 - name: network.auth.supress_auth_prompt_for_XFO_failures
11327 # Whether to use challenges in the most secure order. See bug 650091.
11328 - name: network.auth.choose_most_secure_challenge
11329 type: RelaxedAtomicBool
11333 # whether to redirect the channel for auth redirects. See Bug 1820807
11334 - name: network.auth.use_redirect_for_retries
11335 type: RelaxedAtomicBool
11336 value: @IS_EARLY_BETA_OR_EARLIER@
11339 # Whether to allow truncated brotli with empty output. This also fixes
11340 # throwing an erroring when receiving highly compressed brotli files when
11341 # no content type is specified (Bug 1715401). This pref can be removed after
11342 # some time (Bug 1841061)
11343 - name: network.compress.allow_truncated_empty_brotli
11344 type: RelaxedAtomicBool
11348 # See the full list of values in nsICookieService.idl.
11349 - name: network.cookie.cookieBehavior
11350 type: RelaxedAtomicInt32
11351 value: 0 # accept all cookies
11354 # The cookieBehavior to be used in Private Browsing mode.
11355 - name: network.cookie.cookieBehavior.pbmode
11356 type: RelaxedAtomicInt32
11357 value: 0 # accept all cookies
11360 # Changes cookieBehavior=5 to block third-party cookies by default
11361 - name: network.cookie.cookieBehavior.optInPartitioning
11366 # Stale threshold for cookies in seconds.
11367 - name: network.cookie.staleThreshold
11372 - name: network.cookie.sameSite.laxByDefault
11373 type: RelaxedAtomicBool
11377 # lax-by-default 2 minutes tollerance for unsafe methods. The value is in seconds.
11378 - name: network.cookie.sameSite.laxPlusPOST.timeout
11383 # For lax-by-default cookies ignore cross-site redirects when the final
11384 # redirect is same-site again.
11385 # https://github.com/httpwg/http-extensions/issues/2104
11386 - name: network.cookie.sameSite.laxByDefault.allowBoomerangRedirect
11391 - name: network.cookie.sameSite.noneRequiresSecure
11393 value: @IS_EARLY_BETA_OR_EARLIER@
11396 - name: network.cookie.sameSite.schemeful
11401 - name: network.cookie.thirdparty.sessionOnly
11406 - name: network.cookie.thirdparty.nonsecureSessionOnly
11411 # If we should not store "persistent" cookies at all, i.e., make the
11412 # "persistent" storage be like "private" storage. This value is only read when
11413 # instantiating persistent storage for the cookie service, which usually only
11414 # happens when the cookie service singleton is created.
11415 - name: network.cookie.noPersistentStorage
11420 # If true then any cookies containing unicode will be rejected
11421 - name: network.cookie.blockUnicode
11422 type: RelaxedAtomicBool
11426 # If true cookies loaded from the sqlite DB that have a creation or
11427 # last accessed time that is in the future will be fixed and the
11428 # timestamps will be set to the current time.
11429 - name: network.cookie.fixup_on_db_load
11430 type: RelaxedAtomicBool
11434 # If we should attempt to race the cache and network.
11435 - name: network.http.rcwn.enabled
11440 - name: network.http.rcwn.cache_queue_normal_threshold
11445 - name: network.http.rcwn.cache_queue_priority_threshold
11450 # We might attempt to race the cache with the network only if a resource
11451 # is smaller than this size.
11452 - name: network.http.rcwn.small_resource_size_kb
11457 - name: network.http.rcwn.min_wait_before_racing_ms
11462 - name: network.http.rcwn.max_wait_before_racing_ms
11467 # false=real referer, true=spoof referer (use target URI as referer).
11468 - name: network.http.referer.spoofSource
11473 # Check whether we need to hide referrer when leaving a .onion domain.
11474 # false=allow onion referer, true=hide onion referer (use empty referer).
11475 - name: network.http.referer.hideOnionSource
11480 # Include an origin header on non-GET and non-HEAD requests regardless of CORS.
11481 # 0=never send, 1=send when same-origin only, 2=always send.
11482 - name: network.http.sendOriginHeader
11487 # Whether to respect the redirected-tainted origin flag
11488 # https://fetch.spec.whatwg.org/#concept-request-tainted-origin
11489 - name: network.http.origin.redirectTainted
11494 # Whether to strip auth headers for redirected fetch/xhr channels
11495 # https://fetch.spec.whatwg.org/#http-redirect-fetch
11496 - name: network.fetch.redirect.stripAuthHeader
11497 type: RelaxedAtomicBool
11501 # Whether to strip auth headers for redirected http channels
11502 # https://fetch.spec.whatwg.org/#http-redirect-fetch
11503 - name: network.http.redirect.stripAuthHeader
11504 type: RelaxedAtomicBool
11508 # Prefs allowing granular control of referers.
11509 # 0=don't send any, 1=send only on clicks, 2=send on image requests as well
11510 - name: network.http.sendRefererHeader
11514 do_not_use_directly: true
11516 # The maximum allowed length for a referrer header - 4096 default.
11517 # 0 means no limit.
11518 - name: network.http.referer.referrerLengthLimit
11523 # 0=always send, 1=send iff base domains match, 2=send iff hosts match.
11524 - name: network.http.referer.XOriginPolicy
11528 do_not_use_directly: true
11530 # 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port.
11531 - name: network.http.referer.trimmingPolicy
11535 do_not_use_directly: true
11537 # 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port.
11538 - name: network.http.referer.XOriginTrimmingPolicy
11542 do_not_use_directly: true
11544 # Set the default Referrer Policy; to be used unless overriden by the site.
11545 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
11546 # 3=no-referrer-when-downgrade.
11547 - name: network.http.referer.defaultPolicy
11552 # Set the default Referrer Policy applied to third-party trackers when the
11553 # default cookie policy is set to reject third-party trackers, to be used
11554 # unless overriden by the site.
11555 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
11556 # 3=no-referrer-when-downgrade.
11557 # Trim referrers from trackers to origins by default.
11558 - name: network.http.referer.defaultPolicy.trackers
11563 # Set the Private Browsing Default Referrer Policy, to be used
11564 # unless overriden by the site.
11565 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
11566 # 3=no-referrer-when-downgrade.
11567 - name: network.http.referer.defaultPolicy.pbmode
11572 # Set to ignore referrer policies which is less restricted than the default for
11573 # cross-site requests, including 'unsafe-url', 'no-referrer-when-downgrade' and
11574 # 'origin-when-cross-origin'.
11575 - name: network.http.referer.disallowCrossSiteRelaxingDefault
11580 # Whether we ignore less restricted referrer policies for top navigations.
11581 - name: network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation
11587 # Set to ignore referrer policies which is less restricted than the default for
11588 # cross-site requests in the private browsing mode, including 'unsafe-url',
11589 # 'no-referrer-when-downgrade' and 'origin-when-cross-origin'.
11590 - name: network.http.referer.disallowCrossSiteRelaxingDefault.pbmode
11595 # Whether we ignore less restricted referrer policies for top navigations in the
11596 # private browsing mode.
11597 - name: network.http.referer.disallowCrossSiteRelaxingDefault.pbmode.top_navigation
11602 # Set the Private Browsing Default Referrer Policy applied to third-party
11603 # trackers when the default cookie policy is set to reject third-party
11604 # trackers, to be used unless overriden by the site.
11605 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
11606 # 3=no-referrer-when-downgrade.
11607 # No need to change this pref for trimming referrers from trackers since in
11608 # private windows we already trim all referrers to origin only.
11609 - name: network.http.referer.defaultPolicy.trackers.pbmode
11614 # Whether certain http header values should be censored out in logs.
11615 # Specifically filters out "authorization" and "proxy-authorization".
11616 - name: network.http.sanitize-headers-in-logs
11617 type: RelaxedAtomicBool
11621 # Whether or not we use Windows for SSO to Microsoft sites.
11622 - name: network.http.windows-sso.enabled
11623 type: RelaxedAtomicBool
11627 # Whether windows-sso is enabled for the default (0) container.
11628 # To enable SSO for additional containers, add a new pref like
11629 # `network.http.windows-sso.container-enabled.${containerId}` = true
11630 - name: network.http.windows-sso.container-enabled.0
11635 # The factor by which to increase the keepalive timeout when the
11636 # NS_HTTP_LARGE_KEEPALIVE flag is used for a connection
11637 - name: network.http.largeKeepaliveFactor
11638 type: RelaxedAtomicUint32
11642 # This preference, if true, causes all UTF-8 domain names to be normalized to
11643 # punycode. The intention is to allow UTF-8 domain names as input, but never
11644 # generate them from punycode.
11645 - name: network.IDN_show_punycode
11646 type: RelaxedAtomicBool
11650 # If set to true, IOService.offline depends on IOService.connectivity.
11651 - name: network.offline-mirrors-connectivity
11652 type: RelaxedAtomicBool
11656 # If set to true, disallow localhost connections when offline.
11657 - name: network.disable-localhost-when-offline
11658 type: RelaxedAtomicBool
11662 # Enables the predictive service.
11663 - name: network.predictor.enabled
11668 # Set true to allow resolving proxy for localhost
11669 - name: network.proxy.allow_hijacking_localhost
11670 type: RelaxedAtomicBool
11674 # This pref will still treat localhost URLs as secure even when hijacked
11675 # during testing. This is necessary for automated testing to check that we
11676 # actually treat localhost as a secure origin.
11677 - name: network.proxy.testing_localhost_is_secure_when_hijacked
11678 type: RelaxedAtomicBool
11682 # Allow CookieJarSettings to be unblocked for channels without a document.
11683 # This is for testing only.
11684 - name: network.cookieJarSettings.unblocked_for_testing
11689 - name: network.predictor.enable-hover-on-ssl
11694 - name: network.predictor.enable-prefetch
11696 value: @IS_EARLY_BETA_OR_EARLIER@
11699 - name: network.predictor.page-degradation.day
11703 - name: network.predictor.page-degradation.week
11707 - name: network.predictor.page-degradation.month
11711 - name: network.predictor.page-degradation.year
11715 - name: network.predictor.page-degradation.max
11720 - name: network.predictor.subresource-degradation.day
11724 - name: network.predictor.subresource-degradation.week
11728 - name: network.predictor.subresource-degradation.month
11732 - name: network.predictor.subresource-degradation.year
11736 - name: network.predictor.subresource-degradation.max
11741 - name: network.predictor.prefetch-rolling-load-count
11746 - name: network.predictor.prefetch-min-confidence
11750 - name: network.predictor.preconnect-min-confidence
11754 - name: network.predictor.preresolve-min-confidence
11759 - name: network.predictor.prefetch-force-valid-for
11764 - name: network.predictor.max-resources-per-entry
11769 # This is selected in concert with max-resources-per-entry to keep memory
11770 # usage low-ish. The default of the combo of the two is ~50k.
11771 - name: network.predictor.max-uri-length
11777 - name: network.predictor.doing-tests
11782 # Indicates whether the `fetchpriority` attribute for elements which support it
11783 # (e.g. `<script>`) is enabled.
11784 - name: network.fetchpriority.enabled
11789 # Enables `<link rel="preconnect">` tag and `Link: rel=preconnect` response header
11791 - name: network.preconnect
11792 type: RelaxedAtomicBool
11796 # Enables `<link rel="modulepreload">` tag and `Link: rel=modulepreload`
11797 # response header handling.
11798 - name: network.modulepreload
11799 type: RelaxedAtomicBool
11803 # Enable 103 Early Hint status code (RFC 8297)
11804 - name: network.early-hints.enabled
11805 type: RelaxedAtomicBool
11806 value: @IS_EARLY_BETA_OR_EARLIER@
11809 # Enable `Link: rel=preconnect` in 103 Early Hint response.
11810 - name: network.early-hints.preconnect.enabled
11811 type: RelaxedAtomicBool
11815 # The max number of speculative connections we allow for `Link: rel=preconnect`.
11816 # When 0, the speculative connection created due to `Link: rel=preconnect` will
11817 # be limited by "network.http.speculative-parallel-limit".
11818 - name: network.early-hints.preconnect.max_connections
11823 # How long we should wait for EarlyHintPreloader to be used.
11824 # Under normal circumstances it should be used immidiately.
11825 - name: network.early-hints.parent-connect-timeout
11830 # Whether to use the network process or not
11831 # Start a separate socket process. Performing networking on the socket process
11832 # is control by a sepparate pref
11833 # ("network.http.network_access_on_socket_process.enabled").
11834 # Changing these prefs requires a restart.
11835 - name: network.process.enabled
11836 type: RelaxedAtomicBool
11838 #if defined(ANDROID) || defined(MOZ_THUNDERBIRD)
11839 value: false # see bug 1641427
11844 # Whether we can send OnDataAvailable to content process directly.
11845 - name: network.send_ODA_to_content_directly
11846 type: RelaxedAtomicBool
11850 # Whether we can send OnDataFinished to html5parser in content process directly
11851 - name: network.send_OnDataFinished.html5parser
11852 type: RelaxedAtomicBool
11856 # Whether we can send OnDataFinished in the content process
11857 - name: network.send_OnDataFinished
11858 type: RelaxedAtomicBool
11862 # Whether we can send OnDataAvailable to content process directly.
11863 - name: network.send_OnDataFinished.nsInputStreamPump
11864 type: RelaxedAtomicBool
11868 # Whether we can send send OnDataFinished only after dispatching
11869 # all the progress events on the main thread
11870 - name: network.send_OnDataFinished_after_progress_updates
11871 type: RelaxedAtomicBool
11875 # Perform all network access on the socket process.
11876 # The pref requires "network.process.enabled" to be true.
11877 # Changing these prefs requires a restart.
11878 - name: network.http.network_access_on_socket_process.enabled
11879 type: RelaxedAtomicBool
11883 # Telemetry of traffic categories. Whether or not to enable HttpTrafficAnalyzer.
11884 - name: network.traffic_analyzer.enabled
11885 type: RelaxedAtomicBool
11889 # Whether DNS resolution is limited to literals and cached entries.
11890 - name: network.dns.disabled
11891 type: RelaxedAtomicBool
11895 - name: network.dns.disablePrefetchFromHTTPS
11900 # Max time to shutdown the resolver threads
11901 - name: network.dns.resolver_shutdown_timeout_ms
11906 # When true on Windows DNS resolutions for single label domains
11907 # (domains that don't contain a dot) will be resolved using the DnsQuery
11908 # API instead of PR_GetAddrInfoByName
11909 - name: network.dns.dns_query_single_label
11910 type: RelaxedAtomicBool
11914 # When this pref is true, we copy the host name to a fresh string before
11915 # calling into getaddrinfo.
11916 - name: network.dns.copy_string_before_call
11917 type: RelaxedAtomicBool
11921 - name: network.dns.max_high_priority_threads
11922 type: RelaxedAtomicUint32
11926 - name: network.dns.max_any_priority_threads
11927 type: RelaxedAtomicUint32
11931 # The proxy type. See nsIProtocolProxyService.idl
11932 # PROXYCONFIG_DIRECT = 0
11933 # PROXYCONFIG_MANUAL = 1
11934 # PROXYCONFIG_PAC = 2
11935 # PROXYCONFIG_WPAD = 4
11936 # PROXYCONFIG_SYSTEM = 5
11937 - name: network.proxy.type
11938 type: RelaxedAtomicUint32
11942 # Whether the SOCKS proxy should be in charge of DNS resolution.
11943 - name: network.proxy.socks_remote_dns
11944 type: RelaxedAtomicBool
11948 # When receiving a network change event, the time (in ms) we wait to reload the
11950 - name: network.proxy.reload_pac_delay
11951 type: RelaxedAtomicUint32
11955 # When parsing "SOCKS" in PAC string, the default version of SOCKS that will be
11957 - name: network.proxy.default_pac_script_socks_version
11958 type: RelaxedAtomicUint32
11962 # Whether to force failover to direct for system requests.
11963 #ifdef MOZ_PROXY_DIRECT_FAILOVER
11964 - name: network.proxy.failover_direct
11970 # Whether to allow a bypass flag to be set on httpChannel that will
11971 # prevent proxies from being used for that specific request.
11972 - name: network.proxy.allow_bypass
11974 #ifdef MOZ_PROXY_BYPASS_PROTECTION
11981 - name: network.proxy.parse_pac_on_socket_process
11982 type: RelaxedAtomicBool
11986 - name: network.proxy.detect_system_proxy_changes
11987 type: RelaxedAtomicBool
11991 # If all non-direct proxies have failed, we retry all of them in case they
11993 - name: network.proxy.retry_failed_proxies
11994 type: RelaxedAtomicBool
11998 # Some requests during a page load are marked as "tail", mainly trackers, but not only.
11999 # This pref controls whether such requests are put to the tail, behind other requests
12000 # emerging during page loading process.
12001 - name: network.http.tailing.enabled
12006 # Whether to run proxy checks when processing Alt-Svc headers.
12007 - name: network.http.altsvc.proxy_checks
12012 - name: network.http.stale_while_revalidate.enabled
12013 type: RelaxedAtomicBool
12017 # Capacity of the above cache, in kilobytes.
12018 - name: network.ssl_tokens_cache_capacity
12019 type: RelaxedAtomicUint32
12023 # How many records we store per entry
12024 - name: network.ssl_tokens_cache_records_per_entry
12025 type: RelaxedAtomicUint32
12029 # The maximum allowed length for a URL - 1MB default.
12030 - name: network.standard-url.max-length
12031 type: RelaxedAtomicUint32
12035 # DNS Trusted Recursive Resolver
12036 # 0 - default off, 1 - reserved/off, 2 - TRR first, 3 - TRR only,
12037 # 4 - reserved/off, 5 off by choice
12038 - name: network.trr.mode
12039 type: RelaxedAtomicUint32
12043 # Default global TRR provider
12044 - name: network.trr.default_provider_uri
12046 value: "https://mozilla.cloudflare-dns.com/dns-query"
12049 # If true, retry TRR for recoverable errors once.
12050 - name: network.trr.retry_on_recoverable_errors
12051 type: RelaxedAtomicBool
12055 # If true, don't fallback to native DNS upon network errors.
12056 - name: network.trr.strict_native_fallback
12057 type: RelaxedAtomicBool
12061 # If true, we'll fallback to native if the retry also times out.
12062 - name: network.trr.strict_native_fallback_allow_timeouts
12063 type: RelaxedAtomicBool
12067 # Single TRR request timeout (ms) when strict native fallback is enabled.
12068 - name: network.trr.strict_fallback_request_timeout_ms
12069 type: RelaxedAtomicUint32
12073 # If false, the temporary blocklisting feature is disabled.
12074 # This is useful for tests to prevent bleeding extra reqs
12075 # between tasks, since we may attempt to look up the
12076 # parent domain in the background when blocklisting a host.
12077 - name: network.trr.temp_blocklist
12078 type: RelaxedAtomicBool
12082 # TRR blocklist entry expire time (in seconds). Default is one minute.
12083 # Meant to survive basically a page load.
12084 - name: network.trr.temp_blocklist_duration_sec
12085 type: RelaxedAtomicUint32
12089 # Single TRR request timeout, in milliseconds
12090 - name: network.trr.request_timeout_ms
12091 type: RelaxedAtomicUint32
12095 # Single TRR request timeout, in milliseconds for mode 3
12096 - name: network.trr.request_timeout_mode_trronly_ms
12097 type: RelaxedAtomicUint32
12101 # Similar to network.http.http2.ping-timeout, but this is used when the
12102 # Http/2 connection is connected to the TRR server.
12103 - name: network.trr.ping_timeout
12104 type: RelaxedAtomicUint32
12108 # The timeout of the TRR confirmation request
12109 - name: network.trr.confirmation_timeout_ms
12110 type: RelaxedAtomicUint32
12114 # The timeout of the TRR confirmation request
12115 - name: network.trr.confirmation_telemetry_enabled
12116 type: RelaxedAtomicBool
12120 # Whether to send the Accept-Language header for TRR requests
12121 - name: network.trr.send_accept-language_headers
12122 type: RelaxedAtomicBool
12126 # Whether to send an empty Accept-Encoding header for TRR requests
12127 - name: network.trr.send_empty_accept-encoding_headers
12128 type: RelaxedAtomicBool
12132 # Whether to send the User-Agent header for TRR requests
12133 - name: network.trr.send_user-agent_headers
12134 type: RelaxedAtomicBool
12138 # This pref controls whether to use TRRServiceChannel off main thread.
12139 - name: network.trr.fetch_off_main_thread
12140 type: RelaxedAtomicBool
12144 # If we should wait for captive portal confirmation before enabling TRR
12145 - name: network.trr.wait-for-portal
12146 type: RelaxedAtomicBool
12150 # If we should wait for TRR service confirmation to complete before enabling
12151 # TRR for lookups when fallback is enabled. Confirmation is always skipped when
12152 # global mode is TRR-only (no fallback).
12153 - name: network.trr.wait-for-confirmation
12154 type: RelaxedAtomicBool
12158 # Normally when confirmation fails we wait for the confirmation to succeed
12159 # before attempting to do TRR. When this pref is true, we optimistically
12160 # assume the confirmation will succeed and might attempt TRR anyway.
12161 # If network.trr.wait-for-confirmation is true, this pref is ignored.
12162 - name: network.trr.attempt-when-retrying-confirmation
12163 type: RelaxedAtomicBool
12167 # Use GET (rather than POST)
12168 - name: network.trr.useGET
12169 type: RelaxedAtomicBool
12173 # Allow RFC1918 address in responses?
12174 - name: network.trr.allow-rfc1918
12175 type: RelaxedAtomicBool
12179 # When true, it only sends AAAA when the system has IPv6 connectivity
12180 - name: network.trr.skip-AAAA-when-not-supported
12181 type: RelaxedAtomicBool
12185 # Whether to apply split horizon mitigations when using TRR.
12186 # These include adding the DNS suffix to the excluded domains
12187 - name: network.trr.split_horizon_mitigations
12188 type: RelaxedAtomicBool
12192 # Explicitly disable ECS (EDNS Client Subnet, RFC 7871)
12193 - name: network.trr.disable-ECS
12194 type: RelaxedAtomicBool
12198 # When true, the DNS+TRR cache will be cleared when a relevant TRR pref
12199 # changes. (uri, bootstrapAddress, excluded-domains)
12200 - name: network.trr.clear-cache-on-pref-change
12201 type: RelaxedAtomicBool
12205 # After this many failed TRR requests in a row, consider TRR borked
12206 - name: network.trr.max-fails
12207 type: RelaxedAtomicUint32
12211 # When the TRR confirmation is set to CONFIRM_FAILED due to many failures in
12212 # a row, we set a timer to retry. This has an exponential backoff up to
12214 - name: network.trr.retry-timeout-ms
12215 type: RelaxedAtomicUint32
12219 # Retry with no TRR when the response contained only 0.0.0.0 or ::
12220 - name: network.trr.fallback-on-zero-response
12221 type: RelaxedAtomicBool
12225 # If true we parse the /etc/hosts file and exclude any host names from TRR.
12226 # Reading the file is only done once, when TRR is first enabled - this could be
12227 # soon after startup or when the pref is flipped.
12228 - name: network.trr.exclude-etc-hosts
12229 type: RelaxedAtomicBool
12233 # Whether to add padding in the doh dns queries (rfc 7830)
12234 - name: network.trr.padding
12235 type: RelaxedAtomicBool
12239 # The block size to pad to. Capped at 1024 bytes.
12240 # Setting it to 0 doesn't add additional padding, but allows the server to
12241 # respond with padding (RFC7930 Sec 4)
12242 - name: network.trr.padding.length
12243 type: RelaxedAtomicUint32
12247 # Whether to skip the NS check for the blocked host.
12248 # Note this is used for test only.
12249 - name: network.trr.skip-check-for-blocked-host
12250 type: RelaxedAtomicBool
12254 # Whether to use the connection info that is generated asynchronously.
12255 - name: network.trr.async_connInfo
12256 type: RelaxedAtomicBool
12260 # If true, a failed TRR request that contains an extended DNS error
12261 # matching the hardFail condition in DNSPacket.cpp will not be
12262 # retried with native DNS
12263 - name: network.trr.hard_fail_on_extended_error
12264 type: RelaxedAtomicBool
12268 # The base URL of the `Learn more` button for skip reasons
12269 - name: network.trr_ui.skip_reason_learn_more_url
12271 value: "https://firefox-source-docs.mozilla.org/networking/dns/trr-skip-reasons.html#"
12274 # If true, display a warning before fallback to native
12275 - name: network.trr.display_fallback_warning
12276 type: RelaxedAtomicBool
12280 # Heuristics in this list will trigger the fallback to native warning
12281 - name: network.trr.fallback_warning_heuristic_list
12286 # Use Oblivious HTTP when making TRR requests.
12287 - name: network.trr.use_ohttp
12288 type: RelaxedAtomicBool
12292 # Oblivious HTTP relay URI for TRR requests.
12293 - name: network.trr.ohttp.relay_uri
12298 # URI from which to fetch the configuration for the Oblivious HTTP gateway for TRR requests.
12299 - name: network.trr.ohttp.config_uri
12304 # The URI used for the target DoH server when network.trr.use_ohttp is true
12305 - name: network.trr.ohttp.uri
12310 # Allow the network changed event to get sent when a network topology or setup
12311 # change is noticed while running.
12312 - name: network.notify.changed
12313 type: RelaxedAtomicBool
12317 # Allow network detection of IPv6 related changes (bug 1245059)
12318 - name: network.notify.IPv6
12319 type: RelaxedAtomicBool
12327 # Whether to check the dnsSuffix on network changes
12328 - name: network.notify.dnsSuffixList
12329 type: RelaxedAtomicBool
12333 # Whether to check the registry for proxies on network changes that indicate
12334 # that TRR should not be used.
12335 - name: network.notify.checkForProxies
12336 type: RelaxedAtomicBool
12340 # Whether to check the registry for NRPT rules on network changes that
12341 # indicate that TRR should not be used.
12342 - name: network.notify.checkForNRPT
12343 type: RelaxedAtomicBool
12347 # Whether NotifyIpInterfaceChange should be called immediately after
12348 # registration in order to record the initial state of the network adapters.
12349 - name: network.notify.initial_call
12350 type: RelaxedAtomicBool
12354 # Whether to check for DNS resolvers
12355 - name: network.notify.resolvers
12356 type: RelaxedAtomicBool
12360 # Whether to use the rust implemented DefaultURI for unknown scheme types
12361 - name: network.url.useDefaultURI
12362 type: RelaxedAtomicBool
12366 # The maximum allowed length for a URL - 32MB default.
12367 # If 0 that means no limit.
12368 - name: network.url.max-length
12369 type: RelaxedAtomicUint32
12370 value: 32 * 1024 * 1024
12373 # Should be removed if no breakage occurs. See bug 1797846
12374 - name: network.url.strip-data-url-whitespace
12375 type: RelaxedAtomicBool
12379 # If true, will be more strict with status code parsing
12380 - name: network.url.strict_data_url_base64_placement
12381 type: RelaxedAtomicBool
12385 - name: network.url.strict_protocol_setter
12386 type: RelaxedAtomicBool
12390 # Force remapping of remote port numbers to allow reaching local testing
12391 # servers or port forwarders listening on non-standard ports. Note that
12392 # this is not changing the origin URL in the addressbar, only internally
12393 # the port number used. This is intended to be used along with the
12394 # `network.dns.forceResolve` preference.
12397 # "80,443,808-888=8080; 563=8081"
12398 # this will remap ports for HTTP, HTTPS and the range of 808-888 included
12399 # to use port 8080, and port 563 to go to 8081.
12400 - name: network.socket.forcePort
12405 # Try and use HTTP2 when using SSL
12406 - name: network.http.http2.enabled
12407 type: RelaxedAtomicBool
12411 - name: network.http.http2.enabled.deps
12412 type: RelaxedAtomicBool
12416 - name: network.http.http2.enforce-tls-profile
12417 type: RelaxedAtomicBool
12421 - name: network.http.http2.chunk-size
12422 type: RelaxedAtomicInt32
12426 - name: network.http.http2.timeout
12427 type: RelaxedAtomicInt32
12431 - name: network.http.http2.coalesce-hostnames
12432 type: RelaxedAtomicBool
12436 - name: network.http.http2.ping-threshold
12437 type: RelaxedAtomicInt32
12441 - name: network.http.http2.ping-timeout
12442 type: RelaxedAtomicInt32
12446 - name: network.http.http2.send-buffer-size
12447 type: RelaxedAtomicInt32
12451 - name: network.http.http2.allow-push
12452 type: RelaxedAtomicBool
12456 - name: network.http.http2.push-allowance
12457 type: RelaxedAtomicInt32
12458 value: 131072 # 128KB
12461 - name: network.http.http2.pull-allowance
12462 type: RelaxedAtomicInt32
12463 value: 12582912 # 12MB
12466 - name: network.http.http2.default-concurrent
12467 type: RelaxedAtomicInt32
12471 - name: network.http.http2.default-hpack-buffer
12472 type: RelaxedAtomicInt32
12476 - name: network.http.http2.websockets
12477 type: RelaxedAtomicBool
12481 - name: network.http.http2.enable-hpack-dump
12482 type: RelaxedAtomicBool
12486 - name: network.http.http2.move_to_pending_list_after_network_change
12487 type: RelaxedAtomicBool
12488 value: @IS_EARLY_BETA_OR_EARLIER@
12492 - name: network.http.http3.enable
12493 type: RelaxedAtomicBool
12497 # Receive buffer size of QUIC socket
12498 - name: network.http.http3.recvBufferSize
12499 type: RelaxedAtomicInt32
12503 - name: network.http.http3.enable_qlog
12504 type: RelaxedAtomicBool
12508 - name: network.http.http3.enable_0rtt
12509 type: RelaxedAtomicBool
12513 # When a h3 transaction is inserted in the pending queue, the time (ms) we wait
12514 # to create a TCP backup connection.
12515 - name: network.http.http3.backup_timer_delay
12516 type: RelaxedAtomicUint32
12520 # The global half open sockets allowed for creating a backup connection.
12521 - name: network.http.http3.parallel_fallback_conn_limit
12522 type: RelaxedAtomicUint32
12526 # Receive buffer size of QUIC socket
12527 - name: network.http.http3.max_data
12528 type: RelaxedAtomicUint32
12532 # Receive buffer size of QUIC socket
12533 - name: network.http.http3.max_stream_data
12534 type: RelaxedAtomicUint32
12538 # Enable http3 network priority as described in
12539 # <https://www.rfc-editor.org/rfc/rfc9218.html>.
12540 - name: network.http.http3.priority
12541 type: RelaxedAtomicBool
12545 # Depriorizing background tabs notifies websites when switching to or from the
12546 # tab while still loading resources for the website. On one hand it might
12547 # improve performance when switching to an tab with a website using the same
12548 # QUIC connection. On the other hand it sends more data to the website and
12549 # might be a privacy concern.
12550 - name: network.http.http3.send_background_tabs_deprioritization
12551 type: RelaxedAtomicBool
12555 - name: network.http.http3.version_negotiation.enabled
12556 type: RelaxedAtomicBool
12560 # When a Http/3 connection failed, whether to retry with a different IP address.
12561 - name: network.http.http3.retry_different_ip_family
12562 type: RelaxedAtomicBool
12563 value: @IS_EARLY_BETA_OR_EARLIER@
12566 # This is for testing purpose. When true, nsUDPSocket::SendWithAddress will
12567 # return NS_ERROR_CONNECTION_REFUSED for address "::1".
12568 - name: network.http.http3.block_loopback_ipv6_addr
12569 type: RelaxedAtomicBool
12573 # The congestion control algorithm with which to configure neqo.
12576 - name: network.http.http3.cc_algorithm
12577 type: RelaxedAtomicUint32
12582 # It represents the maximum duration that we used to accumulate
12583 # callback timeouts before we set a timer and break out of the loop.
12584 - name: network.http.http3.max_accumlated_time_ms
12585 type: RelaxedAtomicUint32
12590 # When true, a http request will be upgraded to https when HTTPS RR is
12592 - name: network.dns.upgrade_with_https_rr
12593 type: RelaxedAtomicBool
12597 # Whether to use HTTPS RR as AltSvc
12598 - name: network.dns.use_https_rr_as_altsvc
12599 type: RelaxedAtomicBool
12603 # Whether to check for NAT64 using the system resolver
12604 - name: network.connectivity-service.nat64-check
12609 # Manually enter the NAT64 prefix that will be used if IPv4 is unavailable.
12610 # The value is formatted as IPv6 with the least significant bits to be dropped.
12611 # For example, 64:ff9b:: is a common prefix. This will not disable
12612 # the NAT64 check, although the value of this pref will be prioritized.
12613 - name: network.connectivity-service.nat64-prefix
12618 # Whether to enable echconfig.
12619 - name: network.dns.echconfig.enabled
12620 type: RelaxedAtomicBool
12624 # Whether to enable echconfig for http3.
12625 - name: network.dns.http3_echconfig.enabled
12626 type: RelaxedAtomicBool
12630 # This pref needs to be worked together with network.dns.echconfig.enabled
12631 # being true and there is no record without ECHConfig.
12632 # When we try all records with ECHConfig in HTTPS RRs and still can't connect,
12633 # this pref indicate whether we can fallback to the origin server.
12634 - name: network.dns.echconfig.fallback_to_origin_when_all_failed
12635 type: RelaxedAtomicBool
12639 # When true, reset the exclusion list when all records are excluded.
12640 - name: network.dns.httpssvc.reset_exclustion_list
12641 type: RelaxedAtomicBool
12645 # If the http3 connection cannot be ready after the timeout value here, the
12646 # transaction will start another non-http3 conneciton.
12647 # Setting this value to 0 indicates this feature is disabled.
12648 - name: network.dns.httpssvc.http3_fast_fallback_timeout
12649 type: RelaxedAtomicUint32
12653 # Whether to force a transaction to wait https rr.
12654 - name: network.dns.force_waiting_https_rr
12655 type: RelaxedAtomicBool
12659 # The TTL for negative responses of TXT and HTTPS records.
12660 - name: network.dns.negative_ttl_for_type_record
12661 type: RelaxedAtomicUint32
12662 value: 300 # 5 minutes (in seconds)
12665 # Whether to use port prefixed QNAME for HTTPS RR
12666 - name: network.dns.port_prefixed_qname_https_rr
12667 type: RelaxedAtomicBool
12671 # Whether to use HTTPS RR and ignore NS_HTTP_DISALLOW_HTTPS_RR
12672 # This pref is only set when running tests
12673 - name: network.dns.force_use_https_rr
12674 type: RelaxedAtomicBool
12678 # This preference can be used to turn off IPv6 name lookups. See bug 68796.
12679 - name: network.dns.disableIPv6
12680 type: RelaxedAtomicBool
12684 # Whether to add additional record IPs to the cache
12685 - name: network.trr.add_additional_records
12686 type: RelaxedAtomicBool
12690 # When this pref is true, AddStorageEntry will return an error if the
12691 # OPEN_READONLY & OPEN_SECRETLY flags are passed and no entry exists.
12692 # If no regressions occur this pref should be removed.
12693 - name: network.cache.bug1708673
12694 type: RelaxedAtomicBool
12698 # When true we will dispatch a background task (separate process) to
12699 # delete the cache folder at shutdown in order to avoid shutdown hangs.
12700 - name: network.cache.shutdown_purge_in_background_task
12701 type: RelaxedAtomicBool
12702 #if defined(XP_WIN)
12709 # Number of seconds to wait for the cache folder to be renamed before
12710 # the background task forcefully exists.
12711 - name: network.cache.shutdown_purge_folder_wait_seconds
12712 type: RelaxedAtomicUint32
12716 # This is used for a temporary workaround for a web-compat issue. If pref is
12717 # true CORS preflight requests are allowed to send client certificates.
12718 - name: network.cors_preflight.allow_client_cert
12719 type: RelaxedAtomicBool
12723 # If true nsCORSListenerProxy will reject any URL that contains user & password
12724 # regardless if it's a redirect or not. When false nsCORSListenerProxy will
12725 # only reject URLs with a username and password when they happen on a redirected
12727 - name: network.cors_preflight.block_userpass_uri
12728 type: RelaxedAtomicBool
12732 # Whether to record the telemetry event when a JAR channel is failed to load.
12733 - name: network.jar.record_failure_reason
12734 type: RelaxedAtomicBool
12735 value: @IS_EARLY_BETA_OR_EARLIER@
12738 # nsJARInputStream::Available returns the size indicated by the archived entry
12739 # so we need a limit so we don't OOM if the archive is corrupted.
12740 - name: network.jar.max_available_size
12741 type: RelaxedAtomicUint32
12742 value: 256*1024*1024 # 256 Mb
12745 # Whether JAR entries that defate to a different size than RealSize/orglen
12746 # are considered corrupted or not
12747 - name: network.jar.require_size_match
12748 type: RelaxedAtomicBool
12752 # When this pref is true, we will use the HTTPS acceptable content encoding
12753 # list for trustworthy domains such as http://localhost
12754 - name: network.http.encoding.trustworthy_is_https
12755 type: RelaxedAtomicBool
12759 # Support http3 version1
12760 - name: network.http.http3.support_version1
12761 type: RelaxedAtomicBool
12765 # Disable early data on an origin if SSL_ERROR_PROTOCOL_VERSION_ALERT is received
12766 - name: network.http.early_data_disable_on_error
12767 type: RelaxedAtomicBool
12771 # Disable early data if it fails for more than this number of origins
12772 - name: network.http.early_data_max_error
12773 type: RelaxedAtomicUint32
12777 # If true, requests will be canceled if any of the response headers values has a NUL character
12778 - name: network.http.reject_NULs_in_response_header_values
12779 type: RelaxedAtomicBool
12783 # If true, will be more strict with status code parsing
12784 - name: network.http.strict_response_status_line_parsing
12785 type: RelaxedAtomicBool
12789 # If true, remove the resumption token when 0RTT failed.
12790 - name: network.http.remove_resumption_token_when_early_data_failed
12791 type: RelaxedAtomicBool
12795 # The maximum count that we allow socket prrocess to crash. If this count is
12796 # reached, we won't use networking over socket process.
12797 - name: network.max_socket_process_failed_count
12798 type: RelaxedAtomicUint32
12802 - name: network.allow_redirect_to_data
12803 type: RelaxedAtomicBool
12807 - name: network.allow_raw_sockets_in_content_processes
12812 - name: network.allow_large_stack_size_for_socket_thread
12813 type: RelaxedAtomicBool
12818 - name: network.webtransport.enabled
12819 type: RelaxedAtomicBool
12823 # WebTransport Datagram support
12824 - name: network.webtransport.datagrams.enabled
12825 type: RelaxedAtomicBool
12829 # WebTransport Datagram size
12830 - name: network.webtransport.datagram_size
12831 type: RelaxedAtomicUint32
12835 # WebTransport Redirect support
12836 - name: network.webtransport.redirect.enabled
12837 type: RelaxedAtomicBool
12841 # Wifi-scan polling period, in ms, when on a mobile network.
12842 # A value of 0 indicates that no polling should be done.
12843 - name: network.wifi.scanning_period
12844 type: RelaxedAtomicUint32
12848 # When the Access-Control-Allow-Headers is wildcard (*), whether to allow
12849 # CORS-protected requests with the Authorization request header.
12850 - name: network.cors_preflight.authorization_covered_by_wildcard
12855 #---------------------------------------------------------------------------
12856 # Prefs starting with "nglayout."
12857 #---------------------------------------------------------------------------
12859 # Enable/disable display list invalidation logging --- useful for debugging.
12860 - name: nglayout.debug.invalidation
12865 - name: nglayout.debug.disable_xul_cache
12870 - name: nglayout.initialpaint.delay
12875 - name: nglayout.initialpaint.delay_in_oopif
12880 #---------------------------------------------------------------------------
12881 # Prefs starting with "page_load."
12882 #---------------------------------------------------------------------------
12884 # Time in milliseconds during which certain tasks are deprioritized during
12886 - name: page_load.deprioritization_period
12887 type: RelaxedAtomicUint32
12891 #---------------------------------------------------------------------------
12892 # Prefs starting with "pdfjs."
12893 #---------------------------------------------------------------------------
12895 - name: pdfjs.disabled
12900 #---------------------------------------------------------------------------
12901 # Prefs starting with "permissions."
12902 #---------------------------------------------------------------------------
12904 # 1-Accept, 2-Deny, Any other value: Accept
12905 - name: permissions.default.image
12906 type: RelaxedAtomicUint32
12910 - name: permissions.default.screen-wake-lock
12911 type: RelaxedAtomicUint32
12915 - name: permissions.isolateBy.userContext
12916 type: RelaxedAtomicBool
12920 - name: permissions.isolateBy.privateBrowsing
12921 type: RelaxedAtomicBool
12925 #---------------------------------------------------------------------------
12926 # Prefs starting with "places."
12927 #---------------------------------------------------------------------------
12929 # Whether pages alternative frecency is enabled. This and the following related
12930 # prefs only apply at restart.
12931 - name: places.frecency.pages.alternative.featureGate
12936 - name: places.frecency.pages.alternative.highWeight
12941 - name: places.frecency.pages.alternative.mediumWeight
12946 - name: places.frecency.pages.alternative.lowWeight
12951 - name: places.frecency.pages.alternative.halfLifeDays
12956 - name: places.frecency.pages.alternative.numSampledVisits
12961 #---------------------------------------------------------------------------
12962 # Prefs starting with "plain_text."
12963 #---------------------------------------------------------------------------
12965 # When false, text in plaintext documents does not wrap long lines.
12966 - name: plain_text.wrap_long_lines
12971 #---------------------------------------------------------------------------
12972 # Prefs starting with "preferences."
12973 #---------------------------------------------------------------------------
12975 - name: preferences.allow.omt-write
12981 # If set to true, setting a Preference matched to a `Once` StaticPref will
12982 # assert that the value matches. Such assertion being broken is a clear flag
12983 # that the Once policy shouldn't be used.
12984 - name: preferences.check.once.policy
12989 # If set to true, StaticPrefs Once policy check will be skipped during
12990 # automation regression test. Use with care. This pref must be set back to
12991 # false as soon as specific test has completed.
12992 - name: preferences.force-disable.check.once.policy
12998 #---------------------------------------------------------------------------
12999 # Prefs starting with "print."
13000 #---------------------------------------------------------------------------
13002 # Variation fonts can't always be embedded in certain output formats
13003 # such as PDF. To work around this, draw the variation fonts using
13004 # paths instead of using font embedding.
13005 - name: print.font-variations-as-paths
13006 type: RelaxedAtomicBool
13010 # Whether we always print silently (without a print dialog).
13011 - name: print.always_print_silent
13012 type: RelaxedAtomicBool
13016 # Whether we attempt to generate links in Save As PDF output.
13017 - name: print.save_as_pdf.links.enabled
13018 type: RelaxedAtomicBool
13022 # Whether we attempt to generate and use document-internal PDF destinations.
13023 # This currently sometimes results in an internal cairo error, see bug 1725743;
13024 # disabled by default until that is resolved.
13025 - name: print.save_as_pdf.internal_destinations.enabled
13026 type: RelaxedAtomicBool
13030 # Whether we use the CSS @page size as the paper size in PDF output.
13031 - name: print.save_as_pdf.use_page_rule_size_as_paper_size.enabled
13032 type: RelaxedAtomicBool
13033 value: @IS_NOT_ANDROID@
13036 # The default DPI for printing.
13038 # For PDF-based output, DPI should ideally be irrelevant, but in fact it is not
13039 # for multiple reasons:
13041 # * Layout code that tries to respect device pixels (e.g. for snapping glyph
13042 # positions and baselines, and especially for the "GDI Classic"
13043 # rendering-mode threshold for certain fonts).
13045 # * The limitations of the PDF format mean that we can't natively represent
13046 # certain effects, such as filters, in PDF output, so we need to rasterize
13047 # the parts of the document with these applied.
13049 # * Other rasterized things like images and such are also affected by DPI
13050 # (both in the output, and the images we select via srcset, for example).
13052 # Therefore, using a high DPI is preferable. For now, we use 144dpi to match
13053 # physical printer output on Windows, but higher (e.g. 300dpi) might be better,
13054 # but only if it does not lead to issues such as excessive memory use.
13055 - name: print.default_dpi
13060 # Whether support for monochrome printing is enabled for CUPS.
13061 - name: print.cups.monochrome.enabled
13062 type: RelaxedAtomicBool
13066 # Disabling this will no-op window.print()
13067 - name: print.enabled
13068 type: RelaxedAtomicBool
13072 #---------------------------------------------------------------------------
13073 # Prefs starting with "privacy."
13074 #---------------------------------------------------------------------------
13076 # Annotate trackers using the strict list. If set to false, the basic list will
13078 - name: privacy.annotate_channels.strict_list.enabled
13080 value: @IS_EARLY_BETA_OR_EARLIER@
13083 # Annotate trackers using the strict list in the private browsing mode. If set
13084 # to false, the basic list will be used instead.
13085 - name: privacy.annotate_channels.strict_list.pbmode.enabled
13090 # First Party Isolation (double keying), disabled by default.
13091 - name: privacy.firstparty.isolate
13092 type: RelaxedAtomicBool
13096 # If false, two windows in the same domain with different first party domains
13097 # (top level URLs) can access resources through window.opener. This pref is
13098 # effective only when "privacy.firstparty.isolate" is true.
13099 - name: privacy.firstparty.isolate.restrict_opener_access
13100 type: RelaxedAtomicBool
13104 - name: privacy.firstparty.isolate.block_post_message
13105 type: RelaxedAtomicBool
13109 - name: privacy.firstparty.isolate.use_site
13110 type: RelaxedAtomicBool
13114 # Enforce tracking protection in all modes.
13115 - name: privacy.trackingprotection.enabled
13120 # Enforce tracking protection in Private Browsing mode.
13121 - name: privacy.trackingprotection.pbmode.enabled
13126 # Annotate channels based on the tracking protection list in all modes
13127 - name: privacy.trackingprotection.annotate_channels
13132 # Block 3rd party fingerprinting resources.
13133 - name: privacy.trackingprotection.fingerprinting.enabled
13138 # Block 3rd party cryptomining resources.
13139 - name: privacy.trackingprotection.cryptomining.enabled
13144 # Block 3rd party socialtracking resources.
13145 - name: privacy.trackingprotection.socialtracking.enabled
13150 # Consider socialtracking annotation as trackers (see ETP).
13151 - name: privacy.socialtracking.block_cookies.enabled
13156 # Block 3rd party emailtracking resources in all mode.
13157 - name: privacy.trackingprotection.emailtracking.enabled
13162 # Block 3rd party emailtracking resources in Private Browsing mode.
13163 - name: privacy.trackingprotection.emailtracking.pbmode.enabled
13168 # Collecting 3rd party emailtracking telemetry.
13169 - name: privacy.trackingprotection.emailtracking.data_collection.enabled
13174 - name: privacy.trackingprotection.testing.report_blocked_node
13175 type: RelaxedAtomicBool
13179 # Whether to spoof user locale to English (used as part of Resist
13184 - name: privacy.spoof_english
13185 type: RelaxedAtomicUint32
13189 # Send "do not track" HTTP header, disabled by default.
13190 - name: privacy.donottrackheader.enabled
13195 # Potentially send "global privacy control" HTTP header and set navigator
13196 # property accordingly. Communicates user's desire to opt-out/in of
13197 # websites or services selling or sharing the user's information, false by
13199 # true - Send the header with a value of 1 to indicate opting-out
13200 # false - Do not send header to indicate opting-in
13201 - name: privacy.globalprivacycontrol.enabled
13202 type: RelaxedAtomicBool
13206 # Controls whether or not GPC signals are sent in private browsing mode.
13207 # This can be overridden by `privacy.globalprivacycontrol.enabled` as true.
13208 - name: privacy.globalprivacycontrol.pbmode.enabled
13209 type: RelaxedAtomicBool
13213 # Controls whether or not GPC signals are sent. Meant to act as a third option
13214 # of 'undecided' by leaving the navigator property undefined and not attaching
13215 # the Sec-GPC HTTP header.
13216 - name: privacy.globalprivacycontrol.functionality.enabled
13217 type: RelaxedAtomicBool
13221 # Lower the priority of network loads for resources on the tracking protection
13222 # list. Note that this requires the
13223 # privacy.trackingprotection.annotate_channels pref to be on in order to have
13225 - name: privacy.trackingprotection.lower_network_priority
13227 value: @IS_NIGHTLY_BUILD@
13230 # A subset of Resist Fingerprinting protections focused specifically on timers.
13231 # This affects the Animation API, the performance APIs, Date.getTime,
13232 # Event.timestamp, File.lastModified, audioContext.currentTime,
13233 # canvas.captureStream.currentTime.
13234 - name: privacy.reduceTimerPrecision
13235 type: RelaxedAtomicBool
13239 # If privacy.reduceTimerPrecision is false, this pref controls whether or not
13240 # to clamp all timers at a fixed 20 microsconds. It should always be enabled,
13241 # and is only specified as a pref to enable an emergency disabling in the event
13242 # of catastrophic failure.
13243 - name: privacy.reduceTimerPrecision.unconditional
13244 type: RelaxedAtomicBool
13248 # The resistFingerprinting variables are marked with 'Relaxed' memory ordering.
13249 # We don't particurally care that threads have a percently consistent view of
13250 # the values of these prefs. They are not expected to change often, and having
13251 # an outdated view is not particurally harmful. They will eventually become
13254 # The variables will, however, be read often (specifically .microseconds on
13255 # each timer rounding) so performance is important.
13256 - name: privacy.resistFingerprinting
13257 type: RelaxedAtomicBool
13260 do_not_use_directly: true
13262 # When the .pbmode pref is on, RFP or FPP will be enabled in PBM
13263 # When the non-pbm pref is on, they will be enabled in PBM and non-PBM
13264 - name: privacy.resistFingerprinting.pbmode
13265 type: RelaxedAtomicBool
13268 do_not_use_directly: true
13270 # privacy.fingerprintingProtection enables a set of fingerprinting protections
13271 # designed to minimize breakage while maximizing protection.
13272 - name: privacy.fingerprintingProtection
13273 type: RelaxedAtomicBool
13276 do_not_use_directly: true
13278 - name: privacy.fingerprintingProtection.pbmode
13279 type: RelaxedAtomicBool
13282 do_not_use_directly: true
13284 # We automatically decline canvas permission requests if they are not initiated
13285 # from user input. Just in case that breaks something, we allow the user to
13286 # revert this behavior with this obscure pref. We do not intend to support this
13287 # long term. If you do set it, to work around some broken website, please file
13288 # a bug with information so we can understand why it is needed.
13289 - name: privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts
13294 # This pref can be used to disable mozAddonManager entirely for fingerprinting
13295 # reasons. Someone like Tor browser will use this pref.
13296 # NOTE: We'd like this to be a "hidden" pref once StaticPrefs supports it.
13297 - name: privacy.resistFingerprinting.block_mozAddonManager
13298 type: RelaxedAtomicBool
13302 # Whether canvas extraction should result in random data. If false, canvas
13303 # extraction results in all-white, opaque pixel data.
13304 - name: privacy.resistFingerprinting.randomDataOnCanvasExtract
13305 type: RelaxedAtomicBool
13309 # The log level for browser console messages logged in RFPHelper.sys.mjs. Change to
13310 # 'All' and restart to see the messages.
13311 - name: privacy.resistFingerprinting.jsmloglevel
13316 # Enable jittering the clock one precision value forward.
13317 - name: privacy.resistFingerprinting.reduceTimerPrecision.jitter
13318 type: RelaxedAtomicBool
13322 # Dynamically tune the resolution of the timer reduction for
13323 # `privacy.reduceTimerPrecision` and `privacy.resistFingerprinting`.
13324 - name: privacy.resistFingerprinting.reduceTimerPrecision.microseconds
13325 type: RelaxedAtomicUint32
13329 - name: privacy.resistFingerprinting.target_video_res
13334 # Enable resetting the fingerprinting randomization key daily for normal windwos.
13335 - name: privacy.resistFingerprinting.randomization.daily_reset.enabled
13336 type: RelaxedAtomicBool
13340 # Enable resetting the fingerprinting randomization key daily for private windwos.
13341 - name: privacy.resistFingerprinting.randomization.daily_reset.private.enabled
13342 type: RelaxedAtomicBool
13347 # Anti-tracking permission expiration.
13348 - name: privacy.restrict3rdpartystorage.expiration
13350 value: 2592000 # 30 days (in seconds)
13353 # Report Anti-tracking warnings to console lazily
13354 - name: privacy.restrict3rdpartystorage.console.lazy
13359 # Enable the heuristic to allow storage access for windows opened using window.open() after user interaction
13360 - name: privacy.restrict3rdpartystorage.heuristic.opened_window_after_interaction
13365 # Enable the heuristic to allow storage access for windows opened using window.open()
13366 - name: privacy.restrict3rdpartystorage.heuristic.window_open
13371 # Enable the heuristic to allow storage access for windows opened using window.open()
13372 - name: privacy.restrict3rdpartystorage.heuristic.redirect
13377 # Anti-tracking permission expiration.
13378 - name: privacy.restrict3rdpartystorage.expiration_redirect
13380 value: 2592000 # 30 days (in seconds)
13383 # Anti-tracking user-interaction expiration.
13384 - name: privacy.userInteraction.expiration
13386 value: 3888000 # 45 days (in seconds)
13389 # Anti-tracking user-interaction document interval.
13390 - name: privacy.userInteraction.document.interval
13392 value: 1800 # 30 minutes (in seconds)
13395 # Enable Anti-tracking testing. When it enables, it will notify the observers
13396 # when user-interaction permission or storage access permission is added. This
13397 # is for testing only.
13398 - name: privacy.antitracking.testing
13403 # Controls the anti-tracking webcompat features. This includes:
13404 # - All URL-Classifier and state partitioning skip lists (prefs and remote
13406 # - Storage access heuristics (opener, redirect, etc.)
13407 # - StorageAccessAPI automatic grants (skips the prompt)
13408 # - Allowing specific tracking channels on user opt-in (e.g. facebook login
13410 - name: privacy.antitracking.enableWebcompat
13411 type: RelaxedAtomicBool
13415 # Enable the heuristic to allow storage access for recent visited pages
13416 - name: privacy.restrict3rdpartystorage.heuristic.recently_visited
13421 # Valid time gap since last visit
13422 - name: privacy.restrict3rdpartystorage.heuristic.recently_visited_time
13424 value: 600 # 10 minutes
13427 # Recent visited pages redirection permission expiration.
13428 - name: privacy.restrict3rdpartystorage.expiration_visited
13430 value: 2592000 # 30 days (in seconds)
13433 # Maximum client-side cookie life-time cap. Measured in seconds, set to 0 to
13435 - name: privacy.documentCookies.maxage
13440 - name: privacy.window.maxInnerWidth
13445 - name: privacy.window.maxInnerHeight
13450 - name: privacy.sanitize.sanitizeOnShutdown
13451 type: RelaxedAtomicBool
13455 - name: privacy.clearOnShutdown.cache
13456 type: RelaxedAtomicBool
13460 - name: privacy.dynamic_firstparty.limitForeign
13461 type: RelaxedAtomicBool
13465 - name: privacy.dynamic_firstparty.use_site
13466 type: RelaxedAtomicBool
13470 - name: privacy.partition.network_state
13471 type: RelaxedAtomicBool
13475 # Partition the OCSP cache by the partitionKey.
13476 - name: privacy.partition.network_state.ocsp_cache
13477 type: RelaxedAtomicBool
13478 value: @IS_NIGHTLY_BUILD@
13481 # Partition the OCSP cache by the partitionKey for private browsing mode.
13482 - name: privacy.partition.network_state.ocsp_cache.pbmode
13483 type: RelaxedAtomicBool
13487 # Always partition web storage APIs except cookies.
13488 - name: privacy.partition.always_partition_third_party_non_cookie_storage
13489 type: RelaxedAtomicBool
13493 # Exclude session storage from the above preference.
13494 - name: privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage
13495 type: RelaxedAtomicBool
13499 - name: privacy.partition.bloburl_per_partition_key
13504 - name: privacy.window.name.update.enabled
13509 # By default, the network state isolation is not active when there is a proxy
13510 # setting. This pref forces the network isolation even in these scenarios.
13511 - name: privacy.partition.network_state.connection_with_proxy
13516 # Partition the service workers unconditionally when dFPI is enabled.
13517 - name: privacy.partition.serviceWorkers
13518 type: RelaxedAtomicBool
13522 # Enables / disables the strip on share feature which strips query parameters
13523 # when copying/sharing in-content links or from the url bar.
13524 - name: privacy.query_stripping.strip_on_share.enabled
13525 type: RelaxedAtomicBool
13529 # Enables / disables the URL query string stripping in normal browsing mode
13530 # which strips query parameters from loading URIs to prevent bounce (redirect)
13532 - name: privacy.query_stripping.enabled
13533 type: RelaxedAtomicBool
13537 # Same as the pref above, but controls query stripping for private browsing
13539 - name: privacy.query_stripping.enabled.pbmode
13540 type: RelaxedAtomicBool
13544 # The list which contains query parameters that are needed to be stripped from
13545 # URIs. The query parameters are separated by a space.
13546 - name: privacy.query_stripping.strip_list
13551 # This controls if we will do the query string stripping for redirects.
13552 - name: privacy.query_stripping.redirect
13557 # the list which contains sites where should exempt from query stripping
13558 - name: privacy.query_stripping.allow_list
13563 # Main pref to enable / disable the feature.
13564 - name: privacy.bounceTrackingProtection.enabled
13569 # How long to wait for a client redirect after a navigation ends.
13570 - name: privacy.bounceTrackingProtection.clientBounceDetectionTimerPeriodMS
13575 # How long user activations will protect a site host from storage deletion.
13576 - name: privacy.bounceTrackingProtection.bounceTrackingActivationLifetimeSec
13581 # How long to wait for interaction after a possible bounce tracking event before
13582 # deleting a site host's storage.
13583 - name: privacy.bounceTrackingProtection.bounceTrackingGracePeriodSec
13588 # How often to run the bounce tracking timer algorithm which purges bounce
13589 # tracker state periodically. Set to 0 to disable purging.
13590 - name: privacy.bounceTrackingProtection.bounceTrackingPurgeTimerPeriodSec
13595 # Whether only bounces that access storage should be considered trackers.
13596 - name: privacy.bounceTrackingProtection.requireStatefulBounces
13601 # To be used in test environments to enable observer messages.
13602 - name: privacy.bounceTrackingProtection.enableTestMode
13607 #---------------------------------------------------------------------------
13608 # Prefs starting with "prompts."
13609 #---------------------------------------------------------------------------
13611 # Prompt modal type prefs
13612 # See nsIPromptService::MODAL_TYPE fields for possible values.
13614 # Insecure form submit warning.
13615 - name: prompts.modalType.insecureFormSubmit
13620 # nsHttpChannelAuthProvider#ConfirmAuth anti-phishing prompts.
13621 - name: prompts.modalType.confirmAuth
13626 #---------------------------------------------------------------------------
13627 # Prefs starting with "security."
13628 #---------------------------------------------------------------------------
13630 # Mochitests that need to load resource:// URIs not declared content-accessible
13631 # in manifests should set this pref.
13632 - name: security.all_resource_uri_content_accessible
13637 - name: security.bad_cert_domain_error.url_fix_enabled
13642 - name: security.csp.reporting.script-sample.max-length
13647 - name: security.csp.truncate_blocked_uri_for_frame_navigations
13652 # Limit the number of CSP reports that are send in a specific timespan.
13653 - name: security.csp.reporting.limit.count
13658 # Time span in seconds for reporting limit.
13659 - name: security.csp.reporting.limit.timespan
13664 # If true, all toplevel data: URI navigations will be blocked.
13665 # Please note that manually entering a data: URI in the
13666 # URL-Bar will not be blocked when flipping this pref.
13667 - name: security.data_uri.block_toplevel_data_uri_navigations
13672 # Whether window A is allowed to navigate cross-origin window B (that is not
13673 # a descendant frame of A) to a URI that loads externally.
13674 - name: security.allow_disjointed_external_uri_loads
13679 # Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but
13680 # not allowed for Firefox Desktop in firefox.js
13681 - name: security.allow_parent_unrestricted_js_loads
13682 type: RelaxedAtomicBool
13686 # Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but
13687 # not allowed for Firefox Desktop in firefox.js
13688 - name: security.allow_eval_with_system_principal
13689 type: RelaxedAtomicBool
13693 # Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but
13694 # not allowed for Firefox Desktop in firefox.js
13695 - name: security.allow_eval_in_parent_process
13696 type: RelaxedAtomicBool
13700 # Disallowed by default, ensure not disallowed content is loaded in the parent
13702 - name: security.allow_unsafe_parent_loads
13707 # Pref to block mixed scripts (fonts, plugin content, scripts, stylesheets,
13708 # iframes, websockets, XHR).
13709 - name: security.mixed_content.block_active_content
13711 value: @IS_ANDROID@
13714 # Pref to block sub requests that happen within an object.
13715 - name: security.mixed_content.block_object_subrequest
13720 # Pref for mixed display content blocking (images, audio, video).
13721 - name: security.mixed_content.block_display_content
13726 # Prerequisite pref for mixed display content upgrading (images, audio, video).
13727 - name: security.mixed_content.upgrade_display_content
13729 value: @IS_NIGHTLY_BUILD@
13732 # Upgrade images when the upgrading is enabled.
13733 - name: security.mixed_content.upgrade_display_content.image
13735 value: @IS_NIGHTLY_BUILD@
13738 # Upgrade audio when the upgrading is enabled.
13739 - name: security.mixed_content.upgrade_display_content.audio
13744 # Upgrade videos when the upgrading is enabled.
13745 - name: security.mixed_content.upgrade_display_content.video
13750 # Whether strict file origin policy is in effect. "False" is traditional.
13751 - name: security.fileuri.strict_origin_policy
13752 type: RelaxedAtomicBool
13756 # The level to which we sandbox the content process. firefox.js sets the
13757 # default to different values on a per-OS basis, and has documentation
13758 # on what the defaults are and what the numbers mean.
13759 - name: security.sandbox.content.level
13763 do_not_use_directly: true # Consumers should use SandboxSettings to ask.
13765 - name: security.sandbox.socket.process.level
13769 do_not_use_directly: true # Consumers should use SandboxSettings to ask.
13771 # This controls the strength of the Windows GPU process sandbox. Changes
13772 # will require restart.
13773 # For information on what the level number means, see
13774 # SetSecurityLevelForGPUProcess() in
13775 # security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp
13776 - name: security.sandbox.gpu.level
13778 #if defined(XP_WIN)
13785 # Enrollment preferences for the win32k experiment, set and managed by Normandy
13786 - name: security.sandbox.content.win32k-experiment.enrollmentStatus
13791 - name: security.sandbox.content.win32k-experiment.startupEnrollmentStatus
13796 #if defined(XP_WIN) && defined(MOZ_SANDBOX)
13798 # Whether win32k is disabled for content processes.
13799 # true means win32k system calls are not permitted.
13800 - name: security.sandbox.content.win32k-disable
13801 type: RelaxedAtomicBool
13805 # Note: win32k is currently _not_ disabled for GMP due to intermittent test
13806 # failures, where the GMP process fails very early. See bug 1449348.
13807 - name: security.sandbox.gmp.win32k-disable
13808 type: RelaxedAtomicBool
13812 # Whether win32k is disabled for socket processes.
13813 # true means win32k system calls are not permitted.
13814 - name: security.sandbox.socket.win32k-disable
13815 type: RelaxedAtomicBool
13819 # Whether CET User Shadow Stack compatible modules only is enabled for the
13820 # relevant process type.
13821 - name: security.sandbox.content.shadow-stack.enabled
13822 type: RelaxedAtomicBool
13826 - name: security.sandbox.rdd.shadow-stack.enabled
13827 type: RelaxedAtomicBool
13831 - name: security.sandbox.socket.shadow-stack.enabled
13832 type: RelaxedAtomicBool
13836 - name: security.sandbox.gpu.shadow-stack.enabled
13837 type: RelaxedAtomicBool
13841 - name: security.sandbox.gmp.shadow-stack.enabled
13842 type: RelaxedAtomicBool
13846 # Whether a Low Privilege AppContainer (LPAC) is enabled for the relevant
13849 #if defined(MOZ_WMF_MEDIA_ENGINE)
13850 - name: security.sandbox.utility-wmf-cdm.lpac.enabled
13851 type: RelaxedAtomicBool
13856 # Whether Arbitrary Code Guard is enabled for the RDD process.
13857 - name: security.sandbox.rdd.acg.enabled
13858 type: RelaxedAtomicBool
13863 # Whether Arbitrary Code Guard is enabled for the utility WMF audio decoder
13866 - name: security.sandbox.utility-wmf.acg.enabled
13867 type: RelaxedAtomicBool
13872 # This controls the depth of stack trace that is logged when Windows sandbox
13873 # logging is turned on. This is only currently available for the content
13874 # process because the only other sandbox (for GMP) has too strict a policy to
13875 # allow stack tracing. This does not require a restart to take effect.
13876 - name: security.sandbox.windows.log.stackTraceDepth
13877 type: RelaxedAtomicUint32
13882 #if defined(XP_LINUX) && defined(MOZ_SANDBOX)
13883 # Run content processes in headless mode and disallow
13884 # connections to the X server. Requires:
13885 # * `webgl.out-of-process` (or else WebGL breaks)
13886 # * `widget.non-native-theme.enabled` (scrollbars & form controls)
13887 # Changing it requires a restart because sandbox policy information
13888 # dependent on it is cached. See bug 1640345 for details.
13889 - name: security.sandbox.content.headless
13895 # Pref to show warning when submitting from secure to insecure.
13896 - name: security.warn_submit_secure_to_insecure
13901 # Hardware Origin-bound Second Factor Support
13902 - name: security.webauth.webauthn
13907 # Navigate-to CSP 3 directive
13908 - name: security.csp.enableNavigateTo
13913 # WebAuthn CTAP2 support
13914 - name: security.webauthn.ctap2
13915 type: RelaxedAtomicBool
13920 # WebAuthn JSON serialization methods
13921 - name: security.webauthn.enable_json_serialization_methods
13922 type: RelaxedAtomicBool
13926 # WebAuthn conditional mediation
13927 - name: security.webauthn.enable_conditional_mediation
13928 type: RelaxedAtomicBool
13932 # Dispatch WebAuthn requests to virtual authenticators (mutually exclusive
13933 # with and webauthn_enable_usbtoken)
13934 - name: security.webauth.webauthn_enable_softtoken
13935 type: RelaxedAtomicBool
13940 # residentKey support when using Android platform API
13941 - name: security.webauthn.webauthn_enable_android_fido2.residentkey
13942 type: RelaxedAtomicBool
13946 # Dispatch WebAuthn requests to the macOS platform API
13947 - name: security.webauthn.enable_macos_passkeys
13948 type: RelaxedAtomicBool
13952 # Dispatch WebAuthn requests to authenticator-rs
13953 - name: security.webauth.webauthn_enable_usbtoken
13954 type: RelaxedAtomicBool
13955 value: @IS_NOT_ANDROID@
13959 # Skip direct attestation consent prompts (for tests).
13960 - name: security.webauth.webauthn_testing_allow_direct_attestation
13961 type: RelaxedAtomicBool
13966 # Show the Windows Passkey settings link in about:preferences. This is
13967 # set to true if we find that webauthn.dll is sufficiently recent.
13968 - name: security.webauthn.show_ms_settings_link
13969 type: RelaxedAtomicBool
13973 # Block Worker/SharedWorker scripts with wrong MIME type.
13974 - name: security.block_Worker_with_wrong_mime
13979 # Block the execution of scripts using a wrong type as defined by the file extension
13980 # (OS) mapping when loaded via the file:// protocol.
13981 - name: security.block_fileuri_script_with_wrong_mime
13986 # Cancel outgoing requests from SystemPrincipal:
13987 # but only with scheme http(s) and contentpolicytype subdocument
13988 - name: security.disallow_privileged_https_subdocuments_loads
13993 # but only with scheme data and contentpolicytype subdocument
13994 - name: security.disallow_privileged_data_subdocuments_loads
13999 # Cancel outgoing requests from SystemPrincipal:
14000 # but only with scheme http(s) and contentpolicytype stylesheet
14001 - name: security.disallow_privileged_https_stylesheet_loads
14006 # Cancel outgoing requests from SystemPrincipal:
14007 # but only with scheme http(s) and contentpolicytype script
14008 - name: security.disallow_privileged_https_script_loads
14013 # Cancel outgoing requests from SystemPrincipal:
14014 # where there is no finalURI.
14015 - name: security.disallow_privileged_no_finaluri_loads
14020 # Cancel outgoing requests from privileged about pages:
14021 # but only with scheme http(s) and contentpolicytype script
14022 - name: security.disallow_privilegedabout_remote_script_loads
14027 # Enable preloaded static key pins by default.
14028 - name: security.cert_pinning.enforcement_level
14029 type: RelaxedAtomicUint32
14032 do_not_use_directly: true
14034 # OCSP fetching behavior:
14035 # 0: do not fetch OCSP
14036 # 1: fetch OCSP for DV and EV certificates
14037 # 2: fetch OCSP only for EV certificates
14038 - name: security.OCSP.enabled
14039 type: RelaxedAtomicUint32
14048 # Whether or not OCSP is required.
14049 # true => hard-fail (if an OCSP request times out, stop the connection)
14050 # false => soft-fail (if an OCSP request times out, continue the connection)
14051 - name: security.OCSP.require
14052 type: RelaxedAtomicBool
14056 # How many milliseconds to wait for an OCSP response before assuming it failed
14057 # (when fetching for soft-fail).
14058 - name: security.OCSP.timeoutMilliseconds.soft
14059 type: RelaxedAtomicUint32
14060 #ifdef RELEASE_OR_BETA
14067 # How many milliseconds to wait for an OCSP response before assuming it failed
14068 # (when fetching for hard-fail).
14069 - name: security.OCSP.timeoutMilliseconds.hard
14070 type: RelaxedAtomicUint32
14074 # Whether or not to enable OCSP must-staple (in other words, TLS-feature with
14076 - name: security.ssl.enable_ocsp_must_staple
14077 type: RelaxedAtomicBool
14081 # Whether or not to enable OCSP stapling.
14082 - name: security.ssl.enable_ocsp_stapling
14083 type: RelaxedAtomicBool
14087 # This is checked at startup to see if NSS should be initialized without the
14088 # user's certificate and key databases.
14089 - name: security.nocertdb
14094 # Whether or not to import and trust third party root certificates from the OS.
14095 - name: security.enterprise_roots.enabled
14096 type: RelaxedAtomicBool
14100 - name: security.intermediate_preloading_healer.enabled
14101 type: RelaxedAtomicBool
14102 value: @IS_NOT_ANDROID@
14105 - name: security.intermediate_preloading_healer.timer_interval_ms
14106 type: RelaxedAtomicUint32
14110 # If true, attempt to load the osclientcerts PKCS#11 module at startup on a
14111 # background thread. This module allows Firefox to use client certificates
14112 # stored in OS certificate storage. Currently only available for Windows and
14114 - name: security.osclientcerts.autoload
14115 type: RelaxedAtomicBool
14119 # If true, assume tokens accessed via osclientcerts implement RSA-PSS. If a
14120 # given token does not support RSA-PSS, users may see the error
14121 # 'SEC_ERROR_PKCS11_GENERAL_ERROR' if a server indicates it will accept an
14122 # RSA-PSS signature in the client's certificate verify message.
14123 # Setting this to false may allow such connections to succeed, if the server
14124 # also accepts RSA-PKCS1 signatures.
14125 - name: security.osclientcerts.assume_rsa_pss_support
14126 type: RelaxedAtomicBool
14130 - name: security.pki.cert_short_lifetime_in_days
14131 type: RelaxedAtomicUint32
14135 # security.pki.netscape_step_up_policy controls how the platform handles the
14136 # id-Netscape-stepUp OID in extended key usage extensions of CA certificates.
14137 # 0: id-Netscape-stepUp is always considered equivalent to id-kp-serverAuth
14138 # 1: it is considered equivalent when the notBefore is before 23 August 2016
14139 # 2: similarly, but for 23 August 2015
14140 # 3: it is never considered equivalent
14141 - name: security.pki.netscape_step_up_policy
14142 type: RelaxedAtomicUint32
14143 #ifdef RELEASE_OR_BETA
14150 # Configures Certificate Transparency support mode:
14151 # 0: Fully disabled.
14152 # 1: Only collect telemetry. CT qualification checks are not performed.
14153 - name: security.pki.certificate_transparency.mode
14154 type: RelaxedAtomicUint32
14158 # 0: Disable CRLite entirely.
14159 # 1: Consult CRLite but only collect telemetry.
14160 # 2: Consult CRLite and enforce both "Revoked" and "Not Revoked" results.
14161 # 3: Consult CRLite and enforce "Not Revoked" results, but defer to OCSP for "Revoked".
14162 - name: security.pki.crlite_mode
14163 type: RelaxedAtomicUint32
14167 - name: security.tls.version.min
14168 type: RelaxedAtomicUint32
14172 - name: security.tls.version.max
14173 type: RelaxedAtomicUint32
14177 - name: security.tls.version.enable-deprecated
14178 type: RelaxedAtomicBool
14182 - name: security.tls.version.fallback-limit
14183 type: RelaxedAtomicUint32
14187 # Turn off post-handshake authentication for TLS 1.3 by default,
14188 # until the incompatibility with HTTP/2 is resolved:
14189 # https://tools.ietf.org/html/draft-davidben-http2-tls13-00
14190 - name: security.tls.enable_post_handshake_auth
14191 type: RelaxedAtomicBool
14195 # Probability of GREASEing a TLS connection with ECH (0-100)
14196 # 0 means never GREASE, 100 means always GREASE
14197 - name: security.tls.ech.grease_probability
14198 type: RelaxedAtomicUint32
14202 # Whether to apply ECH GREASE settings to HTTP3/QUIC connections
14203 - name: security.tls.ech.grease_http3
14204 type: RelaxedAtomicBool
14208 # Whether to retry connections without ECH Grease
14209 - name: security.tls.ech.disable_grease_on_fallback
14210 type: RelaxedAtomicBool
14214 # ECH GREASE Padding target (1-255)
14215 - name: security.tls.ech.grease_size
14216 type: RelaxedAtomicUint32
14220 # Whether to apply GREASE settings to HTTP3/QUIC connections
14221 - name: security.tls.grease_http3_enable
14222 type: RelaxedAtomicBool
14227 - name: security.tls.hello_downgrade_check
14228 type: RelaxedAtomicBool
14232 - name: security.tls.enable_delegated_credentials
14233 type: RelaxedAtomicBool
14237 - name: security.tls.enable_0rtt_data
14238 type: RelaxedAtomicBool
14242 - name: security.ssl.treat_unsafe_negotiation_as_broken
14243 type: RelaxedAtomicBool
14247 - name: security.ssl.require_safe_negotiation
14248 type: RelaxedAtomicBool
14252 - name: security.ssl.enable_false_start
14253 type: RelaxedAtomicBool
14257 - name: security.ssl.enable_alpn
14258 type: RelaxedAtomicBool
14262 - name: security.ssl.disable_session_identifiers
14263 type: RelaxedAtomicBool
14267 - name: security.ssl3.ecdhe_rsa_aes_128_gcm_sha256
14268 type: RelaxedAtomicBool
14272 - name: security.ssl3.ecdhe_ecdsa_aes_128_gcm_sha256
14273 type: RelaxedAtomicBool
14277 - name: security.ssl3.ecdhe_ecdsa_chacha20_poly1305_sha256
14278 type: RelaxedAtomicBool
14282 - name: security.ssl3.ecdhe_rsa_chacha20_poly1305_sha256
14283 type: RelaxedAtomicBool
14287 - name: security.ssl3.ecdhe_ecdsa_aes_256_gcm_sha384
14288 type: RelaxedAtomicBool
14292 - name: security.ssl3.ecdhe_rsa_aes_256_gcm_sha384
14293 type: RelaxedAtomicBool
14297 - name: security.ssl3.ecdhe_rsa_aes_128_sha
14298 type: RelaxedAtomicBool
14302 - name: security.ssl3.ecdhe_ecdsa_aes_128_sha
14303 type: RelaxedAtomicBool
14304 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
14307 - name: security.ssl3.ecdhe_rsa_aes_256_sha
14308 type: RelaxedAtomicBool
14312 - name: security.ssl3.ecdhe_ecdsa_aes_256_sha
14313 type: RelaxedAtomicBool
14314 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
14317 - name: security.ssl3.dhe_rsa_aes_128_sha
14318 type: RelaxedAtomicBool
14322 - name: security.ssl3.dhe_rsa_aes_256_sha
14323 type: RelaxedAtomicBool
14327 - name: security.ssl3.rsa_aes_128_sha
14328 type: RelaxedAtomicBool
14332 - name: security.ssl3.rsa_aes_256_sha
14333 type: RelaxedAtomicBool
14337 - name: security.ssl3.rsa_aes_128_gcm_sha256
14338 type: RelaxedAtomicBool
14342 - name: security.ssl3.rsa_aes_256_gcm_sha384
14343 type: RelaxedAtomicBool
14347 - name: security.ssl3.deprecated.rsa_des_ede3_sha
14348 type: RelaxedAtomicBool
14352 - name: security.tls13.aes_128_gcm_sha256
14353 type: RelaxedAtomicBool
14357 - name: security.tls13.chacha20_poly1305_sha256
14358 type: RelaxedAtomicBool
14362 - name: security.tls13.aes_256_gcm_sha384
14363 type: RelaxedAtomicBool
14367 #---------------------------------------------------------------------------
14368 # Prefs starting with "signon."
14369 #---------------------------------------------------------------------------
14370 - name: signon.usernameOnlyForm.enabled
14375 #---------------------------------------------------------------------------
14376 # Prefs starting with "slider."
14377 #---------------------------------------------------------------------------
14379 # Scrollbar snapping region.
14381 # - 1 and higher: slider thickness multiple
14382 - name: slider.snapMultiplier
14391 #---------------------------------------------------------------------------
14392 # Prefs starting with "storage."
14393 #---------------------------------------------------------------------------
14395 # Whether to use a non-exclusive VFS.
14396 # By default we use the unix-excl VFS, for the following reasons:
14397 # 1. It improves compatibility with NFS shares, whose implementation
14398 # is incompatible with SQLite's locking requirements (reliable fcntl), and
14399 # in particular with WAL journaling.
14400 # Bug 433129 attempted to automatically identify such file-systems,
14401 # but a reliable way was not found and the fallback locking is slower than
14402 # POSIX locking, so we do not want to do it by default.
14403 # 2. It allows wal mode to avoid the memory mapped -shm file, reducing the
14404 # likelihood of SIGBUS failures when disk space is exhausted.
14405 # 3. It provides some protection from third party database tampering while a
14406 # connection is open.
14407 # Note there's no win32-excl VFS, so this has no effect on Windows.
14408 - name: storage.sqlite.exclusiveLock.enabled
14409 type: RelaxedAtomicBool
14410 value: @IS_NOT_ANDROID@
14413 #---------------------------------------------------------------------------
14414 # Prefs starting with "svg."
14415 #---------------------------------------------------------------------------
14417 # This pref controls whether the 'context-fill' and 'context-stroke' keywords
14418 # can be used in SVG-as-an-image in the content processes to use the fill/
14419 # stroke specified on the element that embeds the image. (These keywords are
14420 # always enabled in the chrome process, regardless of this pref.) Also, these
14421 # keywords are currently not part of any spec, which is partly why we disable
14422 # them for web content.
14423 - name: svg.context-properties.content.enabled
14424 type: RelaxedAtomicBool
14428 # This pref controls whether the `prefers-color-scheme` value of SVG images
14429 # reacts to the embedder `color-scheme` in content.
14430 - name: svg.embedder-prefers-color-scheme.content.enabled
14431 type: RelaxedAtomicBool
14435 # Enables the 'context-fill' and 'context-stroke' keywords for particular
14436 # domains. We expect this list to be Mozilla-controlled properties, since the
14437 # 'context-*' keywords are not part of any spec. We expect to remove this
14438 # preference and the 'context-` keyword support entirely in the
14439 # not-too-distant future when a standardized alternative ships. This preference
14440 # is _not_ for allowing web content to use these keywords. For performance
14441 # reasons, the list of domains in this preference should remain short in
14443 - name: svg.context-properties.content.allowed-domains
14448 # Is support for the new getBBox method from SVG 2 enabled?
14449 # See https://svgwg.org/svg2-draft/single-page.html#types-SVGBoundingBoxOptions
14450 - name: svg.new-getBBox.enabled
14455 # Whether SVGGraphicsElement.nearestViewportElement and SVGGraphicsElement.farthestViewportElement are enabled.
14456 - name: svg.nearestAndFarthestViewportElement.enabled
14458 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
14461 # Tweak which elements are allowed in <svg:use> subtrees, and in which
14462 # circumstances. See RemoveForbiddenNodes in SVGUseElement.cpp for the spec
14465 # - 0: Don't restrict ever.
14466 # - 1: Restrict only cross-document.
14467 # - 2/other: restrict always.
14469 # We allow the behavior to be configurable via this pref. Our chosen default
14470 # value forbids non-graphical content in <svg:use> clones of cross-document
14471 # elements. This is a compromise between our more-permissive pre-existing
14472 # behavior (which SVG 2 seems to call for, and maps to pref value 0) and the
14473 # behavior of other UAs (which SVG 1.1 seems to call for, and maps to pref
14475 - name: svg.use-element.graphics-element-restrictions
14480 # Whether to restrict <svg:use> element recursion levels.
14482 # - 0: Don't restrict ever.
14483 # - 1: Restrict everywhere
14484 # - 2/other: Restrict only in the parent process.
14486 - name: svg.use-element.recursive-clone-limit.enabled
14491 # What is the recursion limit for svg use element cloning if enabled.
14492 - name: svg.use-element.recursive-clone-limit
14497 # Whether <svg:use> with a data: URL as href is allowed
14498 - name: svg.use-element.data-url-href.allowed
14503 #---------------------------------------------------------------------------
14504 # Prefs starting with "telemetry."
14505 #---------------------------------------------------------------------------
14507 - name: telemetry.number_of_site_origin.min_interval
14512 - name: telemetry.fog.test.localhost_port
14513 type: RelaxedAtomicInt32
14518 - name: telemetry.fog.test.activity_limit
14519 type: RelaxedAtomicUint32
14524 - name: telemetry.fog.test.inactivity_limit
14525 type: RelaxedAtomicUint32
14530 - name: telemetry.fog.artifact_build
14531 type: RelaxedAtomicBool
14535 #---------------------------------------------------------------------------
14536 # Prefs starting with "test."
14537 #---------------------------------------------------------------------------
14539 - name: test.events.async.enabled
14540 type: RelaxedAtomicBool
14544 - name: test.mousescroll
14545 type: RelaxedAtomicBool
14549 #---------------------------------------------------------------------------
14550 # Prefs starting with "thread."
14551 #---------------------------------------------------------------------------
14553 # If control tasks aren't enabled, they get medium high priority.
14554 - name: threads.control_event_queue.enabled
14555 type: RelaxedAtomicBool
14559 # If the service is available, set threads to low-power mode when in the background.
14560 - name: threads.use_low_power.enabled
14561 type: RelaxedAtomicBool
14562 value: @IS_NIGHTLY_BUILD@
14566 # If the process priority is set to background, put the main thread in the background.
14567 # Currently off by default.
14568 - name: threads.lower_mainthread_priority_in_background.enabled
14570 value: @IS_NIGHTLY_BUILD@
14573 #---------------------------------------------------------------------------
14574 # Prefs starting with "timer."
14575 #---------------------------------------------------------------------------
14577 # Since our timestamp on macOS does not increment while the system is asleep, we
14578 # should ignore sleep/wake notifications to make timer thread process timers.
14579 - name: timer.ignore_sleep_wake_notifications
14580 type: RelaxedAtomicBool
14588 # Amount of time by which it is always acceptable to delay the firing of a timer.
14589 # Any timer may be delayed by up to this amount in order to enable timers to be
14590 # bundled together for efficiency.
14591 - name: timer.minimum_firing_delay_tolerance_ms
14596 # Maximum amount of time by which it is ever acceptable to delay the firing of a timer.
14597 # Setting this to zero will effectively disable timer coalescing.
14598 - name: timer.maximum_firing_delay_tolerance_ms
14604 # Controls whether or not TimerThread will automatically increase the Windows timer
14605 # resolution when appropriate conditions are met.
14606 - name: timer.auto_increase_timer_resolution
14607 type: RelaxedAtomicBool
14608 #ifdef NIGHTLY_BUILD
14616 #---------------------------------------------------------------------------
14617 # Prefs starting with "toolkit."
14618 #---------------------------------------------------------------------------
14620 # Makes removeDirectory background task wait for the given milliseconds before removal.
14621 - name: toolkit.background_tasks.remove_directory.testing.sleep_ms
14622 type: RelaxedAtomicUint32
14626 # Returns true if BHR is disabled.
14627 - name: toolkit.content-background-hang-monitor.disabled
14632 - name: toolkit.scrollbox.smoothScroll
14633 type: RelaxedAtomicBool
14637 - name: toolkit.scrollbox.horizontalScrollDistance
14638 type: RelaxedAtomicInt32
14642 - name: toolkit.scrollbox.verticalScrollDistance
14643 type: RelaxedAtomicInt32
14647 # The lateWriteChecksStage and fastShutdownStage below represent the stage
14648 # of shutdown after which we (for lateWriteChecksStage) crash / gather
14649 # telemetry data on file writes, or (for fastShutdownStage) we call _exit(0).
14650 # Higher values are earlier during shutdown, and the full enumeration can
14651 # be found in AppShutdown.h in the AppShutdownPhase enum.
14652 - name: toolkit.shutdown.lateWriteChecksStage
14654 #ifdef MOZ_CODE_COVERAGE
14661 # See the comment above toolkit.shutdown.lateWriteChecksStage. A higher value
14662 # for this pref means we call _exit(0) earlier during shutdown.
14663 - name: toolkit.shutdown.fastShutdownStage
14665 #if !defined(DEBUG) && !defined(MOZ_ASAN) && !defined(MOZ_TSAN) && !defined(MOZ_CODE_COVERAGE) && !defined(MOZ_VALGRIND) && !defined(MOZ_PROFILE_GENERATE) && !defined(JS_STRUCTURED_SPEW)
14672 # Sending each remote accumulation immediately places undue strain on the IPC
14673 # subsystem. Batch the remote accumulations for a period of time before sending
14674 # them all at once. This value was chosen as a balance between data timeliness
14675 # and performance (see bug 1218576).
14676 - name: toolkit.telemetry.ipcBatchTimeout
14681 - name: toolkit.telemetry.geckoview.batchDurationMS
14682 type: RelaxedAtomicUint32
14686 - name: toolkit.telemetry.geckoview.maxBatchStalenessMS
14687 type: RelaxedAtomicUint32
14691 - name: toolkit.telemetry.geckoview.streaming
14692 type: RelaxedAtomicBool
14696 - name: toolkit.telemetry.testing.overrideProductsCheck
14697 type: RelaxedAtomicBool
14701 #---------------------------------------------------------------------------
14702 # Prefs starting with "ui."
14703 #---------------------------------------------------------------------------
14705 - name: ui.key.generalAccessKey
14710 # Use 17 for Ctrl, 18 for Alt, 91 or 224 for Meta, 0 for none.
14711 - name: ui.key.accelKey
14720 # See above for the key codes to use.
14721 - name: ui.key.menuAccessKey
14730 # Only used if generalAccessKey is -1.
14731 - name: ui.key.chromeAccess
14734 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 3 = ctrl+shift, 8 = Meta
14737 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 5 = Alt+Shift, 8 = Win
14742 # Only used if generalAccessKey is -1.
14743 - name: ui.key.contentAccess
14746 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 3 = ctrl+shift, 8 = Meta
14749 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 5 = Alt+Shift, 8 = Win
14754 # Does the access key by itself focus the menu bar?
14755 - name: ui.key.menuAccessKeyFocuses
14757 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
14758 # On Windows and Linux, we now default to showing the menu bar only when alt
14766 # Whether native key bindings in the environment or builtin shortcut key
14767 # definitions in Gecko are used first in <input> and <textarea>
14768 - name: ui.key.textcontrol.prefer_native_key_bindings_over_builtin_shortcut_key_definitions
14773 #ifdef MOZ_WIDGET_GTK
14774 # Only GtkTextView (native multiline text viewer/editor) supports "select-all"
14775 # signal so that we cannot know "select-all" key bindings only with GtkEntry.
14776 # When this pref is set to true, if a key combination does not cause any
14777 # signals in GtkEntry, try to check the key combination is mapped to
14778 # "select-all" in GtkTextView or not. If it's mapped to other commands, they
14779 # are just ignored.
14780 - name: ui.key.use_select_all_in_single_line_editor
14786 # Duration of timeout of incremental search in menus (ms). 0 means infinite.
14787 - name: ui.menu.incremental_search.timeout
14792 # If true, all popups won't hide automatically on blur
14793 - name: ui.popup.disable_autohide
14794 type: RelaxedAtomicBool
14798 # Negate scroll, true will make the mouse scroll wheel move the screen the
14799 # same direction as with most desktops or laptops.
14800 - name: ui.scrolling.negate_wheel_scroll
14801 type: RelaxedAtomicBool
14802 value: @IS_ANDROID@
14805 # If the user puts a finger down on an element and we think the user might be
14806 # executing a pan gesture, how long do we wait before tentatively deciding the
14807 # gesture is actually a tap and activating the target element?
14808 - name: ui.touch_activation.delay_ms
14813 # If the user has clicked an element, how long do we keep the :active state
14814 # before it is cleared by the mouse sequences fired after a
14815 # touchstart/touchend.
14816 - name: ui.touch_activation.duration_ms
14821 # Prevent system colors from being exposed to CSS or canvas.
14822 - name: ui.use_standins_for_native_colors
14823 type: RelaxedAtomicBool
14827 # Whether context menus should only appear on mouseup instead of mousedown,
14828 # on OSes where they normally appear on mousedown (macOS, *nix).
14829 # Note: ignored on Windows (context menus always use mouseup).
14830 - name: ui.context_menus.after_mouseup
14835 # Whether click-hold context menus are enabled.
14836 - name: ui.click_hold_context_menus
14837 type: RelaxedAtomicBool
14841 # How long to wait for a drag gesture before displaying click-hold context menu,
14843 - name: ui.click_hold_context_menus.delay
14844 type: RelaxedAtomicInt32
14848 # When enabled, the touch.radius and mouse.radius prefs allow events to be
14849 # dispatched to nearby elements that are sensitive to the event. See
14850 # PositionedEventTargeting.cpp. The 'mm' prefs define a rectangle around the
14851 # nominal event target point within which we will search for suitable elements.
14852 # 'visitedWeight' is a percentage weight; a value > 100 makes a visited link be
14853 # treated as further away from the event target than it really is, while a
14854 # value < 100 makes a visited link be treated as closer to the event target
14855 # than it really is.
14857 - name: ui.touch.radius.enabled
14859 value: @IS_ANDROID@
14862 - name: ui.touch.radius.topmm
14871 - name: ui.touch.radius.rightmm
14880 - name: ui.touch.radius.bottommm
14889 - name: ui.touch.radius.leftmm
14898 - name: ui.touch.radius.visitedWeight
14903 - name: ui.mouse.radius.enabled
14905 value: @IS_ANDROID@
14908 - name: ui.mouse.radius.topmm
14917 - name: ui.mouse.radius.rightmm
14926 - name: ui.mouse.radius.bottommm
14935 - name: ui.mouse.radius.leftmm
14944 - name: ui.mouse.radius.visitedWeight
14949 - name: ui.mouse.radius.reposition
14951 value: @IS_ANDROID@
14954 # When true, the ui.mouse.radius.* prefs will only affect simulated mouse
14955 # events generated by touch input. When false, the prefs will be used for all
14957 - name: ui.mouse.radius.inputSource.touchOnly
14962 # When true, selection is not collapased at the right click point if there is a
14963 # non-collapsed selection.
14964 - name: ui.mouse.right_click.collapse_selection.stop_if_non_collapsed_selection
14969 # When true, selection is not collapsed at the right click point if the clicked
14970 # node is not editable.
14971 - name: ui.mouse.right_click.collapse_selection.stop_if_non_editable_node
14976 #---------------------------------------------------------------------------
14977 # Prefs starting with "urlclassifier."
14978 #---------------------------------------------------------------------------
14980 # Update server response timeout for Safe Browsing.
14981 - name: urlclassifier.update.response_timeout_ms
14986 # Download update timeout for Safe Browsing.
14987 - name: urlclassifier.update.timeout_ms
14992 #---------------------------------------------------------------------------
14993 # Prefs starting with "view_source."
14994 #---------------------------------------------------------------------------
14996 - name: view_source.editor.external
15001 - name: view_source.wrap_long_lines
15003 value: @IS_ANDROID@
15006 - name: view_source.syntax_highlight
15011 - name: view_source.tab_size
15016 #---------------------------------------------------------------------------
15017 # Prefs starting with "webgl." (for pref access from Worker threads)
15018 #---------------------------------------------------------------------------
15020 - name: webgl.1.allow-core-profiles
15021 type: RelaxedAtomicBool
15029 - name: webgl.angle.force-d3d11
15030 type: RelaxedAtomicBool
15034 - name: webgl.angle.try-d3d11
15035 type: RelaxedAtomicBool
15043 - name: webgl.angle.force-warp
15044 type: RelaxedAtomicBool
15048 - name: webgl.auto-flush
15049 type: RelaxedAtomicBool
15053 - name: webgl.auto-flush.gl
15054 type: RelaxedAtomicBool
15058 - name: webgl.can-lose-context-in-foreground
15059 type: RelaxedAtomicBool
15063 - name: webgl.cgl.multithreaded
15064 type: RelaxedAtomicBool
15068 - name: webgl.colorspaces.prototype
15069 type: RelaxedAtomicBool
15073 - name: webgl.debug.incomplete-tex-color
15074 type: RelaxedAtomicUint32
15078 - name: webgl.default-antialias
15079 type: RelaxedAtomicBool
15080 value: @IS_NOT_ANDROID@
15083 - name: webgl.default-no-alpha
15084 type: RelaxedAtomicBool
15088 - name: webgl.disable-angle
15089 type: RelaxedAtomicBool
15093 - name: webgl.disable-wgl
15094 type: RelaxedAtomicBool
15098 - name: webgl.dxgl.enabled
15099 type: RelaxedAtomicBool
15107 - name: webgl.dxgl.needs-finish
15108 type: RelaxedAtomicBool
15112 - name: webgl.disable-fail-if-major-performance-caveat
15113 type: RelaxedAtomicBool
15117 - name: webgl.disable-DOM-blit-uploads
15118 type: RelaxedAtomicBool
15119 #if defined(MOZ_AARCH64) && defined(XP_MACOSX)
15126 - name: webgl.disabled
15127 type: RelaxedAtomicBool
15131 - name: webgl.enable-debug-renderer-info
15132 type: RelaxedAtomicBool
15136 - name: webgl.enable-draft-extensions
15137 type: RelaxedAtomicBool
15141 - name: webgl.enable-privileged-extensions
15142 type: RelaxedAtomicBool
15146 - name: webgl.enable-renderer-query
15147 type: RelaxedAtomicBool
15151 - name: webgl.enable-surface-texture
15152 type: RelaxedAtomicBool
15156 - name: webgl.enable-webgl2
15157 type: RelaxedAtomicBool
15161 - name: webgl.fake-verts.max
15162 type: RelaxedAtomicUint32
15163 value: 10*1000*1000 # 10M as vec4 is count*4*4 = 160MB
15166 # Only works on Mac for now.
15167 - name: webgl.forbid-hardware
15168 type: RelaxedAtomicBool
15172 # Only works on Mac for now.
15173 - name: webgl.forbid-software
15174 type: RelaxedAtomicBool
15175 value: true # It's generally better to encourage fallback to e.g. canvas2d.
15178 - name: webgl.force-enabled
15179 type: RelaxedAtomicBool
15183 - name: webgl.force-index-validation
15184 type: RelaxedAtomicInt32
15188 - name: webgl.gl_khr_no_error
15189 type: RelaxedAtomicBool
15192 #elif defined(MOZ_WIDGET_GTK)
15193 # Bug 1862039 - All versions of Mesa as of Nov 2023 have issues with
15194 # GL_CONTEXT_FLAG_NO_ERROR_BIT. We should aspire to reenable it at
15195 # some point when the bugs are fixed.
15196 # See also https://gitlab.freedesktop.org/mesa/mesa/-/issues/10062
15203 - name: webgl.lose-context-on-memory-pressure
15204 type: RelaxedAtomicBool
15208 - name: webgl.max-contexts
15209 type: RelaxedAtomicUint32
15213 - name: webgl.max-contexts-per-principal
15214 type: RelaxedAtomicUint32
15218 - name: webgl.max-size-per-texture-mib
15219 type: RelaxedAtomicUint32
15223 - name: webgl.max-vert-ids-per-draw
15224 type: RelaxedAtomicUint32
15225 value: 30*1000*1000
15228 - name: webgl.max-warnings-per-context
15229 type: RelaxedAtomicUint32
15233 - name: webgl.min_capability_mode
15234 type: RelaxedAtomicBool
15238 - name: webgl.msaa-force
15239 type: RelaxedAtomicBool
15243 - name: webgl.msaa-samples
15244 type: RelaxedAtomicUint32
15248 - name: webgl.out-of-process
15249 type: RelaxedAtomicBool
15250 # (When reading the next line, know that preprocessor.py doesn't
15251 # understand parentheses, but && is higher precedence than ||.)
15255 - name: webgl.out-of-process.worker
15256 type: RelaxedAtomicBool
15257 # (When reading the next line, know that preprocessor.py doesn't
15258 # understand parentheses, but && is higher precedence than ||.)
15262 - name: webgl.out-of-process.force
15263 type: RelaxedAtomicBool
15267 - name: webgl.out-of-process.shmem-size
15268 type: RelaxedAtomicUint32
15269 value: 100000 # 100KB
15272 - name: webgl.out-of-process.async-present
15273 type: RelaxedAtomicBool
15277 # Forces async present to wait for a sync, even while using remote textures.
15278 - name: webgl.out-of-process.async-present.force-sync
15279 type: RelaxedAtomicBool
15283 #if defined(MOZ_WIDGET_ANDROID)
15284 - name: webgl.out-of-process.enable-ahardwarebuffer
15290 # Override the blocklist to assume that GL is threadsafe.
15291 - name: webgl.threadsafe-gl.force-enabled
15296 # Override the blocklist to assume that GL is not threadsafe.
15297 - name: webgl.threadsafe-gl.force-disabled
15302 - name: webgl.use-canvas-render-thread
15307 - name: webgl.override-unmasked-renderer
15308 type: DataMutexString
15312 - name: webgl.override-unmasked-vendor
15313 type: DataMutexString
15317 - name: webgl.power-preference-override
15318 type: RelaxedAtomicInt32
15322 - name: webgl.prefer-16bpp
15323 type: RelaxedAtomicBool
15327 - name: webgl.sanitize-unmasked-renderer
15328 type: RelaxedAtomicBool
15332 - name: webgl.allow-immediate-queries
15333 type: RelaxedAtomicBool
15337 - name: webgl.allow-fb-invalidation
15338 type: RelaxedAtomicBool
15343 - name: webgl.perf.max-warnings
15344 type: RelaxedAtomicInt32
15348 - name: webgl.perf.max-acceptable-fb-status-invals
15349 type: RelaxedAtomicInt32
15353 - name: webgl.perf.spew-frame-allocs
15354 type: RelaxedAtomicBool
15358 #---------------------------------------------------------------------------
15359 # Prefs starting with "widget."
15360 #---------------------------------------------------------------------------
15362 # Global user preference for disabling native theme in content processes.
15364 # NOTE(emilio): When changing this make sure to update the non_native_theme
15365 # entry in python/mozbuild/mozbuild/mozinfo.py and test_fission_autostart.py
15366 - name: widget.non-native-theme.enabled
15367 type: RelaxedAtomicBool
15371 # Whether the non-native theme should always use system colors. Useful mostly
15372 # for testing forced colors mode.
15373 - name: widget.non-native-theme.always-high-contrast
15374 type: RelaxedAtomicBool
15378 # The style of scrollbars to use. Here are the current options:
15380 # 0: Default platform scrollbar style.
15381 # 1: macOS scrollbars
15382 # 2: GTK scrollbars
15383 # 3: Android scrollbars
15384 # 4: Windows 10 scrollbars
15385 # 5: Windows 11 scrollbars
15387 # Note that switching to non-default scrollbars is experimental and other
15388 # scrollbar-related prefs may interfere with the experience. For example,
15389 # setting the GTK thumb size may have no effect when using non-GTK scrollbars
15391 - name: widget.non-native-theme.scrollbar.style
15396 # An override that allows to override the default platform size. The size in CSS
15397 # pixels at full zoom of the minimum scrollbar width.
15398 - name: widget.non-native-theme.scrollbar.size.override
15403 # Whether we should use themed values for dark scrollbars.
15404 - name: widget.non-native-theme.scrollbar.dark-themed
15405 type: RelaxedAtomicBool
15409 # Whether the active thumb color should always use the themed colors, even if
15410 # dark scrollbars are in use.
15411 - name: widget.non-native-theme.scrollbar.active-always-themed
15412 type: RelaxedAtomicBool
15416 # Whether we use the Windows CSS scrollbar sizes, or the scrollbar sizes
15418 - name: widget.non-native-theme.win.scrollbar.use-system-size
15423 # Whether Windows 11 scrollbars are always drawn with the thinner "overlay"
15425 - name: widget.non-native-theme.win11.scrollbar.force-overlay-style
15430 # The amount of space that the thumb should fill the scrollbar, from zero to
15432 - name: widget.non-native-theme.gtk.scrollbar.thumb-size
15437 # The minimum size of the scroll thumb, in the scrollbar direction.
15438 - name: widget.non-native-theme.gtk.scrollbar.thumb-cross-size
15443 # Whether the thumb should be rounded for the non-native scrollbars.
15444 - name: widget.non-native-theme.gtk.scrollbar.round-thumb
15449 # Whether buttons shouldn't be suppressed for non-native scrollbars.
15450 - name: widget.non-native-theme.gtk.scrollbar.allow-buttons
15455 # Whether we should use the default accent color or the theme-provided one for
15456 # content (e.g. for form controls and CSS system colors).
15458 # Turned off on Windows, for now (we always use the default blue-ish
15459 # accent-color there). We might want to turn this on there, though it's worth
15460 # thinking on what the behavior should be for grey-ish accent colors (which are
15461 # a thing on Windows and can cause confusion with things like disabled form
15462 # controls). Maybe it's just fine.
15463 - name: widget.non-native-theme.use-theme-accent
15464 type: RelaxedAtomicBool
15472 # Whether we should try to use WebRender to render widgets.
15473 - name: widget.non-native-theme.webrender
15478 # Whether the outline style should be one big stroke or two contrasting strokes
15479 - name: widget.non-native-theme.solid-outline-style
15484 # Preference to disable dark scrollbar implementation.
15485 # This is mainly for testing because dark scrollbars have to be semi-
15486 # transparent, but many reftests expect scrollbars to look identical
15487 # among different backgrounds.
15488 # However, some users may want to disable this as well.
15489 - name: widget.disable-dark-scrollbar
15494 - name: widget.window-transforms.disabled
15495 type: RelaxedAtomicBool
15501 # Whether to shift by the menubar height on fullscreen mode.
15504 # 2: auto (tries to detect when it is needed)
15505 - name: widget.macos.shift-by-menubar-on-fullscreen
15506 type: RelaxedAtomicUint32
15510 - name: widget.macos.native-context-menus
15511 type: RelaxedAtomicBool
15516 # Whether native GTK context menus are enabled.
15517 # Disabled because at the very least there's missing custom icon support.
15518 - name: widget.gtk.native-context-menus
15519 type: RelaxedAtomicBool
15523 # Whether we use overlay scrollbars on GTK.
15524 - name: widget.gtk.overlay-scrollbars.enabled
15525 type: RelaxedAtomicBool
15529 # Whether we hide the pointer while typing on Linux
15530 - name: widget.gtk.hide-pointer-while-typing.enabled
15531 type: RelaxedAtomicBool
15535 # Whether we honor the scrollbar colors from the gtk theme.
15536 - name: widget.gtk.theme-scrollbar-colors.enabled
15541 # Whether libadwaita colors are used rather than the default ones.
15542 - name: widget.gtk.libadwaita-colors.enabled
15547 # Whether we enable rounded bottom corners on GTK by default.
15549 # The implementation is a bit hacky (see details in bug 1850827) so behind a
15550 # pref for emergency purposes.
15551 - name: widget.gtk.rounded-bottom-corners.enabled
15557 # Whether selection colors for the non-system theme get passed from the system
15559 - name: widget.gtk.alt-theme.selection
15564 # Whether form control accent colors for the non-system theme get passed from
15565 # the system GTK theme.
15566 - name: widget.gtk.alt-theme.accent
15571 # Whether the scrollbar thumb active color from the non-system theme gets
15572 # passed from the system GTK theme.
15573 - name: widget.gtk.alt-theme.scrollbar_active
15578 # Whether we should try to grab the pointer on popups.
15581 # 2: Auto (depending on the system)
15582 - name: widget.gtk.grab-pointer
15587 # Whether we should try ignore bogus leave-notify events from the window
15591 # 2: Auto (depending on the system)
15592 - name: widget.gtk.ignore-bogus-leave-notify
15597 # Whether to use gtk high contrast themes to disable content styling like on
15598 # windows high contrast mode.
15599 - name: widget.content.gtk-high-contrast.enabled
15605 - name: widget.wayland.fractional-scale.enabled
15610 # Use opaque region for MozContainer wl_surface
15611 - name: widget.wayland.opaque-region.enabled
15616 # Use frame callback based vsync
15617 - name: widget.wayland.vsync.enabled
15622 # Whether to keep firing vsync at layout.throttled_frame_rate after we've been
15624 - name: widget.wayland.vsync.keep-firing-at-idle
15630 #ifdef MOZ_WIDGET_GTK
15631 # Whether to use DMABuf backend.
15632 - name: widget.dmabuf.enabled
15637 # Whether to override the DMABuf blocklist.
15638 - name: widget.dmabuf.force-enabled
15643 #ifdef NIGHTLY_BUILD
15644 # Keep those pref hidden on non-nightly builds to avoid people accidentally
15647 # Use DMABuf for content textures.
15648 # For testing purposes only.
15649 - name: widget.dmabuf-textures.enabled
15650 type: RelaxedAtomicBool
15655 # Use DMABuf backend for WebGL.
15656 - name: widget.dmabuf-webgl.enabled
15657 type: RelaxedAtomicBool
15661 # Use gdk_window_move_to_rect to move Wayland popups when available.
15662 - name: widget.wayland.use-move-to-rect
15667 # The time we should spend on a DBUS call to the FileManager1 interface before
15668 # giving up and trying an alternative method.
15670 # -1 for the default system timeout, INT_MAX for "infinite time".
15672 # This happens right now on the main thread so 1 second should be enough, we
15673 # should consider moving it to a background task and just use the default
15675 - name: widget.gtk.file-manager-show-items-timeout-ms
15680 # The timeout we should spend on a DBUS call to the Settings proxy before
15683 # -1 for the default system timeout, INT_MAX for "infinite time".
15685 # This runs just once, but during startup, so make sure it doesn't take too
15686 # long. Three seconds should be way more than enough, and if we don't get the
15687 # reply on time then the only potential issue is that we use a light instead of
15688 # dark interface or vice versa.
15689 - name: widget.gtk.settings-portal-timeout-ms
15694 # Whether to use gtk portal for the file picker.
15697 # - 2: auto (true for flatpak or GTK_USE_PORTAL=1, false otherwise)
15698 - name: widget.use-xdg-desktop-portal.file-picker
15703 # Whether to use gtk portal for the mime handler.
15706 # - 2: auto (for now only true for flatpak, see bug 1516290)
15707 - name: widget.use-xdg-desktop-portal.mime-handler
15712 # Whether to try to use XDG portal for settings / look-and-feel information.
15713 # https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.Settings
15717 - name: widget.use-xdg-desktop-portal.settings
15722 # Whether to use XDG portal for geolocation.
15723 # https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.Location
15727 - name: widget.use-xdg-desktop-portal.location
15731 # Whether to use XDG portal for opening to a file.
15732 # https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.OpenURI
15735 # - 2: auto (true for flatpak or GTK_USE_PORTAL=1, false otherwise)
15736 - name: widget.use-xdg-desktop-portal.open-uri
15743 # WindowsUIUtils::Share to wait for user action on Windows share dialog
15744 # `true` means the promise resolves when user completes or cancels the share
15745 # action. This can be unsafe since selecting copy action fires no DataPackage
15746 # event as of 21H1.
15747 # `false` means the promise resolves when the share data is passed to
15749 # This affects the behavior of `navigator.share()`.
15750 - name: widget.windows.share.wait_action.enabled
15755 - name: widget.windows.window_occlusion_tracking.enabled
15760 # Whether overlay scrollbars respect the system settings.
15761 # Note that these can be overridden by the ui.useOverlayScrollbars pref.
15762 - name: widget.windows.overlay-scrollbars.enabled
15767 # Whether we allow accessing the UWP system color pallete.
15768 - name: widget.windows.uwp-system-colors.enabled
15773 # Whether we use the accent color for highlight as some other UWP apps do.
15775 # false for now since it can cause some contrast-with-background issues
15776 # specially with grey accents, see bug 1776588.
15777 - name: widget.windows.uwp-system-colors.highlight-accent
15782 - name: widget.windows.window_occlusion_tracking_display_state.enabled
15787 - name: widget.windows.window_occlusion_tracking_session_lock.enabled
15792 # Whether to give explorer.exe a delated nudge to recalculate the fullscreenness
15793 # of a window after maximizing it.
15794 - name: widget.windows.fullscreen_remind_taskbar
15795 type: RelaxedAtomicBool
15799 # Whether to open the Windows file and folder pickers "remotely" (in a utility
15800 # process) or "locally" (in the main process).
15803 # * 0: auto (possibly release-channel-dependent)
15804 # * 1: remotely, falling back to locally
15805 # * 2: remotely, no fallback
15806 # * -1: locally, no fallback
15807 - name: widget.windows.utility_process_file_picker
15808 type: RelaxedAtomicInt32
15812 # The number of messages of each type to keep for display in
15813 # about:windows-messages
15814 - name: widget.windows.messages_to_log
15815 type: RelaxedAtomicUint32
15819 # Whether to flush the Ole clipboard synchronously.
15820 # Possible values are:
15823 # * 2 (or others): when needed
15824 - name: widget.windows.sync-clipboard-flush
15829 # Whether to apply a hack (adjusting the window height by -1px and back again)
15830 # upon first entering fullscreen intended to work around a bug exhibited under
15831 # on some Windows 11 machines under some configurations. (See bug 1763981.)
15837 - name: widget.windows.apply-dwm-resize-hack
15838 type: RelaxedAtomicInt32
15843 # Whether to disable SwipeTracker (e.g. swipe-to-nav).
15844 - name: widget.disable-swipe-tracker
15849 # Various metrics to control SwipeTracker.
15850 - name: widget.swipe.velocity-twitch-tolerance
15855 - name: widget.swipe.success-velocity-contribution
15860 # When using pixel deltas for pan input, how many pixels do we consider a whole
15863 # The values for this pref are derived from trial and error in an effort to
15864 # match the existing behavior on the respective platforms.
15865 - name: widget.swipe.pixel-size
15867 #if defined(XP_MACOSX)
15874 # When using page deltas for pan input, how many pages do we consider a whole
15875 # swipe navigation?
15877 # This is only relevant for GTK which is as of right now the only platform
15878 # which supports page-based pan gestures.
15879 - name: widget.swipe.page-size
15884 - name: widget.transparent-windows
15889 # Whether the clipboard cached are used while getting system clipboard data.
15890 - name: widget.clipboard.use-cached-data.enabled
15892 #if defined(XP_MACOSX)
15899 # Whether to render in to a child SurfaceControl rather than directly into the SurfaceView
15900 - name: widget.android.use-surfacecontrol
15905 #---------------------------------------------------------------------------
15906 # Prefs starting with "zoom."
15907 #---------------------------------------------------------------------------
15909 - name: zoom.maxPercent
15918 - name: zoom.minPercent
15927 #---------------------------------------------------------------------------
15929 #---------------------------------------------------------------------------