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, or `String`. Note that float prefs are stored internally
46 # as strings. The C++ preprocessor doesn't like template syntax in a macro
47 # argument, so use the typedefs defined in StaticPrefsBase.h; for example,
48 # use `RelaxedAtomicBool` instead of `Atomic<bool, Relaxed>`.
50 # - `value` is the default value. Its type should be appropriate for
51 # <cpp-type>, otherwise the generated code will fail to compile. A complex
52 # C++ numeric expressions like `60 * 60` (which the YAML parser cannot treat
53 # as an integer or float) is treated as a string and passed through without
54 # change, which is useful.
56 # - `mirror` indicates how the pref value is mirrored into a C++ variable.
58 # * `never`: There is no C++ mirror variable. The pref value can only be
59 # accessed via the standard libpref API functions.
61 # * `once`: The pref value is mirrored into a variable at startup; the
62 # mirror variable is left unchanged after that. (The exact point at which
63 # all `once` mirror variables are set is when the first `once` mirror
64 # variable is accessed, via its getter function.) This is mostly useful for
65 # graphics prefs where we often don't want a new pref value to apply until
66 # restart. Otherwise, this update policy is best avoided because its
67 # behaviour can cause confusion and bugs.
69 # * `always`: The mirror variable is always kept in sync with the pref value.
70 # This is the most common choice.
72 # When a mirror variable is present, a getter will be created that can access
73 # it. Using the getter function to read the pref's value has the two
74 # following advantages over the normal API functions.
76 # * A direct variable access is faster than a hash table lookup.
78 # * A mirror variable can be accessed off the main thread. If a pref *is*
79 # accessed off the main thread, it should have an atomic type. Assertions
82 # Note that Rust code must access the mirror variable directly, rather than
83 # via the getter function.
85 # - `do_not_use_directly` indicates if `_DoNotUseDirectly` should be appended to
86 # the name of the getter function. This is simply a naming convention
87 # indicating that there is some other wrapper getter function that should be
88 # used in preference to the normal static pref getter. Defaults to `false` if
89 # not present. Cannot be used with a `never` mirror value, because there is
90 # no getter function in that case.
92 # - `include` names a header file that must be included for the pref value to
93 # compile correctly, e.g. because it refers to a code constant. System
94 # headers should be surrounded with angle brackets, e.g. `<cmath>`.
96 # - `rust` indicates if the mirror variable is used by Rust code. If so, it
97 # will be usable via the `static_prefs::pref!` macro, e.g.
98 # `static_prefs::pref!("layout.css.font-display.enabled")`.
100 # The getter function's base name is the same as the pref's name, but with
101 # '.' or '-' chars converted to '_', to make a valid identifier. For example,
102 # the getter for `foo.bar_baz` is `foo_bar_baz()`. This is ugly but clear,
103 # and you can search for both the pref name and the getter using the regexp
104 # /foo.bar.baz/. Suffixes are added as follows:
106 # - If the `mirror` value is `once`, `_AtStartup` is appended, to indicate the
107 # value was obtained at startup.
109 # - If the `do_not_use_directly` value is true, `_DoNotUseDirectly` is
114 # Note finally that this file is preprocessed by preprocessor.py, not the C++
115 # preprocessor. As a result, the following things may be surprising.
117 # - YAML comments start with a '#', so putting a comment on the same line as a
118 # preprocessor directive is dubious. E.g. avoid lines like `#define X 3 #
119 # three` because the ` # three` will be part of `X`.
121 # - '@' use is required for substitutions to occur. E.g. with `#define FOO 1`,
122 # `FOO` won't be replaced with `1` unless it has '@' chars around it.
124 # - Spaces aren't permitted between the leading '#' and the name of a
125 # directive, e.g. `#ifdef XYZ` works but `# ifdef XYZ` does not.
127 # Please indent all prefs defined within #ifdef/#ifndef conditions. This
128 # improves readability, particular for conditional blocks that exceed a single
129 # screen. But note that the leading '-' in a definition must remain in the
130 # first column for it to be valid YAML.
132 #ifdef RELEASE_OR_BETA
133 #define IS_NOT_RELEASE_OR_BETA false
135 #define IS_NOT_RELEASE_OR_BETA true
139 #define IS_NIGHTLY_BUILD true
140 #define IS_NOT_NIGHTLY_BUILD false
142 #define IS_NIGHTLY_BUILD false
143 #define IS_NOT_NIGHTLY_BUILD true
146 #if defined(NIGHTLY_BUILD) || defined(MOZ_DEV_EDITION)
147 #define IS_NIGHTLY_OR_DEV_EDITION true
149 #define IS_NIGHTLY_OR_DEV_EDITION false
152 #ifdef MOZILLA_OFFICIAL
153 #define IS_NOT_MOZILLA_OFFICIAL false
155 #define IS_NOT_MOZILLA_OFFICIAL true
158 #ifdef EARLY_BETA_OR_EARLIER
159 #define IS_EARLY_BETA_OR_EARLIER true
160 #define IS_NOT_EARLY_BETA_OR_EARLIER false
162 #define IS_EARLY_BETA_OR_EARLIER false
163 #define IS_NOT_EARLY_BETA_OR_EARLIER true
167 #define IS_ANDROID true
168 #define IS_NOT_ANDROID false
170 #define IS_ANDROID false
171 #define IS_NOT_ANDROID true
174 #---------------------------------------------------------------------------
175 # Prefs starting with "accessibility."
176 #---------------------------------------------------------------------------
178 - name: accessibility.accesskeycausesactivation
183 - name: accessibility.monoaudio.enable
184 type: RelaxedAtomicBool
188 - name: accessibility.browsewithcaret
189 type: RelaxedAtomicBool
193 - name: accessibility.AOM.enabled
198 - name: accessibility.ARIAReflection.enabled
203 # Whether form controls and images should be focusable with mouse, in content
206 # This matches historical macOS / Safari behavior.
210 # * 2: on content documents
211 - name: accessibility.mouse_focuses_formcontrol
220 # Whether to cache the entire accessibility trees of all content processes in
221 # the parent process.
222 - name: accessibility.cache.enabled
227 #---------------------------------------------------------------------------
228 # Prefs starting with "alerts."
229 #---------------------------------------------------------------------------
231 # Whether to use platform-specific backends for showing desktop notifications.
232 # If no such backend is available, or if the pref is false, then XUL
233 # notifications are used.
234 - name: alerts.useSystemBackend
237 # Linux and macOS turn on system level notification as default, but Windows is
238 # disabled due to instability (dependencies of bug 1497425).
247 #---------------------------------------------------------------------------
248 # Prefs starting with "android."
249 #---------------------------------------------------------------------------
251 # On Android, we want an opaque background to be visible under the page,
252 # so layout should not force a default background.
253 - name: android.widget_paints_background
254 type: RelaxedAtomicBool
258 - name: android.touch_resampling.enabled
259 type: RelaxedAtomicBool
265 #---------------------------------------------------------------------------
266 # Prefs starting with "apz."
267 # The apz prefs are explained in AsyncPanZoomController.cpp
268 #---------------------------------------------------------------------------
270 # amount we zoom in for a double tap gesture if we couldn't find any content
271 # based rect to zoom to
272 - name: apz.doubletapzoom.defaultzoomin
277 - name: apz.scrollbarbuttonrepeat.enabled
278 type: RelaxedAtomicBool
282 - name: apz.wr.activate_all_scroll_frames
283 type: RelaxedAtomicBool
287 - name: apz.wr.activate_all_scroll_frames_when_fission
288 type: RelaxedAtomicBool
292 - name: apz.prefer_jank_minimal_displayports
293 type: RelaxedAtomicBool
297 - name: apz.allow_double_tap_zooming
298 type: RelaxedAtomicBool
302 - name: apz.mac.enable_double_tap_zoom_touchpad_gesture
303 type: RelaxedAtomicBool
307 - name: apz.allow_immediate_handoff
308 type: RelaxedAtomicBool
312 - name: apz.allow_zooming
313 type: RelaxedAtomicBool
317 - name: apz.allow_zooming_out
318 type: RelaxedAtomicBool
322 - name: apz.android.chrome_fling_physics.friction
327 - name: apz.android.chrome_fling_physics.inflexion
332 - name: apz.android.chrome_fling_physics.stop_threshold
337 - name: apz.autoscroll.enabled
338 type: RelaxedAtomicBool
342 - name: apz.axis_lock.breakout_angle
344 value: float(M_PI / 8.0) # 22.5 degrees
348 - name: apz.axis_lock.breakout_threshold
353 - name: apz.axis_lock.direct_pan_angle
355 value: float(M_PI / 3.0) # 60 degrees
359 - name: apz.axis_lock.lock_angle
361 value: float(M_PI / 6.0) # 30 degrees
365 # Whether to lock touch scrolling to one axis at a time.
366 # 0 = FREE (No locking at all)
367 # 1 = STANDARD (Once locked, remain locked until scrolling ends)
368 # 2 = STICKY (Allow lock to be broken, with hysteresis)
369 - name: apz.axis_lock.mode
370 type: RelaxedAtomicInt32
374 - name: apz.content_response_timeout
375 type: RelaxedAtomicInt32
379 - name: apz.danger_zone_x
380 type: RelaxedAtomicInt32
384 - name: apz.danger_zone_y
385 type: RelaxedAtomicInt32
389 - name: apz.disable_for_scroll_linked_effects
390 type: RelaxedAtomicBool
394 - name: apz.displayport_expiry_ms
395 type: RelaxedAtomicUint32
399 - name: apz.drag.enabled
400 type: RelaxedAtomicBool
404 - name: apz.drag.initial.enabled
405 type: RelaxedAtomicBool
409 - name: apz.drag.touch.enabled
410 type: RelaxedAtomicBool
414 - name: apz.enlarge_displayport_when_clipped
415 type: RelaxedAtomicBool
420 - name: apz.fixed-margin-override.enabled
421 type: RelaxedAtomicBool
426 - name: apz.fixed-margin-override.bottom
427 type: RelaxedAtomicInt32
432 - name: apz.fixed-margin-override.top
433 type: RelaxedAtomicInt32
437 - name: apz.fling_accel_base_mult
442 - name: apz.fling_accel_supplemental_mult
447 - name: apz.fling_accel_min_fling_velocity
452 - name: apz.fling_accel_min_pan_velocity
457 - name: apz.fling_accel_max_pause_interval_ms
458 type: RelaxedAtomicInt32
462 - name: apz.fling_curve_function_x1
467 - name: apz.fling_curve_function_x2
472 - name: apz.fling_curve_function_y1
477 - name: apz.fling_curve_function_y2
482 - name: apz.fling_curve_threshold_inches_per_ms
487 - name: apz.fling_friction
492 - name: apz.fling_min_velocity_threshold
497 - name: apz.fling_stop_on_tap_threshold
502 - name: apz.fling_stopped_threshold
507 - name: apz.touch_acceleration_factor_x
512 - name: apz.touch_acceleration_factor_y
517 # new scrollbar code for desktop zooming
518 - name: apz.force_disable_desktop_zooming_scrollbars
519 type: RelaxedAtomicBool
523 #ifdef MOZ_WIDGET_GTK
524 - name: apz.gtk.kinetic_scroll.enabled
525 type: RelaxedAtomicBool
529 # Mode to use when receiving kinetic scroll input.
531 # * 0: Auto mode (uses the default behavior, subject to change).
532 # * 1: Page mode: Uses gtk deltas as a percentage of the page size to scroll. This mode matches:
534 # https://gitlab.gnome.org/GNOME/gtk/blob/c734c7e9188b56f56c3a504abee05fa40c5475ac/gtk/gtkrange.c#L3063-3074
536 # * 2: Pixel mode: Uses gtk deltas as a fixed pixel multiplier. This mode matches e.g. GNOME web.
538 # https://webkit-search.igalia.com/webkit/rev/215039ef09d6bfd6e088175bfe30788d95b9705d/Source/WebKit/Shared/gtk/WebEventFactory.cpp#265-296
539 # (multiplied then by pixelsPerLineStep which in GNOME-web is 40).
540 - name: apz.gtk.kinetic_scroll.delta_mode
545 - name: apz.gtk.kinetic_scroll.page_delta_mode_multiplier
550 - name: apz.gtk.kinetic_scroll.pixel_delta_mode_multiplier
555 - name: apz.gtk.touchpad_pinch.enabled
556 type: RelaxedAtomicBool
560 - name: apz.gtk.touchpad_pinch.three_fingers.enabled
561 type: RelaxedAtomicBool
566 - name: apz.keyboard.enabled
568 value: @IS_NOT_ANDROID@
571 - name: apz.keyboard.passive-listeners
572 type: RelaxedAtomicBool
573 value: @IS_NOT_ANDROID@
576 - name: apz.max_tap_time
577 type: RelaxedAtomicInt32
581 - name: apz.max_velocity_inches_per_ms
586 - name: apz.max_velocity_queue_size
591 - name: apz.min_skate_speed
596 - name: apz.minimap.enabled
597 type: RelaxedAtomicBool
601 - name: apz.mvm.force-enabled
602 type: RelaxedAtomicBool
606 - name: apz.one_touch_pinch.enabled
607 type: RelaxedAtomicBool
611 - name: apz.overscroll.enabled
612 type: RelaxedAtomicBool
613 #if defined(XP_MACOSX)
620 # The "test async scroll offset" (used via reftest-async-scroll
621 # or nsIDOMWindowUtils.setAsyncScrollOffset()) can be used to
622 # trigger overscroll. Used for tests only.
623 - name: apz.overscroll.test_async_scroll_offset.enabled
624 type: RelaxedAtomicBool
628 - name: apz.overscroll.min_pan_distance_ratio
633 - name: apz.overscroll.stop_distance_threshold
638 - name: apz.overscroll.spring_stiffness
643 - name: apz.overscroll.damping
648 - name: apz.overscroll.max_velocity
653 - name: apz.paint_skipping.enabled
654 type: RelaxedAtomicBool
658 # Fetch displayport updates early from the message queue.
659 - name: apz.pinch_lock.mode
660 type: RelaxedAtomicInt32
664 - name: apz.pinch_lock.scroll_lock_threshold
666 value: 1.0f / 32.0f # 1/32 inches
669 - name: apz.pinch_lock.span_breakout_threshold
671 value: 1.0f / 32.0f # 1/32 inches
674 - name: apz.pinch_lock.span_lock_threshold
676 value: 1.0f / 32.0f # 1/32 inches
679 - name: apz.pinch_lock.buffer_max_age
681 value: 50 # milliseconds
684 - name: apz.popups.enabled
685 type: RelaxedAtomicBool
689 # Whether to print the APZC tree for debugging.
690 - name: apz.printtree
691 type: RelaxedAtomicBool
695 - name: apz.record_checkerboarding
696 type: RelaxedAtomicBool
697 value: @IS_NIGHTLY_BUILD@
700 - name: apz.second_tap_tolerance
705 - name: apz.test.fails_with_native_injection
706 type: RelaxedAtomicBool
710 - name: apz.test.logging_enabled
711 type: RelaxedAtomicBool
715 - name: apz.touch_move_tolerance
720 - name: apz.touch_start_tolerance
725 - name: apz.velocity_bias
730 - name: apz.velocity_relevance_time_ms
731 type: RelaxedAtomicUint32
735 - name: apz.windows.force_disable_direct_manipulation
736 type: RelaxedAtomicBool
740 - name: apz.windows.use_direct_manipulation
741 type: RelaxedAtomicBool
745 - name: apz.windows.check_for_pan_gesture_conversion
746 type: RelaxedAtomicBool
750 - name: apz.x_skate_highmem_adjust
755 - name: apz.x_skate_size_multiplier
760 - name: apz.x_stationary_size_multiplier
765 - name: apz.y_skate_highmem_adjust
770 - name: apz.y_skate_size_multiplier
772 #if defined(MOZ_WIDGET_ANDROID)
779 - name: apz.y_stationary_size_multiplier
781 #if defined(MOZ_WIDGET_ANDROID)
788 - name: apz.zoom_animation_duration_ms
789 type: RelaxedAtomicInt32
790 #if defined(MOZ_WIDGET_ANDROID)
797 - name: apz.scale_repaint_delay_ms
798 type: RelaxedAtomicInt32
802 #---------------------------------------------------------------------------
803 # Prefs starting with "beacon."
804 #---------------------------------------------------------------------------
806 # Is support for Navigator.sendBeacon enabled?
807 - name: beacon.enabled
812 #---------------------------------------------------------------------------
813 # Prefs starting with "bidi."
814 #---------------------------------------------------------------------------
816 # Whether delete and backspace should immediately delete characters not
817 # visually adjacent to the caret, or adjust the visual position of the caret
818 # on the first keypress and delete the character on a second keypress
819 - name: bidi.edit.delete_immediately
824 # Bidi caret movement style:
827 # 2 = visual, but logical during selection
828 - name: bidi.edit.caret_movement_style
830 #if !defined(XP_LINUX) && defined(NIGHTLY_BUILD)
833 value: 2 # See Bug 1638240
837 #---------------------------------------------------------------------------
838 # Prefs starting with "browser."
839 #---------------------------------------------------------------------------
841 - name: browser.active_color
846 - name: browser.active_color.dark
851 - name: browser.anchor_color
856 # If you change this, you probably also want to change
857 # nsXPLookAndFeel::GenericDarkColor for MozNativehyperlinktext.
858 - name: browser.anchor_color.dark
863 # See http://dev.w3.org/html5/spec/forms.html#attr-fe-autofocus
864 - name: browser.autofocus
869 - name: browser.cache.offline.enable
871 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
874 - name: browser.cache.disk.enable
875 type: RelaxedAtomicBool
879 - name: browser.cache.memory.enable
880 type: RelaxedAtomicBool
884 # Limit of recent metadata we keep in memory for faster access, in KB.
885 - name: browser.cache.disk.metadata_memory_limit
886 type: RelaxedAtomicUint32
890 # Does the user want smart-sizing?
891 - name: browser.cache.disk.smart_size.enabled
892 type: RelaxedAtomicBool
896 # Disk cache capacity in kilobytes. It's used only when
897 # browser.cache.disk.smart_size.enabled == false
898 - name: browser.cache.disk.capacity
899 type: RelaxedAtomicUint32
903 # -1 = determine dynamically, 0 = none, n = memory capacity in kilobytes.
904 - name: browser.cache.memory.capacity
905 type: RelaxedAtomicInt32
909 # When smartsizing is disabled we could potentially fill all disk space by
910 # cache data when the disk capacity is not set correctly. To avoid that we
911 # check the free space every time we write some data to the cache. The free
912 # space is checked against two limits. Once the soft limit is reached we start
913 # evicting the least useful entries, when we reach the hard limit writing to
915 - name: browser.cache.disk.free_space_soft_limit
916 type: RelaxedAtomicUint32
917 value: 5 * 1024 # 5MB
920 - name: browser.cache.disk.free_space_hard_limit
921 type: RelaxedAtomicUint32
925 # The number of chunks we preload ahead of read. One chunk currently has
927 - name: browser.cache.disk.preload_chunk_count
928 type: RelaxedAtomicUint32
929 value: 4 # 1 MB of read ahead
932 # Max-size (in KB) for entries in disk cache. Set to -1 for no limit.
933 # (Note: entries bigger than 1/8 of disk-cache are never cached)
934 - name: browser.cache.disk.max_entry_size
935 type: RelaxedAtomicUint32
936 value: 50 * 1024 # 50 MB
939 # Max-size (in KB) for entries in memory cache. Set to -1 for no limit.
940 # (Note: entries bigger than than 90% of the mem-cache are never cached.)
941 - name: browser.cache.memory.max_entry_size
942 type: RelaxedAtomicInt32
946 # Memory limit (in kB) for new cache data not yet written to disk. Writes to
947 # the cache are buffered and written to disk on background with low priority.
948 # With a slow persistent storage these buffers may grow when data is coming
949 # fast from the network. When the amount of unwritten data is exceeded, new
950 # writes will simply fail. We have two buckets, one for important data
951 # (priority) like html, css, fonts and js, and one for other data like images,
953 # Note: 0 means no limit.
954 - name: browser.cache.disk.max_chunks_memory_usage
955 type: RelaxedAtomicUint32
958 - name: browser.cache.disk.max_priority_chunks_memory_usage
959 type: RelaxedAtomicUint32
963 # Number of seconds the cache spends writing pending data and closing files
964 # after shutdown has been signalled. Past that time data is not written and
965 # files are left open for the OS to clean up.
966 - name: browser.cache.max_shutdown_io_lag
967 type: RelaxedAtomicUint32
971 # A percentage limit for media content type in the disk cache. When some entries
972 # need to be evicted and media is over the limit, it's evicted first.
973 - name: browser.cache.disk.content_type_media_limit
974 type: RelaxedAtomicInt32
978 # How often to validate document in cache
979 # 0 = once-per-session,
982 # 3 = when-appropriate/automatically
983 - name: browser.cache.check_doc_frequency
984 type: RelaxedAtomicUint32
988 - name: browser.contentblocking.database.enabled
993 # How many recent block/unblock actions per origins we remember in the
994 # Content Blocking log for each top-level window.
995 - name: browser.contentblocking.originlog.length
1000 - name: browser.display.background_color
1005 - name: browser.display.background_color.dark
1010 # This preference is a bit confusing because we use the opposite
1011 # string value in the colors dialog to indicate to users how FF HCM
1013 # With resect to document colors, these values mean:
1014 # 0 = "default" = always, except in high contrast mode
1018 # On windows, we set this to 0, which means FF HCM will mirror OS HCM.
1019 # Everywhere else, we set this to 1, disabling FF HCM.
1020 - name: browser.display.document_color_use
1021 type: RelaxedAtomicUint32
1033 - name: browser.display.windows.non_native_menus
1034 type: RelaxedAtomicUint32
1039 # This pref dictates whether or not backplates and background images
1040 # are to be drawn, when in high-contrast mode:
1041 # false: do not draw backplates or render background images
1042 # true: render background images and draw backplates
1043 # This condition is only considered when high-contrast mode is enabled
1044 # in Firefox, ie. when the user has:
1045 # (1) mUseAccessibilityMode set to true (Widows high-contrast mode is on)
1046 # AND browser.display.document_color_use set to 0
1047 # (only with high-contrast themes) OR
1048 # (2) browser.display.document_color_use set to 2 (always)
1049 - name: browser.display.permit_backplate
1050 type: RelaxedAtomicBool
1055 # Whether we should suppress the background-image of the canvas (the root
1056 # frame) if we're in forced colors mode.
1058 # This is important because some sites use background-image with a plain color
1059 # and it causes undesirable results in high-contrast mode.
1061 # See bug 1614921 for example.
1062 - name: browser.display.suppress_canvas_background_image_on_forced_colors
1067 - name: browser.display.focus_ring_on_anything
1072 - name: browser.display.focus_ring_width
1077 - name: browser.display.focus_background_color
1082 # Focus ring border style.
1083 # 0 = solid border, 1 = dotted border
1084 - name: browser.display.focus_ring_style
1089 - name: browser.display.focus_text_color
1094 - name: browser.display.foreground_color
1099 - name: browser.display.foreground_color.dark
1104 # Whether focus rings are always shown by default.
1106 # This is the initial value of nsWindowRoot::mShowFocusRings, but it can be
1107 # overridden by system preferences.
1108 - name: browser.display.show_focus_rings
1113 # Whether we should always enable focus rings after focus was moved by keyboard.
1115 # This behavior matches both historical and GTK / Windows focus behavior.
1117 # :focus-visible is intended to provide better heuristics than this.
1118 - name: browser.display.always_show_rings_after_key_focus
1123 # In theory: 0 = never, 1 = quick, 2 = always, though we always just use it as
1125 - name: browser.display.use_document_fonts
1126 type: RelaxedAtomicInt32
1131 - name: browser.display.use_focus_colors
1136 - name: browser.display.use_system_colors
1137 type: RelaxedAtomicBool
1145 - name: browser.dom.window.dump.enabled
1146 type: RelaxedAtomicBool
1147 value: @IS_NOT_MOZILLA_OFFICIAL@
1151 - name: browser.download.improvements_to_download_panel
1157 - name: browser.download.always_ask_before_handling_new_types
1163 - name: browser.download.enable_spam_prevention
1168 - name: browser.download.sanitize_non_media_extensions
1173 # Image document's automatic image sizing.
1174 - name: browser.enable_automatic_image_resizing
1179 # Image document's click-to-resize.
1180 - name: browser.enable_click_image_resizing
1182 value: @IS_NOT_ANDROID@
1185 - name: browser.find.ignore_ruby_annotations
1190 #if defined(XP_MACOSX)
1191 # Whether pressing Esc will exit fullscreen.
1192 - name: browser.fullscreen.exit_on_escape
1198 # The max url length we'll store in history.
1200 # The default value is mostly a guess based on various facts:
1202 # * IE didn't support urls longer than 2083 chars
1203 # * Sitemaps protocol used to support a maximum of 2048 chars
1204 # * Various SEO guides suggest to not go over 2000 chars
1205 # * Various apps/services are known to have issues over 2000 chars
1206 # * RFC 2616 - HTTP/1.1 suggests being cautious about depending
1207 # on URI lengths above 255 bytes
1209 - name: browser.history.maxUrlLength
1214 # Max size of push/replaceState data parameter
1215 - name: browser.history.maxStateObjectSize
1220 # True to collect wireframes upon navigations / pushState
1221 - name: browser.history.collectWireframes
1226 # The minimum area for a rect to be included in a wireframe, in CSS pixels.
1228 # The current value of 50 is pretty arbitrary, and will be tuned as we refine
1229 # and test the wireframing capability.
1230 - name: browser.history.wireframeAreaThreshold
1235 #if defined(XP_WIN) || defined(XP_LINUX)
1236 # Notify TabUnloader or send the memory pressure if the memory resource
1237 # notification is signaled AND the available commit space is lower than
1239 - name: browser.low_commit_space_threshold_mb
1240 type: RelaxedAtomicUint32
1246 # On Linux we also check available memory in comparison to total memory,
1247 # and use this percent value (out of 100) to determine if we are in a
1248 # low memory scenario.
1249 - name: browser.low_commit_space_threshold_percent
1250 type: RelaxedAtomicUint32
1255 # Render animations and videos as a solid color
1256 - name: browser.measurement.render_anims_and_video_solid
1257 type: RelaxedAtomicBool
1261 - name: browser.navigation.requireUserInteraction
1266 # Indicates if about:newtab shows content (enabled) or just blank.
1267 - name: browser.newtabpage.enabled
1272 # Open PDFs in Edge with the --app flag if it is the default.
1273 - name: browser.pdf.launchDefaultEdgeAsApp
1278 # Maximium delay between keystrokes that will be considered typing (milliseconds).
1279 - name: browser.places.interactions.typing_timeout_ms
1280 type: RelaxedAtomicUint32
1284 # Maximum delay between scroll input events that will be considered a scrolling interaction (milliseconds).
1285 - name: browser.places.interactions.scrolling_timeout_ms
1286 type: RelaxedAtomicUint32
1290 # Force usage of in-memory (rather than file on disk) media cache for video streaming when private browsing
1291 - name: browser.privatebrowsing.forceMediaMemoryCache
1296 # Communicates the toolbar color to platform (for e.g., prefers-color-scheme).
1298 # Returns whether the toolbar is dark (0), light (1), or system (2).
1300 # Default to "light" on macOS / Windows, and "system" elsewhere. The theming
1301 # code sets it appropriately.
1302 - name: browser.theme.toolbar-theme
1303 type: RelaxedAtomicUint32
1304 #if defined(XP_WIN) || defined(XP_MACOSX)
1311 # Communicates the preferred content theme color to platform (for e.g.,
1312 # prefers-color-scheme).
1314 # dark (0), light (1), system (2), or toolbar (3).
1316 # Default to "toolbar", the theming code sets it appropriately.
1317 - name: browser.theme.content-theme
1318 type: RelaxedAtomicUint32
1323 # Blocked plugin content
1324 - name: browser.safebrowsing.blockedURIs.enabled
1329 # Malware protection
1330 - name: browser.safebrowsing.malware.enabled
1335 # Password protection
1336 - name: browser.safebrowsing.passwords.enabled
1341 # Phishing protection
1342 - name: browser.safebrowsing.phishing.enabled
1347 # Maximum size for an array to store the safebrowsing prefixset.
1348 - name: browser.safebrowsing.prefixset_max_array_size
1349 type: RelaxedAtomicUint32
1353 # SessionStore prefs
1354 # Maximum number of bytes of DOMSessionStorage data we collect per origin.
1355 - name: browser.sessionstore.dom_storage_limit
1360 # Maximum number of characters of form field data per field we collect.
1361 - name: browser.sessionstore.dom_form_limit
1366 # Maximum number of characters of form data we collect per origin.
1367 - name: browser.sessionstore.dom_form_max_limit
1372 # Minimal interval between two save operations in milliseconds (while the user is active).
1373 - name: browser.sessionstore.interval
1374 type: RelaxedAtomicUint32
1378 # Causes SessionStore to ignore non-final update messages from
1379 # browser tabs that were not caused by a flush from the parent.
1380 # This is a testing flag and should not be used by end-users.
1381 - name: browser.sessionstore.debug.no_auto_updates
1382 type: RelaxedAtomicBool
1386 # Whether we should draw the tabs on top of the titlebar.
1388 # no (0), yes (1), or default (2), which is true everywhere except Linux.
1389 - name: browser.tabs.inTitlebar
1394 # If set, use DocumentChannel to directly initiate loads entirely
1395 # from parent-process BrowsingContexts
1396 - name: browser.tabs.documentchannel.parent-controlled
1401 # Testing-only pref which makes data: URIs be loaded in a "web" content process
1402 # instead of within a process based on the URI's loader.
1403 - name: browser.tabs.remote.dataUriInDefaultWebProcess
1408 # Testing-only pref to force system-triggered about:blank loads to not change
1409 # content processes. This is used for performance tests which load an
1410 # about:blank document between navigations for historical reasons to avoid
1411 # unnecessary process switches.
1412 - name: browser.tabs.remote.systemTriggeredAboutBlankAnywhere
1417 # Testing-only pref to cause PBrowser creation for a specific BrowsingContext to
1418 # fail, to test the errored codepath.
1419 - name: browser.tabs.remote.testOnly.failPBrowserCreation.enabled
1424 - name: browser.tabs.remote.desktopbehavior
1429 - name: browser.tabs.remote.force-paint
1434 # When this pref is enabled document loads with a mismatched
1435 # Cross-Origin-Embedder-Policy header will fail to load
1436 - name: browser.tabs.remote.useCrossOriginEmbedderPolicy
1437 type: RelaxedAtomicBool
1441 # When this pref is enabled top level loads with a mismatched
1442 # Cross-Origin-Opener-Policy header will be loaded in a separate process.
1443 - name: browser.tabs.remote.useCrossOriginOpenerPolicy
1444 type: RelaxedAtomicBool
1448 # When this pref is enabled then we use a separate content process for
1449 # top-level load of file:// URIs
1450 - name: browser.tabs.remote.separateFileUriProcess
1451 type: RelaxedAtomicBool
1452 #if !defined(ANDROID)
1459 # Pref to control whether we use a separate privileged content process
1460 # for certain mozilla webpages (which are listed in the pref
1461 # browser.tabs.remote.separatedMozillaDomains).
1462 - name: browser.tabs.remote.separatePrivilegedMozillaWebContentProcess
1467 # Whether or not process selection for subframes will prefer re-using an
1468 # existing content process over creating a new one. Enabling this pref should
1469 # reduce the number of processes allocated for non-first-party domains if
1470 # dom.ipc.processCount.webIsolated > 1.
1471 - name: browser.tabs.remote.subframesPreferUsed
1476 # When this pref is enabled, opaque response is only allowed to enter the
1477 # content process if it's a response for media (audio, image, video), CSS, or
1479 - name: browser.opaqueResponseBlocking
1480 type: RelaxedAtomicBool
1481 value: @IS_NIGHTLY_BUILD@
1484 # When true, zooming will be enabled on all sites, even ones that declare
1486 - name: browser.ui.zoom.force-user-scalable
1487 type: RelaxedAtomicBool
1491 - name: browser.underline_anchors
1496 - name: browser.viewport.desktopWidth
1497 type: RelaxedAtomicInt32
1501 - name: browser.visited_color
1506 # If you change this, you probably also want to change
1507 # nsXPLookAndFeel::GenericDarkColor for MozNativevisitedhyperlinktext.
1508 - name: browser.visited_color.dark
1513 # When true, soft reloads (including location.reload())
1514 # will only froce validate the top level document, subresources will
1515 # be loaded normally as-if users normally navigated to the page.
1516 - name: browser.soft_reload.only_force_validate_top_level_document
1521 #---------------------------------------------------------------------------
1522 # Prefs starting with "canvas."
1523 #---------------------------------------------------------------------------
1525 # Limit for the canvas image cache. 0 means unlimited.
1526 - name: canvas.image.cache.limit
1531 # Add support for canvas path objects
1532 - name: canvas.path.enabled
1533 type: RelaxedAtomicBool
1537 - name: canvas.capturestream.enabled
1542 # Is support for CanvasRenderingContext2D.filter enabled?
1543 - name: canvas.filters.enabled
1548 # Provide ability to turn on support for canvas focus rings.
1549 - name: canvas.focusring.enabled
1554 # Is support for CanvasRenderingContext2D's hitRegion APIs enabled?
1555 - name: canvas.hitregions.enabled
1560 # Is support for CanvasRenderingContext2D's createConicGradient API enabled?
1561 - name: canvas.createConicGradient.enabled
1562 type: RelaxedAtomicBool
1566 #---------------------------------------------------------------------------
1567 # Prefs starting with "channelclassifier."
1568 #---------------------------------------------------------------------------
1570 - name: channelclassifier.allowlist_example
1575 #---------------------------------------------------------------------------
1576 # Prefs starting with "clipboard."
1577 #---------------------------------------------------------------------------
1579 # Clipboard behavior.
1580 - name: clipboard.autocopy
1582 #if !defined(ANDROID) && !defined(XP_MACOSX) && defined(XP_UNIX)
1590 # allow to copy clipboard data to Clipboard History/Cloud
1591 # (used on sensitive data in about:logins and Private Browsing)
1592 - name: clipboard.copyPrivateDataToClipboardCloudOrHistory
1598 #---------------------------------------------------------------------------
1599 # Prefs starting with "consoleservice."
1600 #---------------------------------------------------------------------------
1602 #if defined(ANDROID)
1603 # Disable sending console to logcat on release builds.
1604 - name: consoleservice.logcat
1605 type: RelaxedAtomicBool
1606 value: @IS_NOT_RELEASE_OR_BETA@
1610 #---------------------------------------------------------------------------
1611 # Prefs starting with "content."
1612 #---------------------------------------------------------------------------
1614 - name: content.cors.disable
1619 # Back off timer notification after count.
1621 - name: content.notify.backoffcount
1626 # Notification interval in microseconds.
1627 # The notification interval has a dramatic effect on how long it takes to
1628 # initially display content for slow connections. The current value
1629 # provides good incremental display of content without causing an increase
1630 # in page load time. If this value is set below 1/10 of a second it starts
1631 # to impact page load performance.
1632 # See bugzilla bug 72138 for more info.
1633 - name: content.notify.interval
1638 # Do we notify based on time?
1639 - name: content.notify.ontimer
1644 # How many times to deflect in interactive mode.
1645 - name: content.sink.interactive_deflect_count
1650 # How many times to deflect in perf mode.
1651 - name: content.sink.perf_deflect_count
1656 # Parse mode for handling pending events.
1657 # 0 = don't check for pending events
1658 # 1 = don't deflect if there are pending events
1659 # 2 = bail if there are pending events
1660 - name: content.sink.pending_event_mode
1669 # How often to probe for pending events. 1 = every token.
1670 - name: content.sink.event_probe_rate
1675 # How long to stay off the event loop in interactive mode (microseconds).
1676 - name: content.sink.interactive_parse_time
1681 # How long to stay off the event loop in perf mode.
1682 - name: content.sink.perf_parse_time
1687 # How long to be in interactive mode after an event.
1688 - name: content.sink.interactive_time
1693 # How long to stay in perf mode after initial loading.
1694 - name: content.sink.initial_perf_time
1699 # Should we switch between perf-mode and interactive-mode?
1701 # 1 = Interactive mode
1703 - name: content.sink.enable_perf_mode
1708 #---------------------------------------------------------------------------
1709 # Prefs starting with "converter."
1710 #---------------------------------------------------------------------------
1712 # Whether we include ruby annotation in the text despite whether it
1713 # is requested. This was true because we didn't explicitly strip out
1714 # annotations. Set false by default to provide a better behavior, but
1715 # we want to be able to pref-off it if user doesn't like it.
1716 - name: converter.html2txt.always_include_ruby
1721 #---------------------------------------------------------------------------
1722 # Prefs starting with "datareporting."
1723 #---------------------------------------------------------------------------
1725 - name: datareporting.healthreport.uploadEnabled
1726 type: RelaxedAtomicBool
1731 #---------------------------------------------------------------------------
1732 # Prefs starting with "device."
1733 #---------------------------------------------------------------------------
1735 # Is support for the device sensors API enabled?
1736 - name: device.sensors.enabled
1741 # KaiOS-only, see https://bugzilla.mozilla.org/show_bug.cgi?id=1699707#c10
1742 - name: device.sensors.ambientLight.enabled
1747 - name: device.sensors.motion.enabled
1752 - name: device.sensors.orientation.enabled
1757 # KaiOS-only, see https://bugzilla.mozilla.org/show_bug.cgi?id=1699707#c10
1758 - name: device.sensors.proximity.enabled
1763 - name: device.sensors.test.events
1768 #---------------------------------------------------------------------------
1769 # Prefs starting with "devtools."
1770 #---------------------------------------------------------------------------
1772 - name: devtools.console.stdout.chrome
1773 type: RelaxedAtomicBool
1774 value: @IS_NOT_MOZILLA_OFFICIAL@
1777 - name: devtools.console.stdout.content
1778 type: RelaxedAtomicBool
1782 - name: devtools.toolbox.force-chrome-prefs
1783 type: RelaxedAtomicBool
1787 #---------------------------------------------------------------------------
1788 # Prefs starting with "docshell."
1789 #---------------------------------------------------------------------------
1791 # Used to indicate whether session history listeners should be notified
1792 # about content viewer eviction. Used only for testing.
1793 - name: docshell.shistory.testing.bfevict
1798 # If true, pages with an opener won't be bfcached.
1799 - name: docshell.shistory.bfcache.require_no_opener
1804 # If true, page with beforeunload or unload event listeners can be bfcached.
1805 - name: docshell.shistory.bfcache.allow_unload_listeners
1810 # If true, page with beforeunload event listeners can be bfcached.
1811 # This only works when sessionHistoryInParent is enabled.
1812 - name: docshell.shistory.bfcache.ship_allow_beforeunload_listeners
1814 value: @IS_NIGHTLY_BUILD@
1817 #---------------------------------------------------------------------------
1818 # Prefs starting with "dom."
1819 #---------------------------------------------------------------------------
1821 # Whether window.mozPaintCount is exposed to the web.
1822 - name: dom.mozPaintCount.enabled
1828 - name: dom.allow_cut_copy
1833 - name: dom.allow_XUL_XBL_for_file
1838 # Checks if offscreen animation throttling is enabled.
1839 - name: dom.animations.offscreen-throttling
1844 # Is support for automatically removing replaced filling animations enabled?
1845 - name: dom.animations-api.autoremove.enabled
1850 # Is support for composite operations from the Web Animations API enabled?
1851 - name: dom.animations-api.compositing.enabled
1856 # Is support for the core interfaces of Web Animations API enabled?
1857 - name: dom.animations-api.core.enabled
1862 # Is support for Document.getAnimations() and Element.getAnimations()
1864 - name: dom.animations-api.getAnimations.enabled
1869 # Is support for animations from the Web Animations API without 0%/100%
1870 # keyframes enabled?
1871 - name: dom.animations-api.implicit-keyframes.enabled
1876 # Is support for timelines from the Web Animations API enabled?
1877 - name: dom.animations-api.timelines.enabled
1882 # Synchronize transform animations with geometric animations on the
1884 - name: dom.animations.mainthread-synchronization-with-geometric-animations
1886 value: @IS_NOT_NIGHTLY_BUILD@
1889 # Is support for AudioWorklet enabled?
1890 - name: dom.audioworklet.enabled
1895 # Is support for Navigator.getBattery enabled?
1896 - name: dom.battery.enabled
1901 # Block multiple external protocol URLs in iframes per single event.
1902 - name: dom.block_external_protocol_in_iframes
1907 # Block sandboxed BrowsingContexts from navigating to external protocols.
1908 - name: dom.block_external_protocol_navigation_from_sandbox
1913 # Block Insecure downloads from Secure Origins
1914 - name: dom.block_download_insecure
1919 # Block all downloads in iframes with the sandboxed attribute
1920 - name: dom.block_download_in_sandboxed_iframes
1925 # Block multiple window.open() per single event.
1926 - name: dom.block_multiple_popups
1931 # The maximum number of popup that is allowed to be opened. Set to -1 for no
1933 - name: dom.popup_maximum
1938 # Whether window.location.reload() and window.history.go(0) should be blocked
1939 # if called directly from a window resize event handler.
1941 # This used to be necessary long ago to prevent terrible UX when using stuff
1942 # like TypeAheadFind (bug 258917), but it also causes compat issues on mobile
1945 # So for now disable it on Android and Desktop Nightly, to see if we have any
1946 # desktop regression before removing it completely. Note that this means that
1947 # non-nightly RDM behaves different than Android in this case.
1948 - name: dom.block_reload_from_resize_event_handler
1950 #if defined(MOZ_WIDGET_ANDROID) || defined(NIGHTLY_BUILD)
1958 - name: dom.caches.enabled
1959 type: RelaxedAtomicBool
1963 - name: dom.caches.testing.enabled
1964 type: RelaxedAtomicBool
1968 # Disable capture attribute for input elements; only supported on GeckoView.
1969 - name: dom.capture.enabled
1974 # Allow control characters appear in composition string.
1975 # When this is false, control characters except
1976 # CHARACTER TABULATION (horizontal tab) are removed from
1977 # both composition string and data attribute of compositionupdate
1978 # and compositionend events.
1979 - name: dom.compositionevent.allow_control_characters
1984 - name: dom.crypto.randomUUID.enabled
1985 type: RelaxedAtomicBool
1989 # Is support for CSSPseudoElement enabled?
1990 - name: dom.css_pseudo_element.enabled
1995 # After how many seconds we allow external protocol URLs in iframe when not in
1997 - name: dom.delay.block_external_protocol_in_iframes
1999 value: 10 # in seconds
2002 # Whether the above pref has any effect at all.
2003 - name: dom.delay.block_external_protocol_in_iframes.enabled
2005 value: @IS_NOT_NIGHTLY_BUILD@
2008 # HTML <dialog> element
2009 - name: dom.dialog_element.enabled
2014 # Only propagate the open window click permission if the setTimeout() is equal
2015 # to or less than this value.
2016 - name: dom.disable_open_click_delay
2021 - name: dom.disable_open_during_load
2026 - name: dom.disable_beforeunload
2031 - name: dom.require_user_interaction_for_beforeunload
2036 # Enable/disable Gecko specific edit commands
2037 - name: dom.document.edit_command.contentReadOnly.enabled
2039 value: @IS_NOT_NIGHTLY_BUILD@
2042 - name: dom.document.edit_command.decreasefontsize.enabled
2047 - name: dom.document.edit_command.gethtml.enabled
2052 - name: dom.document.edit_command.heading.enabled
2057 - name: dom.document.edit_command.increasefontsize.enabled
2062 - name: dom.document.edit_command.insertBrOnReturn.enabled
2064 value: @IS_NOT_NIGHTLY_BUILD@
2067 - name: dom.document.edit_command.readonly.enabled
2072 # If set this to true, `Document.execCommand` may be performed nestedly.
2073 # Otherwise, nested calls just return false.
2074 - name: dom.document.exec_command.nested_calls_allowed
2079 - name: dom.enable_window_print
2081 value: @IS_NOT_ANDROID@
2084 # Only intended for fuzzing purposes, this will break mozPrintCallback, etc.
2085 - name: dom.window_print.fuzzing.block_while_printing
2090 - name: dom.element.transform-getters.enabled
2095 - name: dom.mouse_capture.enabled
2100 # Is support for Performance.mozMemory enabled?
2101 - name: dom.enable_memory_stats
2106 # Enable Performance API
2107 # Whether nonzero values can be returned from performance.timing.*
2108 - name: dom.enable_performance
2109 type: RelaxedAtomicBool
2113 # Enable Performance Observer API
2114 - name: dom.enable_performance_observer
2115 type: RelaxedAtomicBool
2119 # Whether resource timing will be gathered and returned by performance.GetEntries*
2120 - name: dom.enable_resource_timing
2125 # Whether event timing will be gathered and returned by performance observer*
2126 - name: dom.enable_event_timing
2127 type: RelaxedAtomicBool
2131 # Whether performance.GetEntries* will contain an entry for the active document
2132 - name: dom.enable_performance_navigation_timing
2137 # Whether the scheduler interface will be exposed
2138 - name: dom.enable_web_task_scheduling
2139 type: RelaxedAtomicBool
2140 value: @IS_NIGHTLY_BUILD@
2143 # If this is true, it's allowed to fire "cut", "copy" and "paste" events.
2144 # Additionally, "input" events may expose clipboard content when inputType
2145 # is "insertFromPaste" or something.
2146 - name: dom.event.clipboardevents.enabled
2151 # Whether touch event listeners are passive by default.
2152 - name: dom.event.default_to_passive_touch_listeners
2157 # Whether wheel listeners are passive by default.
2158 - name: dom.event.default_to_passive_wheel_listeners
2163 - name: dom.event.dragexit.enabled
2165 value: @IS_NOT_NIGHTLY_BUILD@
2168 # Whether WheelEvent should return pixels instead of lines for
2169 # WheelEvent.deltaX/Y/Z, when deltaMode hasn't been checked.
2171 # Other browsers don't use line deltas and websites forget to check for it, see
2173 - name: dom.event.wheel-deltaMode-lines.disabled
2178 # Mostly for debugging. Whether we should do the same as
2179 # dom.event.wheel-deltaMode-lines.disabled, but unconditionally rather than
2180 # only when deltaMode hasn't been checked.
2181 - name: dom.event.wheel-deltaMode-lines.always-disabled
2186 # A blocklist (list of domains) for the
2187 # dom.event.wheel-deltaMode-lines.disabled behavior, in case potential
2188 # unforeseen problems with it arrive.
2189 - name: dom.event.wheel-deltaMode-lines.always-enabled
2194 #if defined(XP_MACOSX)
2195 # Whether to disable treating ctrl click as right click
2196 - name: dom.event.treat_ctrl_click_as_right_click.disabled
2198 value: @IS_NIGHTLY_BUILD@
2202 # Whether .offset{X,Y} for events targeted at SVG nodes returns bounds relative
2204 - name: dom.events.offset-in-svg-relative-to-svg-root
2209 # Disable clipboard.read(), clipboard.write() and ClipboardItem by default
2210 - name: dom.events.asyncClipboard.clipboardItem
2215 # Should only be enabled in tests.
2216 # Access with Clipboard::IsTestingPrefEnabled().
2217 - name: dom.events.testing.asyncClipboard
2221 do_not_use_directly: true
2223 # This pref controls whether or not the `protected` dataTransfer state is
2224 # enabled. If the `protected` dataTransfer stae is disabled, then the
2225 # DataTransfer will be read-only whenever it should be protected, and will not
2226 # be disconnected after a drag event is completed.
2227 - name: dom.events.dataTransfer.protected.enabled
2232 # User interaction timer interval, in ms
2233 - name: dom.events.user_interaction_interval
2238 # Whether to try to compress touchmove events on IPC layer.
2239 - name: dom.events.compress.touchmove
2244 # In addition to the above IPC layer compresison, allow touchmove
2245 # events to be further coalesced in the child side after they
2247 - name: dom.events.coalesce.touchmove
2252 # Allow mousemove events to be coalesced in the child side after they are sent.
2253 - name: dom.events.coalesce.mousemove
2258 # Whether to expose test interfaces of various sorts
2259 - name: dom.expose_test_interfaces
2264 - name: dom.fetchObserver.enabled
2265 type: RelaxedAtomicBool
2269 # Allow the content process to create a File from a path. This is allowed just
2270 # on parent process, on 'file' Content process, or for testing.
2271 - name: dom.file.createInChild
2272 type: RelaxedAtomicBool
2276 # Support @autocomplete values for form autofill feature.
2277 - name: dom.forms.autocomplete.formautofill
2282 # Only trusted submit event could trigger form submission.
2283 - name: dom.forms.submit.trusted_event_only
2288 # This pref just controls whether we format the number with grouping separator
2289 # characters when the internal value is set or updated. It does not stop the
2290 # user from typing in a number and using grouping separators.
2291 - name: dom.forms.number.grouping
2296 # Whether the Gamepad API is enabled
2297 - name: dom.gamepad.enabled
2302 # Is Gamepad Extension API enabled?
2303 - name: dom.gamepad.extensions.enabled
2308 # Is LightIndicator API enabled in Gamepad Extension API?
2309 - name: dom.gamepad.extensions.lightindicator
2314 # Is MultiTouch API enabled in Gamepad Extension API?
2315 - name: dom.gamepad.extensions.multitouch
2320 # Is Gamepad vibrate haptic feedback function enabled?
2321 - name: dom.gamepad.haptic_feedback.enabled
2326 - name: dom.gamepad.non_standard_events.enabled
2328 value: @IS_NOT_RELEASE_OR_BETA@
2331 - name: dom.gamepad.test.enabled
2332 type: RelaxedAtomicBool
2336 # W3C draft ImageCapture API
2337 - name: dom.imagecapture.enabled
2342 # <img loading="lazy">
2344 # See https://github.com/whatwg/html/pull/3752
2345 - name: dom.image-lazy-loading.enabled
2346 type: RelaxedAtomicBool
2350 # The root margin for image lazy loading, defined as four (value, percentage)
2352 - name: dom.image-lazy-loading.root-margin.top
2354 #if defined(EARLY_BETA_OR_EARLIER)
2361 - name: dom.image-lazy-loading.root-margin.top.percentage
2363 #if defined(EARLY_BETA_OR_EARLIER)
2370 - name: dom.image-lazy-loading.root-margin.bottom
2372 #if defined(EARLY_BETA_OR_EARLIER)
2379 - name: dom.image-lazy-loading.root-margin.bottom.percentage
2381 #if defined(EARLY_BETA_OR_EARLIER)
2388 - name: dom.image-lazy-loading.root-margin.left
2390 #if defined(EARLY_BETA_OR_EARLIER)
2397 - name: dom.image-lazy-loading.root-margin.left.percentage
2399 #if defined(EARLY_BETA_OR_EARLIER)
2406 - name: dom.image-lazy-loading.root-margin.right
2408 #if defined(EARLY_BETA_OR_EARLIER)
2415 - name: dom.image-lazy-loading.root-margin.right.percentage
2417 #if defined(EARLY_BETA_OR_EARLIER)
2424 # Enable passing the "storage" option to indexedDB.open.
2425 - name: dom.indexedDB.storageOption.enabled
2426 type: RelaxedAtomicBool
2430 # Enable indexedDB in private browsing mode.
2431 - name: dom.indexedDB.privateBrowsing.enabled
2432 type: RelaxedAtomicBool
2436 - name: dom.input_events.beforeinput.enabled
2441 # Whether innerWidth / innerHeight return rounded or fractional sizes.
2443 # NOTE(emilio): Fractional sizes are not web-compatible, see the regressions
2444 # from bug 1676843, but we want to expose the fractional sizes (probably in
2445 # another API) one way or another, see [1], so we're keeping the code for the
2448 # [1]: https://github.com/w3c/csswg-drafts/issues/5260
2449 - name: dom.innerSize.rounded
2454 # Whether we conform to Input Events Level 1 or Input Events Level 2.
2455 # true: conforming to Level 1
2456 # false: conforming to Level 2
2457 - name: dom.input_events.conform_to_level_1
2462 # Whether we allow BrowsingContextGroup to suspend input events
2463 - name: dom.input_events.canSuspendInBCG.enabled
2468 # Whether we perform a more strict alignment with vsync for input events
2469 - name: dom.input_events.strict_input_vsync_alignment
2474 # Enable not moving the cursor to end when a text input or textarea has .value
2475 # set to the value it already has. By default, enabled.
2476 - name: dom.input.skip_cursor_move_for_same_value_set
2481 - name: dom.ipc.cancel_content_js_when_navigating
2486 # How often to check for CPOW timeouts (ms). CPOWs are only timed
2487 # out by the hang monitor.
2488 - name: dom.ipc.cpow.timeout
2493 #ifdef MOZ_ENABLE_FORKSERVER
2494 - name: dom.ipc.forkserver.enable
2500 #ifdef MOZ_WIDGET_GTK
2502 # Avoid the use of GTK in content processes if possible, by running
2503 # them in headless mode, to conserve resources (e.g., connections to
2504 # the X server). See the usage in `ContentParent.cpp` for the full
2505 # definition of "if possible".
2507 # This does not affect sandbox policies; content processes may still
2508 # dynamically connect to the display server for, e.g., WebGL.
2509 - name: dom.ipc.avoid-gtk
2515 # Whether or not to collect a paired minidump when force-killing a
2517 - name: dom.ipc.tabs.createKillHardCrashReports
2519 value: @IS_NOT_RELEASE_OR_BETA@
2522 # Allow Flash async drawing mode in 64-bit release builds.
2523 - name: dom.ipc.plugins.asyncdrawing.enabled
2524 type: RelaxedAtomicBool
2528 # How long we wait before unloading an idle plugin process.
2529 - name: dom.ipc.plugins.unloadTimeoutSecs
2530 type: RelaxedAtomicUint32
2534 - name: dom.ipc.plugins.allow_dxgi_surface
2539 # Enable e10s hang monitoring (slow script checking and plugin hang detection).
2540 - name: dom.ipc.processHangMonitor
2545 # Whether we report such process hangs
2546 - name: dom.ipc.reportProcessHangs
2547 type: RelaxedAtomicBool
2548 # Don't report hangs in DEBUG builds. They're too slow and often a
2549 # debugger is attached.
2557 - name: dom.ipc.tabs.disabled
2562 # Process launch delay (in milliseconds).
2563 - name: dom.ipc.processPrelaunch.delayMs
2565 # This number is fairly arbitrary ... the intention is to put off
2566 # launching another app process until the last one has finished
2567 # loading its content, to reduce CPU/memory/IO contention.
2571 - name: dom.ipc.processPrelaunch.startupDelayMs
2573 # delay starting content processes for a short time after browser start
2574 # to provide time for the UI to come up
2578 # Process preallocation cache
2579 # Only used in fission; in e10s we use 1 always
2580 - name: dom.ipc.processPrelaunch.fission.number
2585 # Limit preallocated processes below this memory size (in MB)
2586 - name: dom.ipc.processPrelaunch.lowmem_mb
2591 - name: dom.ipc.processPriorityManager.enabled
2596 - name: dom.ipc.processPriorityManager.testMode
2601 - name: dom.ipc.processPriorityManager.backgroundPerceivableGracePeriodMS
2603 #if defined(MOZ_WIDGET_ANDROID) && defined(NIGHTLY_BUILD)
2610 - name: dom.ipc.processPriorityManager.backgroundGracePeriodMS
2612 #if defined(MOZ_WIDGET_ANDROID) && defined(NIGHTLY_BUILD)
2619 # Is support for HTMLElement.autocapitalize enabled?
2620 - name: dom.forms.autocapitalize
2622 value: @IS_NIGHTLY_BUILD@
2625 # Support for input type=month, type=week. By default, disabled.
2626 - name: dom.forms.datetime.others
2631 # Is support for HTMLElement.enterKeyHint enabled?
2632 - name: dom.forms.enterkeyhint
2637 # Is support for HTMLElement.inputMode enabled?
2638 - name: dom.forms.inputmode
2643 # Is support for HTMLInputElement.showPicker enabled?
2644 - name: dom.input.showPicker
2649 # Whether to allow or disallow web apps to cancel `beforeinput` events caused
2650 # by MozEditableElement#setUserInput() which is used by autocomplete, autofill
2651 # and password manager.
2652 - name: dom.input_event.allow_to_cancel_set_user_input
2657 # How long a content process can take before closing its IPC channel
2658 # after shutdown is initiated. If the process exceeds the timeout,
2659 # we fear the worst and kill it.
2660 - name: dom.ipc.tabs.shutdownTimeoutSecs
2661 type: RelaxedAtomicUint32
2662 #if !defined(DEBUG) && !defined(MOZ_ASAN) && !defined(MOZ_VALGRIND) && !defined(MOZ_TSAN)
2669 # Whether a native event loop should be used in the content process.
2670 - name: dom.ipc.useNativeEventProcessing.content
2671 type: RelaxedAtomicBool
2672 #if defined(XP_WIN) || defined(XP_MACOSX)
2679 # If this is true, TextEventDispatcher dispatches keydown and keyup events
2680 # even during composition (keypress events are never fired during composition
2681 # even if this is true).
2682 - name: dom.keyboardevent.dispatch_during_composition
2687 # Enable/disable KeyboardEvent.initKeyEvent function
2688 - name: dom.keyboardevent.init_key_event.enabled
2693 # Enable/disable KeyboardEvent.initKeyEvent function in addons even if it's
2695 - name: dom.keyboardevent.init_key_event.enabled_in_addons
2700 # If this is true, keypress events for non-printable keys are dispatched only
2701 # for event listeners of the system event group in web content.
2702 - name: dom.keyboardevent.keypress.dispatch_non_printable_keys_only_system_group_in_content
2707 # If this is true, "keypress" event's keyCode value and charCode value always
2708 # become same if the event is not created/initialized by JS.
2709 - name: dom.keyboardevent.keypress.set_keycode_and_charcode_to_same_value
2714 # Whether "W3C Web Manifest" processing is enabled
2715 - name: dom.manifest.enabled
2720 # Enable mapped array buffer by default.
2721 - name: dom.mapped_arraybuffer.enabled
2726 # This pref is used to enable/disable the `document.autoplayPolicy` API which
2727 # returns a enum string which presents current autoplay policy and can change
2728 # overtime based on user session activity.
2729 - name: dom.media.autoplay.autoplay-policy-api
2735 - name: dom.media.mediasession.enabled
2740 # Number of seconds of very quiet or silent audio before considering the audio
2742 - name: dom.media.silence_duration_for_audibility
2747 - name: dom.menuitem.enabled
2752 # Enable meta-viewport support in remote APZ-enabled frames.
2753 - name: dom.meta-viewport.enabled
2754 type: RelaxedAtomicBool
2758 # Timeout clamp in ms for timeouts we clamp.
2759 - name: dom.min_timeout_value
2760 type: RelaxedAtomicInt32
2764 # Timeout clamp in ms for background windows.
2765 - name: dom.min_background_timeout_value
2770 # Timeout clamp in ms for background windows when throttling isn't enabled.
2771 - name: dom.min_background_timeout_value_without_budget_throttling
2776 # Are missing-property use counters for certain DOM attributes enabled?
2777 - name: dom.missing_prop_counters.enabled
2782 # Is support for module scripts (<script type="module">) enabled for content?
2783 - name: dom.moduleScripts.enabled
2788 # Is support for import maps (<script type="importmap">) enabled for content?
2789 - name: dom.importMaps.enabled
2794 # Whether we disable triggering mutation events for changes to style
2795 # attribute via CSSOM.
2796 # NOTE: This preference is used in unit tests. If it is removed or its default
2797 # value changes, please update test_sharedMap_static_prefs.js accordingly.
2798 - name: dom.mutation-events.cssom.disabled
2803 # Limit of location change caused by content scripts in a time span per
2804 # BrowsingContext. This includes calls to History and Location APIs.
2805 - name: dom.navigation.locationChangeRateLimit.count
2810 # Time span in seconds for location change rate limit.
2811 - name: dom.navigation.locationChangeRateLimit.timespan
2816 # Network Information API
2817 # This feature is not available on Firefox desktop. It exposes too much
2818 # user information. Let's be consistent and disable it on Android.
2819 # But let's keep it around in case it becomes necessary for webcompat
2821 # https://bugzilla.mozilla.org/show_bug.cgi?id=1637922
2822 - name: dom.netinfo.enabled
2823 type: RelaxedAtomicBool
2827 # Whether we should open noopener links in a new process.
2828 - name: dom.noopener.newprocess.enabled
2833 # Whether we shouldn't show an error page for unknown protocols (and should
2834 # show a console warning instead).
2835 - name: dom.no_unknown_protocol_error.enabled
2840 # Whether origin trials are enabled.
2841 - name: dom.origin-trials.enabled
2846 # Whether we use the test key to verify tokens.
2847 - name: dom.origin-trials.test-key.enabled
2852 # Origin trial state for "TestTrial".
2853 # 0: normal, 1: always-enabled, 2: always-disabled
2854 - name: dom.origin-trials.test-trial.state
2855 type: RelaxedAtomicInt32
2859 # Origin trial state for OffscreenCanvas.
2860 # 0: normal, 1: always-enabled, 2: always-disabled
2861 - name: dom.origin-trials.offscreen-canvas.state
2862 type: RelaxedAtomicInt32
2866 # Is support for Window.paintWorklet enabled?
2867 - name: dom.paintWorklet.enabled
2872 # Enable/disable the PaymentRequest API
2873 - name: dom.payments.request.enabled
2878 # Whether a user gesture is required to call PaymentRequest.prototype.show().
2879 - name: dom.payments.request.user_interaction_required
2884 # Time in milliseconds for PaymentResponse to wait for
2885 # the Web page to call complete().
2886 - name: dom.payments.response.timeout
2891 # Enable printing performance marks/measures to log
2892 - name: dom.performance.enable_user_timing_logging
2893 type: RelaxedAtomicBool
2897 - name: dom.performance.children_results_ipc_timeout
2902 # Enable notification of performance timing
2903 - name: dom.performance.enable_notify_performance_timing
2908 # Is support for PerformanceTiming.timeToContentfulPaint enabled?
2909 - name: dom.performance.time_to_contentful_paint.enabled
2914 # Is support for PerformanceTiming.timeToDOMContentFlushed enabled?
2915 - name: dom.performance.time_to_dom_content_flushed.enabled
2920 # Is support for PerformanceTiming.timeToFirstInteractive enabled?
2921 - name: dom.performance.time_to_first_interactive.enabled
2926 # Is support for PerformanceTiming.timeToNonBlankPaint enabled?
2927 - name: dom.performance.time_to_non_blank_paint.enabled
2932 # Is support for Permissions.revoke enabled?
2933 - name: dom.permissions.revoke.enable
2938 # Is support for Element.requestPointerLock enabled?
2939 # This is added for accessibility purpose. When user has no way to exit
2940 # pointer lock (e.g. no keyboard available), they can use this pref to
2941 # disable the Pointer Lock API altogether.
2942 - name: dom.pointer-lock.enabled
2947 # re-SAB: Whether to allow postMessage of a SharedArrayBuffer if various
2948 # preconditions related to COOP and COEP are met
2949 - name: dom.postMessage.sharedArrayBuffer.withCOOP_COEP
2954 # Overridden in all.js on RELEASE_OR_BETA in order to add the locked attribute.
2955 - name: dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled
2956 type: RelaxedAtomicBool
2960 # This currently only affects XHTML. For XUL the cache is always allowed.
2961 - name: dom.prototype_document_cache.enabled
2967 - name: dom.push.enabled
2968 type: RelaxedAtomicBool
2972 # This enables the SVGPathSeg APIs
2973 - name: dom.svg.pathSeg.enabled
2978 # Preference that is primarily used for testing of problematic file paths.
2979 # It can also be used for switching between different storage directories, but
2980 # such feature is not officially supported.
2981 - name: dom.quotaManager.storageName
2986 # An upper limit for the "age" of an origin. Any origin which is older than the
2987 # threshold is considered as unaccessed. That doesn't necessarily mean that
2988 # such origins will be immediatelly archived. They will be archived only when
2989 # dom.quotaManager.checkQuotaInfoLoadTime is true and loading of quota info
2990 # takes a long time (dom.quotaManager.longQuotaInfoLoadTimeThresholdMs is used
2991 # to decide what is a long quota info load time).
2992 - name: dom.quotaManager.unaccessedForLongTimeThresholdSec
2993 type: RelaxedAtomicUint32
2994 value: 33696000 # 13 months
2997 # Should we try to load origin information from the cache?
2998 # See bug 1563023 for more details.
2999 - name: dom.quotaManager.loadQuotaFromCache
3000 type: RelaxedAtomicBool
3004 # Should we check build ID as part of the cache validation?
3005 # When enabled, the cache is invalidated on any upgrade (or downgrade),
3006 # ensuring that changes in how quota usage is calculated can't cause
3007 # inconsistencies at the cost of a slower initialization. Currently, this
3008 # should only be set to false in tests using a packaged profile that inherently
3009 # includes a build id different from the building running the tests. In the
3010 # future this may be set to false if we are confident that we have sufficiently
3011 # thorough schema versioning.
3012 - name: dom.quotaManager.caching.checkBuildId
3013 type: RelaxedAtomicBool
3017 # Should we check quota info load time and eventually archive some unaccessed
3018 # origins if loading of quota info takes a long time ?
3019 - name: dom.quotaManager.checkQuotaInfoLoadTime
3020 type: RelaxedAtomicBool
3024 # An upper limit for quota info load time, anything which takes longer than the
3025 # threshold is considered as long quota info load time.
3026 - name: dom.quotaManager.longQuotaInfoLoadTimeThresholdMs
3027 type: RelaxedAtomicUint32
3028 value: 21000 # 21 seconds
3031 # Preference that users can set to override temporary storage smart limit
3033 - name: dom.quotaManager.temporaryStorage.fixedLimit
3034 type: RelaxedAtomicInt32
3038 # A pref that is used to enable testing features.
3039 - name: dom.quotaManager.testing
3040 type: SequentiallyConsistentAtomicBool
3045 # Preference that is used to set nsILocalFileWin::useDOSDevicePathSyntax
3046 # attribute for all local file instances created by QuotaManager and its
3047 # clients. The value of this preference is cached so changing the preference
3048 # during runtime has no effect.
3049 # See bug 1626846 for setting this to false by default.
3050 - name: dom.quotaManager.useDOSDevicePathSyntax
3051 type: RelaxedAtomicBool
3054 do_not_use_directly: true
3056 # Preference that is used to enable the hack for overrriding xFullPathname in
3058 - name: dom.quotaManager.overrideXFullPathname
3059 type: RelaxedAtomicBool
3064 # How many times we should retry directory removal or renaming if access was
3066 - name: dom.quotaManager.directoryRemovalOrRenaming.maxRetries
3067 type: RelaxedAtomicUint32
3075 # How long we should wait between retries (in milliseconds)?
3076 - name: dom.quotaManager.directoryRemovalOrRenaming.delayMs
3077 type: RelaxedAtomicUint32
3082 - name: dom.reporting.enabled
3083 type: RelaxedAtomicBool
3084 value: @IS_NIGHTLY_BUILD@
3087 - name: dom.reporting.testing.enabled
3088 type: RelaxedAtomicBool
3092 - name: dom.reporting.featurePolicy.enabled
3093 type: RelaxedAtomicBool
3094 value: @IS_NIGHTLY_BUILD@
3097 - name: dom.reporting.crash.enabled
3098 type: RelaxedAtomicBool
3102 - name: dom.reporting.header.enabled
3103 type: RelaxedAtomicBool
3107 # In seconds. The timeout to remove not-active report-to endpoints.
3108 - name: dom.reporting.cleanup.timeout
3113 # Any X seconds the reports are dispatched to endpoints.
3114 - name: dom.reporting.delivering.timeout
3119 # How many times the delivering of a report should be tried.
3120 - name: dom.reporting.delivering.maxFailures
3125 # How many reports should be stored in the report queue before being delivered.
3126 - name: dom.reporting.delivering.maxReports
3131 # Enable requestIdleCallback API
3132 - name: dom.requestIdleCallback.enabled
3137 # Enable Screen Orientation lock
3138 - name: dom.screenorientation.allow-lock
3143 # Whether to enable the JavaScript start-up cache. This causes one of the first
3144 # execution to record the bytecode of the JavaScript function used, and save it
3145 # in the existing cache entry. On the following loads of the same script, the
3146 # bytecode would be loaded from the cache instead of being generated once more.
3147 - name: dom.script_loader.bytecode_cache.enabled
3152 # Ignore the heuristics of the bytecode cache, and always record on the first
3153 # visit. (used for testing purposes).
3155 # Choose one strategy to use to decide when the bytecode should be encoded and
3156 # saved. The following strategies are available right now:
3157 # * -2 : (reader mode) The bytecode cache would be read, but it would never
3159 # * -1 : (eager mode) The bytecode would be saved as soon as the script is
3160 # seen for the first time, independently of the size or last access
3162 # * 0 : (default) The bytecode would be saved in order to minimize the
3165 # Other values might lead to experimental strategies. For more details, have a
3166 # look at: ScriptLoader::ShouldCacheBytecode function.
3167 - name: dom.script_loader.bytecode_cache.strategy
3172 # Select which parse/delazification strategy should be used while parsing
3173 # scripts off-main-thread. (see CompileOptions.h, DelazificationOption enum)
3175 # 0: On-demand only. Delazification will be triggered only on the main thread
3176 # before the execution of the function.
3178 # 1: Depth-first. Delazify all functions off-thread in the order of appearance
3181 # 255: Parse everything eagerly, from the first parse. All functions are parsed
3182 # at the same time as the top-level of a file.
3183 - name: dom.script_loader.delazification.strategy
3188 # Maximum total size after which the delazification strategy, specified by
3189 # `dom.script_loader.delazification.strategy`, is no longer applied, and the
3190 # on-demand strategy is used by default.
3192 # -1 disable the threshold, and delazification strategy is applied to all
3195 # Default value is 10MB for utf8 scripts.
3196 - name: dom.script_loader.delazification.max_size
3201 # Minimum memory, in GB, required to enable delazification strategy, specified
3202 # by `dom.script_loader.delazification.strategy`. Otherwise, the on-demand
3203 # delazification strategy is used.
3204 - name: dom.script_loader.delazification.min_mem
3209 # Is support for decoding external (non-inline) classic or module DOM scripts
3210 # (i.e. anything but workers) as UTF-8, then directly compiling without
3211 # inflating to UTF-16, enabled?
3212 - name: dom.script_loader.external_scripts.utf8_parsing.enabled
3217 # Enable speculative off main thread parsing of external scripts as
3218 # soon as they are fetched.
3219 - name: dom.script_loader.external_scripts.speculative_omt_parse.enabled
3224 # Speculatively compile non parser inserted scripts
3225 - name: dom.script_loader.external_scripts.speculate_non_parser_inserted.enabled
3230 # Speculatively compile async scripts
3231 - name: dom.script_loader.external_scripts.speculate_async.enabled
3236 # Speculatively compile link preload scripts
3237 - name: dom.script_loader.external_scripts.speculate_link_preload.enabled
3242 - name: dom.securecontext.allowlist_onions
3247 # This pref enables Sec-Fetch-* logic and causes corresponding
3248 # request headers to be set.
3249 - name: dom.security.secFetch.enabled
3250 type: RelaxedAtomicBool
3254 # This pref enables the featurePolicy header support.
3255 - name: dom.security.featurePolicy.header.enabled
3260 - name: dom.security.featurePolicy.experimental.enabled
3265 # Expose the 'featurePolicy' attribute in document and HTMLIFrameElement
3266 - name: dom.security.featurePolicy.webidl.enabled
3271 # Perform IPC based Principal vetting in ContentParent
3272 - name: dom.security.enforceIPCBasedPrincipalVetting
3273 type: RelaxedAtomicBool
3277 # For testing purposes only: Flipping this pref to true allows
3278 # to skip the allowlist for about: pages and do not ship with a
3279 # CSP and NS_ASSERT right away.
3280 - name: dom.security.skip_about_page_csp_allowlist_and_assert
3281 type: RelaxedAtomicBool
3285 # For testing purposes only: Flipping this pref to true allows
3286 # to skip the assertion that every about page ships with a CSP.
3287 - name: dom.security.skip_about_page_has_csp_assert
3288 type: RelaxedAtomicBool
3292 # For testing purposes only: Flipping this pref to true allows
3293 # to skip the assertion that HTML fragments (e.g. innerHTML) can
3294 # not be used within chrome code or about: pages.
3295 - name: dom.security.skip_html_fragment_assertion
3296 type: RelaxedAtomicBool
3300 # For testing purposes only; Flipping this pref to true allows
3301 # to skip the assertion that remote scripts can not be loaded
3302 # in system privileged contexts.
3303 - name: dom.security.skip_remote_script_assertion_in_system_priv_context
3304 type: RelaxedAtomicBool
3308 # If true, all content requests will get upgraded to HTTPS://
3309 # (some Firefox functionality requests, like OCSP will not be affected)
3310 - name: dom.security.https_only_mode
3311 type: RelaxedAtomicBool
3315 # If true, all content requests in Private Browsing Mode will get
3316 # upgraded to HTTPS://. (If dom.security.https_only_mode is set
3317 # to true then this pref has no effect)
3318 - name: dom.security.https_only_mode_pbm
3319 type: RelaxedAtomicBool
3323 # If true, sends http background request for top-level sites to
3324 # counter long timeouts.
3325 - name: dom.security.https_only_mode_send_http_background_request
3326 type: RelaxedAtomicBool
3330 # Time limit, in milliseconds, before sending the http background
3331 # request for HTTPS-Only and HTTPS-First
3332 - name: dom.security.https_only_fire_http_request_background_timer_ms
3333 type: RelaxedAtomicUint32
3337 # If true, tries to break upgrade downgrade cycles where https-only tries
3338 # to upgrad ethe connection, but the website tries to downgrade again.
3339 - name: dom.security.https_only_mode_break_upgrade_downgrade_endless_loop
3340 type: RelaxedAtomicBool
3344 # If true, when checking if it's upgrade downgrade cycles, the URI path will be
3346 - name: dom.security.https_only_check_path_upgrade_downgrade_endless_loop
3347 type: RelaxedAtomicBool
3351 # If true and HTTPS-only mode is enabled, requests
3352 # to local IP addresses are also upgraded
3353 - name: dom.security.https_only_mode.upgrade_local
3354 type: RelaxedAtomicBool
3358 # If true and HTTPS-only mode is enabled, requests
3359 # to .onion hosts are also upgraded
3360 - name: dom.security.https_only_mode.upgrade_onion
3361 type: RelaxedAtomicBool
3365 # WARNING: Don't ever update that pref manually! It is only used
3366 # for telemetry purposes and allows to reason about retention of
3367 # the pref dom.security.https_only_mode from above.
3368 - name: dom.security.https_only_mode_ever_enabled
3369 type: RelaxedAtomicBool
3373 # WARNING: Don't ever update that pref manually! It is only used
3374 # for telemetry purposes and allows to reason about retention of
3375 # the pref dom.security.https_only_mode_pbm from above.
3376 - name: dom.security.https_only_mode_ever_enabled_pbm
3377 type: RelaxedAtomicBool
3381 # If true checks for secure www connections when https fails
3382 # and gives the user suggestions on the error page
3383 - name: dom.security.https_only_mode_error_page_user_suggestions
3384 type: RelaxedAtomicBool
3388 # If true, top-level request will get upgraded to HTTPS and
3389 # downgraded again if the request failed.
3390 - name: dom.security.https_first
3391 type: RelaxedAtomicBool
3395 # If true, top-level requests in Private Browsing Mode will get
3396 # upgraded to HTTPS. (If dom.security.https_first
3397 # is set to true then this pref has no effect)
3398 - name: dom.security.https_first_pbm
3399 type: RelaxedAtomicBool
3403 - name: dom.security.unexpected_system_load_telemetry_enabled
3408 # pref controls `Sanitizer` API being exposed
3409 - name: dom.security.sanitizer.enabled
3414 # Whether or not selection events on text controls are enabled.
3415 - name: dom.select_events.textcontrols.selectionchange.enabled
3420 - name: dom.select_events.textcontrols.selectstart.enabled
3422 value: @IS_NIGHTLY_BUILD@
3425 - name: dom.separate_event_queue_for_post_message.enabled
3430 - name: dom.arena_allocator.enabled
3435 - name: dom.serviceWorkers.enabled
3436 type: RelaxedAtomicBool
3440 - name: dom.serviceWorkers.navigationPreload.enabled
3441 type: RelaxedAtomicBool
3445 # Mitigates ServiceWorker navigation faults by bypassing the ServiceWorker on
3446 # navigation faults. This is more extensive than just resetting interception
3447 # because we also mark the page as uncontrolled so that subresources will not
3448 # go to the ServiceWorker either.
3449 - name: dom.serviceWorkers.mitigations.bypass_on_fault
3454 # Additional ServiceWorker navigation mitigation control to unregister the
3455 # ServiceWorker after multiple faults are encountered. The mitigation is
3456 # disabled when this is set to zero, otherwise this is the number of faults that
3457 # need to occur for a specific ServiceWorker before it will be unregistered.
3458 - name: dom.serviceWorkers.mitigations.navigation_fault_threshold
3463 # This is the group usage head room for service workers.
3464 # The quota usage mitigation algorithm uses this preference to determine if the
3465 # origin or also group data should be cleared or not.
3466 # The default value is 400 MiB.
3467 - name: dom.serviceWorkers.mitigations.group_usage_headroom_kb
3472 - name: dom.serviceWorkers.testing.enabled
3473 type: RelaxedAtomicBool
3477 # Whether ServiceWorkerManager should persist the service worker
3478 # registered by temporary installed extension (only meant to be used
3479 # for testing purpose, to make it easier to test some particular scenario
3480 # with a temporary installed addon, which doesn't need to be signed to be
3481 # installed on release channel builds).
3482 - name: dom.serviceWorkers.testing.persistTemporarilyInstalledAddons
3483 type: RelaxedAtomicBool
3487 - name: dom.workers.requestAnimationFrame
3488 type: RelaxedAtomicBool
3492 - name: dom.workers.serialized-sab-access
3493 type: RelaxedAtomicBool
3497 # Whether automatic storage access granting heuristics should be turned on.
3498 - name: dom.storage_access.auto_grants
3503 - name: dom.storage_access.auto_grants.delayed
3508 # Storage-access API.
3509 - name: dom.storage_access.enabled
3514 # The maximum number of origins that a given third-party tracker is allowed
3515 # to have concurrent access to before the user is presented with a storage
3516 # access prompt. Only effective when the auto_grants pref is turned on.
3517 - name: dom.storage_access.max_concurrent_auto_grants
3522 # Enable Storage API for all platforms except Android.
3523 - name: dom.storageManager.enabled
3524 type: RelaxedAtomicBool
3525 value: @IS_NOT_ANDROID@
3528 # Whether the File System API is enabled
3529 - name: dom.fs.enabled
3530 type: RelaxedAtomicBool
3534 # LocalStorage data limit as determined by summing up the lengths of all string
3535 # keys and values. This is consistent with the legacy implementation and other
3536 # browser engines. This value should really only ever change in unit testing
3537 # where being able to lower it makes it easier for us to test certain edge
3538 # cases. Measured in KiBs.
3539 - name: dom.storage.default_quota
3540 type: RelaxedAtomicUint32
3541 # Only allow relatively small amounts of data since performance of the
3542 # synchronous IO is very bad. We are enforcing simple per-origin quota only.
3546 # Per-site quota for legacy LocalStorage implementation.
3547 - name: dom.storage.default_site_quota
3548 type: RelaxedAtomicUint32
3552 # Whether or not the unsupported legacy implemenation should be enabled. Please
3553 # don't advertise this pref as a way for disabling LSNG. This pref is intended
3554 # for internal testing only and will be removed in near future. Accidental
3555 # disabling of LSNG can lead to a data loss in a combination with disabled
3556 # shadow writes. Disabling of shadow writes is the initial step towards
3557 # removing legacy implementation and will be done soon.
3558 - name: dom.storage.enable_unsupported_legacy_implementation
3559 type: RelaxedAtomicBool
3562 do_not_use_directly: true
3564 # The amount of snapshot peak usage which is attempted to be pre-incremented
3565 # during snapshot creation.
3566 - name: dom.storage.snapshot_peak_usage.initial_preincrement
3567 type: RelaxedAtomicUint32
3571 # The amount of snapshot peak usage which is attempted to be pre-incremented
3572 # during snapshot creation if the LocalStorage usage was already close to the
3573 # limit (a fallback for dom.storage.snapshot_peak_usage.initial_preincrement).
3574 - name: dom.storage.snapshot_peak_usage.reduced_initial_preincrement
3575 type: RelaxedAtomicUint32
3579 # The amount of snapshot peak usage which is attempted to be pre-incremented
3580 # beyond the specific values which are subsequently requested after snapshot
3582 - name: dom.storage.snapshot_peak_usage.gradual_preincrement
3583 type: RelaxedAtomicUint32
3587 # The amount of snapshot peak usage which is attempted to be pre-incremented
3588 # beyond the specific values which are subsequently requested after snapshot
3589 # creation if the LocalStorage total usage was already close to the limit
3590 # (a fallback for dom.storage.snapshot_peak_usage.gradual_preincrement).
3591 - name: dom.storage.snapshot_peak_usage.reduced_gradual_preincrement
3592 type: RelaxedAtomicUint32
3596 # How long between a snapshot becomes idle and when we actually finish the
3597 # snapshot. This preference is only used when "dom.storage.snapshot_reusing"
3599 - name: dom.storage.snapshot_idle_timeout_ms
3604 # Is support for Storage test APIs enabled?
3605 - name: dom.storage.testing
3612 ## Exposure Prefs: To ensure the DOM Streams don't expose more
3613 # than existing JS Streams implementation, we want to hide some
3614 # interfaces from the global until later.
3615 - name: dom.streams.readable_stream_default_controller.enabled
3616 type: RelaxedAtomicBool
3620 - name: dom.streams.readable_stream_default_reader.enabled
3621 type: RelaxedAtomicBool
3625 - name: dom.streams.byte_streams.enabled
3626 type: RelaxedAtomicBool
3630 - name: dom.streams.writable_streams.enabled
3631 type: RelaxedAtomicBool
3635 - name: dom.streams.transform_streams.enabled
3636 type: RelaxedAtomicBool
3637 value: @IS_NIGHTLY_BUILD@
3640 - name: dom.streams.pipeTo.enabled
3641 type: RelaxedAtomicBool
3645 # For area and anchor elements with target=_blank and no rel set to
3647 - name: dom.targetBlankNoOpener.enabled
3652 # Is support for Selection.GetRangesForInterval enabled?
3653 - name: dom.testing.selection.GetRangesForInterval
3658 - name: dom.testing.structuredclonetester.enabled
3659 type: RelaxedAtomicBool
3663 - name: dom.testing.sync-content-blocking-notifications
3668 # To enable TestUtils interface on WPT
3669 - name: dom.testing.testutils.enabled
3670 type: RelaxedAtomicBool
3674 - name: dom.textMetrics.actualBoundingBox.enabled
3675 type: RelaxedAtomicBool
3679 - name: dom.textMetrics.baselines.enabled
3680 type: RelaxedAtomicBool
3684 - name: dom.textMetrics.emHeight.enabled
3685 type: RelaxedAtomicBool
3689 - name: dom.textMetrics.fontBoundingBox.enabled
3690 type: RelaxedAtomicBool
3694 # Time (in ms) that it takes to regenerate 1ms.
3695 - name: dom.timeout.background_budget_regeneration_rate
3700 # Time (in ms) that it takes to regenerate 1ms.
3701 - name: dom.timeout.foreground_budget_regeneration_rate
3706 # Maximum value (in ms) for the background budget. Only valid for
3707 # values greater than 0.
3708 - name: dom.timeout.background_throttling_max_budget
3713 # Maximum value (in ms) for the foreground budget. Only valid for
3714 # values greater than 0.
3715 - name: dom.timeout.foreground_throttling_max_budget
3720 # The maximum amount a timeout can be delayed by budget throttling.
3721 - name: dom.timeout.budget_throttling_max_delay
3726 # Turn on budget throttling by default.
3727 - name: dom.timeout.enable_budget_timer_throttling
3732 # Should we defer timeouts and intervals while loading a page. Released
3733 # on Idle or when the page is loaded.
3734 - name: dom.timeout.defer_during_load
3739 # Maximum amount of time in milliseconds consecutive setTimeout()/setInterval()
3740 # callback are allowed to run before yielding the event loop.
3741 - name: dom.timeout.max_consecutive_callbacks_ms
3746 # Maximum deferral time for setTimeout/Interval in milliseconds
3747 - name: dom.timeout.max_idle_defer_ms
3752 # Delay in ms from document load until we start throttling background timeouts.
3753 - name: dom.timeout.throttling_delay
3759 - name: dom.udpsocket.enabled
3764 # Time limit, in milliseconds, for user gesture transient activation.
3765 - name: dom.user_activation.transient.timeout
3770 # Whether to shim a Components object on untrusted windows.
3771 - name: dom.use_components_shim
3773 value: @IS_NOT_NIGHTLY_BUILD@
3776 - name: dom.vibrator.enabled
3781 - name: dom.vibrator.max_vibrate_ms
3782 type: RelaxedAtomicUint32
3786 - name: dom.vibrator.max_vibrate_list_len
3787 type: RelaxedAtomicUint32
3791 # Is support for Window.visualViewport enabled?
3792 - name: dom.visualviewport.enabled
3797 # Is support for WebVR APIs enabled?
3798 # Disabled everywhere, but not removed.
3799 - name: dom.vr.enabled
3800 type: RelaxedAtomicBool
3804 # Should VR sessions always be reported as supported, without first
3805 # checking for VR runtimes? This will prevent permission prompts
3806 # from being suppressed on machines without VR runtimes and cause
3807 # navigator.xr.isSessionSupported to always report that immersive-vr
3809 - name: dom.vr.always_support_vr
3810 type: RelaxedAtomicBool
3814 # Should AR sessions always be reported as supported, without first
3815 # checking for AR runtimes? This will prevent permission prompts
3816 # from being suppressed on machines without AR runtimes and cause
3817 # navigator.xr.isSessionSupported to always report that immersive-ar
3819 - name: dom.vr.always_support_ar
3820 type: RelaxedAtomicBool
3824 # It is often desirable to automatically start vr presentation when
3825 # a user puts on the VR headset. This is done by emitting the
3826 # Window.vrdisplayactivate event when the headset's sensors detect it
3827 # being worn. This can result in WebVR content taking over the headset
3828 # when the user is using it outside the browser or inadvertent start of
3829 # presentation due to the high sensitivity of the proximity sensor in some
3830 # headsets, so it is off by default.
3831 - name: dom.vr.autoactivate.enabled
3832 type: RelaxedAtomicBool
3836 # Minimum number of milliseconds that the browser will wait before
3837 # attempting to poll again for connected VR controllers. The browser
3838 # will not attempt to poll for VR controllers until it needs to use them.
3839 - name: dom.vr.controller.enumerate.interval
3840 type: RelaxedAtomicInt32
3844 # The threshold value of trigger inputs for VR controllers.
3845 - name: dom.vr.controller_trigger_threshold
3850 # Minimum number of milliseconds that the browser will wait before
3851 # attempting to poll again for connected VR displays. The browser
3852 # will not attempt to poll for VR displays until it needs to use
3853 # them, such as when detecting a WebVR site.
3854 - name: dom.vr.display.enumerate.interval
3855 type: RelaxedAtomicInt32
3859 # The number of milliseconds since last frame start before triggering a new
3860 # frame. When content is failing to submit frames on time or the lower level
3861 # VR platform APIs are rejecting frames, it determines the rate at which RAF
3862 # callbacks will be called.
3863 - name: dom.vr.display.rafMaxDuration
3864 type: RelaxedAtomicUint32
3868 # Minimum number of milliseconds the browser will wait before attempting
3869 # to re-start the VR service after an enumeration returned no devices.
3870 - name: dom.vr.external.notdetected.timeout
3871 type: RelaxedAtomicInt32
3875 # Minimum number of milliseconds the browser will wait before attempting
3876 # to re-start the VR service after a VR API (eg, OpenVR or Oculus)
3877 # requests that we shutdown and unload its libraries.
3878 # To ensure that we don't interfere with VR runtime software auto-updates,
3879 # we will not attempt to re-load the service until this timeout has elapsed.
3880 - name: dom.vr.external.quit.timeout
3881 type: RelaxedAtomicInt32
3885 # Minimum number of milliseconds that the VR session will be kept
3886 # alive after the browser and content no longer are using the
3887 # hardware. If a VR multitasking environment, this should be set
3888 # very low or set to 0.
3889 - name: dom.vr.inactive.timeout
3890 type: RelaxedAtomicInt32
3894 # Maximum number of milliseconds the browser will wait for content to call
3895 # VRDisplay.requestPresent after emitting vrdisplayactivate during VR
3896 # link traversal. This prevents a long running event handler for
3897 # vrdisplayactivate from later calling VRDisplay.requestPresent, which would
3898 # result in a non-responsive browser in the VR headset.
3899 - name: dom.vr.navigation.timeout
3900 type: RelaxedAtomicInt32
3905 - name: dom.vr.oculus.enabled
3906 type: RelaxedAtomicBool
3907 #if defined(HAVE_64BIT_BUILD) && !defined(ANDROID)
3908 # We are only enabling WebVR by default on 64-bit builds (Bug 1384459).
3911 # On Android, this pref is irrelevant.
3916 # When enabled, Oculus sessions may be created with the ovrInit_Invisible
3917 # flag if a page is using tracking but not presenting. When a page
3918 # begins presenting VR frames, the session will be re-initialized without
3919 # the flag. This eliminates the "Firefox not responding" warnings in
3920 # the headset, but might not be compatible with all versions of the Oculus
3922 - name: dom.vr.oculus.invisible.enabled
3923 type: RelaxedAtomicBool
3927 # Minimum number of milliseconds after content has stopped VR presentation
3928 # before the Oculus session is re-initialized to an invisible / tracking
3929 # only mode. If this value is too high, users will need to wait longer
3930 # after stopping WebVR presentation before automatically returning to the
3931 # Oculus home interface. (They can immediately return to the Oculus Home
3932 # interface through the Oculus HUD without waiting this duration)
3933 # If this value is too low, the Oculus Home interface may be visible
3934 # momentarily during VR link navigation.
3935 - name: dom.vr.oculus.present.timeout
3936 type: RelaxedAtomicInt32
3941 - name: dom.vr.openvr.enabled
3942 type: RelaxedAtomicBool
3943 #if !defined(HAVE_64BIT_BUILD) && !defined(ANDROID)
3944 # We are only enabling WebVR by default on 64-bit builds (Bug 1384459).
3946 #elif defined(XP_WIN) || defined(XP_MACOSX)
3947 # We enable OpenVR by default for Windows and macOS.
3950 # See Bug 1310663 (Linux). On Android, this pref is irrelevant.
3956 - name: dom.vr.osvr.enabled
3957 type: RelaxedAtomicBool
3961 # Pose prediction reduces latency effects by returning future predicted HMD
3962 # poses to callers of the WebVR API. This currently only has an effect for
3963 # Oculus Rift on SDK 0.8 or greater.
3964 - name: dom.vr.poseprediction.enabled
3965 type: RelaxedAtomicBool
3969 # Enable a separate process for VR module.
3970 - name: dom.vr.process.enabled
3979 - name: dom.vr.process.startup_timeout_ms
3984 # Puppet device, used for simulating VR hardware within tests and dev tools.
3985 - name: dom.vr.puppet.enabled
3986 type: RelaxedAtomicBool
3990 # Starting VR presentation is only allowed within a user gesture or event such
3991 # as VRDisplayActivate triggered by the system. dom.vr.require-gesture allows
3992 # this requirement to be disabled for special cases such as during automated
3993 # tests or in a headless kiosk system.
3994 - name: dom.vr.require-gesture
3995 type: RelaxedAtomicBool
3999 # Is support for WebXR APIs enabled?
4000 - name: dom.vr.webxr.enabled
4001 type: RelaxedAtomicBool
4005 # Points in the native bounds geometry are required to be quantized
4006 # sufficiently to prevent fingerprinting. The WebXR spec suggests
4007 # quantizing to the nearest 5 centimeters.
4008 - name: dom.vr.webxr.quantization
4014 # Control firing WidgetMouseEvent by handling Windows pointer messages or
4016 - name: dom.w3c_pointer_events.dispatch_by_pointer_messages
4021 - name: dom.w3c_pointer_events.scroll_by_pen.enabled
4027 # If the value is >= 0, it will be used for max touch points in child processes.
4028 - name: dom.maxtouchpoints.testing.value
4033 # Maximum value of navigator.hardwareConcurrency.
4034 - name: dom.maxHardwareConcurrency
4035 type: RelaxedAtomicUint32
4036 #ifdef NIGHTLY_BUILD
4043 # W3C pointer events draft.
4044 - name: dom.w3c_pointer_events.implicit_capture
4049 # In case Touch API is enabled, this pref controls whether to support
4050 # ontouch* event handlers, document.createTouch, document.createTouchList and
4051 # document.createEvent("TouchEvent").
4052 - name: dom.w3c_touch_events.legacy_apis.enabled
4058 # 0 - disabled, 1 - enabled, 2 - autodetect
4059 # Autodetection is currently only supported on Windows and GTK3 (and assumed on
4061 - name: dom.w3c_touch_events.enabled
4063 #if defined(XP_MACOSX)
4070 # Is support for the Web Audio API enabled?
4071 - name: dom.webaudio.enabled
4076 - name: dom.webkitBlink.dirPicker.enabled
4077 type: RelaxedAtomicBool
4078 value: @IS_NOT_ANDROID@
4081 # Is the 'delegatesFocus' attribute for shadow dom
4082 - name: dom.shadowdom.delegatesFocus.enabled
4087 # Is the 'assign' API for slot element enabled?
4088 - name: dom.shadowdom.slot.assign.enabled
4093 # NOTE: This preference is used in unit tests. If it is removed or its default
4094 # value changes, please update test_sharedMap_static_prefs.js accordingly.
4095 - name: dom.webcomponents.shadowdom.report_usage
4100 # Is support for custom element disabledFeatures enabled?
4101 - name: dom.webcomponents.disabledFeatures.enabled
4106 # Is support for custom element elementInternals enabled?
4107 - name: dom.webcomponents.elementInternals.enabled
4112 # Is support for form-associated custom element enabled?
4113 - name: dom.webcomponents.formAssociatedCustomElement.enabled
4118 # Is support for the Web GPU API enabled?
4119 - name: dom.webgpu.enabled
4120 type: RelaxedAtomicBool
4124 # Is support for HTMLInputElement.webkitEntries enabled?
4125 - name: dom.webkitBlink.filesystem.enabled
4127 value: @IS_NOT_ANDROID@
4130 # Whether the Web Locks API is enabled
4131 - name: dom.weblocks.enabled
4132 type: RelaxedAtomicBool
4136 # Whether the WebMIDI API is enabled
4137 - name: dom.webmidi.enabled
4139 #if !defined(MOZ_WIDGET_ANDROID) && defined(EARLY_BETA_OR_EARLIER)
4146 # midi permission is addon-gated
4147 - name: dom.webmidi.gated
4152 - name: dom.webnotifications.allowinsecure
4153 type: RelaxedAtomicBool
4157 - name: dom.webnotifications.allowcrossoriginiframe
4158 type: RelaxedAtomicBool
4162 - name: dom.webnotifications.enabled
4163 type: RelaxedAtomicBool
4167 - name: dom.webnotifications.requireuserinteraction
4168 type: RelaxedAtomicBool
4172 - name: dom.webnotifications.requireinteraction.enabled
4173 type: RelaxedAtomicBool
4174 value: @IS_NIGHTLY_BUILD@
4177 - name: dom.webnotifications.silent.enabled
4178 type: RelaxedAtomicBool
4179 #if defined(MOZ_WIDGET_ANDROID)
4180 value: @IS_NIGHTLY_BUILD@
4186 - name: dom.webnotifications.vibrate.enabled
4187 type: RelaxedAtomicBool
4188 #if defined(MOZ_WIDGET_ANDROID)
4189 value: @IS_NIGHTLY_BUILD@
4195 - name: dom.webnotifications.serviceworker.enabled
4196 type: RelaxedAtomicBool
4200 # Is support for Window.event enabled?
4201 - name: dom.window.event.enabled
4206 - name: dom.window.history.async
4211 # Enable the "noreferrer" feature argument for window.open()
4212 - name: dom.window.open.noreferrer.enabled
4217 - name: dom.window.content.untrusted.enabled
4222 - name: dom.window.clientinformation.enabled
4227 - name: dom.window.sidebar.enabled
4232 - name: dom.worker.canceling.timeoutMilliseconds
4233 type: RelaxedAtomicUint32
4234 value: 30000 # 30 seconds
4237 # Is support for compiling DOM worker scripts directly from UTF-8 (without ever
4238 # inflating to UTF-16) enabled?
4239 - name: dom.worker.script_loader.utf8_parsing.enabled
4240 type: RelaxedAtomicBool
4244 - name: dom.worker.use_medium_high_event_queue
4245 type: RelaxedAtomicBool
4249 # Enables the dispatching of console log events from worker threads to the
4251 - name: dom.worker.console.dispatch_events_to_main_thread
4252 type: RelaxedAtomicBool
4256 - name: dom.workers.testing.enabled
4257 type: RelaxedAtomicBool
4261 - name: dom.worklet.enabled
4266 # Enable content type normalization of XHR uploads via MIME Sniffing standard
4267 - name: dom.xhr.standard_content_type_normalization
4268 type: RelaxedAtomicBool
4272 # When this pref is set, parent documents may consider child iframes have
4273 # loaded while they are still loading.
4274 - name: dom.cross_origin_iframes_loaded_in_background
4279 # WebIDL test prefs.
4280 - name: dom.webidl.test1
4284 - name: dom.webidl.test2
4289 - name: dom.webidl.crosscontext_hasinstance.enabled
4290 type: RelaxedAtomicBool
4291 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
4294 # WebShare API - exposes navigator.share()
4295 - name: dom.webshare.enabled
4298 value: @IS_EARLY_BETA_OR_EARLIER@
4304 # WebShare API - allows WebShare without user interaction (for tests only).
4305 - name: dom.webshare.requireinteraction
4310 # about:home and about:newtab include remote snippets that contain arbitrarily
4311 # placed anchor tags in their content; we want sanitization to be turned off
4312 # in order to render them correctly
4313 - name: dom.about_newtab_sanitization.enabled
4318 # Hide the confirm dialog when a POST request is reloaded.
4319 - name: dom.confirm_repost.testing.always_accept
4324 # Whether we should suspend inactive tabs or not
4325 - name: dom.suspend_inactive.enabled
4330 # The following three prefs control the maximum script run time before slow
4333 # Controls the time that a content script can run before showing a
4335 - name: dom.max_script_run_time
4340 # Controls whether we want to wait for user input before surfacing notifying
4341 # the parent process about a long-running script.
4342 - name: dom.max_script_run_time.require_critical_input
4344 # On desktop, we don't want to annoy the user with a notification if they're
4345 # not interacting with the browser. On Android however, we automatically
4346 # terminate long-running scripts, so we want to make sure we don't get in the
4347 # way of that by waiting for input.
4348 #if defined(MOZ_WIDGET_ANDROID)
4355 - name: dom.max_chrome_script_run_time
4360 - name: dom.max_ext_content_script_run_time
4365 #---------------------------------------------------------------------------
4366 # Prefs starting with "editor"
4367 #---------------------------------------------------------------------------
4369 # Default background color of HTML editor. This is referred only when
4370 # "editor.use_custom_colors" is set to `true`.
4371 - name: editor.background_color
4376 # Default length unit of indent blocks with CSS.
4377 # TODO: Delete this pref after checking the compatibility with the other
4379 - name: editor.css.default_length_unit
4384 # Allow or disallow to delete `<hr>` element when caret is at start of
4385 # following line of the element. If false, Backspace from start of following
4386 # line of an `<hr>` element causes moving caret to immediatly after the `<hr>`
4387 # element, and then, another Backspace can delete it.
4388 - name: editor.hr_element.allow_to_delete_from_following_line
4393 # Whether editor initializes attributes and/or child nodes of newly inserting
4394 # element before or after connecting to the DOM tree.
4395 - name: editor.initialize_element_before_connect
4400 # Delay to mask last input character in password fields.
4401 # If negative value, to use platform's default behavior.
4402 # If 0, no delay to mask password.
4403 # Otherwise, password fields unmask last input character(s) during specified
4404 # time (in milliseconds).
4405 - name: editor.password.mask_delay
4410 # Set to true when you test mask_delay of password editor. If this is set
4411 # to true, "MozLastInputMasked" is fired when last input characters are
4412 # masked by timeout.
4413 - name: editor.password.testing.mask_delay
4418 # When an element becomes absolutely positioned, this offset is applied to
4419 # both `left` and `top`.
4420 # TODO: Delete this pref after verifying that nobody uses this pref.
4421 - name: editor.positioning.offset
4426 # Whether resizer keeps aspect ratio of `<img>` or can change its width/height
4428 # TODO: Delete this pref after verifying that nobody uses this pref.
4429 - name: editor.resizing.preserve_ratio
4434 # How line breakers are treated in single line editor:
4435 # * 0: Only remove the leading and trailing newlines.
4436 # * 1: Remove the first newline and all characters following it.
4437 # * 2: Replace newlines with spaces (default of Firefox).
4438 # * 3: Remove newlines from the string.
4439 # * 4: Replace newlines with commas (default of Thunderbird).
4440 # * 5: Collapse newlines and surrounding white space characters and
4441 # remove them from the string.
4442 # Other values are treated as 1.
4443 - name: editor.singleLine.pasteNewlines
4448 # Whether user pastes should be truncated.
4449 - name: editor.truncate_user_pastes
4454 # When this is set to `true`, "editor.background_color" must be set, then,
4455 # the value is treated as default background color of the HTML editor.
4456 # If `false` and "browser.display.use_system_colors" is set to `true`,
4457 # "browser.display.background_color" is used instead.
4458 # Otherwise, no color is used as default background color.
4459 # This pref is for Thunderbird and SeaMonkey.
4460 - name: editor.use_custom_colors
4465 # If this is set to `true`, CSS mode of style editor is enabled by default
4466 # unless it's a mail editor.
4467 # This pref is for Thunderbird and SeaMonkey.
4468 - name: editor.use_css
4473 # Whether inserting <div> when typing Enter in a block element which can
4474 # contain <div>. If false, inserts <br> instead.
4475 # TODO: Delete this pref after verifying nobody uses this pref.
4476 - name: editor.use_div_for_default_newlines
4481 # Whether enabling blink compatible white-space normalizer or keep using
4482 # Gecko's traditional white-space normalizer.
4483 - name: editor.white_space_normalization.blink_compatible
4488 # General prefs for editor, indicating whether Gecko-specific editing UI is
4489 # enabled by default. Those UIs are not implemented by any other browsers. So,
4490 # only Firefox users can change some styles with them. This means that Firefox
4491 # users may get unexpected result of some web apps if they assume that users
4492 # cannot change such styles.
4493 - name: editor.resizing.enabled_by_default
4497 - name: editor.inline_table_editing.enabled_by_default
4501 - name: editor.positioning.enabled_by_default
4506 #---------------------------------------------------------------------------
4507 # Prefs starting with "extensions."
4508 #---------------------------------------------------------------------------
4510 # Whether the InstallTrigger implementation should be enabled (or hidden and
4511 # none of its methods available).
4512 - name: extensions.InstallTriggerImpl.enabled
4517 # Whether the InstallTrigger implementation should be enabled (or completely
4518 # hidden), separate from InstallTriggerImpl because InstallTrigger is improperly
4519 # used also for UA detection.
4520 - name: extensions.InstallTrigger.enabled
4526 # Whether the background.service_worker in the extension manifest.json file
4528 - name: extensions.backgroundServiceWorker.enabled
4533 # Maximum number of misspelled words in a text.
4534 - name: extensions.spellcheck.inline.max-misspellings
4539 # Whether the extensions can register a service worker on its own.
4540 # NOTE: WebExtensions Framework ability to register a background service worker
4541 # is not controlled by this pref, only the extension code ability to use
4542 # navigator.serviceWorker.register is locked behind this pref.
4543 - name: extensions.serviceWorkerRegister.allowed
4548 # Legacy behavior on filterResponse calls on intercepted sw script requests.
4549 - name: extensions.filterResponseServiceWorkerScript.disabled
4554 # This pref governs whether we run webextensions in a separate process (true)
4555 # or the parent/main process (false)
4556 - name: extensions.webextensions.remote
4557 type: RelaxedAtomicBool
4561 # Whether to expose the MockExtensionAPI test interface in tests.
4562 # The interface MockExtensionAPI doesn't represent a real extension API,
4563 # it is only available in test and does include a series of cases useful
4564 # to test the API request handling without tying the unit test to a
4565 # specific WebExtensions API.
4566 - name: extensions.webidl-api.expose_mock_interface
4567 type: RelaxedAtomicBool
4571 #---------------------------------------------------------------------------
4572 # Prefs starting with "fission."
4573 #---------------------------------------------------------------------------
4575 # Whether to enable Fission in new windows by default.
4576 # IMPORTANT: This preference should *never* be checked directly, since any
4577 # session can contain a mix of Fission and non-Fission windows. Instead,
4578 # callers should check whether the relevant nsILoadContext has the
4579 # `useRemoteSubframes` flag set.
4580 # Callers which cannot use `useRemoteSubframes` must use
4581 # `Services.appinfo.fissionAutostart` or `mozilla::FissionAutostart()` to check
4582 # if fission is enabled by default.
4583 - name: fission.autostart
4585 value: @IS_NOT_ANDROID@
4588 # Prefs used by normandy to orchestrate the fission experiment. For more
4589 # details, see the comments in nsAppRunner.cpp.
4590 - name: fission.experiment.enrollmentStatus
4595 - name: fission.experiment.startupEnrollmentStatus
4600 # This pref has no effect within fission windows, it only controls the
4601 # behaviour within non-fission windows. If true, preserve browsing contexts
4602 # between process swaps.
4603 - name: fission.preserve_browsing_contexts
4608 # Store the session history in the parent process, and access it over IPC
4609 # from the child processes.
4610 - name: fission.sessionHistoryInParent
4614 do_not_use_directly: true
4616 # If session history is stored in the parent process, enable bfcache for it.
4617 - name: fission.bfcacheInParent
4621 do_not_use_directly: true
4623 # Allow renaming of processes from Private Windows to the eTLD+1 on nightly
4624 # Setting this pref creates a privacy leak, but helps greatly with
4626 - name: fission.processPrivateWindowSiteNames
4631 # Allow renaming of process names to the eTLD+1 on all versions, NOT
4632 # including processes from Private Windows
4633 # Setting this pref creates a privacy leak, but helps greatly with
4635 - name: fission.processSiteNames
4640 # If true, allow process-switching documents loaded by <object> and <embed>
4641 # elements into a remote process.
4642 # NOTE: This pref has no impact outside of windows with the
4643 # `useRemoteSubframes` flag set.
4644 - name: fission.remoteObjectEmbed
4649 # The strategy used to control how sites are isolated into separate processes
4650 # when Fisison is enabled. This pref has no effect if Fission is disabled.
4651 # See the `WebContentIsolationStrategy` enum in `ProcessIsolation.cpp`.
4652 - name: fission.webContentIsolationStrategy
4657 # Time in seconds before a site loaded with the Cross-Origin-Opener-Policy
4658 # header is no longer considered high-value and isolated in the "highValueCOOP"
4660 - name: fission.highValue.coop.expiration
4662 value: 2592000 # 30 days (in seconds)
4665 # Time in seconds before a site are considered high-value by the login detection
4666 # service is no longer considered high-value and isolated in the "highValueHasSavedLogin"
4667 # or "highValueIsLoggedIn" configuration.
4668 - name: fission.highValue.login.expiration
4670 value: 2592000 # 30 days (in seconds)
4673 # If true, capture login attemp, and add "highValueIsLoggedIn" permission to
4674 # the permission manager no matter whether fission is enabled and
4675 # WebContentIsolationStrateg is set to IsolateHighvalue.
4676 - name: fission.highValue.login.monitor
4681 # If true, do not send blocklisted preference values to the subprocess
4682 - name: fission.omitBlocklistedPrefsInSubprocesses
4683 type: RelaxedAtomicBool
4687 # If true, crash when a blocklisted preference is accessed in a subprocess
4688 - name: fission.enforceBlocklistedPrefsInSubprocesses
4689 type: RelaxedAtomicBool
4693 #---------------------------------------------------------------------------
4694 # Prefs starting with "font."
4695 #---------------------------------------------------------------------------
4697 # A value greater than zero enables font size inflation for
4698 # pan-and-zoom UIs, so that the fonts in a block are at least the size
4699 # that, if a block's width is scaled to match the device's width, the
4700 # fonts in the block are big enough that at most the pref value ems of
4701 # text fit in *the width of the device*.
4703 # When both this pref and the next are set, the larger inflation is used.
4704 - name: font.size.inflation.emPerLine
4709 # A value greater than zero enables font size inflation for
4710 # pan-and-zoom UIs, so that if a block's width is scaled to match the
4711 # device's width, the fonts in a block are at least the given font size.
4712 # The value given is in twips, i.e., 1/20 of a point, or 1/1440 of an inch.
4714 # When both this pref and the previous are set, the larger inflation is used.
4715 - name: font.size.inflation.minTwips
4720 # In products with multi-mode pan-and-zoom and non-pan-and-zoom UIs,
4721 # this pref forces font inflation to always be enabled in all modes.
4722 # That is, any heuristics used to detect pan-and-zoom
4723 # vs. non-pan-and-zoom modes are disabled and all content is treated
4724 # as pan-and-zoom mode wrt font inflation.
4726 # This pref has no effect if font inflation is not enabled through
4727 # either of the prefs above. It has no meaning in single-mode UIs.
4728 - name: font.size.inflation.forceEnabled
4733 # In products with multi-mode pan-and-zoom and non-pan-and-zoom UIs,
4734 # this pref disables font inflation in master-process contexts where
4735 # existing heuristics can't be used determine enabled-ness.
4737 # This pref has no effect if font inflation is not enabled through
4738 # either of the prefs above. The "forceEnabled" pref above overrides
4740 - name: font.size.inflation.disabledInMasterProcess
4745 # Defines the font size inflation mapping intercept parameter.
4747 # Font size inflation computes a minimum font size, m, based on
4748 # other preferences (see font.size.inflation.minTwips and
4749 # font.size.inflation.emPerLine, above) and the width of the
4750 # frame in which the text resides. Using this minimum, a specified
4751 # font size, s, is mapped to an inflated font size, i, using an
4752 # equation that varies depending on the value of the font size
4753 # inflation mapping intercept parameter, P.
4755 # If the intercept parameter is negative, then the following mapping
4760 # If the intercept parameter is non-negative, then the mapping function
4761 # is a function such that its graph meets the graph of i = s at the
4762 # point where both i and s are (1 + P/2) * m for values of s that are
4763 # large enough. This means that when s=0, i is always equal to m.
4764 - name: font.size.inflation.mappingIntercept
4769 # Since the goal of font size inflation is to avoid having to
4770 # repeatedly scroll side to side to read a block of text, and there are
4771 # a number of page layouts where a relatively small chunk of text is
4772 # better off not being inflated according to the same algorithm we use
4773 # for larger chunks of text, we want a threshold for an amount of text
4774 # that triggers font size inflation. This preference controls that
4777 # It controls the threshold used within an *approximation* of the
4778 # number of lines of text we use. In particular, if we assume that
4779 # each character (collapsing collapsible whitespace) has a width the
4780 # same as the em-size of the font (when, normally, it's actually quite
4781 # a bit smaller on average), this preference gives the percentage of a
4782 # number of lines of text we'd need to trigger inflation. This means
4783 # that a percentage of 100 means that we'd need a number of characters
4784 # (we know the font size and the width) equivalent to one line of
4785 # square text (which is actually a lot less than a real line of text).
4787 # A value of 0 means there's no character length threshold.
4788 - name: font.size.inflation.lineThreshold
4793 # This controls the percentage that fonts will be inflated, if font
4794 # size inflation is enabled. Essentially, if we have a specified font
4795 # size, s, and an inflated font size, i, this specifies that the ratio
4796 # i/s * 100 should never exceed the value of this preference. In order
4797 # for this preference to have any effect, its value must be greater
4798 # than 100, since font inflation can never decrease the ratio i/s.
4799 - name: font.size.inflation.maxRatio
4804 # This setting corresponds to a global text zoom setting affecting
4805 # all content that is not already subject to font size inflation.
4806 # It is interpreted as a percentage value that is applied on top
4807 # of the document's current text zoom setting.
4809 # The resulting total zoom factor (text zoom * system font scale)
4810 # will be limited by zoom.minPercent and maxPercent.
4811 - name: font.size.systemFontScale
4816 #---------------------------------------------------------------------------
4817 # Prefs starting with "full-screen-api."
4818 #---------------------------------------------------------------------------
4820 - name: full-screen-api.enabled
4825 - name: full-screen-api.allow-trusted-requests-only
4830 - name: full-screen-api.mouse-event-allow-left-button-only
4835 - name: full-screen-api.exit-on.windowOpen
4840 - name: full-screen-api.exit-on.windowRaise
4845 - name: full-screen-api.pointer-lock.enabled
4850 #---------------------------------------------------------------------------
4851 # Prefs starting with "fuzzing.". It's important that these can only be
4852 # checked in fuzzing builds (when FUZZING is defined), otherwise you could
4853 # enable the fuzzing stuff on your regular build which would be bad :)
4854 #---------------------------------------------------------------------------
4857 - name: fuzzing.enabled
4859 #ifdef FUZZING_SNAPSHOT
4866 - name: fuzzing.necko.enabled
4867 type: RelaxedAtomicBool
4871 - name: fuzzing.necko.http3
4872 type: RelaxedAtomicBool
4878 #---------------------------------------------------------------------------
4879 # Prefs starting with "general."
4880 #---------------------------------------------------------------------------
4882 - name: general.aboutConfig.enable
4887 # Limits the depth of recursive conversion of data when opening
4888 # a content to view. This is mostly intended to prevent infinite
4889 # loops with faulty converters involved.
4890 - name: general.document_open_conversion_depth_limit
4895 - name: general.smoothScroll
4896 type: RelaxedAtomicBool
4900 # This pref and general.smoothScroll.stopDecelerationWeighting determine
4901 # the timing function.
4902 - name: general.smoothScroll.currentVelocityWeighting
4907 # To connect consecutive scroll events into a continuous flow, the animation's
4908 # duration should be longer than scroll events intervals (or else the scroll
4909 # will stop before the next event arrives - we're guessing the next interval
4910 # by averaging recent intervals).
4911 # This defines how much longer the duration is compared to the events
4912 # interval (percentage).
4913 - name: general.smoothScroll.durationToIntervalRatio
4914 type: RelaxedAtomicInt32
4918 - name: general.smoothScroll.lines
4919 type: RelaxedAtomicBool
4923 - name: general.smoothScroll.lines.durationMaxMS
4924 type: RelaxedAtomicInt32
4928 - name: general.smoothScroll.lines.durationMinMS
4929 type: RelaxedAtomicInt32
4933 - name: general.smoothScroll.mouseWheel
4934 type: RelaxedAtomicBool
4938 - name: general.smoothScroll.mouseWheel.durationMaxMS
4939 type: RelaxedAtomicInt32
4943 - name: general.smoothScroll.mouseWheel.durationMinMS
4944 type: RelaxedAtomicInt32
4948 - name: general.smoothScroll.other
4949 type: RelaxedAtomicBool
4953 - name: general.smoothScroll.other.durationMaxMS
4954 type: RelaxedAtomicInt32
4958 - name: general.smoothScroll.other.durationMinMS
4959 type: RelaxedAtomicInt32
4963 - name: general.smoothScroll.pages
4964 type: RelaxedAtomicBool
4968 - name: general.smoothScroll.pages.durationMaxMS
4969 type: RelaxedAtomicInt32
4973 - name: general.smoothScroll.pages.durationMinMS
4974 type: RelaxedAtomicInt32
4978 - name: general.smoothScroll.scrollbars
4979 type: RelaxedAtomicBool
4983 - name: general.smoothScroll.scrollbars.durationMaxMS
4984 type: RelaxedAtomicInt32
4988 - name: general.smoothScroll.scrollbars.durationMinMS
4989 type: RelaxedAtomicInt32
4993 - name: general.smoothScroll.pixels
4994 type: RelaxedAtomicBool
4998 - name: general.smoothScroll.pixels.durationMaxMS
4999 type: RelaxedAtomicInt32
5003 - name: general.smoothScroll.pixels.durationMinMS
5004 type: RelaxedAtomicInt32
5008 # This pref and general.smoothScroll.currentVelocityWeighting determine
5009 # the timing function.
5010 - name: general.smoothScroll.stopDecelerationWeighting
5015 # Alternative smooth scroll physics. ("MSD" = Mass-Spring-Damper)
5016 - name: general.smoothScroll.msdPhysics.enabled
5017 type: RelaxedAtomicBool
5021 - name: general.smoothScroll.msdPhysics.continuousMotionMaxDeltaMS
5022 type: RelaxedAtomicInt32
5026 - name: general.smoothScroll.msdPhysics.motionBeginSpringConstant
5027 type: RelaxedAtomicInt32
5031 - name: general.smoothScroll.msdPhysics.slowdownMinDeltaMS
5032 type: RelaxedAtomicInt32
5036 - name: general.smoothScroll.msdPhysics.slowdownMinDeltaRatio
5041 - name: general.smoothScroll.msdPhysics.slowdownSpringConstant
5042 type: RelaxedAtomicInt32
5046 - name: general.smoothScroll.msdPhysics.regularSpringConstant
5047 type: RelaxedAtomicInt32
5051 - name: general.utility-process.startup_timeout_ms
5052 type: RelaxedAtomicInt32
5056 #---------------------------------------------------------------------------
5057 # Prefs starting with "geo."
5058 #---------------------------------------------------------------------------
5060 # Is support for Navigator.geolocation enabled?
5066 # Time, in milliseconds, to wait for the location provider to spin up.
5072 #---------------------------------------------------------------------------
5073 # Prefs starting with "gfx."
5074 #---------------------------------------------------------------------------
5076 - name: gfx.allow-texture-direct-mapping
5081 # Allow 24-bit colour when the hardware supports it.
5082 - name: gfx.android.rgb16.force
5087 - name: gfx.apitrace.enabled
5092 # Nb: we ignore this pref on release and beta.
5093 - name: gfx.blocklist.all
5098 - name: gfx.canvas.accelerated
5099 type: RelaxedAtomicBool
5103 - name: gfx.canvas.accelerated.cache-items
5104 type: RelaxedAtomicUint32
5108 - name: gfx.canvas.accelerated.cache-size
5109 type: RelaxedAtomicUint32
5113 - name: gfx.canvas.accelerated.reserve-empty-cache
5114 type: RelaxedAtomicUint32
5118 - name: gfx.canvas.accelerated.max-size
5119 type: RelaxedAtomicInt32
5123 - name: gfx.canvas.accelerated.min-size
5124 type: RelaxedAtomicInt32
5128 - name: gfx.canvas.accelerated.max-surface-size
5129 type: RelaxedAtomicUint32
5133 - name: gfx.canvas.accelerated.shared-page-size
5134 type: RelaxedAtomicUint32
5138 # The minimum number of frames before acting on performance profile info
5139 - name: gfx.canvas.accelerated.profile-frames
5140 type: RelaxedAtomicUint32
5144 # The ratio of failed frames to total frames when to fall back from acceleration
5145 - name: gfx.canvas.accelerated.profile-fallback-ratio
5150 # The ratio of cache misses at which to fail a profile frame
5151 - name: gfx.canvas.accelerated.profile-cache-miss-ratio
5156 # 0x7fff is the maximum supported xlib surface size and is more than enough for canvases.
5157 - name: gfx.canvas.max-size
5158 type: RelaxedAtomicInt32
5162 - name: gfx.canvas.remote
5163 type: RelaxedAtomicBool
5171 - name: gfx.color_management.force_srgb
5172 type: RelaxedAtomicBool
5176 - name: gfx.color_management.native_srgb
5177 type: RelaxedAtomicBool
5178 #if defined(XP_MACOSX)
5185 - name: gfx.color_management.enablev4
5186 type: RelaxedAtomicBool
5187 #if defined(XP_MACOSX) || defined(NIGHTLY_BUILD)
5194 # 0 = Off, 1 = Full, 2 = Tagged Images Only.
5195 # See CMSMode in gfx/thebes/gfxPlatform.h.
5196 - name: gfx.color_management.mode
5197 type: RelaxedAtomicInt32
5201 # The zero default here should match QCMS_INTENT_DEFAULT from qcms.h
5202 - name: gfx.color_management.rendering_intent
5203 type: RelaxedAtomicInt32
5207 - name: gfx.compositor.clearstate
5208 type: RelaxedAtomicBool
5212 # Whether GL contexts can be migrated to a different GPU (to match the one the
5213 # OS is using for composition).
5215 # 0 = force disable migration
5216 # 1 = use migration where in safe configurations (the default)
5217 # 2 = force enable migration (for testing)
5218 - name: gfx.compositor.gpu-migration
5219 type: RelaxedAtomicInt32
5223 - name: gfx.core-animation.tint-opaque
5224 type: RelaxedAtomicBool
5229 # Create specialized video-only layers for video content, and
5230 # attempt to isolate video layers in fullscreen windows.
5231 - name: gfx.core-animation.specialize-video
5232 type: RelaxedAtomicBool
5233 value: @IS_EARLY_BETA_OR_EARLIER@
5237 #if defined(XP_MACOSX) && defined(NIGHTLY_BUILD)
5238 # Spoof the timing of the video sample instead of marking the untimed
5239 # sample to be displayed immediately.
5240 - name: gfx.core-animation.specialize-video.spoof-timing
5241 type: RelaxedAtomicBool
5245 # Check that the sample has a color space and if it doesn't, log that
5246 # and supply the default color space from the main display.
5247 - name: gfx.core-animation.specialize-video.check-color-space
5248 type: RelaxedAtomicBool
5252 # Log properties of the video surface, buffer, and format.
5253 - name: gfx.core-animation.specialize-video.log
5254 type: RelaxedAtomicBool
5259 #if defined(MOZ_WIDGET_ANDROID)
5260 # Overrides the glClear color used when the surface origin is not (0, 0)
5261 # Used for drawing a border around the content.
5262 - name: gfx.compositor.override.clear-color.r
5267 - name: gfx.compositor.override.clear-color.g
5272 - name: gfx.compositor.override.clear-color.b
5277 - name: gfx.compositor.override.clear-color.a
5281 #endif # defined(MOZ_WIDGET_ANDROID)
5283 - name: gfx.content.always-paint
5284 type: RelaxedAtomicBool
5289 - name: gfx.content.skia-font-cache-size
5294 - name: gfx.device-reset.limit
5299 - name: gfx.device-reset.threshold-ms
5305 # Whether to disable the automatic detection and use of direct2d.
5306 - name: gfx.direct2d.disabled
5311 # Whether to attempt to enable Direct2D regardless of automatic detection or
5313 - name: gfx.direct2d.force-enabled
5318 # Whether to defer destruction of Direct2D DrawTargets to the paint thread
5320 - name: gfx.direct2d.destroy-dt-on-paintthread
5321 type: RelaxedAtomicBool
5325 - name: gfx.direct3d11.reuse-decoder-device
5326 type: RelaxedAtomicInt32
5327 #ifdef NIGHTLY_BUILD
5334 - name: gfx.direct3d11.allow-keyed-mutex
5335 type: RelaxedAtomicBool
5339 - name: gfx.direct3d11.use-double-buffering
5340 type: RelaxedAtomicBool
5344 - name: gfx.direct3d11.enable-debug-layer
5349 - name: gfx.direct3d11.break-on-error
5354 - name: gfx.direct3d11.sleep-on-create-device
5359 # Rate by which the frame rate is divided. I.e. at a number higher than 1 we
5360 # will only refresh every <x> frames.
5361 - name: gfx.display.frame-rate-divisor
5362 type: RelaxedAtomicInt32
5366 # Whether to preserve color bitmap tables in fonts (bypassing OTS).
5367 # Currently these are supported only on platforms where we use Freetype
5368 # to render fonts (Linux/Gtk and Android).
5369 - name: gfx.downloadable_fonts.keep_color_bitmaps
5370 type: RelaxedAtomicBool
5374 # Whether font sanitization is performed on the main thread or not.
5375 - name: gfx.downloadable_fonts.sanitize_omt
5376 type: RelaxedAtomicBool
5380 # Whether to validate OpenType variation tables in fonts.
5381 - name: gfx.downloadable_fonts.validate_variation_tables
5382 type: RelaxedAtomicBool
5386 # Whether OTS validation should be applied to OpenType Layout (OTL) tables.
5387 - name: gfx.downloadable_fonts.otl_validation
5388 type: RelaxedAtomicBool
5389 value: @IS_NOT_RELEASE_OR_BETA@
5392 - name: gfx.draw-color-bars
5393 type: RelaxedAtomicBool
5397 - name: gfx.e10s.hide-plugins-for-scroll
5402 - name: gfx.e10s.font-list.shared
5407 # Do we fire a notification about missing fonts, so the front-end can decide
5408 # whether to try and do something about it (e.g. download additional fonts)?
5409 - name: gfx.missing_fonts.notify
5410 type: RelaxedAtomicBool
5414 #if !defined(MOZ_WIDGET_ANDROID)
5415 - name: gfx.egl.prefer-gles.enabled
5421 # [Windows] Whether registry FontSubstitutes entries are used unconditionally,
5422 # or only if the original font is not available.
5424 - name: gfx.windows-font-substitutes.always
5430 - name: gfx.font-list-omt.enabled
5432 #if defined(XP_MACOSX)
5439 # Whether to load fonts (e.g. Twemoji Mozilla) bundled with the application:
5440 # -1 - Auto behavior based on OS version (currently, disables loading on
5441 # "low-memory" Android devices)
5442 # 0 - Skip loading any bundled fonts
5443 # 1 - Always load bundled fonts
5444 - name: gfx.bundled-fonts.activate
5449 - name: gfx.font_loader.delay
5458 # Disable antialiasing of Ahem, for use in tests.
5459 - name: gfx.font_rendering.ahem_antialias_none
5460 type: RelaxedAtomicBool
5464 #if defined(XP_MACOSX)
5465 # Set to true to revert from HarfBuzz AAT shaping to the old Core Text
5467 - name: gfx.font_rendering.coretext.enabled
5468 type: RelaxedAtomicBool
5473 - name: gfx.font_rendering.opentype_svg.enabled
5474 type: RelaxedAtomicBool
5479 - name: gfx.font_rendering.fallback.async
5480 type: RelaxedAtomicBool
5485 # Whether the DirectWrite bold simulation should be used when a bold font-weight
5486 # is requested but no bold face available in the family. This renders poorly with
5487 # some third-party fonts, so by default we disable it for webfonts and allow it
5488 # only with locally-installed fonts.
5490 # 0 - never use DWrite bold simulation; always multi-strike instead
5491 # 1 - use DWrite bold for installed fonts, multi-strike for webfont resources
5492 # 2 - use DWrite bold for all fonts
5493 - name: gfx.font_rendering.directwrite.bold_simulation
5494 type: RelaxedAtomicUint32
5499 # The level of logging:
5502 # - 2: adds warnings;
5503 # - 3 or 4: adds debug logging.
5504 # If you set the value to 4, you will also need to set the environment
5505 # variable MOZ_LOG to gfx:4. See mozilla/Logging.h for details.
5506 - name: gfx.logging.level
5507 type: RelaxedAtomicInt32
5508 value: mozilla::gfx::LOG_DEFAULT
5510 include: mozilla/gfx/LoggingConstants.h
5512 - name: gfx.logging.crash.length
5517 # The maximums here are quite conservative, we can tighten them if problems show up.
5518 - name: gfx.logging.texture-usage.enabled
5523 - name: gfx.logging.peak-texture-usage.enabled
5528 - name: gfx.logging.slow-frames.enabled
5533 # Use gfxPlatform::MaxAllocSize instead of the pref directly.
5534 - name: gfx.max-alloc-size
5536 value: (int32_t)500000000
5538 do_not_use_directly: true
5540 # Use gfxPlatform::MaxTextureSize instead of the pref directly.
5541 - name: gfx.max-texture-size
5543 value: (int32_t)32767
5545 do_not_use_directly: true
5547 # Enable OffscreenCanvas everywhere.
5548 - name: gfx.offscreencanvas.enabled
5549 type: RelaxedAtomicBool
5553 # Enable OffscreenCanvas based on the domain allowlist.
5554 - name: gfx.offscreencanvas.domain-enabled
5555 type: RelaxedAtomicBool
5559 # Domains included in the allowlist.
5560 - name: gfx.offscreencanvas.domain-allowlist
5562 value: "*.zoom.us,zoom.us"
5565 - name: gfx.omta.background-color
5570 - name: gfx.partialpresent.force
5571 type: RelaxedAtomicInt32
5576 - name: gfx.swap-interval.glx
5577 type: RelaxedAtomicBool
5581 - name: gfx.swap-interval.egl
5582 type: RelaxedAtomicBool
5584 #ifdef MOZ_WIDGET_ANDROID
5591 # Log severe performance warnings to the error console and profiles.
5592 # This should be use to quickly find which slow paths are used by test cases.
5593 - name: gfx.perf-warnings.enabled
5594 type: RelaxedAtomicBool
5599 # Whether to force using GLX over EGL.
5600 - name: gfx.x11-egl.force-disabled
5605 # Whether to force using EGL over GLX.
5606 - name: gfx.x11-egl.force-enabled
5612 - name: gfx.testing.device-fail
5613 type: RelaxedAtomicBool
5617 - name: gfx.testing.device-reset
5618 type: RelaxedAtomicInt32
5622 - name: gfx.text.disable-aa
5627 - name: gfx.text.subpixel-position.force-enabled
5632 - name: gfx.text.subpixel-position.force-disabled
5637 - name: gfx.use-iosurface-textures
5642 - name: gfx.use-mutex-on-present
5647 - name: gfx.use-ahardwarebuffer-content
5652 # Use SurfaceTextures as preferred backend for TextureClient/Host.
5653 - name: gfx.use-surfacetexture-textures
5658 - name: gfx.vsync.collect-scroll-transforms
5659 type: RelaxedAtomicBool
5663 - name: gfx.vsync.compositor.unobserve-count
5668 - name: gfx.vsync.force-disable-waitforvblank
5669 type: RelaxedAtomicBool
5673 - name: gfx.will-change.ignore-opacity
5674 type: RelaxedAtomicBool
5678 # Should we override the blocklist to enable WebGPU?
5679 - name: gfx.webgpu.force-enabled
5684 # We expose two prefs: gfx.webrender.all and gfx.webrender.enabled.
5685 # The first enables WR+additional features, and the second just enables WR.
5686 # For developer convenience, building with --enable-webrender=true or just
5687 # --enable-webrender will set gfx.webrender.enabled to true by default.
5689 # We also have a pref gfx.webrender.all.qualified which is not exposed via
5690 # about:config. That pref enables WR but only on qualified hardware. This is
5691 # the pref we'll eventually flip to deploy WebRender to the target population.
5692 - name: gfx.webrender.all
5697 - name: gfx.webrender.enabled
5701 do_not_use_directly: true
5704 - name: gfx.webrender.force-angle
5710 # WebRender is not enabled when there is no GPU process on window when
5711 # WebRender uses ANGLE. It is for avoiding that WebGL and WebRender use ANGLE
5712 # at once. But there is a case that we want to enable WebRender for testing.
5714 - name: gfx.webrender.enabled-no-gpu-process-with-angle-win
5720 - name: gfx.webrender.blob-images
5721 type: RelaxedAtomicBool
5725 - name: gfx.webrender.svg-images
5726 type: RelaxedAtomicBool
5730 - name: gfx.webrender.debug.blob.paint-flashing
5731 type: RelaxedAtomicBool
5735 - name: gfx.webrender.debug.enable-capture
5740 - name: gfx.webrender.debug.dl.dump-parent
5741 type: RelaxedAtomicBool
5745 - name: gfx.webrender.debug.dl.dump-content
5746 type: RelaxedAtomicBool
5750 - name: gfx.webrender.debug.dl.dump-content-serialized
5751 type: RelaxedAtomicBool
5755 #ifdef MOZ_WIDGET_GTK
5756 - name: gfx.webrender.reject-software-driver
5762 - name: gfx.webrender.debug.highlight-painted-layers
5763 type: RelaxedAtomicBool
5767 - name: gfx.webrender.late-scenebuild-threshold
5768 type: RelaxedAtomicInt32
5772 - name: gfx.webrender.max-filter-ops-per-chain
5773 type: RelaxedAtomicUint32
5777 - name: gfx.webrender.batching.lookback
5782 - name: gfx.webrender.blob-tile-size
5787 - name: gfx.webrender.batched-upload-threshold
5789 #if defined(MOZ_WIDGET_ANDROID)
5796 - name: gfx.webrender.compositor
5798 #if defined(XP_WIN) || defined(XP_MACOSX)
5805 - name: gfx.webrender.compositor.force-enabled
5810 - name: gfx.webrender.compositor.max_update_rects
5815 - name: gfx.webrender.compositor.surface-pool-size
5820 # Number of damage rects we can give to the compositor for a new frame with
5821 # partial present. This controls whether partial present is used or not.
5822 - name: gfx.webrender.max-partial-present-rects
5824 #if defined(XP_WIN) || defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GTK)
5831 # Whether or not we can reuse the buffer contents using the GL buffer age
5832 # extension, if supported by the platform. This requires partial present
5834 - name: gfx.webrender.allow-partial-present-buffer-age
5839 # Whether or not we should force partial present on.
5840 - name: gfx.webrender.force-partial-present
5845 - name: gfx.webrender.enable-gpu-markers
5854 - name: gfx.webrender.enable-item-cache
5859 # Whether or not to fallback from WebRender to Software WebRender.
5860 - name: gfx.webrender.fallback.software
5866 # Whether or not to fallback from WebRender to Software WebRender + D3D11.
5867 - name: gfx.webrender.fallback.software-d3d11
5871 # Whether to use a video overlay layers with DirectComposition
5872 - name: gfx.webrender.dcomp-video-overlay-win
5876 # Enable video overlay even when it is blocked.
5877 - name: gfx.webrender.dcomp-video-overlay-win-force-enabled
5881 # Whether to use a yuv video overlay layers with DirectComposition
5882 - name: gfx.webrender.dcomp-video-yuv-overlay-win
5886 - name: gfx.webrender.dcomp-video-vp-scaling-win
5892 # Whether or not fallback to Software WebRender requires the GPU process.
5893 - name: gfx.webrender.fallback.software.requires-gpu-process
5898 - name: gfx.webrender.program-binary-disk
5900 #if defined(XP_WIN) || defined(ANDROID)
5907 - name: gfx.webrender.use-optimized-shaders
5912 - name: gfx.webrender.precache-shaders
5917 # When gl debug message is a high severity message, forwward it to gfx critical
5919 - name: gfx.webrender.gl-debug-message-critical-note
5921 #if defined(XP_WIN) && defined(NIGHTLY_BUILD)
5928 # Enable printing gl debug messages
5929 - name: gfx.webrender.gl-debug-message-print
5934 #ifdef NIGHTLY_BUILD
5935 # Keep this pref hidden on non-nightly builds to avoid people accidentally
5937 - name: gfx.webrender.panic-on-gl-error
5944 # Enables display of performance debugging counters when DirectComposition
5946 # Performance counters are displayed on the top-right corner of the screen.
5947 - name: gfx.webrender.debug.dcomp-counter
5948 type: RelaxedAtomicBool
5951 # Enables highlighting redraw regions of DCompositionVisual
5952 - name: gfx.webrender.debug.dcomp-redraw-regions
5953 type: RelaxedAtomicBool
5959 # Files show up in $HOME/Desktop/nativelayerdumps-PID/frame-123.html
5960 - name: gfx.webrender.debug.dump-native-layer-tree-to-file
5961 type: RelaxedAtomicBool
5966 - name: gfx.webrender.enable-low-priority-pool
5967 type: RelaxedAtomicBool
5968 #if defined(ANDROID)
5975 # Force subpixel anti-aliasing as much as possible, despite performance cost.
5976 - name: gfx.webrender.quality.force-subpixel-aa-where-possible
5982 - name: gfx.webrender.enable-client-storage
5988 # Width of WebRender tile size
5989 - name: gfx.webrender.picture-tile-width
5990 type: RelaxedAtomicInt32
5994 # Width of WebRender tile size
5995 - name: gfx.webrender.picture-tile-height
5996 type: RelaxedAtomicInt32
6000 # Whether to use EGL robustness or not.
6001 - name: gfx.webrender.prefer-robustness
6003 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
6010 # Whether to use the WebRender software backend
6011 - name: gfx.webrender.software
6016 # Whether to use the D3D11 RenderCompositor when using WebRender software backend
6017 - name: gfx.webrender.software.d3d11
6022 - name: gfx.webrender.software.opengl
6024 #if defined(MOZ_WIDGET_ANDROID)
6031 - name: gfx.webrender.software.d3d11.upload-mode
6032 type: RelaxedAtomicInt32
6036 # Whether to force widgets to don't support acceleration to use WebRender
6038 - name: gfx.webrender.unaccelerated-widget.force
6039 type: RelaxedAtomicBool
6043 # Enable a lower quality, but higher performance pinch-zoom mode. Primarily
6044 # for devices with weak GPUs, or when running SWGL.
6045 - name: gfx.webrender.low-quality-pinch-zoom
6047 #if defined(MOZ_WIDGET_ANDROID) && defined(NIGHTLY_BUILD)
6054 # Use vsync events generated by hardware
6055 - name: gfx.work-around-driver-bugs
6060 - name: gfx.ycbcr.accurate-conversion
6061 type: RelaxedAtomicBool
6065 #---------------------------------------------------------------------------
6066 # Prefs starting with "gl." (OpenGL)
6067 #---------------------------------------------------------------------------
6069 - name: gl.allow-high-power
6070 type: RelaxedAtomicBool
6074 - name: gl.ignore-dx-interop2-blacklist
6075 type: RelaxedAtomicBool
6079 - name: gl.use-tls-is-current
6080 type: RelaxedAtomicInt32
6084 #---------------------------------------------------------------------------
6085 # Prefs starting with "html5."
6086 #---------------------------------------------------------------------------
6088 # Turn HTML:inert on or off.
6090 # Do not enable this by default until there's consensus in:
6091 # https://github.com/whatwg/html/issues/7796
6092 - name: html5.inert.enabled
6094 value: @IS_EARLY_BETA_OR_EARLIER@
6097 # Toggle which thread the HTML5 parser uses for stream parsing.
6098 - name: html5.offmainthread
6103 # Time in milliseconds between the time a network buffer is seen and the timer
6104 # firing when the timer hasn't fired previously in this parse in the
6105 # off-the-main-thread HTML5 parser.
6106 - name: html5.flushtimer.initialdelay
6107 type: RelaxedAtomicInt32
6111 # Time in milliseconds between the time a network buffer is seen and the timer
6112 # firing when the timer has already fired previously in this parse.
6113 - name: html5.flushtimer.subsequentdelay
6114 type: RelaxedAtomicInt32
6118 #---------------------------------------------------------------------------
6119 # Prefs starting with "idle_period."
6120 #---------------------------------------------------------------------------
6122 - name: idle_period.min
6127 - name: idle_period.during_page_load.min
6132 - name: idle_period.cross_process_scheduling
6133 type: RelaxedAtomicBool
6137 #---------------------------------------------------------------------------
6138 # Prefs starting with "image."
6139 #---------------------------------------------------------------------------
6141 # The maximum size (in kB) that the aggregate frames of an animation can use
6142 # before it starts to discard already displayed frames and redecode them as
6144 - name: image.animated.decode-on-demand.threshold-kb
6145 type: RelaxedAtomicUint32
6149 # The minimum number of frames we want to have buffered ahead of an
6150 # animation's currently displayed frame.
6151 - name: image.animated.decode-on-demand.batch-size
6152 type: RelaxedAtomicUint32
6156 # Whether we should recycle already displayed frames instead of discarding
6157 # them. This saves on the allocation itself, and may be able to reuse the
6158 # contents as well. Only applies if generating full frames.
6159 - name: image.animated.decode-on-demand.recycle
6164 # Resume an animated image from the last displayed frame rather than
6165 # advancing when out of view.
6166 - name: image.animated.resume-from-last-displayed
6167 type: RelaxedAtomicBool
6171 # Maximum number of surfaces for an image before entering "factor of 2" mode.
6172 # This in addition to the number of "native" sizes of an image. A native size
6173 # is a size for which we can decode a frame without up or downscaling. Most
6174 # images only have 1, but some (i.e. ICOs) may have multiple frames for the
6175 # same data at different sizes.
6176 - name: image.cache.factor2.threshold-surfaces
6177 type: RelaxedAtomicInt32
6181 # Maximum size of a surface in KB we are willing to produce when rasterizing
6183 - name: image.cache.max-rasterized-svg-threshold-kb
6184 type: RelaxedAtomicInt32
6188 # The maximum size, in bytes, of the decoded images we cache.
6189 - name: image.cache.size
6194 # A weight, from 0-1000, to place on time when comparing to size.
6195 # Size is given a weight of 1000 - timeweight.
6196 - name: image.cache.timeweight
6201 # Decode all images automatically on load, ignoring our normal heuristics.
6202 - name: image.decode-immediately.enabled
6203 type: RelaxedAtomicBool
6207 # Whether we attempt to downscale images during decoding.
6208 - name: image.downscale-during-decode.enabled
6209 type: RelaxedAtomicBool
6213 # Whether we use EXIF metadata for image density.
6214 - name: image.exif-density-correction.enabled
6215 type: RelaxedAtomicBool
6219 # Whether EXIF density metadata is sanity checked against PixelXDimension and PixelYDimension
6220 - name: image.exif-density-correction.sanity-check.enabled
6221 type: RelaxedAtomicBool
6225 # The threshold for inferring that changes to an <img> element's |src|
6226 # attribute by JavaScript represent an animation, in milliseconds. If the |src|
6227 # attribute is changing more frequently than this value, then we enter a
6228 # special "animation mode" which is designed to eliminate flicker. Set to 0 to
6230 - name: image.infer-src-animation.threshold-ms
6231 type: RelaxedAtomicUint32
6235 # Whether the network request priority should be adjusted according
6236 # the layout and view frame position of each particular image.
6237 - name: image.layout_network_priority
6238 type: RelaxedAtomicBool
6242 # Chunk size for calls to the image decoders.
6243 - name: image.mem.decode_bytes_at_a_time
6248 # Discards inactive image frames and re-decodes them on demand from
6250 - name: image.mem.discardable
6251 type: RelaxedAtomicBool
6255 # Discards inactive image frames of _animated_ images and re-decodes them on
6256 # demand from compressed data. Has no effect if image.mem.discardable is false.
6257 - name: image.mem.animated.discardable
6262 # Whether the heap should be used for frames from animated images. On Android,
6263 # volatile memory keeps file handles open for each buffer.
6264 - name: image.mem.animated.use_heap
6265 type: RelaxedAtomicBool
6269 # Enable extra information for debugging in the image memory reports.
6270 - name: image.mem.debug-reporting
6271 type: RelaxedAtomicBool
6275 # Decodes images into shared memory to allow direct use in separate
6276 # rendering processes. Only applicable with WebRender.
6277 - name: image.mem.shared
6278 type: RelaxedAtomicBool
6282 # Force unmapping of unused shared surfaces after a timeout period or when we
6283 # encounter virtual memory pressure. By default this is only enabled on 32-bit
6285 - name: image.mem.shared.unmap.force-enabled
6290 # Minimum timeout to unmap shared surfaces since they have been last used,
6292 - name: image.mem.shared.unmap.min_expiration_ms
6297 # Mininum size for shared surfaces to consider unmapping, in kilobytes.
6298 - name: image.mem.shared.unmap.min_threshold_kb
6303 # How much of the data in the surface cache is discarded when we get a memory
6304 # pressure notification, as a fraction. The discard factor is interpreted as a
6305 # reciprocal, so a discard factor of 1 means to discard everything in the
6306 # surface cache on memory pressure, a discard factor of 2 means to discard half
6307 # of the data, and so forth. The default should be a good balance for desktop
6308 # and laptop systems, where we never discard visible images.
6309 - name: image.mem.surfacecache.discard_factor
6314 # Maximum size for the surface cache, in kilobytes.
6315 - name: image.mem.surfacecache.max_size_kb
6320 # Minimum timeout for expiring unused images from the surface cache, in
6321 # milliseconds. This controls how long we store cached temporary surfaces.
6322 - name: image.mem.surfacecache.min_expiration_ms
6327 # The surface cache's size, within the constraints of the maximum size set
6328 # above, is determined as a fraction of main memory size. The size factor is
6329 # interpreted as a reciprocal, so a size factor of 4 means to use no more than
6330 # 1/4 of main memory. The default should be a good balance for most systems.
6331 - name: image.mem.surfacecache.size_factor
6336 # Minimum buffer size in KB before using volatile memory over the heap.
6337 - name: image.mem.volatile.min_threshold_kb
6338 type: RelaxedAtomicInt32
6339 #if defined(ANDROID)
6340 # On Android, volatile memory keeps file handles open for each buffer.
6347 # How long in ms before we should start shutting down idle decoder threads.
6348 - name: image.multithreaded_decoding.idle_timeout
6353 # How many threads we'll use for multithreaded decoding. If < 0, will be
6354 # automatically determined based on the system's number of cores.
6355 - name: image.multithreaded_decoding.limit
6360 # Whether we record SVG images as blobs or not.
6361 - name: image.svg.blob-image
6362 type: RelaxedAtomicBool
6366 # Whether we attempt to decode WebP images or not.
6367 - name: image.webp.enabled
6368 type: RelaxedAtomicBool
6372 # Whether we attempt to decode AVIF images or not.
6373 - name: image.avif.enabled
6374 type: RelaxedAtomicBool
6375 #if defined(MOZ_AV1)
6382 # How strict we are in accepting/rejecting AVIF inputs according to whether they
6383 # conform to the specification
6384 # 0 = Permissive: accept whatever we can simply, unambiguously interpret
6385 # 1 = Normal: reject violations of "shall" specification directives
6386 # 2 = Strict: reject violations of "should" specification directives
6387 - name: image.avif.compliance_strictness
6388 type: RelaxedAtomicInt32
6392 # Whether we apply container-level transforms like mirroring and rotation
6393 - name: image.avif.apply_transforms
6394 type: RelaxedAtomicBool
6398 # Whether we use dav1d (true) or libaom (false) to decode AVIF image
6399 - name: image.avif.use-dav1d
6400 type: RelaxedAtomicBool
6404 # Whether we attempt to decode JXL images or not.
6405 - name: image.jxl.enabled
6406 type: RelaxedAtomicBool
6410 #---------------------------------------------------------------------------
6411 # Prefs starting with "intl."
6412 #---------------------------------------------------------------------------
6414 # If true, dispatch the keydown and keyup events on any web apps even during
6416 - name: intl.ime.hack.on_any_apps.fire_key_events_for_composition
6421 # Android-specific pref to control if keydown and keyup events are fired even
6422 # during composition. Note that those prefs are ignored if
6423 # dom.keyboardevent.dispatch_during_composition is false.
6424 - name: intl.ime.hack.on_ime_unaware_apps.fire_key_events_for_composition
6426 # If true and intl.ime.hack.on_any_apps.fire_key_events_for_composition is
6427 # false, dispatch the keydown and keyup events only on IME-unaware web apps.
6428 # So, this supports web apps which listen to only keydown or keyup events
6429 # to get a change to do something at every text input.
6434 # If true, automatically extend selection to cluster boundaries when
6435 # TSF/TIP requests to select from/by middle of a cluster.
6436 - name: intl.tsf.hack.extend_setting_selection_range_to_cluster_boundaries
6438 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
6441 #if defined(ENABLE_TESTS)
6442 # If true, NS_GetComplexLineBreaks compares the line breaks produced in the
6443 # content process using the Uniscribe line breaker, with those from a
6444 # brokered call to the parent.
6445 - name: intl.compare_against_brokered_complex_line_breaks
6452 # If you use legacy Chinese IME which puts an ideographic space to composition
6453 # string as placeholder, this pref might be useful. If this is true and when
6454 # web contents forcibly commits composition (e.g., moving focus), the
6455 # ideographic space will be ignored (i.e., commits with empty string).
6456 - name: intl.ime.remove_placeholder_character_at_commit
6461 #if defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK)
6462 # Whether text input without keyboard press nor IME composition should cause a
6463 # set of composition events or not. E.g., when you use Emoji picker on macOS,
6464 # it inserts an Emoji character directly. If set to true, `compositionstart`,
6465 # `compositionupdate` and `compositionend` events will be fired, and the
6466 # correspnding `beforeinput` events are not cancelable. Otherwise, if set to
6467 # false, any user input events are not exposed to web apps but only
6468 # `beforeinput` event is fired as "insert text" as a cancelable event.
6469 - name: intl.ime.use_composition_events_for_insert_text
6475 #---------------------------------------------------------------------------
6476 # Prefs starting with "javascript."
6478 # NOTE: SpiderMonkey starts up before `mirror: once` preferences are sealed and
6479 # we cannot use them (Bug 1698311). Instead, we use `mirror: always`
6480 # prefs but mark as `do_not_use_directly` and `LoadStartupJSPrefs` will
6481 # mirror them into SpiderMonkey.
6482 #---------------------------------------------------------------------------
6484 # The JavaScript JIT compilers. These are read once on startup so a browser may
6485 # need to be restarted if toggling them. In general each subsequent JIT depends
6486 # on the ones before it being enabled.
6487 - name: javascript.options.blinterp
6490 mirror: always # LoadStartupJSPrefs
6491 do_not_use_directly: true
6493 - name: javascript.options.baselinejit
6496 mirror: always # LoadStartupJSPrefs
6497 do_not_use_directly: true
6499 - name: javascript.options.ion
6502 mirror: always # LoadStartupJSPrefs
6503 do_not_use_directly: true
6505 # The irregexp JIT for regex evaluation.
6506 - name: javascript.options.native_regexp
6509 mirror: always # LoadStartupJSPrefs
6510 do_not_use_directly: true
6512 # "Warm-up" thresholds at which we attempt to compile a script/function with
6513 # the next JIT tier.
6515 # NOTE: These must match JitOptions defaults.
6516 - name: javascript.options.blinterp.threshold
6519 mirror: always # LoadStartupJSPrefs
6520 do_not_use_directly: true
6522 - name: javascript.options.baselinejit.threshold
6525 mirror: always # LoadStartupJSPrefs
6526 do_not_use_directly: true
6528 - name: javascript.options.ion.threshold
6531 mirror: always # LoadStartupJSPrefs
6532 do_not_use_directly: true
6534 # Enable off-main-thread Warp compilation.
6535 - name: javascript.options.ion.offthread_compilation
6538 mirror: always # LoadStartupJSPrefs
6539 do_not_use_directly: true
6542 # Enable extra correctness checks in the JITs that are slow and only available
6544 - name: javascript.options.jit.full_debug_checks
6547 mirror: always # LoadStartupJSPrefs
6548 do_not_use_directly: true
6551 # Heuristic threshold for Warp/Ion to decide that too many bailouts are
6552 # happening and an IonScript should be discarded.
6554 # NOTE: This must match JitOptions defaults.
6555 - name: javascript.options.ion.frequent_bailout_threshold
6558 mirror: always # LoadStartupJSPrefs
6559 do_not_use_directly: true
6561 # A threshold for Warp to decide whether a function can be inlined.
6562 # If the size of a function is smaller than this threshold, then it
6565 # NOTE: These must match JitOptions defaults.
6566 - name: javascript.options.inlining_bytecode_max_length
6570 do_not_use_directly: true
6572 # Whether the megamorphic property lookup cache is enabled.
6574 # NOTE: This must match JitOptions defaults.
6575 - name: javascript.options.watchtower.megamorphic
6578 mirror: always # LoadStartupJSPrefs
6579 do_not_use_directly: true
6581 - name: javascript.options.compact_on_user_inactive
6586 # The default amount of time to wait from the user being idle to starting a
6587 # shrinking GC. Measured in milliseconds.
6588 - name: javascript.options.compact_on_user_inactive_delay
6590 #ifdef NIGHTLY_BUILD
6597 # Use better error message when accessing property of null or undefined.
6598 - name: javascript.options.property_error_message_fix
6600 value: @IS_NIGHTLY_OR_DEV_EDITION@
6603 # Support for weak references in JavaScript (WeakRef and FinalizationRegistry).
6604 - name: javascript.options.weakrefs
6609 # Whether to expose the FinalizationRegistry.prototype.cleanupSome method.
6610 - name: javascript.options.experimental.weakrefs.expose_cleanupSome
6615 #ifdef NIGHTLY_BUILD
6616 # Experimental support for Iterator Helpers in JavaScript.
6617 - name: javascript.options.experimental.iterator_helpers
6622 # Experimental support for Array Grouping in JavaScript.
6623 - name: javascript.options.experimental.array_grouping
6627 #endif // NIGHTLY_BUILD
6629 # Experimental support for class static blocks in JavaScript.
6630 - name: javascript.options.experimental.class_static_blocks
6635 #ifdef NIGHTLY_BUILD
6636 # Experimental support for Import Assertions in JavaScript.
6637 - name: javascript.options.experimental.import_assertions
6641 #endif // NIGHTLY_BUILD
6643 # Support for Private Fields in JavaScript.
6644 - name: javascript.options.experimental.private_fields
6649 # Experimental support for Private Methods in JavaScript.
6650 - name: javascript.options.experimental.private_methods
6655 # Experimental support for the ergonomic brand check proposal.
6656 - name: javascript.options.experimental.ergonomic_brand_checks
6661 # Experimental support for change-array-by-copy methods
6662 - name: javascript.options.experimental.enable_change_array_by_copy
6667 #if defined(ENABLE_NEW_SET_METHODS)
6668 # Experimental support for New Set methods
6669 - name: javascript.options.experimental.enable_new_set_methods
6675 # Experimental support for Top-level Await in JavaScript.
6676 - name: javascript.options.experimental.top_level_await
6681 - name: javascript.options.wasm_caching
6686 # The amount of time we wait between a request to GC (due to leaving a page) and doing the actual GC, in ms.
6687 - name: javascript.options.gc_delay
6692 # The amount of time we wait from the first request to GC to actually doing the first GC, in ms.
6693 - name: javascript.options.gc_delay.first
6698 # After doing a zonal GC, wait this much time (in ms) and then do a full GC,
6699 # unless one is already pending.
6700 - name: javascript.options.gc_delay.full
6705 # Maximum amount of time that should elapse between incremental GC slices, in ms.
6706 - name: javascript.options.gc_delay.interslice
6711 # nsJSEnvironmentObserver observes the memory-pressure notifications and
6712 # forces a garbage collection and cycle collection when it happens, if the
6713 # appropriate pref is set.
6714 - name: javascript.options.gc_on_memory_pressure
6716 # Disable the JS engine's GC on memory pressure, since we do one in the
6717 # mobile browser (bug 669346).
6718 # XXX: this value possibly should be changed, or the pref removed entirely.
6720 value: @IS_NOT_ANDROID@
6723 # We allow at most MIN(max, MAX(NUM_CPUS / cpu_divisor, 1)) concurrent GCs
6725 - name: javascript.options.concurrent_multiprocess_gcs.cpu_divisor
6726 type: RelaxedAtomicUint32
6730 # See 'cpu_divisor' above, 0 means UINT_32_MAX.
6731 - name: javascript.options.concurrent_multiprocess_gcs.max
6732 type: RelaxedAtomicUint32
6736 - name: javascript.options.mem.log
6741 - name: javascript.options.mem.notify
6746 # Whether the Parent process allocates and shares memory with all content
6747 # processes. This is mirrored once, as the parent process will do this
6748 # allocation early on.
6749 - name: javascript.options.self_hosted.use_shared_memory
6752 mirror: always # LoadStartupJSPrefs
6753 do_not_use_directly: true
6755 - name: javascript.options.main_thread_stack_quota_cap
6757 #if defined(MOZ_ASAN)
6758 value: 6 * 1024 * 1024
6760 value: 2 * 1024 * 1024
6764 - name: javascript.options.wasm_optimizingjit
6769 #if defined(ENABLE_WASM_SIMD)
6770 - name: javascript.options.wasm_simd
6774 #endif // defined(ENABLE_WASM_SIMD)
6776 #if defined(ENABLE_WASM_RELAXED_SIMD)
6777 - name: javascript.options.wasm_relaxed_simd
6779 value: @IS_NIGHTLY_BUILD@
6781 #endif // defined(ENABLE_WASM_RELAXED_SIMD)
6783 #if defined(ENABLE_WASM_MOZ_INTGEMM)
6784 - name: javascript.options.wasm_moz_intgemm
6786 value: @IS_NIGHTLY_BUILD@
6788 #endif // defined(ENABLE_WASM_MOZ_INTGEMM)
6790 #if defined(ENABLE_WASM_EXTENDED_CONST)
6791 - name: javascript.options.wasm_extended_const
6793 value: @IS_NIGHTLY_BUILD@
6795 #endif // defined(ENABLE_WASM_EXTENDED_CONST)
6797 #if defined(ENABLE_WASM_EXCEPTIONS)
6798 - name: javascript.options.wasm_exceptions
6802 #endif // defined(ENABLE_WASM_EXCEPTIONS)
6804 #if defined(ENABLE_WASM_FUNCTION_REFERENCES)
6805 - name: javascript.options.wasm_function_references
6809 #endif // defined(ENABLE_WASM_FUNCTION_REFERENCES)
6811 #if defined(ENABLE_WASM_GC)
6812 - name: javascript.options.wasm_gc
6816 #endif // defined(ENABLE_WASM_GC)
6818 #if defined(ENABLE_WASM_SIMD_WORMHOLE) && defined(EARLY_BETA_OR_EARLIER)
6819 # This is x64-only and it would break unified macOS builds if
6820 # it were in all.js. The feature rides the trains but not the
6821 # pref to control it; in late beta and release, it is only
6822 # available to privileged content.
6823 - name: javascript.options.wasm_simd_wormhole
6829 #if defined(ENABLE_WASM_SIMD)
6830 #if defined(JS_CODEGEN_X64) || defined(JS_CODEGEN_X86)
6831 # Enables AVX instructions support on X86/X64 platforms.
6832 # Changing these prefs requires a restart.
6833 - name: javascript.options.wasm_simd_avx
6840 #if defined(ENABLE_WASM_MEMORY64)
6841 - name: javascript.options.wasm_memory64
6843 value: @IS_NIGHTLY_BUILD@
6845 #endif // defined(ENABLE_WASM_MEMORY64)
6847 # Support for ArrayBuffers larger than 2 GB on 64-bit systems
6848 - name: javascript.options.large_arraybuffers
6851 mirror: always # LoadStartupJSPrefs
6852 do_not_use_directly: true
6854 # Support for pretenuring allocations based on their allocation site.
6855 - name: javascript.options.site_based_pretenuring
6858 mirror: always # LoadStartupJSPrefs
6859 do_not_use_directly: true
6861 #if !defined(JS_CODEGEN_MIPS32) && !defined(JS_CODEGEN_MIPS64)
6862 # Spectre security vulnerability mitigations for the JS JITs.
6864 # NOTE: The MIPS backends do not support these mitigations (and generally
6865 # do not need them). In that case, leave the pref unlisted with its
6866 # default value of false.
6867 - name: javascript.options.spectre.index_masking
6870 mirror: always # LoadStartupJSPrefs
6871 do_not_use_directly: true
6873 - name: javascript.options.spectre.object_mitigations
6876 mirror: always # LoadStartupJSPrefs
6877 do_not_use_directly: true
6879 - name: javascript.options.spectre.string_mitigations
6882 mirror: always # LoadStartupJSPrefs
6883 do_not_use_directly: true
6885 - name: javascript.options.spectre.value_masking
6888 mirror: always # LoadStartupJSPrefs
6889 do_not_use_directly: true
6891 - name: javascript.options.spectre.jit_to_cxx_calls
6894 mirror: always # LoadStartupJSPrefs
6895 do_not_use_directly: true
6896 #endif // !defined(JS_CODEGEN_MIPSXX)
6898 # Whether to use the XPCOM thread pool for JS helper tasks.
6899 - name: javascript.options.external_thread_pool
6903 do_not_use_directly: true
6905 # Whether to use fdlibm for Math.sin, Math.cos, and Math.tan. When
6906 # privacy.resistFingerprinting is true, this pref is ignored and fdlibm is used
6908 - name: javascript.options.use_fdlibm_for_sin_cos_tan
6913 #---------------------------------------------------------------------------
6914 # Prefs starting with "layers."
6915 #---------------------------------------------------------------------------
6917 # Whether to disable acceleration for all widgets.
6918 - name: layers.acceleration.disabled
6922 do_not_use_directly: true
6923 # Instead, use gfxConfig::IsEnabled(Feature::HW_COMPOSITING).
6925 # Whether to force acceleration on, ignoring blacklists.
6927 # bug 838603 -- on Android, accidentally blacklisting OpenGL layers
6928 # means a startup crash for everyone.
6929 # Temporarily force-enable GL compositing. This is default-disabled
6930 # deep within the bowels of the widgetry system. Remove me when GL
6931 # compositing isn't default disabled in widget/android.
6932 - name: layers.acceleration.force-enabled
6936 do_not_use_directly: true
6938 # Whether we allow AMD switchable graphics.
6939 - name: layers.amd-switchable-gfx.enabled
6944 # Whether to use async panning and zooming.
6945 - name: layers.async-pan-zoom.enabled
6949 do_not_use_directly: true
6951 - name: layers.child-process-shutdown
6952 type: RelaxedAtomicBool
6956 - name: layers.d3d11.force-warp
6961 - name: layers.d3d11.enable-blacklist
6966 # Enable DEAA antialiasing for transformed layers in the compositor.
6967 - name: layers.deaa.enabled
6968 type: RelaxedAtomicBool
6969 #if defined(MOZ_WIDGET_ANDROID)
6976 # Force all possible layers to be always active layers.
6977 - name: layers.force-active
6982 - name: layers.force-shmem-tiles
6987 - name: layers.draw-mask-debug
6988 type: RelaxedAtomicBool
6992 - name: layers.force-synchronous-resize
6993 type: RelaxedAtomicBool
6995 # We want to control it by nsWindow::SynchronouslyRepaintOnResize() on Linux/Wayland.
7002 - name: layers.gpu-process.allow-software
7011 - name: layers.gpu-process.enabled
7013 #if defined(XP_WIN) || defined(MOZ_WIDGET_ANDROID)
7020 - name: layers.gpu-process.force-enabled
7025 - name: layers.gpu-process.ipc_reply_timeout_ms
7030 # How many unstable GPU process restarts we allow for a given configuration.
7031 - name: layers.gpu-process.max_restarts
7032 type: RelaxedAtomicInt32
7033 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_ANDROID)
7034 #if defined(NIGHTLY_BUILD)
7044 # How many frames we must render before declaring the GPU process stable, and
7045 # allow restarts without it counting against our maximum restarts.
7046 - name: layers.gpu-process.stable.frame-threshold
7047 type: RelaxedAtomicUint32
7051 # How many milliseconds the GPU process must have lived before we accept that
7052 # it is stable, and allow restarts without it counting against our maximum
7054 - name: layers.gpu-process.stable.min-uptime-ms
7055 type: RelaxedAtomicInt32
7059 # Note: This pref will only be used if it is less than layers.gpu-process.max_restarts.
7060 - name: layers.gpu-process.max_restarts_with_decoder
7061 type: RelaxedAtomicInt32
7065 - name: layers.gpu-process.startup_timeout_ms
7070 - name: layers.gpu-process.crash-also-crashes-browser
7075 - name: layers.low-precision-buffer
7076 type: RelaxedAtomicBool
7080 - name: layers.low-precision-resolution
7085 # Whether to animate simple opacity and transforms on the compositor.
7086 - name: layers.offmainthreadcomposition.async-animations
7091 # Whether to log information about off main thread animations to stderr.
7092 - name: layers.offmainthreadcomposition.log-animations
7097 - name: layers.offmainthreadcomposition.force-disabled
7102 # Compositor target frame rate. NOTE: If vsync is enabled the compositor
7103 # frame rate will still be capped.
7104 # -1 -> default (match layout.frame_rate or 60 FPS)
7105 # 0 -> full-tilt mode: Recomposite even if not transaction occured.
7106 - name: layers.offmainthreadcomposition.frame-rate
7107 type: RelaxedAtomicInt32
7112 - name: layers.prefer-opengl
7118 # Copy-on-write canvas.
7119 - name: layers.shared-buffer-provider.enabled
7120 type: RelaxedAtomicBool
7124 - name: layers.recycle-allocator-rdd
7129 - name: layers.iosurfaceimage.recycle-limit
7130 type: RelaxedAtomicUint32
7134 - name: layers.iosurfaceimage.use-nv12
7139 #---------------------------------------------------------------------------
7140 # Prefs starting with "layout."
7141 #---------------------------------------------------------------------------
7143 # Debug-only pref to force enable the AccessibleCaret. If you want to
7144 # control AccessibleCaret by mouse, you'll need to set
7145 # "layout.accessiblecaret.hide_carets_for_mouse_input" to false.
7146 - name: layout.accessiblecaret.enabled
7151 # Enable the accessible caret on platforms/devices
7152 # that we detect have touch support. Note that this pref is an
7153 # additional way to enable the accessible carets, rather than
7154 # overriding the layout.accessiblecaret.enabled pref.
7155 - name: layout.accessiblecaret.enabled_on_touch
7160 # By default, carets become tilt only when they are overlapping.
7161 - name: layout.accessiblecaret.always_tilt
7166 # Show caret in cursor mode when long tapping on an empty content. This
7167 # also changes the default update behavior in cursor mode, which is based
7168 # on the emptiness of the content, into something more heuristic. See
7169 # AccessibleCaretManager::UpdateCaretsForCursorMode() for the details.
7170 - name: layout.accessiblecaret.caret_shown_when_long_tapping_on_empty_content
7175 # 0 = by default, always hide carets for selection changes due to JS calls.
7176 # 1 = update any visible carets for selection changes due to JS calls,
7177 # but don't show carets if carets are hidden.
7178 # 2 = always show carets for selection changes due to JS calls.
7179 - name: layout.accessiblecaret.script_change_update_mode
7184 # Allow one caret to be dragged across the other caret without any limitation.
7185 # This matches the built-in convention for all desktop platforms.
7186 - name: layout.accessiblecaret.allow_dragging_across_other_caret
7191 # Optionally provide haptic feedback on long-press selection events.
7192 - name: layout.accessiblecaret.hapticfeedback
7197 # Smart phone-number selection on long-press is not enabled by default.
7198 - name: layout.accessiblecaret.extend_selection_for_phone_number
7203 # Keep the accessible carets hidden when the user is using mouse input (as
7204 # opposed to touch/pen/etc.).
7205 - name: layout.accessiblecaret.hide_carets_for_mouse_input
7210 # CSS attributes (width, height, margin-left) of the AccessibleCaret in CSS
7212 - name: layout.accessiblecaret.width
7217 - name: layout.accessiblecaret.height
7222 - name: layout.accessiblecaret.margin-left
7227 - name: layout.accessiblecaret.transition-duration
7232 # Simulate long tap events to select words. Mainly used in manual testing
7234 - name: layout.accessiblecaret.use_long_tap_injector
7239 # To support magnify glass, whether we dispatch additional chrome event such as
7241 - name: layout.accessiblecaret.magnifier.enabled
7246 # One of several prefs affecting the maximum area to pre-render when animating
7247 # a large element on the compositor.
7248 # This pref enables transform (and transform like properties) animations on a
7249 # large element run on the compositor with rendering partial area of the
7250 # element on the main thread instead of rendering the whole area. Once the
7251 # animation tried to composite out of the partial rendered area, the animation
7252 # is rendered again with the latest visible partial area.
7253 - name: layout.animation.prerender.partial
7254 type: RelaxedAtomicBool
7258 # One of several prefs affecting the maximum area to pre-render when animating
7259 # a large element on the compositor.
7260 # This value is applied to both x and y axes and a perfect square contructed
7261 # by the greater axis value which will be capped by the absolute limits is used
7262 # for the partial pre-render area.
7263 - name: layout.animation.prerender.viewport-ratio-limit
7268 # One of several prefs affecting the maximum area to pre-render when animating
7269 # a large element on the compositor.
7270 - name: layout.animation.prerender.absolute-limit-x
7271 type: RelaxedAtomicUint32
7275 # One of several prefs affecting the maximum area to pre-render when animating
7276 # a large element on the compositor.
7277 - name: layout.animation.prerender.absolute-limit-y
7278 type: RelaxedAtomicUint32
7282 # Test-only pref, if this is true, partial pre-rendered transform animations
7283 # get stuck when it reaches to the pre-rendered boundaries and the pre-render
7284 # region is never updated.
7285 - name: layout.animation.prerender.partial.jank
7286 type: RelaxedAtomicBool
7290 # Override DPI. A value of -1 means use the maximum of 96 and the system DPI.
7291 # A value of 0 means use the system DPI. A positive value is used as the DPI.
7292 # This sets the physical size of a device pixel and thus controls the
7293 # interpretation of physical units such as "pt".
7294 - name: layout.css.dpi
7299 # Whether non-standard caption-side values are enabled
7300 - name: layout.css.caption-side-non-standard.enabled
7301 type: RelaxedAtomicBool
7306 # Whether @layer is enabled
7307 - name: layout.css.cascade-layers.enabled
7308 type: RelaxedAtomicBool
7313 # Whether Container Queries are enabled
7314 - name: layout.css.container-queries.enabled
7315 type: RelaxedAtomicBool
7320 # Whether Constructable Stylesheets are enabled in script.
7321 - name: layout.css.constructable-stylesheets.enabled
7326 # Whether trigonometric constants and functions are enabled in calc().
7327 - name: layout.css.trig.enabled
7328 type: RelaxedAtomicBool
7333 # Should we look for counter ancestor scopes first?
7334 - name: layout.css.counter-ancestor-scope.enabled
7339 # Whether we get notified of history queries for visited even if unvisited.
7340 - name: layout.css.notify-of-unvisited
7341 type: RelaxedAtomicBool
7345 # Whether we always restyle / repaint as a result of a visited query
7346 - name: layout.css.always-repaint-on-unvisited
7347 type: RelaxedAtomicBool
7351 # Make `zoom` a `transform` + `transform-origin` alias.
7352 - name: layout.css.zoom-transform-hack.enabled
7353 type: RelaxedAtomicBool
7358 # Whether the `-moz-control-character-visibility` property is exposed to
7361 # Only for testing purposes.
7362 - name: layout.css.moz-control-character-visibility.enabled
7363 type: RelaxedAtomicBool
7368 # Whether the `accent-color` css property is enabled.
7369 - name: layout.css.accent-color.enabled
7370 type: RelaxedAtomicBool
7375 # Whether the `color-scheme` css property and meta tags are enabled.
7376 - name: layout.css.color-scheme.enabled
7377 type: RelaxedAtomicBool
7382 # The minimum contrast ratio between the accent color foreground and background
7385 # We don't use this for text, so we need a contrast of at least AA (for user
7386 # interface components and graphical objects), which per WCAG is 3:1
7387 - name: layout.css.accent-color.min-contrast-ratio
7392 # The target contrast ratio between the accent color foreground and background
7393 # colors when darkening.
7395 # We aim a bit further than the minimum contrast ratio, which seems to provide
7396 # nice results in practice.
7397 - name: layout.css.accent-color.darkening-target-contrast-ratio
7403 # Whether the `aspect-ratio` in css-sizing-4 is enabled.
7404 - name: layout.css.aspect-ratio.enabled
7410 # Is the codepath for using cached scrollbar styles enabled?
7411 - name: layout.css.cached-scrollbar-styles.enabled
7416 # Whether we should return an empty style on invalid pseudo-elements starting
7419 # Old behavior is returning an empty style if the string starts with a double
7420 # colon, and return the regular style otherwise.
7421 - name: layout.css.computed-style.new-invalid-pseudo-element-behavior
7426 # Whether computed local-fragment-only image urls serialize using the same
7427 # rules as filter/mask/etc (not resolving the URL for local refs).
7429 # See https://github.com/w3c/csswg-drafts/issues/3195
7430 - name: layout.css.computed-style.dont-resolve-image-local-refs
7431 type: RelaxedAtomicBool
7436 # Whether we should expose all shorthands in getComputedStyle().
7437 - name: layout.css.computed-style.shorthands
7442 # Whether we should avoid exposing styles of elements outside the flat tree in getComputedStyle().
7443 - name: layout.css.computed-style.styles-outside-flat-tree
7445 value: @IS_NOT_NIGHTLY_BUILD@
7448 # Are implicit tracks in computed grid templates serialized?
7449 - name: layout.css.serialize-grid-implicit-tracks
7450 type: RelaxedAtomicBool
7454 # Whether the system-ui generic family is enabled.
7455 - name: layout.css.system-ui.enabled
7456 type: RelaxedAtomicBool
7461 # Whether the rule hash is applied to attribute names too, not
7462 # only classes / id / namespaces / etc.
7463 - name: layout.css.bucket-attribute-names.enabled
7464 type: RelaxedAtomicBool
7469 # Set the number of device pixels per CSS pixel. A value <= 0 means choose
7470 # automatically based on user settings for the platform (e.g., "UI scale factor"
7471 # on Mac). A positive value is used as-is. This effectively controls the size
7472 # of a CSS "px". This is only used for windows on the screen, not for printing.
7473 - name: layout.css.devPixelsPerPx
7478 # Is support for CSS backdrop-filter enabled?
7479 - name: layout.css.backdrop-filter.enabled
7484 # Should stray control characters be rendered visibly?
7485 - name: layout.css.control-characters.visible
7486 type: RelaxedAtomicBool
7487 value: @IS_NOT_RELEASE_OR_BETA@
7491 # Whether the `content-visibility` CSS property is enabled
7492 - name: layout.css.content-visibility.enabled
7493 type: RelaxedAtomicBool
7498 # Is support for GeometryUtils.convert*FromNode enabled?
7499 - name: layout.css.convertFromNode.enabled
7501 value: @IS_NOT_RELEASE_OR_BETA@
7504 - name: layout.css.cross-fade.enabled
7505 type: RelaxedAtomicBool
7510 # Is support for color-mix on content enabled?
7511 - name: layout.css.color-mix.enabled
7512 type: RelaxedAtomicBool
7513 value: @IS_NIGHTLY_BUILD@
7517 # Is support for color-mix with non-SRGB color spaces on content enabled?
7518 - name: layout.css.color-mix.color-spaces.enabled
7519 type: RelaxedAtomicBool
7520 value: @IS_NIGHTLY_BUILD@
7524 # Is support for d property for SVG path element?
7525 - name: layout.css.d-property.enabled
7530 # Are we emulating -moz-{inline}-box layout using CSS flexbox?
7531 - name: layout.css.emulate-moz-box-with-flex
7536 # Is support for fit-content() enabled?
7537 - name: layout.css.fit-content-function.enabled
7538 type: RelaxedAtomicBool
7543 # Is support for the font-display @font-face descriptor enabled?
7544 - name: layout.css.font-display.enabled
7545 type: RelaxedAtomicBool
7550 # Is support for document.fonts enabled?
7551 - name: layout.css.font-loading-api.enabled
7556 # Is support for the @font-face metrics override descriptors enabled?
7557 - name: layout.css.font-metrics-overrides.enabled
7558 type: RelaxedAtomicBool
7563 # Is support for variation fonts enabled?
7564 - name: layout.css.font-variations.enabled
7565 type: RelaxedAtomicBool
7570 # Is support for the size-adjust @font-face descriptor enabled?
7571 - name: layout.css.size-adjust.enabled
7572 type: RelaxedAtomicBool
7577 # Is the optional adjustment-basis value for font-size-adjust enabled?
7578 - name: layout.css.font-size-adjust.basis.enabled
7579 type: RelaxedAtomicBool
7584 # Visibility level of font families available to CSS font-matching:
7585 # 1 - only base system fonts
7586 # 2 - also fonts from optional language packs
7587 # 3 - also user-installed fonts
7588 - name: layout.css.font-visibility.standard
7593 # font-visibility setting when Tracking Protection is enabled
7594 - name: layout.css.font-visibility.trackingprotection
7599 # font-visibility setting when Resist Fingerprinting is enabled
7600 - name: layout.css.font-visibility.resistFingerprinting
7605 # Max font-visibility setting for Private Browsing contexts
7606 # (The actual value used in a private-browsing context will be the lesser of
7607 # the appropriate standard/trackingprotection/RFP value from above, and the
7608 # private-browsing level specified by this pref.)
7609 - name: layout.css.font-visibility.private
7614 # Is support for GeometryUtils.getBoxQuads enabled?
7615 - name: layout.css.getBoxQuads.enabled
7617 value: @IS_NOT_RELEASE_OR_BETA@
7620 # Is support for CSS "grid-template-{columns,rows}: subgrid X" enabled?
7621 - name: layout.css.grid-template-subgrid-value.enabled
7622 type: RelaxedAtomicBool
7627 # Is support for caching an grid item's block axis measurement enabled?
7628 - name: layout.css.grid-item-baxis-measurement.enabled
7633 # Is support for CSS masonry layout enabled?
7634 - name: layout.css.grid-template-masonry-value.enabled
7635 type: RelaxedAtomicBool
7636 value: @IS_NIGHTLY_BUILD@
7640 # Is support for CSS hyphenate-character enabled?
7641 - name: layout.css.hyphenate-character.enabled
7642 type: RelaxedAtomicBool
7646 # Is support for CSS individual transform enabled?
7647 - name: layout.css.individual-transform.enabled
7652 # Is support for CSS initial-letter property enabled?
7653 - name: layout.css.initial-letter.enabled
7658 # Pref to control whether line-height: -moz-block-height is exposed to content.
7659 - name: layout.css.line-height-moz-block-height.content.enabled
7660 type: RelaxedAtomicBool
7665 # Is support for motion-path enabled?
7666 - name: layout.css.motion-path.enabled
7671 # Is support for motion-path ray() enabled?
7672 - name: layout.css.motion-path-ray.enabled
7673 type: RelaxedAtomicBool
7674 value: @IS_NIGHTLY_BUILD@
7678 # Pref to control whether the ::marker property restrictions defined in [1]
7681 # [1]: https://drafts.csswg.org/css-pseudo-4/#selectordef-marker
7682 - name: layout.css.marker.restricted
7683 type: RelaxedAtomicBool
7688 # Is support for math-style enabled?
7689 - name: layout.css.math-style.enabled
7690 type: RelaxedAtomicBool
7691 value: @IS_NIGHTLY_BUILD@
7695 # Is support for math-depth enabled?
7696 # This must not be enabled until implementation is complete (see bug 1667090).
7697 - name: layout.css.math-depth.enabled
7698 type: RelaxedAtomicBool
7703 # Pref to control whether @-moz-document rules are enabled in content pages.
7704 - name: layout.css.moz-document.content.enabled
7705 type: RelaxedAtomicBool
7710 # Is -moz-osx-font-smoothing enabled? (Only supported in OSX builds)
7711 - name: layout.css.osx-font-smoothing.enabled
7713 #if defined(XP_MACOSX)
7720 # Is support for CSS overflow-clip-box enabled for non-UA sheets?
7721 - name: layout.css.overflow-clip-box.enabled
7726 # Is support for CSS overflow: -moz-hidden-unscrollable enabled
7727 - name: layout.css.overflow-moz-hidden-unscrollable.enabled
7728 type: RelaxedAtomicBool
7729 value: @IS_NOT_NIGHTLY_BUILD@
7733 # Is support for overscroll-behavior enabled?
7734 - name: layout.css.overscroll-behavior.enabled
7739 - name: layout.css.overflow-logical.enabled
7744 # Enables support for the size property inside of CSS @page rules.
7745 - name: layout.css.page-size.enabled
7746 type: RelaxedAtomicBool
7751 # Enables support for the named pages
7752 - name: layout.css.named-pages.enabled
7753 type: RelaxedAtomicBool
7758 # Dictates whether or not the prefers contrast media query will be
7760 # true: prefers-contrast will toggle based on OS and browser settings.
7761 # false: prefers-contrast will only parse and toggle in the browser
7763 - name: layout.css.prefers-contrast.enabled
7764 type: RelaxedAtomicBool
7769 # An override for prefers-color-scheme for content documents.
7771 # Dark (0), light (1), system (2) or browser (3).
7772 - name: layout.css.prefers-color-scheme.content-override
7773 type: RelaxedAtomicInt32
7777 # Dictates whether or not the forced-colors media query is enabled.
7778 - name: layout.css.forced-colors.enabled
7779 type: RelaxedAtomicBool
7784 # Is support for -moz-prefixed animation properties enabled?
7785 - name: layout.css.prefixes.animations
7790 # Is support for -moz-border-image enabled?
7791 - name: layout.css.prefixes.border-image
7796 # Is support for -moz-box-sizing enabled?
7797 - name: layout.css.prefixes.box-sizing
7802 # Is support for -moz-prefixed font feature properties enabled?
7803 - name: layout.css.prefixes.font-features
7808 # Is support for -moz-prefixed transform properties enabled?
7809 - name: layout.css.prefixes.transforms
7814 # Is support for -moz-prefixed transition properties enabled?
7815 - name: layout.css.prefixes.transitions
7820 # Is CSS error reporting enabled?
7821 - name: layout.css.report_errors
7826 # Are inter-character ruby annotations enabled?
7827 - name: layout.css.ruby.intercharacter.enabled
7832 - name: layout.css.scroll-behavior.damping-ratio
7837 - name: layout.css.supports-selector.enabled
7838 type: RelaxedAtomicBool
7843 # Tuning of the smooth scroll motion used by CSSOM-View scroll-behavior.
7844 # Spring-constant controls the strength of the simulated MSD
7845 # (Mass-Spring-Damper).
7846 - name: layout.css.scroll-behavior.spring-constant
7851 # Whether the scroll-linked animations generated by CSS is enabled. This
7852 # includes @scroll-timeline css rule and animation-timelime property.
7853 - name: layout.css.scroll-linked-animations.enabled
7854 type: RelaxedAtomicBool
7859 # When selecting the snap point for CSS scroll snapping, the velocity of the
7860 # scroll frame is clamped to this speed, in CSS pixels / s.
7861 - name: layout.css.scroll-snap.prediction-max-velocity
7862 type: RelaxedAtomicInt32
7866 # When selecting the snap point for CSS scroll snapping, the velocity of the
7867 # scroll frame is integrated over this duration, in seconds. The snap point
7868 # best suited for this position is selected, enabling the user to perform fling
7870 - name: layout.css.scroll-snap.prediction-sensitivity
7875 # Set the threshold distance in CSS pixels below which scrolling will snap to
7876 # an edge, when scroll snapping is set to "proximity".
7877 - name: layout.css.scroll-snap.proximity-threshold
7878 type: RelaxedAtomicInt32
7882 # Is steps(jump-*) supported in easing functions?
7883 - name: layout.css.step-position-jump.enabled
7884 type: RelaxedAtomicBool
7889 # Are counters for implemented CSS properties enabled?
7890 - name: layout.css.use-counters.enabled
7895 # Are counters for unimplemented CSS properties enabled?
7896 - name: layout.css.use-counters-unimplemented.enabled
7897 type: RelaxedAtomicBool
7902 # Should the :visited selector ever match (otherwise :link matches instead)?
7903 - name: layout.css.visited_links_enabled
7908 - name: layout.css.xul-display-values.content.enabled
7909 type: RelaxedAtomicBool
7914 # Pref to control whether display: -moz-box and display: -moz-inline-box are
7915 # parsed in content pages.
7916 - name: layout.css.xul-box-display-values.content.enabled
7917 type: RelaxedAtomicBool
7922 # Whether to block large cursors intersecting UI.
7923 - name: layout.cursor.block.enabled
7928 # The maximum width or height of the cursor we should allow when intersecting
7929 # the UI, in CSS pixels.
7930 - name: layout.cursor.block.max-size
7935 - name: layout.display-list.build-twice
7936 type: RelaxedAtomicBool
7940 # Toggle retaining display lists between paints.
7941 - name: layout.display-list.retain
7942 type: RelaxedAtomicBool
7946 # Toggle retaining display lists between paints.
7947 - name: layout.display-list.retain.chrome
7948 type: RelaxedAtomicBool
7952 - name: layout.display-list.retain.sc
7953 type: RelaxedAtomicBool
7957 # Set the maximum number of modified frames allowed before doing a full
7958 # display list rebuild.
7959 - name: layout.display-list.rebuild-frame-limit
7960 type: RelaxedAtomicUint32
7964 # Pref to dump the display list to the log. Useful for debugging drawing.
7965 - name: layout.display-list.dump
7966 type: RelaxedAtomicBool
7970 # Pref to dump the display list to the log. Useful for debugging drawing.
7971 - name: layout.display-list.dump-content
7972 type: RelaxedAtomicBool
7976 # Pref to dump the display list to the log. Useful for debugging drawing.
7977 - name: layout.display-list.dump-parent
7978 type: RelaxedAtomicBool
7982 - name: layout.display-list.show-rebuild-area
7983 type: RelaxedAtomicBool
7987 - name: layout.display-list.flatten-transform
7988 type: RelaxedAtomicBool
7992 - name: layout.display-list.improve-fragmentation
7993 type: RelaxedAtomicBool
7997 # Are dynamic reflow roots enabled?
7998 - name: layout.dynamic-reflow-roots.enabled
8000 value: @IS_EARLY_BETA_OR_EARLIER@
8003 # Enables the mechanism to optimize away flex item's final reflow.
8004 # Warning: Disabling the pref will impact the performance. This is useful only for
8005 # debugging flexbox issues.
8006 - name: layout.flexbox.item-final-reflow-optimization.enabled
8011 # Enables the <input type=search> custom layout frame with a clear icon.
8012 # Still needs tests and a web-exposed way to remove that icon, see bug 1654288.
8013 - name: layout.forms.input-type-search.enabled
8018 # Enables the Reveal Password button inside a <input type=password>.
8019 - name: layout.forms.reveal-password-button.enabled
8024 # Enables the Reveal Password context-menu entry.
8025 - name: layout.forms.reveal-password-context-menu.enabled
8030 # Pref to control browser frame rate, in Hz. A value <= 0 means choose
8031 # automatically based on knowledge of the platform (or 60Hz if no platform-
8032 # specific information is available).
8033 - name: layout.frame_rate
8034 type: RelaxedAtomicInt32
8038 # If it has been this many frame periods since a refresh, assume that painting
8039 # is quiescent (will not happen again soon).
8040 - name: layout.idle_period.required_quiescent_frames
8045 # The amount of time (milliseconds) needed between an idle period's
8046 # end and the start of the next tick to avoid jank.
8047 - name: layout.idle_period.time_limit
8052 # The minimum amount of time (milliseconds) required to be remaining
8053 # in the current vsync interval for us to attempt an extra tick, or
8054 # <0 to disable extra ticks entirely.
8055 - name: layout.extra-tick.minimum-ms
8060 # Enable/disable interruptible reflow, which allows reflows to stop
8061 # before completion (and display the partial results) when user events
8063 - name: layout.interruptible-reflow.enabled
8068 - name: layout.min-active-layer-size
8073 # On Android, don't synth mouse move events after scrolling, as they cause
8074 # unexpected user-visible behaviour. Can remove this after bug 1633450 is
8075 # satisfactorily resolved.
8076 - name: layout.reflow.synthMouseMove
8078 value: @IS_NOT_ANDROID@
8081 # This pref is to be set by test code only.
8082 - name: layout.scrollbars.always-layerize-track
8083 type: RelaxedAtomicBool
8087 # Whether anchor is kept selected.
8088 - name: layout.selectanchor
8093 # Controls caret style and word-delete during text selection.
8094 # 0: Use platform default
8095 # 1: Caret moves and blinks as when there is no selection; word
8096 # delete deselects the selection and then deletes word.
8097 # 2: Caret moves to selection edge and is not visible during selection;
8098 # word delete deletes the selection (Mac and Linux default).
8099 # 3: Caret moves and blinks as when there is no selection; word delete
8100 # deletes the selection.
8101 # Windows default is 1 for word delete behavior, the rest as for 2.
8102 - name: layout.selection.caret_style
8107 # If layout.show_previous_page is true then during loading of a new page we
8108 # will draw the previous page if the new page has painting suppressed.
8109 - name: layout.show_previous_page
8114 # Pref to stop overlay scrollbars from fading out, for testing purposes.
8115 - name: layout.testing.overlay-scrollbars.always-visible
8120 # Throttled frame rate, in frames per second.
8121 - name: layout.throttled_frame_rate
8126 # Activity granted to out-of-process iframes in the foreground tab, in milliseconds.
8127 - name: layout.oopif_activity_grace_period_ms
8132 - name: layout.lower_priority_refresh_driver_during_load
8137 # If > 0, nsRefreshDriver will keep ticking this amount of milliseconds after
8138 # top level page load.
8139 - name: layout.keep_ticking_after_load_ms
8144 # Is layout of CSS outline-style:auto enabled?
8145 - name: layout.css.outline-style-auto.enabled
8150 # Pref to control enabling scroll anchoring.
8151 - name: layout.css.scroll-anchoring.enabled
8156 # Pref to control how many consecutive scroll-anchoring adjustments (since the
8157 # most recent user scroll) we'll average, before we consider whether to
8158 # automatically turn off scroll anchoring. When we hit this threshold, the
8159 # actual decision to disable also depends on the
8160 # min-average-adjustment-threshold pref, see below for more details.
8162 # Zero disables the heuristic.
8163 - name: layout.css.scroll-anchoring.max-consecutive-adjustments
8168 # Pref to control whether we should disable scroll anchoring on a scroller
8169 # where at least max-consecutive-adjustments have happened, and which the
8170 # average adjustment ends up being less than this number, in CSS pixels.
8172 # So, for example, given max-consecutive-adjustments=10 and
8173 # min-average-adjustment-treshold=3, we'll block scroll anchoring if there have
8174 # been 10 consecutive adjustments without a user scroll or more, and the
8175 # average offset difference between them amount to less than 3 CSS pixels.
8176 - name: layout.css.scroll-anchoring.min-average-adjustment-threshold
8181 # Pref to control disabling scroll anchoring suppression triggers, see
8183 # https://drafts.csswg.org/css-scroll-anchoring/#suppression-triggers
8185 # Those triggers should be unnecessary after bug 1561450.
8186 - name: layout.css.scroll-anchoring.suppressions.enabled
8191 - name: layout.css.scroll-anchoring.highlight
8196 # Pref to control whether we reselect scroll anchors if sub-optimal
8198 # See https://github.com/w3c/csswg-drafts/issues/6787
8199 - name: layout.css.scroll-anchoring.reselect-if-suboptimal
8204 # Are shared memory User Agent style sheets enabled?
8205 - name: layout.css.shared-memory-ua-sheets.enabled
8210 # Is support for -webkit-line-clamp enabled?
8211 - name: layout.css.webkit-line-clamp.enabled
8216 # Is 'content:none' supported on (non-pseudo) elements?
8217 - name: layout.css.element-content-none.enabled
8218 type: RelaxedAtomicBool
8223 # Is 'font-synthesis: small-caps' supported?
8224 - name: layout.css.font-synthesis-small-caps.enabled
8225 type: RelaxedAtomicBool
8230 # Whether we want scrollbar-width: thin to behave as scrollbar-width: auto.
8231 - name: layout.css.scrollbar-width-thin.disabled
8232 type: RelaxedAtomicBool
8236 # Whether the `scrollbar-gutter` CSS property is enabled.
8237 - name: layout.css.scrollbar-gutter.enabled
8238 type: RelaxedAtomicBool
8243 # Whether frame visibility tracking is enabled globally.
8244 - name: layout.framevisibility.enabled
8249 # The fraction of the scrollport we allow to horizontally scroll by before we
8250 # schedule an update of frame visibility.
8251 - name: layout.framevisibility.amountscrollbeforeupdatehorizontal
8256 # The fraction of the scrollport we allow to vertically scroll by before we
8257 # schedule an update of frame visibility.
8258 - name: layout.framevisibility.amountscrollbeforeupdatevertical
8263 # The number of scrollports wide to expand when tracking frame visibility.
8264 - name: layout.framevisibility.numscrollportwidths
8273 # The number of scrollports high to expand when tracking frame visibility.
8274 - name: layout.framevisibility.numscrollportheights
8280 - name: layout.dynamic-toolbar-max-height
8281 type: RelaxedAtomicInt32
8285 # Whether outlines should include all overflowing descendants, or just the
8286 # border-box of a given element.
8288 # Historically we have included descendants but other browsers have not.
8289 - name: layout.outline.include-overflow
8294 - name: layout.visibility.min-recompute-interval-ms
8299 # Controls double click and Alt+Arrow word selection behavior.
8300 - name: layout.word_select.eat_space_to_next_word
8309 - name: layout.word_select.stop_at_punctuation
8314 # Whether underscore should be treated as a word-breaking character for
8315 # word selection/arrow-key movement purposes.
8316 - name: layout.word_select.stop_at_underscore
8321 # Should deprecated plugin behavior fallback to normal behavior or use
8322 # the experimental design.
8323 - name: layout.use-plugin-fallback
8328 # Whether to draw images in CSS backgrounds if we only have a partial frame.
8329 - name: layout.display_partial_background_images
8331 value: @IS_NIGHTLY_BUILD@
8334 #---------------------------------------------------------------------------
8335 # Prefs starting with "mathml."
8336 #---------------------------------------------------------------------------
8338 # Whether to disable deprecated style attributes background, color, fontfamily,
8339 # fontsize, fontstyle and fontweight.
8340 - name: mathml.deprecated_style_attributes.disabled
8345 # Whether to disable deprecated "radical" notation for the menclose element.
8346 - name: mathml.deprecated_menclose_notation_radical.disabled
8351 # Whether to disable legacy names "small", "normal" and "big" for the
8352 # mathsize attribute.
8353 - name: mathml.mathsize_names.disabled
8358 # Whether to disable legacy names "thickmathspace", "mediummathspace",
8359 # "thickmathspace" etc for length attributes.
8360 - name: mathml.mathspace_names.disabled
8362 value: @IS_NIGHTLY_BUILD@
8365 # Whether to disable the mfrac bevelled attribute.
8366 - name: mathml.mfrac_bevelled_attribute.disabled
8371 # Whether to disable legacy names "thin", "thick" and "medium" for the
8372 # linethickness attribute of the mfrac element.
8373 - name: mathml.mfrac_linethickness_names.disabled
8378 # Whether to disable deprecated numalign/denomalign/align attributes
8379 - name: mathml.deprecated_alignment_attributes.disabled
8384 # Whether to disable subscriptshift and superscriptshift attributes.
8385 - name: mathml.script_shift_attributes.disabled
8390 # Whether to disable the scriptminsize attribute.
8391 # Note that this only disables parsing, not the default effect when no attribute
8393 - name: mathml.scriptminsize_attribute.disabled
8395 value: @IS_NIGHTLY_BUILD@
8398 # Whether to disable the scriptsizemultiplier attribute.
8399 - name: mathml.scriptsizemultiplier_attribute.disabled
8401 value: @IS_NIGHTLY_BUILD@
8404 # Whether to disable support for stretching operators with STIXGeneral fonts.
8405 # macos still has the deprecated STIXGeneral font pre-installed.
8406 - name: mathml.stixgeneral_operator_stretching.disabled
8408 #if defined(XP_MACOSX)
8409 value: @IS_NIGHTLY_BUILD@
8415 #---------------------------------------------------------------------------
8416 # Prefs starting with "media."
8417 #---------------------------------------------------------------------------
8420 # This pref defines what the blocking policy would be used in blocking autoplay.
8421 # 0 : use sticky activation (default)
8422 # https://html.spec.whatwg.org/multipage/interaction.html#sticky-activation
8423 # 1 : use transient activation (the transient activation duration can be
8424 # adjusted by the pref `dom.user_activation.transient.timeout`)
8425 # https://html.spec.whatwg.org/multipage/interaction.html#transient-activation
8426 # 2 : user input depth (allow autoplay when the play is trigged by user input
8427 # which is determined by the user input depth)
8428 - name: media.autoplay.blocking_policy
8433 # File-backed MediaCache size.
8434 - name: media.cache_size
8435 type: RelaxedAtomicUint32
8436 value: 512000 # Measured in KiB
8439 # Size of file backed MediaCache while on a connection which is cellular (3G,
8440 # etc), and thus assumed to be "expensive".
8441 - name: media.cache_size.cellular
8442 type: RelaxedAtomicUint32
8443 value: 32768 # Measured in KiB
8446 # Whether cubeb is sandboxed (AudioIPC)
8447 - name: media.cubeb.sandbox
8450 #if defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID)
8452 #elif defined(XP_WIN) && !defined(_ARM64_)
8454 #elif defined(XP_MACOSX)
8460 # Whether cubeb sandbox (AudioIPC) is v2
8461 - name: media.cubeb.sandbox_v2
8464 #if defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID)
8466 #elif defined(XP_WIN) && !defined(_ARM64_)
8468 #elif defined(XP_MACOSX)
8474 # Whether or not to pass AUDCLNT_STREAMOPTIONS_RAW when initializing audio
8475 # streams when using WASAPI.
8476 # 0 - don't use RAW streams
8477 # 1 - use RAW streams for input streams only
8478 # 2 - use RAW streams for output streams only
8479 # 3 - use RAW streams for input and output streams
8480 #if defined (XP_WIN)
8481 - name: media.cubeb.wasapi-raw
8482 type: RelaxedAtomicUint32
8487 # ClockDrift desired buffering in milliseconds
8488 - name: media.clockdrift.buffering
8489 type: RelaxedAtomicUint32
8493 # If a resource is known to be smaller than this size (in kilobytes), a
8494 # memory-backed MediaCache may be used; otherwise the (single shared global)
8495 # file-backed MediaCache is used.
8496 - name: media.memory_cache_max_size
8498 value: 8192 # Measured in KiB
8501 # Don't create more memory-backed MediaCaches if their combined size would go
8502 # above this absolute size limit.
8503 - name: media.memory_caches_combined_limit_kb
8508 # Don't create more memory-backed MediaCaches if their combined size would go
8509 # above this relative size limit (a percentage of physical memory).
8510 - name: media.memory_caches_combined_limit_pc_sysmem
8512 value: 5 # A percentage
8515 # When a network connection is suspended, don't resume it until the amount of
8516 # buffered data falls below this threshold (in seconds).
8517 - name: media.cache_resume_threshold
8518 type: RelaxedAtomicUint32
8521 - name: media.cache_resume_threshold.cellular
8522 type: RelaxedAtomicUint32
8526 # Stop reading ahead when our buffered data is this many seconds ahead of the
8527 # current playback position. This limit can stop us from using arbitrary
8528 # amounts of network bandwidth prefetching huge videos.
8529 - name: media.cache_readahead_limit
8530 type: RelaxedAtomicUint32
8533 - name: media.cache_readahead_limit.cellular
8534 type: RelaxedAtomicUint32
8539 - name: media.mediacapabilities.drop-threshold
8540 type: RelaxedAtomicInt32
8544 - name: media.mediacapabilities.from-database
8545 type: RelaxedAtomicBool
8546 value: @IS_NIGHTLY_BUILD@
8550 - name: media.resampling.enabled
8551 type: RelaxedAtomicBool
8555 # libcubeb backend implements .get_preferred_channel_layout
8556 - name: media.forcestereo.enabled
8557 type: RelaxedAtomicBool
8558 #if defined(XP_WIN) || defined(XP_DARWIN) || defined(MOZ_PULSEAUDIO)
8567 # Whether to enable MediaSource support.
8568 - name: media.mediasource.enabled
8569 type: RelaxedAtomicBool
8573 - name: media.mediasource.mp4.enabled
8574 type: RelaxedAtomicBool
8578 - name: media.mediasource.webm.enabled
8579 type: RelaxedAtomicBool
8583 # Check if vp9 is enabled by default in mediasource. False on Android.
8584 # If disabled, vp9 will only be enabled under some conditions:
8585 # - h264 HW decoding is not supported
8586 # - mp4 is not enabled
8587 # - Device was deemed fast enough to decode VP9 via the VP9Benchmark utility
8588 # - A VP9 HW decoder is present.
8589 - name: media.mediasource.vp9.enabled
8590 type: RelaxedAtomicBool
8591 value: @IS_NOT_ANDROID@
8594 - name: media.mediasource.webm.audio.enabled
8595 type: RelaxedAtomicBool
8599 # Whether to enable MediaSource v2 support.
8600 - name: media.mediasource.experimental.enabled
8601 type: RelaxedAtomicBool
8606 - name: media.ruin-av-sync.enabled
8607 type: RelaxedAtomicBool
8611 # Encrypted Media Extensions
8612 - name: media.eme.enabled
8614 #if defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID)
8615 # On Linux EME is visible but disabled by default. This is so that the "Play
8616 # DRM content" checkbox in the Firefox UI is unchecked by default. DRM
8617 # requires downloading and installing proprietary binaries, which users on an
8618 # open source operating systems didn't opt into. The first time a site using
8619 # EME is encountered, the user will be prompted to enable DRM, whereupon the
8620 # EME plugin binaries will be downloaded if permission is granted.
8627 # Whether we expose the functionality proposed in
8628 # https://github.com/WICG/encrypted-media-encryption-scheme/blob/master/explainer.md
8629 # I.e. if true, apps calling navigator.requestMediaKeySystemAccess() can pass
8630 # an optional encryption scheme as part of MediaKeySystemMediaCapability
8631 # objects. If a scheme is present when we check for support, we must ensure we
8632 # support that scheme in order to provide key system access.
8633 - name: media.eme.encrypted-media-encryption-scheme.enabled
8638 # Do we need explicit approval from the application to allow access to EME?
8639 # If true, Gecko will ask for permission before allowing MediaKeySystemAccess.
8640 # At time of writing this is aimed at GeckoView, and setting this to true
8641 # outside of GeckoView or test environments will likely break EME.
8642 - name: media.eme.require-app-approval
8647 - name: media.eme.audio.blank
8648 type: RelaxedAtomicBool
8652 - name: media.eme.video.blank
8653 type: RelaxedAtomicBool
8657 - name: media.eme.chromium-api.video-shmems
8658 type: RelaxedAtomicUint32
8662 # Is support for MediaKeys.getStatusForPolicy enabled?
8663 - name: media.eme.hdcp-policy-check.enabled
8668 - name: media.eme.max-throughput-ms
8669 type: RelaxedAtomicUint32
8673 - name: media.clearkey.persistent-license.enabled
8678 # Are test specific clearkey key systems enabled and exposed?
8679 - name: media.clearkey.test-key-systems.enabled
8684 - name: media.cloneElementVisually.testing
8689 #if defined(XP_LINUX) && defined(MOZ_SANDBOX)
8690 # Whether to allow, on a Linux system that doesn't support the necessary
8691 # sandboxing features, loading Gecko Media Plugins unsandboxed. However, EME
8692 # CDMs will not be loaded without sandboxing even if this pref is changed.
8693 - name: media.gmp.insecure.allow
8694 type: RelaxedAtomicBool
8700 # These prefs control whether or not a universal build running on
8701 # an Apple Silicon machine will attempt to use an x64 Widevine or
8702 # OpenH264 plugin. This requires launching the GMP child process
8703 # executable in x64 mode. We expect to allow this for Widevine until
8704 # an arm64 version of Widevine is made available. We don't expect
8705 # to need to allow this for OpenH264.
8707 # Allow a Widevine GMP x64 process to be executed on ARM builds.
8708 - name: media.gmp-widevinecdm.allow-x64-plugin-on-arm64
8709 type: RelaxedAtomicBool
8713 # Don't allow an OpenH264 GMP x64 process to be executed on ARM builds.
8714 - name: media.gmp-gmpopenh264.allow-x64-plugin-on-arm64
8715 type: RelaxedAtomicBool
8720 # Specifies whether the PDMFactory can create a test decoder that just outputs
8721 # blank frames/audio instead of actually decoding. The blank decoder works on
8723 - name: media.use-blank-decoder
8724 type: RelaxedAtomicBool
8728 - name: media.gpu-process-decoder
8729 type: RelaxedAtomicBool
8737 - name: media.rdd-process.enabled
8738 type: RelaxedAtomicBool
8741 #elif defined(XP_MACOSX)
8743 #elif defined(XP_LINUX) && !defined(ANDROID)
8745 #elif defined(XP_OPENBSD)
8752 - name: media.rdd-retryonfailure.enabled
8753 type: RelaxedAtomicBool
8757 - name: media.rdd-process.startup_timeout_ms
8758 type: RelaxedAtomicInt32
8762 # Specifies how many times we restart RDD process after crash till we give up.
8763 # After first RDD restart we disable HW acceleration on Linux.
8764 - name: media.rdd-process.max-crashes
8765 type: RelaxedAtomicInt32
8770 - name: media.rdd-ffmpeg.enabled
8771 type: RelaxedAtomicBool
8777 - name: media.rdd-ffvpx.enabled
8778 type: RelaxedAtomicBool
8781 #elif defined(XP_MACOSX)
8783 #elif defined(XP_LINUX) && !defined(ANDROID)
8785 #elif defined(XP_OPENBSD)
8794 - name: media.rdd-wmf.enabled
8795 type: RelaxedAtomicBool
8800 #ifdef MOZ_APPLEMEDIA
8801 - name: media.rdd-applemedia.enabled
8802 type: RelaxedAtomicBool
8807 - name: media.rdd-theora.enabled
8808 type: RelaxedAtomicBool
8811 #elif defined(XP_MACOSX)
8813 #elif defined(XP_LINUX) && !defined(ANDROID)
8815 #elif defined(XP_OPENBSD)
8822 - name: media.rdd-vorbis.enabled
8823 type: RelaxedAtomicBool
8826 #elif defined(XP_MACOSX)
8828 #elif defined(XP_LINUX) && !defined(ANDROID)
8830 #elif defined(XP_OPENBSD)
8837 - name: media.rdd-vpx.enabled
8838 type: RelaxedAtomicBool
8841 #elif defined(XP_MACOSX)
8843 #elif defined(XP_LINUX) && !defined(ANDROID)
8845 #elif defined(XP_OPENBSD)
8852 - name: media.rdd-wav.enabled
8853 type: RelaxedAtomicBool
8856 #elif defined(XP_MACOSX)
8858 #elif defined(XP_LINUX) && !defined(ANDROID)
8860 #elif defined(XP_OPENBSD)
8867 - name: media.rdd-opus.enabled
8868 type: RelaxedAtomicBool
8871 #elif defined(XP_MACOSX)
8873 #elif defined(XP_LINUX) && !defined(ANDROID)
8875 #elif defined(XP_OPENBSD)
8882 - name: media.rdd-webaudio.batch.size
8883 type: RelaxedAtomicInt32
8887 # This pref is here to control whether we want to perform audio decoding by
8888 # using the IPC actor within the Utility process rather than the RDD process.
8889 # When it is set to true, then the utility process will take precedence over RDD
8890 # to perform audio decoding.
8891 - name: media.utility-process.enabled
8892 type: RelaxedAtomicBool
8897 - name: media.utility-ffmpeg.enabled
8898 type: RelaxedAtomicBool
8904 - name: media.utility-ffvpx.enabled
8905 type: RelaxedAtomicBool
8908 #elif defined(XP_MACOSX)
8910 #elif defined(XP_LINUX) && !defined(ANDROID)
8912 #elif defined(XP_OPENBSD)
8921 - name: media.utility-wmf.enabled
8922 type: RelaxedAtomicBool
8927 #ifdef MOZ_APPLEMEDIA
8928 - name: media.utility-applemedia.enabled
8929 type: RelaxedAtomicBool
8934 - name: media.utility-vorbis.enabled
8935 type: RelaxedAtomicBool
8939 - name: media.utility-wav.enabled
8940 type: RelaxedAtomicBool
8944 - name: media.utility-opus.enabled
8945 type: RelaxedAtomicBool
8950 # Enable the MediaCodec PlatformDecoderModule by default.
8951 - name: media.android-media-codec.enabled
8952 type: RelaxedAtomicBool
8956 - name: media.android-media-codec.preferred
8957 type: RelaxedAtomicBool
8963 - name: media.omx.enabled
8969 # Allow ffmpeg decoder to decode directly onto shmem buffer
8970 - name: media.ffmpeg.customized-buffer-allocation
8971 type: RelaxedAtomicBool
8976 - name: media.ffmpeg.enabled
8977 type: RelaxedAtomicBool
8978 #if defined(XP_MACOSX)
8985 - name: media.libavcodec.allow-obsolete
8991 # Use VA-API for ffmpeg video playback on Linux
8992 - name: media.ffmpeg.vaapi.enabled
8993 type: RelaxedAtomicBool
8996 #endif # MOZ_WAYLAND
8999 - name: media.ffvpx.enabled
9000 type: RelaxedAtomicBool
9008 - name: media.ffvpx.mp3.enabled
9009 type: RelaxedAtomicBool
9017 # Set to true in marionette tests to disable the sanity test
9018 # which would lead to unnecessary start of the RDD process.
9019 - name: media.sanity-test.disabled
9020 type: RelaxedAtomicBool
9026 - name: media.wmf.enabled
9027 type: RelaxedAtomicBool
9031 # Whether DD should consider WMF-disabled a WMF failure, useful for testing.
9032 - name: media.decoder-doctor.wmf-disabled-is-failure
9033 type: RelaxedAtomicBool
9037 - name: media.wmf.dxva.d3d11.enabled
9038 type: RelaxedAtomicBool
9042 - name: media.wmf.dxva.max-videos
9043 type: RelaxedAtomicUint32
9047 - name: media.wmf.use-nv12-format
9048 type: RelaxedAtomicBool
9052 - name: media.wmf.no-copy-nv12-textures
9056 # Enable hardware decoded video no copy even when it is blocked.
9057 - name: media.wmf.no-copy-nv12-textures-force-enabled
9062 - name: media.wmf.force.allow-p010-format
9063 type: RelaxedAtomicBool
9067 - name: media.wmf.use-sync-texture
9072 - name: media.wmf.low-latency.enabled
9073 type: RelaxedAtomicBool
9077 - name: media.wmf.low-latency.force-disabled
9078 type: RelaxedAtomicBool
9082 - name: media.wmf.skip-blacklist
9083 type: RelaxedAtomicBool
9087 - name: media.wmf.amd.highres.enabled
9088 type: RelaxedAtomicBool
9092 - name: media.wmf.allow-unsupported-resolutions
9093 type: RelaxedAtomicBool
9097 - name: media.wmf.vp9.enabled
9098 type: RelaxedAtomicBool
9102 - name: media.wmf.av1.enabled
9103 type: RelaxedAtomicBool
9107 # Using Windows Media Foundation Media Engine for encrypted playback
9108 - name: media.wmf.media-engine.enabled
9109 type: RelaxedAtomicBool
9115 - name: media.decoder-doctor.testing
9120 - name: media.hardware-video-decoding.force-enabled
9125 # Whether to check the decoder supports recycling.
9126 - name: media.decoder.recycle.enabled
9127 type: RelaxedAtomicBool
9131 # Should MFR try to skip to the next key frame?
9132 - name: media.decoder.skip-to-next-key-frame.enabled
9133 type: RelaxedAtomicBool
9137 # When video continues later than the current media time for this period of
9138 # time, then it will trigger skip-to-next-keyframe mechanism. As this aims to
9139 # solve the drop frames issue where video decoding too slow for high
9140 # resolution videos. eg. 4k+. Therefore, the value is is determined by the
9141 # telemetry probe `video_inter_keyframe_max_ms` in the key of `AV,h>2160` which
9142 # shows that 95% video's key frame interval are less than ~5000. We use its
9143 # half value as a threashold to decide whether we should keep decoding in the
9144 # current video position or jump to the next keyframe in order to decode future
9145 # frames in advance.
9146 - name: media.decoder.skip_when_video_too_slow_ms
9147 type: RelaxedAtomicInt32
9151 - name: media.gmp.decoder.enabled
9152 type: RelaxedAtomicBool
9156 # Whether to suspend decoding of videos in background tabs.
9157 - name: media.suspend-bkgnd-video.enabled
9158 type: RelaxedAtomicBool
9162 # Delay, in ms, from time window goes to background to suspending
9163 # video decoders. Defaults to 10 seconds.
9164 - name: media.suspend-bkgnd-video.delay-ms
9165 type: RelaxedAtomicUint32
9169 - name: media.dormant-on-pause-timeout-ms
9170 type: RelaxedAtomicInt32
9174 # AudioTrack and VideoTrack support
9175 - name: media.track.enabled
9180 # This pref disables the reception of RTCP. It is used for testing.
9181 - name: media.webrtc.net.force_disable_rtcp_reception
9182 type: ReleaseAcquireAtomicBool
9186 # TextTrack WebVTT Region extension support.
9187 - name: media.webvtt.regions.enabled
9192 # This pref controls whether dispatch testing-only events.
9193 - name: media.webvtt.testing.events
9198 - name: media.webspeech.synth.force_global_queue
9203 - name: media.webspeech.test.enable
9208 - name: media.webspeech.test.fake_fsm_events
9213 - name: media.webspeech.test.fake_recognition_service
9218 #ifdef MOZ_WEBSPEECH
9219 - name: media.webspeech.recognition.enable
9225 - name: media.webspeech.recognition.force_enable
9230 #ifdef MOZ_WEBSPEECH
9231 - name: media.webspeech.synth.enabled
9235 #endif # MOZ_WEBSPEECH
9237 - name: media.encoder.webm.enabled
9238 type: RelaxedAtomicBool
9242 - name: media.audio-max-decode-error
9244 #if defined(RELEASE_OR_BETA)
9247 # Zero tolerance in pre-release builds to detect any decoder regression.
9252 - name: media.video-max-decode-error
9254 #if defined(RELEASE_OR_BETA)
9257 # Zero tolerance in pre-release builds to detect any decoder regression.
9262 # Are video stats enabled? (Disabling can help prevent fingerprinting.)
9263 - name: media.video_stats.enabled
9268 # forces the number of dropped frames to 0
9269 - name: media.video.dropped_frame_stats.enabled
9275 - name: media.opus.enabled
9276 type: RelaxedAtomicBool
9281 - name: media.wave.enabled
9282 type: RelaxedAtomicBool
9287 - name: media.ogg.enabled
9288 type: RelaxedAtomicBool
9293 - name: media.webm.enabled
9294 type: RelaxedAtomicBool
9299 - name: media.av1.enabled
9300 type: RelaxedAtomicBool
9301 #if defined(XP_WIN) && !defined(_ARM64_)
9303 #elif defined(XP_MACOSX)
9305 #elif defined(MOZ_WIDGET_ANDROID)
9306 value: @IS_EARLY_BETA_OR_EARLIER@
9307 #elif defined(XP_UNIX)
9314 - name: media.av1.use-dav1d
9315 type: RelaxedAtomicBool
9316 #if defined(XP_WIN) && !defined(_ARM64_)
9318 #elif defined(XP_MACOSX)
9320 #elif defined(XP_UNIX)
9327 - name: media.flac.enabled
9328 type: RelaxedAtomicBool
9333 - name: media.hls.enabled
9334 type: RelaxedAtomicBool
9338 # Max number of HLS players that can be created concurrently. Used only on
9339 # Android and when "media.hls.enabled" is true.
9341 - name: media.hls.max-allocations
9347 - name: media.mp4.enabled
9348 type: RelaxedAtomicBool
9356 - name: media.mp4.sniff_iso_brand
9357 type: RelaxedAtomicBool
9361 # Error/warning handling, Decoder Doctor.
9363 # Set to true to force demux/decode warnings to be treated as errors.
9364 - name: media.playback.warnings-as-errors
9365 type: RelaxedAtomicBool
9369 # Resume video decoding when the cursor is hovering on a background tab to
9370 # reduce the resume latency and improve the user experience.
9371 - name: media.resume-bkgnd-video-on-tabhover
9376 - name: media.videocontrols.lock-video-orientation
9381 # Media Seamless Looping
9382 - name: media.seamless-looping
9383 type: RelaxedAtomicBool
9387 - name: media.autoplay.block-event.enabled
9392 - name: media.media-capabilities.enabled
9393 type: RelaxedAtomicBool
9397 - name: media.media-capabilities.screen.enabled
9398 type: RelaxedAtomicBool
9402 - name: media.benchmark.vp9.fps
9403 type: RelaxedAtomicUint32
9407 - name: media.benchmark.vp9.threshold
9408 type: RelaxedAtomicUint32
9412 - name: media.benchmark.vp9.versioncheck
9413 type: RelaxedAtomicUint32
9417 - name: media.benchmark.frames
9418 type: RelaxedAtomicUint32
9422 - name: media.benchmark.timeout
9423 type: RelaxedAtomicUint32
9427 - name: media.test.video-suspend
9428 type: RelaxedAtomicBool
9432 # MediaCapture prefs follow
9434 # Enables navigator.mediaDevices and getUserMedia() support. See also
9435 # media.peerconnection.enabled
9436 - name: media.navigator.enabled
9441 # This pref turns off window-focus checks on the navigator.mediaDevices methods,
9442 # for partner testing frameworks.
9443 # Prefer "focusmanager.testmode", which is already set by default for
9444 # web-platform tests.
9445 - name: media.devices.unfocused.enabled
9450 # This pref turns off [SecureContext] on the navigator.mediaDevices object, for
9451 # more compatible legacy behavior.
9452 - name: media.devices.insecure.enabled
9457 # If the above pref is also enabled, this pref enabled getUserMedia() support
9458 # in http, bypassing the instant NotAllowedError you get otherwise.
9459 - name: media.getusermedia.insecure.enabled
9464 # Enable tab sharing
9465 - name: media.getusermedia.browser.enabled
9466 type: RelaxedAtomicBool
9470 # The getDisplayMedia method is always SecureContext regardless of the above two
9471 # prefs. But it is not implemented on android, and can be turned off elsewhere.
9472 - name: media.getdisplaymedia.enabled
9474 value: @IS_NOT_ANDROID@
9477 # Turn off any cameras (but not mics) while in the background. This is desirable
9479 - name: media.getusermedia.camera.background.mute.enabled
9484 # WebRTC prefs follow
9486 # Enables RTCPeerConnection support. Note that, when true, this pref enables
9487 # navigator.mediaDevices and getUserMedia() support as well.
9488 # See also media.navigator.enabled
9489 - name: media.peerconnection.enabled
9494 - name: media.peerconnection.dtmf.enabled
9499 - name: media.peerconnection.identity.enabled
9505 # Use MediaDataDecoder API for VP8/VP9 in WebRTC. This includes hardware
9506 # acceleration for decoding.
9507 - name: media.navigator.mediadatadecoder_vpx_enabled
9508 type: RelaxedAtomicBool
9509 #if defined(NIGHTLY_BUILD)
9516 # Use MediaDataDecoder API for H264 in WebRTC. This includes hardware
9517 # acceleration for decoding.
9518 - name: media.navigator.mediadatadecoder_h264_enabled
9519 type: RelaxedAtomicBool
9520 #if defined(_ARM64_) && defined(XP_WIN)
9529 # HTMLMediaElement.allowedToPlay should be exposed to web content when
9530 # block autoplay rides the trains to release. Until then, Nightly only.
9531 - name: media.allowed-to-play.enabled
9533 value: @IS_NIGHTLY_BUILD@
9536 # Is support for MediaDevices.ondevicechange enabled?
9537 - name: media.ondevicechange.enabled
9542 # Is support for HTMLMediaElement.seekToNextFrame enabled?
9543 - name: media.seekToNextFrame.enabled
9548 # setSinkId will be enabled in bug 1498512. Till then the
9549 # implementation will remain hidden behind this pref (Bug 1152401, Bug 934425).
9550 - name: media.setsinkid.enabled
9555 # Turn on this pref can enable test-only events for media element.
9556 - name: media.testing-only-events
9561 - name: media.useAudioChannelService.testing
9566 - name: media.audioFocus.management
9568 #if defined(MOZ_WIDGET_ANDROID)
9575 - name: media.hardwaremediakeys.enabled
9580 # If this pref is on, then `media.mediacontrol.stopcontrol.timer.ms` would take
9581 # effect and determine the timing to stop controlling media.
9582 - name: media.mediacontrol.stopcontrol.timer
9587 # If media is being paused after a certain period, then we would think that
9588 # media doesn't need to be controlled anymore. Therefore, that media would stop
9589 # listening to the media control key events. The value of this pref is how long
9590 # media would stop listening to the event after it's paused. The default value
9591 # is set to 24 hrs (24*60*60*1000)
9592 - name: media.mediacontrol.stopcontrol.timer.ms
9593 type: RelaxedAtomicUint32
9597 # If this pref is on, we would stop controlling media after it reaches to the
9599 - name: media.mediacontrol.stopcontrol.aftermediaends
9604 # We would only use media control to control media which duration is longer
9606 - name: media.mediacontrol.eligible.media.duration.s
9611 - name: media.webrtc.platformencoder
9612 type: RelaxedAtomicBool
9613 #if defined(MOZ_WIDGET_ANDROID)
9620 - name: media.webrtc.software_encoder.fallback
9621 type: RelaxedAtomicBool
9622 #if !defined(MOZ_WIDGET_GTK)
9629 - name: media.webrtc.platformencoder.sw_mft
9630 type: RelaxedAtomicBool
9631 value: @IS_EARLY_BETA_OR_EARLIER@
9634 - name: media.block-autoplay-until-in-foreground
9636 #if !defined(MOZ_WIDGET_ANDROID)
9643 - name: media.webrtc.hw.h264.enabled
9645 #if defined(MOZ_WIDGET_ANDROID)
9652 # If true, then we require explicit approval from the embedding app (ex. Fenix)
9653 # on GeckoView to know if we can allow audible, inaudible media or both kinds
9654 # of media to autoplay.
9655 - name: media.geckoview.autoplay.request
9660 # This is used in testing only, in order to skip the prompting process. This
9661 # pref works only when enabling the pref `media.geckoview.autoplay.request`.
9662 # 0=prompt as normal, 1=allow all, 2=deny all, 3=allow audible request,
9663 # 4=deny audible request, 5=allow inaudible request, 6=deny inaudible request.
9664 # 7=leave all requests pending.
9665 - name: media.geckoview.autoplay.request.testing
9670 - name: media.mediacontrol.testingevents.enabled
9675 #if defined(XP_MACOSX)
9676 - name: media.macos.screenrecording.oscheck.enabled
9682 # When the playback rate of an HTMLMediaElement is greater than this value, or
9683 # lower than the inverse of this value, the audio is muted.
9684 - name: media.audio.playbackrate.muting_threshold
9689 # Time-stretch algorithm single processing sequence length in milliseconds.
9690 # This determines to how long sequences the original sound is chopped in the
9691 # time-stretch algorithm.
9692 - name: media.audio.playbackrate.soundtouch_sequence_ms
9693 type: RelaxedAtomicInt32
9697 # Time-stretch algorithm seeking window length in milliseconds for algorithm
9698 # that finds the best possible overlapping location. This determines from how
9699 # wide window the algorithm may look for an optimal joining location when mixing
9700 # the sound sequences back together.
9701 - name: media.audio.playbackrate.soundtouch_seekwindow_ms
9702 type: RelaxedAtomicInt32
9706 # Time-stretch algorithm overlap length in milliseconds. When the chopped sound
9707 # sequences are mixed back together, to form a continuous sound stream, this
9708 # parameter defines over how long period the two consecutive sequences are let
9709 # to overlap each other.
9710 - name: media.audio.playbackrate.soundtouch_overlap_ms
9711 type: RelaxedAtomicInt32
9715 # The duration, in milliseconds, of decoded audio to keep around in the
9716 # AudioSink ring-buffer. New decoding operations are started when this limit is
9717 # reached. The total size of the ring-buffer is slightly bigger than this.
9718 - name: media.audio.audiosink.threshold_ms
9720 #if defined(XP_MACOSX) && defined(MOZ_AARCH64)
9728 #---------------------------------------------------------------------------
9729 # Prefs starting with "midi."
9730 #---------------------------------------------------------------------------
9732 - name: midi.testing
9733 type: RelaxedAtomicBool
9737 #---------------------------------------------------------------------------
9738 # Prefs starting with "mousewheel."
9739 #---------------------------------------------------------------------------
9741 # This affects how line scrolls from wheel events will be accelerated.
9742 # Factor to be multiplied for constant acceleration.
9743 - name: mousewheel.acceleration.factor
9744 type: RelaxedAtomicInt32
9748 # This affects how line scrolls from wheel events will be accelerated.
9749 # Number of mousewheel clicks when acceleration starts.
9750 # Acceleration can be turned off if pref is set to -1.
9751 - name: mousewheel.acceleration.start
9752 type: RelaxedAtomicInt32
9756 # Auto-dir is a feature which treats any single-wheel scroll as a scroll in the
9757 # only one scrollable direction if the target has only one scrollable
9758 # direction. For example, if the user scrolls a vertical wheel inside a target
9759 # which is horizontally scrollable but vertical unscrollable, then the vertical
9760 # scroll is converted to a horizontal scroll for that target.
9761 # Note that auto-dir only takes effect for |mousewheel.*.action|s and
9762 # |mousewheel.*.action.override_x|s whose values are 1.
9763 - name: mousewheel.autodir.enabled
9768 # When a wheel scroll is converted due to auto-dir, which side the converted
9769 # scroll goes towards is decided by one thing called "honoured target". If the
9770 # content of the honoured target horizontally starts from right to left, then
9771 # an upward scroll maps to a rightward scroll and a downward scroll maps to a
9772 # leftward scroll; otherwise, an upward scroll maps to a leftward scroll and a
9773 # downward scroll maps to a rightward scroll.
9774 # If this pref is set to false, then consider the scrolling target as the
9776 # If set to true, then consider the root element in the document where the
9777 # scrolling target is as the honoured target. But note that there's one
9778 # exception: for targets in an HTML document, the real root element(I.e. the
9779 # <html> element) is typically not considered as a root element, but the <body>
9780 # element is typically considered as a root element. If there is no <body>
9781 # element, then consider the <html> element instead.
9782 - name: mousewheel.autodir.honourroot
9787 - name: mousewheel.system_scroll_override.enabled
9788 type: RelaxedAtomicBool
9789 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
9796 # Prefs for overriding the system mouse wheel scrolling speed on
9797 # content of the web pages. When
9798 # "mousewheel.system_scroll_override.enabled" is true and the
9799 # system scrolling speed isn't customized by the user, the content scrolling
9800 # speed is multiplied by the following factors. The value will be used as
9801 # 1/100. E.g., 200 means 2.00.
9802 # NOTE: Even if "mousewheel.system_scroll_override.enabled" is
9803 # true, when Gecko detects the user customized the system scrolling speed
9804 # settings, the override isn't executed.
9805 - name: mousewheel.system_scroll_override.horizontal.factor
9806 type: RelaxedAtomicInt32
9809 - name: mousewheel.system_scroll_override.vertical.factor
9810 type: RelaxedAtomicInt32
9814 # Mouse wheel scroll transaction is held even if the mouse cursor is moved.
9815 - name: mousewheel.transaction.ignoremovedelay
9816 type: RelaxedAtomicInt32
9820 # Mouse wheel scroll transaction period of time (in milliseconds).
9821 - name: mousewheel.transaction.timeout
9822 type: RelaxedAtomicInt32
9826 # Mouse wheel scroll position is determined by GetMessagePos rather than
9828 - name: mousewheel.ignore_cursor_position_in_lparam
9829 type: RelaxedAtomicBool
9833 # If line-height is lower than this value (in device pixels), 1 line scroll
9834 # scrolls this height.
9835 - name: mousewheel.min_line_scroll_amount
9840 #---------------------------------------------------------------------------
9841 # Prefs starting with "mozilla."
9842 #---------------------------------------------------------------------------
9844 - name: mozilla.widget.raise-on-setfocus
9849 #---------------------------------------------------------------------------
9850 # Prefs starting with "network."
9851 #---------------------------------------------------------------------------
9853 # Force less-secure NTLMv1 when needed (NTLMv2 is the default).
9854 - name: network.auth.force-generic-ntlm-v1
9855 type: RelaxedAtomicBool
9859 # Sub-resources HTTP-authentication:
9860 # 0 - don't allow sub-resources to open HTTP authentication credentials
9862 # 1 - allow sub-resources to open HTTP authentication credentials dialogs,
9863 # but don't allow it for cross-origin sub-resources
9864 # 2 - allow the cross-origin authentication as well.
9865 - name: network.auth.subresource-http-auth-allow
9870 # Sub-resources HTTP-authentication for cross-origin images:
9871 # - true: It is allowed to present http auth. dialog for cross-origin images.
9872 # - false: It is not allowed.
9873 # If network.auth.subresource-http-auth-allow has values 0 or 1 this pref does
9874 # not have any effect.
9875 - name: network.auth.subresource-img-cross-origin-http-auth-allow
9880 # Resources that are triggered by some non-web-content:
9881 # - true: They are allow to present http auth. dialog
9882 # - false: They are not allow to present http auth. dialog.
9883 - name: network.auth.non-web-content-triggered-resources-http-auth-allow
9888 # Whether to show anti-spoof confirmation prompts when navigating to a url
9890 - name: network.auth.confirmAuth.enabled
9895 # Whether to use new implementation of ParseReasm
9896 - name: network.auth.use_new_parse_realm
9897 type: RelaxedAtomicBool
9901 # Whether to use new implementation of ParseReasm
9902 - name: network.auth.allow_multiple_challenges_same_line
9903 type: RelaxedAtomicBool
9907 # Whether to use challenges in the most secure order. See bug 650091.
9908 - name: network.auth.choose_most_secure_challenge
9909 type: RelaxedAtomicBool
9913 # See the full list of values in nsICookieService.idl.
9914 - name: network.cookie.cookieBehavior
9915 type: RelaxedAtomicInt32
9916 value: 0 # accept all cookies
9919 # See the full list of values in nsICookieService.idl.
9920 - name: network.cookie.rejectForeignWithExceptions.enabled
9925 # The cookieBehavior to be used in Private Browsing mode.
9926 - name: network.cookie.cookieBehavior.pbmode
9927 type: RelaxedAtomicInt32
9928 value: 0 # accept all cookies
9931 # Stale threshold for cookies in seconds.
9932 - name: network.cookie.staleThreshold
9937 # Cookie lifetime policy. Possible values:
9938 # 0 - accept all cookies
9939 # 1 - deprecated. don't use it.
9940 # 2 - accept as session cookies
9941 # 3 - deprecated. don't use it.
9942 - name: network.cookie.lifetimePolicy
9943 type: RelaxedAtomicInt32
9947 - name: network.cookie.sameSite.laxByDefault
9948 type: RelaxedAtomicBool
9949 value: @IS_EARLY_BETA_OR_EARLIER@
9952 # lax-by-default 2 minutes tollerance for unsafe methods. The value is in seconds.
9953 - name: network.cookie.sameSite.laxPlusPOST.timeout
9958 - name: network.cookie.sameSite.noneRequiresSecure
9960 value: @IS_EARLY_BETA_OR_EARLIER@
9963 - name: network.cookie.sameSite.schemeful
9965 value: @IS_EARLY_BETA_OR_EARLIER@
9968 - name: network.cookie.thirdparty.sessionOnly
9973 - name: network.cookie.thirdparty.nonsecureSessionOnly
9978 # If we should not store "persistent" cookies at all, i.e., make the
9979 # "persistent" storage be like "private" storage. This value is only read when
9980 # instantiating persistent storage for the cookie service, which usually only
9981 # happens when the cookie service singleton is created.
9982 - name: network.cookie.noPersistentStorage
9987 # If we should attempt to race the cache and network.
9988 - name: network.http.rcwn.enabled
9993 - name: network.http.rcwn.cache_queue_normal_threshold
9998 - name: network.http.rcwn.cache_queue_priority_threshold
10003 # We might attempt to race the cache with the network only if a resource
10004 # is smaller than this size.
10005 - name: network.http.rcwn.small_resource_size_kb
10010 - name: network.http.rcwn.min_wait_before_racing_ms
10015 - name: network.http.rcwn.max_wait_before_racing_ms
10020 # false=real referer, true=spoof referer (use target URI as referer).
10021 - name: network.http.referer.spoofSource
10026 # Check whether we need to hide referrer when leaving a .onion domain.
10027 # false=allow onion referer, true=hide onion referer (use empty referer).
10028 - name: network.http.referer.hideOnionSource
10033 # Include an origin header on non-GET and non-HEAD requests regardless of CORS.
10034 # 0=never send, 1=send when same-origin only, 2=always send.
10035 - name: network.http.sendOriginHeader
10040 # Prefs allowing granular control of referers.
10041 # 0=don't send any, 1=send only on clicks, 2=send on image requests as well
10042 - name: network.http.sendRefererHeader
10046 do_not_use_directly: true
10048 # The maximum allowed length for a referrer header - 4096 default.
10049 # 0 means no limit.
10050 - name: network.http.referer.referrerLengthLimit
10055 # 0=always send, 1=send iff base domains match, 2=send iff hosts match.
10056 - name: network.http.referer.XOriginPolicy
10060 do_not_use_directly: true
10062 # 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port.
10063 - name: network.http.referer.trimmingPolicy
10067 do_not_use_directly: true
10069 # 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port.
10070 - name: network.http.referer.XOriginTrimmingPolicy
10074 do_not_use_directly: true
10076 # Set the default Referrer Policy; to be used unless overriden by the site.
10077 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
10078 # 3=no-referrer-when-downgrade.
10079 - name: network.http.referer.defaultPolicy
10084 # Set the default Referrer Policy applied to third-party trackers when the
10085 # default cookie policy is set to reject third-party trackers, to be used
10086 # unless overriden by the site.
10087 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
10088 # 3=no-referrer-when-downgrade.
10089 # Trim referrers from trackers to origins by default.
10090 - name: network.http.referer.defaultPolicy.trackers
10095 # Set the Private Browsing Default Referrer Policy, to be used
10096 # unless overriden by the site.
10097 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
10098 # 3=no-referrer-when-downgrade.
10099 - name: network.http.referer.defaultPolicy.pbmode
10104 # Set to ignore referrer policies which is less restricted than the default for
10105 # cross-site requests, including 'unsafe-url', 'no-referrer-when-downgrade' and
10106 # 'origin-when-cross-origin'.
10107 - name: network.http.referer.disallowCrossSiteRelaxingDefault
10112 # Whether we ignore less restricted referrer policies for top navigations.
10113 - name: network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation
10119 # Set to ignore referrer policies which is less restricted than the default for
10120 # cross-site requests in the private browsing mode, including 'unsafe-url',
10121 # 'no-referrer-when-downgrade' and 'origin-when-cross-origin'.
10122 - name: network.http.referer.disallowCrossSiteRelaxingDefault.pbmode
10127 # Whether we ignore less restricted referrer policies for top navigations in the
10128 # private browsing mode.
10129 - name: network.http.referer.disallowCrossSiteRelaxingDefault.pbmode.top_navigation
10134 # Set the Private Browsing Default Referrer Policy applied to third-party
10135 # trackers when the default cookie policy is set to reject third-party
10136 # trackers, to be used unless overriden by the site.
10137 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
10138 # 3=no-referrer-when-downgrade.
10139 # No need to change this pref for trimming referrers from trackers since in
10140 # private windows we already trim all referrers to origin only.
10141 - name: network.http.referer.defaultPolicy.trackers.pbmode
10146 # Whether certain http header values should be censored out in logs.
10147 # Specifically filters out "authorization" and "proxy-authorization".
10148 - name: network.http.sanitize-headers-in-logs
10149 type: RelaxedAtomicBool
10153 # Set this pref to an integer like 99 to override the User-Agent string's
10154 # Firefox version. The value 0 means use the default Firefox version. If
10155 # enterprise users rely on sites that aren't compatible with Firefox version
10156 # 100's three-digit version number, enterprise admins can set this pref to a
10157 # known-good version (like 99) in an enterprise policy file.
10158 - name: network.http.useragent.forceVersion
10163 # Whether or not we use Windows for SSO to Microsoft sites.
10164 - name: network.http.windows-sso.enabled
10165 type: RelaxedAtomicBool
10169 # The factor by which to increase the keepalive timeout when the
10170 # NS_HTTP_LARGE_KEEPALIVE flag is used for a connection
10171 - name: network.http.largeKeepaliveFactor
10172 type: RelaxedAtomicUint32
10176 # If set to true, IOService.offline depends on IOService.connectivity.
10177 - name: network.offline-mirrors-connectivity
10178 type: RelaxedAtomicBool
10182 # If set to true, disallow localhost connections when offline.
10183 - name: network.disable-localhost-when-offline
10184 type: RelaxedAtomicBool
10188 # Enables the predictive service.
10189 - name: network.predictor.enabled
10194 # Set true to allow resolving proxy for localhost
10195 - name: network.proxy.allow_hijacking_localhost
10196 type: RelaxedAtomicBool
10200 # This pref will still treat localhost URLs as secure even when hijacked
10201 # during testing. This is necessary for automated testing to check that we
10202 # actually treat localhost as a secure origin.
10203 - name: network.proxy.testing_localhost_is_secure_when_hijacked
10204 type: RelaxedAtomicBool
10208 # Allow CookieJarSettings to be unblocked for channels without a document.
10209 # This is for testing only.
10210 - name: network.cookieJarSettings.unblocked_for_testing
10215 - name: network.predictor.enable-hover-on-ssl
10220 - name: network.predictor.enable-prefetch
10222 value: @IS_EARLY_BETA_OR_EARLIER@
10225 - name: network.predictor.page-degradation.day
10229 - name: network.predictor.page-degradation.week
10233 - name: network.predictor.page-degradation.month
10237 - name: network.predictor.page-degradation.year
10241 - name: network.predictor.page-degradation.max
10246 - name: network.predictor.subresource-degradation.day
10250 - name: network.predictor.subresource-degradation.week
10254 - name: network.predictor.subresource-degradation.month
10258 - name: network.predictor.subresource-degradation.year
10262 - name: network.predictor.subresource-degradation.max
10267 - name: network.predictor.prefetch-rolling-load-count
10272 - name: network.predictor.prefetch-min-confidence
10276 - name: network.predictor.preconnect-min-confidence
10280 - name: network.predictor.preresolve-min-confidence
10285 - name: network.predictor.prefetch-force-valid-for
10290 - name: network.predictor.max-resources-per-entry
10295 # This is selected in concert with max-resources-per-entry to keep memory
10296 # usage low-ish. The default of the combo of the two is ~50k.
10297 - name: network.predictor.max-uri-length
10303 - name: network.predictor.doing-tests
10308 # Enables `<link rel="preload">` tag and `Link: rel=preload` response header handling.
10309 - name: network.preload
10310 type: RelaxedAtomicBool
10314 # Enable 103 Early Hint status code (RFC 8297)
10315 - name: network.early-hints.enabled
10316 type: RelaxedAtomicBool
10320 # Whether to use the network process or not
10321 # Start a separate socket process. Performing networking on the socket process
10322 # is control by a sepparate pref
10323 # ("network.http.network_access_on_socket_process.enabled").
10324 # Changing these prefs requires a restart.
10325 - name: network.process.enabled
10326 type: RelaxedAtomicBool
10328 #if defined(ANDROID) || defined(MOZ_THUNDERBIRD)
10329 value: false # see bug 1641427
10334 # Whether we can send OnDataAvailable to content process directly.
10335 - name: network.send_ODA_to_content_directly
10336 type: RelaxedAtomicBool
10340 # Perform all network access on the socket process.
10341 # The pref requires "network.process.enabled" to be true.
10342 # Changing these prefs requires a restart.
10343 - name: network.http.network_access_on_socket_process.enabled
10344 type: RelaxedAtomicBool
10348 # Telemetry of traffic categories. Whether or not to enable HttpTrafficAnalyzer.
10349 - name: network.traffic_analyzer.enabled
10350 type: RelaxedAtomicBool
10354 # Whether DNS resolution is limited to literals and cached entries.
10355 - name: network.dns.disabled
10356 type: RelaxedAtomicBool
10360 # Whether DNS resolution is limited to literals and cached entries.
10361 - name: network.dns.skipTRR-when-parental-control-enabled
10362 type: RelaxedAtomicBool
10366 - name: network.dns.disablePrefetchFromHTTPS
10371 # Max time to shutdown the resolver threads
10372 - name: network.dns.resolver_shutdown_timeout_ms
10377 # When true on Windows DNS resolutions for single label domains
10378 # (domains that don't contain a dot) will be resolved using the DnsQuery
10379 # API instead of PR_GetAddrInfoByName
10380 - name: network.dns.dns_query_single_label
10381 type: RelaxedAtomicBool
10385 # When this pref is true we enforce a 253 character limit on domains we try to
10386 # resolve. See bug 1264117. If it doesn't cause any web-compat issues we can
10387 # remove it in a few releases
10388 - name: network.dns.limit_253_chars
10389 type: RelaxedAtomicBool
10393 # When this pref is true, we copy the host name to a fresh string before
10394 # calling into getaddrinfo.
10395 - name: network.dns.copy_string_before_call
10396 type: RelaxedAtomicBool
10400 # The proxy type. See nsIProtocolProxyService.idl
10401 # PROXYCONFIG_DIRECT = 0
10402 # PROXYCONFIG_MANUAL = 1
10403 # PROXYCONFIG_PAC = 2
10404 # PROXYCONFIG_WPAD = 4
10405 # PROXYCONFIG_SYSTEM = 5
10406 - name: network.proxy.type
10407 type: RelaxedAtomicUint32
10411 # Whether the SOCKS proxy should be in charge of DNS resolution.
10412 - name: network.proxy.socks_remote_dns
10413 type: RelaxedAtomicBool
10417 # When receiving a network change event, the time (in ms) we wait to reload the
10419 - name: network.proxy.reload_pac_delay
10420 type: RelaxedAtomicUint32
10424 # When parsing "SOCKS" in PAC string, the default version of SOCKS that will be
10426 - name: network.proxy.default_pac_script_socks_version
10427 type: RelaxedAtomicUint32
10431 # Whether to force failover to direct for system requests.
10432 #ifdef MOZ_PROXY_DIRECT_FAILOVER
10433 - name: network.proxy.failover_direct
10439 # Whether to allow a bypass flag to be set on httpChannel that will
10440 # prevent proxies from being used for that specific request.
10441 - name: network.proxy.allow_bypass
10446 - name: network.proxy.parse_pac_on_socket_process
10447 type: RelaxedAtomicBool
10451 - name: network.proxy.detect_system_proxy_changes
10452 type: RelaxedAtomicBool
10456 # Some requests during a page load are marked as "tail", mainly trackers, but not only.
10457 # This pref controls whether such requests are put to the tail, behind other requests
10458 # emerging during page loading process.
10459 - name: network.http.tailing.enabled
10464 # Whether to run proxy checks when processing Alt-Svc headers.
10465 - name: network.http.altsvc.proxy_checks
10470 - name: network.http.stale_while_revalidate.enabled
10471 type: RelaxedAtomicBool
10475 # Whether to cache SSL resumption tokens in necko.
10476 - name: network.ssl_tokens_cache_enabled
10477 type: RelaxedAtomicBool
10481 # Capacity of the above cache, in kilobytes.
10482 - name: network.ssl_tokens_cache_capacity
10483 type: RelaxedAtomicUint32
10487 # The maximum allowed length for a URL - 1MB default.
10488 - name: network.standard-url.max-length
10489 type: RelaxedAtomicUint32
10493 # Default global TRR provider
10494 - name: network.trr.default_provider_uri
10496 value: "https://mozilla.cloudflare-dns.com/dns-query"
10499 # If true, don't fallback to native DNS upon network errors.
10500 - name: network.trr.strict_native_fallback
10501 type: RelaxedAtomicBool
10502 value: @IS_NIGHTLY_BUILD@
10505 # If true, we'll fallback to native if the retry also times out.
10506 - name: network.trr.strict_native_fallback_allow_timeouts
10507 type: RelaxedAtomicBool
10511 # Single TRR request timeout (ms) when strict native fallback is enabled.
10512 - name: network.trr.strict_fallback_request_timeout_ms
10513 type: RelaxedAtomicUint32
10517 # If false, the temporary blocklisting feature is disabled.
10518 # This is useful for tests to prevent bleeding extra reqs
10519 # between tasks, since we may attempt to look up the
10520 # parent domain in the background when blocklisting a host.
10521 - name: network.trr.temp_blocklist
10522 type: RelaxedAtomicBool
10526 # TRR blocklist entry expire time (in seconds). Default is one minute.
10527 # Meant to survive basically a page load.
10528 - name: network.trr.temp_blocklist_duration_sec
10529 type: RelaxedAtomicUint32
10533 # Single TRR request timeout, in milliseconds
10534 - name: network.trr.request_timeout_ms
10535 type: RelaxedAtomicUint32
10539 # Single TRR request timeout, in milliseconds for mode 3
10540 - name: network.trr.request_timeout_mode_trronly_ms
10541 type: RelaxedAtomicUint32
10545 # The timeout of the TRR confirmation request
10546 - name: network.trr.confirmation_timeout_ms
10547 type: RelaxedAtomicUint32
10551 # The timeout of the TRR confirmation request
10552 - name: network.trr.confirmation_telemetry_enabled
10553 type: RelaxedAtomicBool
10557 # Whether to send the Accept-Language header for TRR requests
10558 - name: network.trr.send_accept-language_headers
10559 type: RelaxedAtomicBool
10563 # Whether to send an empty Accept-Encoding header for TRR requests
10564 - name: network.trr.send_empty_accept-encoding_headers
10565 type: RelaxedAtomicBool
10569 # Whether to send the User-Agent header for TRR requests
10570 - name: network.trr.send_user-agent_headers
10571 type: RelaxedAtomicBool
10575 # This pref controls whether to use TRRServiceChannel off main thread.
10576 - name: network.trr.fetch_off_main_thread
10577 type: RelaxedAtomicBool
10581 # If we should wait for captive portal confirmation before enabling TRR
10582 - name: network.trr.wait-for-portal
10583 type: RelaxedAtomicBool
10587 # If we should wait for TRR service confirmation to complete before enabling
10588 # TRR for lookups when fallback is enabled. Confirmation is always skipped when
10589 # global mode is TRR-only (no fallback).
10590 - name: network.trr.wait-for-confirmation
10591 type: RelaxedAtomicBool
10595 # Normally when confirmation fails we wait for the confirmation to succeed
10596 # before attempting to do TRR. When this pref is true, we optimistically
10597 # assume the confirmation will succeed and might attempt TRR anyway.
10598 # If network.trr.wait-for-confirmation is true, this pref is ignored.
10599 - name: network.trr.attempt-when-retrying-confirmation
10600 type: RelaxedAtomicBool
10604 # Use GET (rather than POST)
10605 - name: network.trr.useGET
10606 type: RelaxedAtomicBool
10610 # Allow RFC1918 address in responses?
10611 - name: network.trr.allow-rfc1918
10612 type: RelaxedAtomicBool
10616 # When true, it only sends AAAA when the system has IPv6 connectivity
10617 - name: network.trr.skip-AAAA-when-not-supported
10618 type: RelaxedAtomicBool
10622 # Whether to apply split horizon mitigations when using TRR.
10623 # These include adding the DNS suffix to the excluded domains
10624 - name: network.trr.split_horizon_mitigations
10625 type: RelaxedAtomicBool
10629 # Explicitly disable ECS (EDNS Client Subnet, RFC 7871)
10630 - name: network.trr.disable-ECS
10631 type: RelaxedAtomicBool
10635 # When true, the DNS+TRR cache will be cleared when a relevant TRR pref
10636 # changes. (uri, bootstrapAddress, excluded-domains)
10637 - name: network.trr.clear-cache-on-pref-change
10638 type: RelaxedAtomicBool
10642 # After this many failed TRR requests in a row, consider TRR borked
10643 - name: network.trr.max-fails
10644 type: RelaxedAtomicUint32
10648 # When the TRR confirmation is set to CONFIRM_FAILED due to many failures in
10649 # a row, we set a timer to retry. This has an exponential backoff up to
10651 - name: network.trr.retry-timeout-ms
10652 type: RelaxedAtomicUint32
10656 # Retry with no TRR when the response contained only 0.0.0.0 or ::
10657 - name: network.trr.fallback-on-zero-response
10658 type: RelaxedAtomicBool
10662 # If true we parse the /etc/hosts file and exclude any host names from TRR.
10663 # Reading the file is only done once, when TRR is first enabled - this could be
10664 # soon after startup or when the pref is flipped.
10665 - name: network.trr.exclude-etc-hosts
10666 type: RelaxedAtomicBool
10670 # Whether to enable odoh.
10671 - name: network.trr.odoh.enabled
10672 type: RelaxedAtomicBool
10676 # The uri of Oblivious Proxy.
10677 - name: network.trr.odoh.proxy_uri
10682 # The host name of Oblivious Target.
10683 - name: network.trr.odoh.target_host
10688 # The uri path of the odoh uri.
10689 - name: network.trr.odoh.target_path
10694 # The minimum ttl of the DNS record that contains ODoHConfigs.
10695 - name: network.trr.odoh.min_ttl
10696 type: RelaxedAtomicUint32
10700 # The uri indicates where to get ODoHConfigs.
10701 - name: network.trr.odoh.configs_uri
10706 # Whether to add padding in the doh dns queries (rfc 7830)
10707 - name: network.trr.padding
10708 type: RelaxedAtomicBool
10712 # The block size to pad to. Capped at 1024 bytes.
10713 # Setting it to 0 doesn't add additional padding, but allows the server to
10714 # respond with padding (RFC7930 Sec 4)
10715 - name: network.trr.padding.length
10716 type: RelaxedAtomicUint32
10720 # Whether to skip the NS check for the blocked host.
10721 # Note this is used for test only.
10722 - name: network.trr.skip-check-for-blocked-host
10723 type: RelaxedAtomicBool
10727 # Whether to use the connection info that is generated asynchronously.
10728 - name: network.trr.async_connInfo
10729 type: RelaxedAtomicBool
10733 # Allow the network changed event to get sent when a network topology or setup
10734 # change is noticed while running.
10735 - name: network.notify.changed
10736 type: RelaxedAtomicBool
10740 # Allow network detection of IPv6 related changes (bug 1245059)
10741 - name: network.notify.IPv6
10742 type: RelaxedAtomicBool
10750 # Whether to check the dnsSuffix on network changes
10751 - name: network.notify.dnsSuffixList
10752 type: RelaxedAtomicBool
10756 # Whether to check the registry for proxies on network changes that indicate
10757 # that TRR should not be used.
10758 - name: network.notify.checkForProxies
10759 type: RelaxedAtomicBool
10763 # Whether to check the registry for NRPT rules on network changes that
10764 # indicate that TRR should not be used.
10765 - name: network.notify.checkForNRPT
10766 type: RelaxedAtomicBool
10770 # Whether NotifyIpInterfaceChange should be called immediately after
10771 # registration in order to record the initial state of the network adapters.
10772 - name: network.notify.initial_call
10773 type: RelaxedAtomicBool
10777 # Whether to check for DNS resolvers
10778 - name: network.notify.resolvers
10779 type: RelaxedAtomicBool
10783 # Whether to use the rust implemented DefaultURI for unknown scheme types
10784 - name: network.url.useDefaultURI
10785 type: RelaxedAtomicBool
10789 # The maximum allowed length for a URL - 32MB default.
10790 # If 0 that means no limit.
10791 - name: network.url.max-length
10792 type: RelaxedAtomicUint32
10793 value: 32 * 1024 * 1024
10796 # Force remapping of remote port numbers to allow reaching local testing
10797 # servers or port forwarders listening on non-standard ports. Note that
10798 # this is not changing the origin URL in the addressbar, only internally
10799 # the port number used. This is intended to be used along with the
10800 # `network.dns.forceResolve` preference.
10803 # "80,443,808-888=8080; 563=8081"
10804 # this will remap ports for HTTP, HTTPS and the range of 808-888 included
10805 # to use port 8080, and port 563 to go to 8081.
10806 - name: network.socket.forcePort
10811 # Try and use HTTP2 when using SSL
10812 - name: network.http.http2.enabled
10813 type: RelaxedAtomicBool
10817 - name: network.http.http2.enabled.deps
10818 type: RelaxedAtomicBool
10822 - name: network.http.http2.enforce-tls-profile
10823 type: RelaxedAtomicBool
10827 - name: network.http.http2.chunk-size
10828 type: RelaxedAtomicInt32
10832 - name: network.http.http2.timeout
10833 type: RelaxedAtomicInt32
10837 - name: network.http.http2.coalesce-hostnames
10838 type: RelaxedAtomicBool
10842 - name: network.http.http2.persistent-settings
10843 type: RelaxedAtomicBool
10847 - name: network.http.http2.ping-threshold
10848 type: RelaxedAtomicInt32
10852 - name: network.http.http2.ping-timeout
10853 type: RelaxedAtomicInt32
10857 - name: network.http.http2.send-buffer-size
10858 type: RelaxedAtomicInt32
10862 - name: network.http.http2.allow-push
10863 type: RelaxedAtomicBool
10867 - name: network.http.http2.push-allowance
10868 type: RelaxedAtomicInt32
10869 value: 131072 # 128KB
10872 - name: network.http.http2.pull-allowance
10873 type: RelaxedAtomicInt32
10874 value: 12582912 # 12MB
10877 - name: network.http.http2.default-concurrent
10878 type: RelaxedAtomicInt32
10882 - name: network.http.http2.default-hpack-buffer
10883 type: RelaxedAtomicInt32
10887 - name: network.http.http2.websockets
10888 type: RelaxedAtomicBool
10892 - name: network.http.http2.enable-hpack-dump
10893 type: RelaxedAtomicBool
10898 - name: network.http.http3.enable
10899 type: RelaxedAtomicBool
10903 # Receive buffer size of QUIC socket
10904 - name: network.http.http3.recvBufferSize
10905 type: RelaxedAtomicInt32
10909 - name: network.http.http3.enable_qlog
10910 type: RelaxedAtomicBool
10914 - name: network.http.http3.enable_0rtt
10915 type: RelaxedAtomicBool
10919 # When a h3 transaction is inserted in the pending queue, the time (ms) we wait
10920 # to create a TCP backup connection.
10921 - name: network.http.http3.backup_timer_delay
10922 type: RelaxedAtomicUint32
10926 # The global half open sockets allowed for creating a backup connection.
10927 - name: network.http.http3.parallel_fallback_conn_limit
10928 type: RelaxedAtomicUint32
10932 # Receive buffer size of QUIC socket
10933 - name: network.http.http3.max_data
10934 type: RelaxedAtomicUint32
10938 # Receive buffer size of QUIC socket
10939 - name: network.http.http3.max_stream_data
10940 type: RelaxedAtomicUint32
10944 # Enable http3 network priority as described in
10945 # https://httpwg.org/http-extensions/draft-ietf-httpbis-priority.html
10946 - name: network.http.http3.priority
10947 type: RelaxedAtomicBool
10951 # Depriorizing background tabs notifies websites when switching to or from the
10952 # tab while still loading resources for the website. On one hand it might
10953 # improve performance when switching to an tab with a website using the same
10954 # QUIC connection. On the other hand it sends more data to the website and
10955 # might be a privacy concern.
10956 - name: network.http.http3.send_background_tabs_deprioritization
10957 type: RelaxedAtomicBool
10961 # When true, a http request will be upgraded to https when HTTPS RR is
10963 - name: network.dns.upgrade_with_https_rr
10964 type: RelaxedAtomicBool
10968 # Whether to use HTTPS RR as AltSvc
10969 - name: network.dns.use_https_rr_as_altsvc
10970 type: RelaxedAtomicBool
10974 # Whether to check for NAT64 using the system resolver
10975 - name: network.connectivity-service.nat64-check
10980 # Manually enter the NAT64 prefix that will be used if IPv4 is unavailable.
10981 # The value is formatted as IPv6 with the least significant bits to be dropped.
10982 # For example, 64:ff9b:: is a common prefix. This will not disable
10983 # the NAT64 check, although the value of this pref will be prioritized.
10984 - name: network.connectivity-service.nat64-prefix
10989 # Whether to enable echconfig.
10990 - name: network.dns.echconfig.enabled
10991 type: RelaxedAtomicBool
10995 # Whether to enable echconfig for http3.
10996 - name: network.dns.http3_echconfig.enabled
10997 type: RelaxedAtomicBool
11001 # This pref needs to be worked together with network.dns.echconfig.enabled
11002 # being true and there is no record without ECHConfig.
11003 # When we try all records with ECHConfig in HTTPS RRs and still can't connect,
11004 # this pref indicate whether we can fallback to the origin server.
11005 - name: network.dns.echconfig.fallback_to_origin_when_all_failed
11006 type: RelaxedAtomicBool
11010 # When true, reset the exclusion list when all records are excluded.
11011 - name: network.dns.httpssvc.reset_exclustion_list
11012 type: RelaxedAtomicBool
11016 # If the http3 connection cannot be ready after the timeout value here, the
11017 # transaction will start another non-http3 conneciton.
11018 # Setting this value to 0 indicates this feature is disabled.
11019 - name: network.dns.httpssvc.http3_fast_fallback_timeout
11020 type: RelaxedAtomicUint32
11024 # Whether to force a transaction to wait https rr.
11025 - name: network.dns.force_waiting_https_rr
11026 type: RelaxedAtomicBool
11027 value: @IS_NIGHTLY_BUILD@
11030 # The TTL for negative responses of TXT and HTTPS records.
11031 - name: network.dns.negative_ttl_for_type_record
11032 type: RelaxedAtomicUint32
11033 value: 300 # 5 minutes (in seconds)
11036 # Whether to use port prefixed QNAME for HTTPS RR
11037 - name: network.dns.port_prefixed_qname_https_rr
11038 type: RelaxedAtomicBool
11042 - name: network.cache.frecency_array_check_enabled
11043 type: RelaxedAtomicBool
11044 value: @IS_EARLY_BETA_OR_EARLIER@
11047 # When this pref is true, AddStorageEntry will return an error if the
11048 # OPEN_READONLY & OPEN_SECRETLY flags are passed and no entry exists.
11049 # If no regressions occur this pref should be removed.
11050 - name: network.cache.bug1708673
11051 type: RelaxedAtomicBool
11055 # This is used for a temporary workaround for a web-compat issue. If pref is
11056 # true CORS preflight requests are allowed to send client certificates.
11057 - name: network.cors_preflight.allow_client_cert
11058 type: RelaxedAtomicBool
11062 # Whether to record the telemetry event when a JAR channel is failed to load.
11063 - name: network.jar.record_failure_reason
11064 type: RelaxedAtomicBool
11065 value: @IS_EARLY_BETA_OR_EARLIER@
11068 # When this pref is true we clear the Content-Encoding header for
11069 # application/x-gzip Content-Type responses, see bug 1030660.
11071 # Assuming there are no regressions, this pref and related code should be
11073 - name: network.http.clear_bogus_content_encoding
11074 type: RelaxedAtomicBool
11078 # When this pref is true, we will use the HTTPS acceptable content encoding
11079 # list for trustworthy domains such as http://localhost
11080 - name: network.http.encoding.trustworthy_is_https
11081 type: RelaxedAtomicBool
11085 # Support http3 version1
11086 - name: network.http.http3.support_version1
11087 type: RelaxedAtomicBool
11091 # Disable early data on an origin if SSL_ERROR_PROTOCOL_VERSION_ALERT is received
11092 - name: network.http.early_data_disable_on_error
11093 type: RelaxedAtomicBool
11097 # Disable early data if it fails for more than this number of origins
11098 - name: network.http.early_data_max_error
11099 type: RelaxedAtomicUint32
11103 # The maximum count that we allow socket prrocess to crash. If this count is
11104 # reached, we won't use networking over socket process.
11105 - name: network.max_socket_process_failed_count
11106 type: RelaxedAtomicUint32
11110 #---------------------------------------------------------------------------
11111 # Prefs starting with "nglayout."
11112 #---------------------------------------------------------------------------
11114 # Enable/disable display list invalidation logging --- useful for debugging.
11115 - name: nglayout.debug.invalidation
11120 # Enable/disable widget update area flashing --- only supported with
11121 # BasicLayers (other layer managers always update the entire widget area).
11122 - name: nglayout.debug.widget_update_flashing
11123 type: RelaxedAtomicBool
11127 - name: nglayout.debug.disable_xul_cache
11132 - name: nglayout.initialpaint.delay
11137 - name: nglayout.initialpaint.delay_in_oopif
11142 #---------------------------------------------------------------------------
11143 # Prefs starting with "page_load."
11144 #---------------------------------------------------------------------------
11146 # Time in milliseconds during which certain tasks are deprioritized during
11148 - name: page_load.deprioritization_period
11149 type: RelaxedAtomicUint32
11153 #---------------------------------------------------------------------------
11154 # Prefs starting with "pdfjs."
11155 #---------------------------------------------------------------------------
11157 - name: pdfjs.disabled
11162 #---------------------------------------------------------------------------
11163 # Prefs starting with "permissions."
11164 #---------------------------------------------------------------------------
11166 # 1-Accept, 2-Deny, Any other value: Accept
11167 - name: permissions.default.image
11168 type: RelaxedAtomicUint32
11172 - name: permissions.delegation.enabled
11177 - name: permissions.isolateBy.userContext
11178 type: RelaxedAtomicBool
11182 - name: permissions.isolateBy.privateBrowsing
11183 type: RelaxedAtomicBool
11187 #---------------------------------------------------------------------------
11188 # Prefs starting with "plain_text."
11189 #---------------------------------------------------------------------------
11191 # When false, text in plaintext documents does not wrap long lines.
11192 - name: plain_text.wrap_long_lines
11197 #---------------------------------------------------------------------------
11198 # Prefs starting with "plugin."
11199 #---------------------------------------------------------------------------
11201 - name: plugin.state.flash
11203 # Flash is Click-to-Activate by default on all channels. Disabled for ARM builds.
11204 #if defined(_ARM64_) && defined(XP_WIN)
11211 #---------------------------------------------------------------------------
11212 # Prefs starting with "plugins."
11213 #---------------------------------------------------------------------------
11215 - name: plugins.flashBlock.enabled
11220 - name: plugins.http_https_only
11225 #---------------------------------------------------------------------------
11226 # Prefs starting with "preferences."
11227 #---------------------------------------------------------------------------
11229 - name: preferences.allow.omt-write
11235 # If set to true, setting a Preference matched to a `Once` StaticPref will
11236 # assert that the value matches. Such assertion being broken is a clear flag
11237 # that the Once policy shouldn't be used.
11238 - name: preferences.check.once.policy
11243 # If set to true, StaticPrefs Once policy check will be skipped during
11244 # automation regression test. Use with care. This pref must be set back to
11245 # false as soon as specific test has completed.
11246 - name: preferences.force-disable.check.once.policy
11252 #---------------------------------------------------------------------------
11253 # Prefs starting with "print."
11254 #---------------------------------------------------------------------------
11256 # Variation fonts can't always be embedded in certain output formats
11257 # such as PDF. To work around this, draw the variation fonts using
11258 # paths instead of using font embedding.
11259 - name: print.font-variations-as-paths
11260 type: RelaxedAtomicBool
11264 # Whether we always print silently (without a print dialog).
11265 - name: print.always_print_silent
11266 type: RelaxedAtomicBool
11270 # Whether the pages per sheet print setting is enabled.
11271 - name: print.pages_per_sheet.enabled
11272 type: RelaxedAtomicBool
11276 # Print via the parent process. This is only used when e10s is enabled.
11277 - name: print.print_via_parent
11278 type: RelaxedAtomicBool
11282 # Whether we allow the print progress dialog to show up.
11283 - name: print.show_print_progress
11284 type: RelaxedAtomicBool
11288 # Whether we attempt to generate links in Save As PDF output.
11289 - name: print.save_as_pdf.links.enabled
11290 type: RelaxedAtomicBool
11294 # Whether we attempt to generate and use document-internal PDF destinations.
11295 # This currently sometimes results in an internal cairo error, see bug 1725743;
11296 # disabled by default until that is resolved.
11297 - name: print.save_as_pdf.internal_destinations.enabled
11298 type: RelaxedAtomicBool
11302 # The default DPI for printing.
11304 # For PDF-based output, DPI should ideally be irrelevant, but in fact it is not
11305 # for multiple reasons:
11307 # * Layout code that tries to respect device pixels (e.g. for snapping glyph
11308 # positions and baselines, and especially for the "GDI Classic"
11309 # rendering-mode threshold for certain fonts).
11311 # * The limitations of the PDF format mean that we can't natively represent
11312 # certain effects, such as filters, in PDF output, so we need to rasterize
11313 # the parts of the document with these applied.
11315 # * Other rasterized things like images and such are also affected by DPI
11316 # (both in the output, and the images we select via srcset, for example).
11318 # Therefore, using a high DPI is preferable. For now, we use 144dpi to match
11319 # physical printer output on Windows, but higher (e.g. 300dpi) might be better
11320 # if it does not lead to issues such as excessive memory use.
11321 - name: print.default_dpi
11326 # Whether support for monochrome printing is enabled for CUPS.
11327 - name: print.cups.monochrome.enabled
11328 type: RelaxedAtomicBool
11332 # The maximum amount of time CUPS should spend enumerating print destinations
11333 # (in milliseconds).
11334 # The default value chosen here is completely arbitrary.
11335 - name: print.cups.enum_dests_timeout_ms
11336 type: RelaxedAtomicUint32
11340 #---------------------------------------------------------------------------
11341 # Prefs starting with "privacy."
11342 #---------------------------------------------------------------------------
11344 - name: privacy.fuzzyfox.clockgrainus
11345 type: RelaxedAtomicUint32
11349 # Annotate trackers using the strict list. If set to false, the basic list will
11351 - name: privacy.annotate_channels.strict_list.enabled
11353 value: @IS_EARLY_BETA_OR_EARLIER@
11356 # Enable the clearing of cache data using the clear-site-data header. If enabled,
11357 # header values of "cache" and "*" will clear cached data from the site
11358 - name: privacy.clearsitedata.cache.enabled
11363 # First Party Isolation (double keying), disabled by default.
11364 - name: privacy.firstparty.isolate
11365 type: RelaxedAtomicBool
11369 # If false, two windows in the same domain with different first party domains
11370 # (top level URLs) can access resources through window.opener. This pref is
11371 # effective only when "privacy.firstparty.isolate" is true.
11372 - name: privacy.firstparty.isolate.restrict_opener_access
11373 type: RelaxedAtomicBool
11377 - name: privacy.firstparty.isolate.block_post_message
11378 type: RelaxedAtomicBool
11382 - name: privacy.firstparty.isolate.use_site
11383 type: RelaxedAtomicBool
11387 # Enforce tracking protection in all modes.
11388 - name: privacy.trackingprotection.enabled
11393 # Enforce tracking protection in Private Browsing mode.
11394 - name: privacy.trackingprotection.pbmode.enabled
11399 # Annotate channels based on the tracking protection list in all modes
11400 - name: privacy.trackingprotection.annotate_channels
11405 # Block 3rd party fingerprinting resources.
11406 - name: privacy.trackingprotection.fingerprinting.enabled
11411 # Block 3rd party cryptomining resources.
11412 - name: privacy.trackingprotection.cryptomining.enabled
11417 # Block 3rd party socialtracking resources.
11418 - name: privacy.trackingprotection.socialtracking.enabled
11423 # Consider socialtracking annotation as trackers (see ETP).
11424 - name: privacy.socialtracking.block_cookies.enabled
11429 # Whether Origin Telemetry should be enabled.
11430 # NOTE: if telemetry.origin_telemetry_test_mode.enabled is enabled, this pref
11431 # won't have any effect.
11432 - name: privacy.trackingprotection.origin_telemetry.enabled
11433 type: RelaxedAtomicBool
11434 value: @IS_NIGHTLY_BUILD@
11437 - name: privacy.trackingprotection.testing.report_blocked_node
11438 type: RelaxedAtomicBool
11442 # Whether to spoof user locale to English (used as part of Resist
11447 - name: privacy.spoof_english
11448 type: RelaxedAtomicUint32
11452 # Send "do not track" HTTP header, disabled by default.
11453 - name: privacy.donottrackheader.enabled
11458 # Potentially send "global privacy control" HTTP header and set navigator
11459 # property accordingly. Communicates user's desire to opt-out/in of
11460 # websites or services selling or sharing the user's information, false by
11462 # true - Send the header with a value of 1 to indicate opting-out
11463 # false - Do not send header to indicate opting-in
11464 - name: privacy.globalprivacycontrol.enabled
11469 # Controls whether or not GPC signals are sent. Meant to act as a third option
11470 # of 'undecided' by leaving the navigator property undefined and not attaching
11471 # the Sec-GPC HTTP header.
11472 - name: privacy.globalprivacycontrol.functionality.enabled
11477 # Lower the priority of network loads for resources on the tracking protection
11478 # list. Note that this requires the
11479 # privacy.trackingprotection.annotate_channels pref to be on in order to have
11481 - name: privacy.trackingprotection.lower_network_priority
11483 value: @IS_NIGHTLY_BUILD@
11486 # A subset of Resist Fingerprinting protections focused specifically on timers.
11487 # This affects the Animation API, the performance APIs, Date.getTime,
11488 # Event.timestamp, File.lastModified, audioContext.currentTime,
11489 # canvas.captureStream.currentTime.
11490 - name: privacy.reduceTimerPrecision
11491 type: RelaxedAtomicBool
11495 # If privacy.reduceTimerPrecision is false, this pref controls whether or not
11496 # to clamp all timers at a fixed 20 microsconds. It should always be enabled,
11497 # and is only specified as a pref to enable an emergency disabling in the event
11498 # of catastrophic failure.
11499 - name: privacy.reduceTimerPrecision.unconditional
11500 type: RelaxedAtomicBool
11504 # The resistFingerprinting variables are marked with 'Relaxed' memory ordering.
11505 # We don't particurally care that threads have a percently consistent view of
11506 # the values of these prefs. They are not expected to change often, and having
11507 # an outdated view is not particurally harmful. They will eventually become
11510 # The variables will, however, be read often (specifically .microseconds on
11511 # each timer rounding) so performance is important.
11513 - name: privacy.resistFingerprinting
11514 type: RelaxedAtomicBool
11518 # We automatically decline canvas permission requests if they are not initiated
11519 # from user input. Just in case that breaks something, we allow the user to
11520 # revert this behavior with this obscure pref. We do not intend to support this
11521 # long term. If you do set it, to work around some broken website, please file
11522 # a bug with information so we can understand why it is needed.
11523 - name: privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts
11528 # Whether canvas extraction should result in random data. If false, canvas
11529 # extraction results in all-white, opaque pixel data.
11530 - name: privacy.resistFingerprinting.randomDataOnCanvasExtract
11531 type: RelaxedAtomicBool
11535 # The log level for browser console messages logged in RFPHelper.jsm. Change to
11536 # 'All' and restart to see the messages.
11537 - name: privacy.resistFingerprinting.jsmloglevel
11542 # Enable jittering the clock one precision value forward.
11543 - name: privacy.resistFingerprinting.reduceTimerPrecision.jitter
11544 type: RelaxedAtomicBool
11548 # Dynamically tune the resolution of the timer reduction for
11549 # `privacy.reduceTimerPrecision` and `privacy.resistFingerprinting`.
11550 - name: privacy.resistFingerprinting.reduceTimerPrecision.microseconds
11551 type: RelaxedAtomicUint32
11555 - name: privacy.resistFingerprinting.target_video_res
11560 # Bitfield for selectively disabling RFP
11561 # 0 for no new behavior
11562 # 1 for disabling RFP if it's a WebExtension
11563 # 2 for disabling RFP if we are not in PBM
11564 # 4 for disabling RFP on specific domains (see privacy.resistFingerprinting.exemptedDomains)
11565 - name: privacy.resistFingerprinting.testGranularityMask
11566 type: RelaxedAtomicUint32
11570 # Anti-tracking permission expiration.
11571 - name: privacy.restrict3rdpartystorage.expiration
11573 value: 2592000 # 30 days (in seconds)
11576 # Report Anti-tracking warnings to console lazily
11577 - name: privacy.restrict3rdpartystorage.console.lazy
11582 # Enable the heuristic to allow storage access for windows opened using window.open() after user interaction
11583 - name: privacy.restrict3rdpartystorage.heuristic.opened_window_after_interaction
11588 # Enable the heuristic to allow storage access for windows opened using window.open()
11589 - name: privacy.restrict3rdpartystorage.heuristic.window_open
11594 # Enable the heuristic to allow storage access for windows opened using window.open()
11595 - name: privacy.restrict3rdpartystorage.heuristic.redirect
11600 # Anti-tracking permission expiration.
11601 - name: privacy.restrict3rdpartystorage.expiration_redirect
11603 value: 2592000 # 30 days (in seconds)
11606 # Anti-tracking user-interaction expiration.
11607 - name: privacy.userInteraction.expiration
11609 value: 3888000 # 45 days (in seconds)
11612 # Anti-tracking user-interaction document interval.
11613 - name: privacy.userInteraction.document.interval
11615 value: 1800 # 30 minutes (in seconds)
11618 # Enable Anti-tracking testing. When it enables, it will notify the observers
11619 # when user-interaction permission or storage access permission is added. This
11620 # is for testing only.
11621 - name: privacy.antitracking.testing
11626 # Controls the anti-tracking webcompat features. This includes:
11627 # - All URL-Classifier and state partitioning skip lists (prefs and remote
11629 # - Storage access heuristics (opener, redirect, etc.)
11630 # - StorageAccessAPI automatic grants (skips the prompt)
11631 # - Allowing specific tracking channels on user opt-in (e.g. facebook login
11633 - name: privacy.antitracking.enableWebcompat
11634 type: RelaxedAtomicBool
11638 # Enable the heuristic to allow storage access for recent visited pages
11639 - name: privacy.restrict3rdpartystorage.heuristic.recently_visited
11644 # Valid time gap since last visit
11645 - name: privacy.restrict3rdpartystorage.heuristic.recently_visited_time
11647 value: 600 # 10 minutes
11650 # Recent visited pages redirection permission expiration.
11651 - name: privacy.restrict3rdpartystorage.expiration_visited
11653 value: 2592000 # 30 days (in seconds)
11656 # Maximum client-side cookie life-time cap. Measured in seconds, set to 0 to
11658 - name: privacy.documentCookies.maxage
11663 - name: privacy.window.maxInnerWidth
11668 - name: privacy.window.maxInnerHeight
11673 - name: privacy.sanitize.sanitizeOnShutdown
11674 type: RelaxedAtomicBool
11678 - name: privacy.clearOnShutdown.cache
11679 type: RelaxedAtomicBool
11683 - name: privacy.dynamic_firstparty.limitForeign
11684 type: RelaxedAtomicBool
11688 - name: privacy.dynamic_firstparty.use_site
11689 type: RelaxedAtomicBool
11693 - name: privacy.partition.network_state
11694 type: RelaxedAtomicBool
11698 # Partition the OCSP cache by the partitionKey.
11699 - name: privacy.partition.network_state.ocsp_cache
11700 type: RelaxedAtomicBool
11701 value: @IS_NIGHTLY_BUILD@
11704 # Partition the OCSP cache by the partitionKey for private browsing mode.
11705 - name: privacy.partition.network_state.ocsp_cache.pbmode
11706 type: RelaxedAtomicBool
11710 - name: privacy.partition.bloburl_per_agent_cluster
11711 type: RelaxedAtomicBool
11715 - name: privacy.window.name.update.enabled
11720 # By default, the network state isolation is not active when there is a proxy
11721 # setting. This pref forces the network isolation even in these scenarios.
11722 - name: privacy.partition.network_state.connection_with_proxy
11727 # Partition the websocket pending connection queue by OriginAttributes.
11728 - name: privacy.partition.network_state.ws_connection_queue
11729 type: RelaxedAtomicBool
11733 # Partition the service workers unconditionally when dFPI is enabled.
11734 - name: privacy.partition.serviceWorkers
11735 type: RelaxedAtomicBool
11736 value: @IS_NIGHTLY_BUILD@
11739 # The global switch to control the URL query sting stripping which strips query
11740 # parameters from loading URIs to prevent bounce (redirect) tracking.
11741 - name: privacy.query_stripping.enabled
11742 type: RelaxedAtomicBool
11746 # The list which contains query parameters that are needed to be stripped from
11747 # URIs. The query parameters are separated by a space.
11748 - name: privacy.query_stripping.strip_list
11753 # This controls if we will do the query string stripping for redirects.
11754 - name: privacy.query_stripping.redirect
11759 # the list which contains sites where should exempt from query stripping
11760 - name: privacy.query_stripping.allow_list
11765 #---------------------------------------------------------------------------
11766 # Prefs starting with "prompts."
11767 #---------------------------------------------------------------------------
11769 # Prompt modal type prefs
11770 # See nsIPromptService::MODAL_TYPE fields for possible values.
11772 # Insecure form submit warning.
11773 - name: prompts.modalType.insecureFormSubmit
11778 # nsHttpChannelAuthProvider#ConfirmAuth anti-phishing prompts.
11779 - name: prompts.modalType.confirmAuth
11784 #---------------------------------------------------------------------------
11785 # Prefs starting with "security."
11786 #---------------------------------------------------------------------------
11788 # Mochitests that need to load resource:// URIs not declared content-accessible
11789 # in manifests should set this pref.
11790 - name: security.all_resource_uri_content_accessible
11795 - name: security.bad_cert_domain_error.url_fix_enabled
11800 - name: security.csp.reporting.script-sample.max-length
11805 - name: security.csp.truncate_blocked_uri_for_frame_navigations
11810 # If true, all toplevel data: URI navigations will be blocked.
11811 # Please note that manually entering a data: URI in the
11812 # URL-Bar will not be blocked when flipping this pref.
11813 - name: security.data_uri.block_toplevel_data_uri_navigations
11818 # Whether window A is allowed to navigate cross-origin window B (that is not
11819 # a descendant frame of A) to a URI that loads externally.
11820 - name: security.allow_disjointed_external_uri_loads
11825 # Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but
11826 # not allowed for Firefox Desktop in firefox.js
11827 - name: security.allow_parent_unrestricted_js_loads
11828 type: RelaxedAtomicBool
11832 # Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but
11833 # not allowed for Firefox Desktop in firefox.js
11834 - name: security.allow_eval_with_system_principal
11835 type: RelaxedAtomicBool
11839 # Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but
11840 # not allowed for Firefox Desktop in firefox.js
11841 - name: security.allow_eval_in_parent_process
11842 type: RelaxedAtomicBool
11846 # Disallowed by default, ensure not disallowed content is loaded in the parent
11848 - name: security.allow_unsafe_parent_loads
11853 # Pref to block mixed scripts (fonts, plugin content, scripts, stylesheets,
11854 # iframes, websockets, XHR).
11855 - name: security.mixed_content.block_active_content
11857 value: @IS_ANDROID@
11860 # Pref to block sub requests that happen within an object.
11861 - name: security.mixed_content.block_object_subrequest
11866 # Pref for mixed display content blocking (images, audio, video).
11867 - name: security.mixed_content.block_display_content
11872 # Pref for mixed display content upgrading (images, audio, video).
11873 - name: security.mixed_content.upgrade_display_content
11878 # Whether strict file origin policy is in effect. "False" is traditional.
11879 - name: security.fileuri.strict_origin_policy
11880 type: RelaxedAtomicBool
11884 # The level to which we sandbox the content process. firefox.js sets the
11885 # default to different values on a per-OS basis, and has documentation
11886 # on what the defaults are and what the numbers mean.
11887 - name: security.sandbox.content.level
11891 do_not_use_directly: true # Consumers should use SandboxSettings to ask.
11893 - name: security.sandbox.socket.process.level
11897 do_not_use_directly: true # Consumers should use SandboxSettings to ask.
11899 # Enrollment preferences for the win32k experiment, set and managed by Normandy
11900 - name: security.sandbox.content.win32k-experiment.enrollmentStatus
11905 - name: security.sandbox.content.win32k-experiment.startupEnrollmentStatus
11910 #if defined(XP_WIN) && defined(MOZ_SANDBOX)
11912 # Whether win32k is disabled for content processes.
11913 # true means win32k system calls are not permitted.
11914 - name: security.sandbox.content.win32k-disable
11915 type: RelaxedAtomicBool
11919 # Note: win32k is currently _not_ disabled for GMP due to intermittent test
11920 # failures, where the GMP process fails very early. See bug 1449348.
11921 - name: security.sandbox.gmp.win32k-disable
11922 type: RelaxedAtomicBool
11926 # Whether win32k is disabled for socket processes.
11927 # true means win32k system calls are not permitted.
11928 - name: security.sandbox.socket.win32k-disable
11929 type: RelaxedAtomicBool
11933 # Whether CET User Shadow Stack compatible modules only is enabled for the
11934 # relevant process type.
11935 - name: security.sandbox.content.shadow-stack.enabled
11936 type: RelaxedAtomicBool
11940 - name: security.sandbox.rdd.shadow-stack.enabled
11941 type: RelaxedAtomicBool
11945 - name: security.sandbox.socket.shadow-stack.enabled
11946 type: RelaxedAtomicBool
11950 - name: security.sandbox.gpu.shadow-stack.enabled
11951 type: RelaxedAtomicBool
11955 - name: security.sandbox.gmp.shadow-stack.enabled
11956 type: RelaxedAtomicBool
11960 # This controls the depth of stack trace that is logged when Windows sandbox
11961 # logging is turned on. This is only currently available for the content
11962 # process because the only other sandbox (for GMP) has too strict a policy to
11963 # allow stack tracing. This does not require a restart to take effect.
11964 - name: security.sandbox.windows.log.stackTraceDepth
11965 type: RelaxedAtomicUint32
11970 #if defined(XP_LINUX) && defined(MOZ_SANDBOX)
11971 # Run content processes in headless mode and disallow
11972 # connections to the X server. Requires:
11973 # * `webgl.out-of-process` (or else WebGL breaks)
11974 # * `widget.non-native-theme.enabled` (scrollbars & form controls)
11975 # Changing it requires a restart because sandbox policy information
11976 # dependent on it is cached. See bug 1640345 for details.
11977 - name: security.sandbox.content.headless
11983 # Pref to show warning when submitting from secure to insecure.
11984 - name: security.warn_submit_secure_to_insecure
11989 # Hardware Origin-bound Second Factor Support
11990 - name: security.webauth.webauthn
11995 # Navigate-to CSP 3 directive
11996 - name: security.csp.enableNavigateTo
12001 # No way to enable on Android, Bug 1552602
12002 - name: security.webauth.u2f
12004 value: @IS_NOT_ANDROID@
12007 # Block Worker/SharedWorker scripts with wrong MIME type.
12008 - name: security.block_Worker_with_wrong_mime
12013 # Block the execution of scripts using a wrong type as defined by the file extension
12014 # (OS) mapping when loaded via the file:// protocol.
12015 - name: security.block_fileuri_script_with_wrong_mime
12020 # Cancel outgoing requests from SystemPrincipal
12021 - name: security.cancel_non_local_loads_triggered_by_systemprincipal
12026 # Cancel outgoing requests from SystemPrincipal:
12027 # but only with scheme http(s) and contentpolicytype subdocument
12028 - name: security.disallow_privileged_https_subdocuments_loads
12033 # Cancel outgoing requests from SystemPrincipal:
12034 # but only with scheme data and contentpolicytype subdocument
12035 - name: security.disallow_privileged_data_subdocuments_loads
12040 # Cancel outgoing requests from SystemPrincipal:
12041 # but only with scheme http(s) and contentpolicytype stylesheet
12042 - name: security.disallow_privileged_https_stylesheet_loads
12047 # Cancel outgoing requests from SystemPrincipal:
12048 # but only with scheme http(s) and contentpolicytype script
12049 - name: security.disallow_privileged_https_script_loads
12054 # Disable preloaded static key pins by default.
12055 - name: security.cert_pinning.enforcement_level
12056 type: RelaxedAtomicUint32
12059 do_not_use_directly: true
12061 # OCSP fetching behavior:
12062 # 0: do not fetch OCSP
12063 # 1: fetch OCSP for DV and EV certificates
12064 # 2: fetch OCSP only for EV certificates
12065 - name: security.OCSP.enabled
12066 type: RelaxedAtomicUint32
12074 # Whether or not OCSP is required.
12075 # true => hard-fail (if an OCSP request times out, stop the connection)
12076 # false => soft-fail (if an OCSP request times out, continue the connection)
12077 - name: security.OCSP.require
12078 type: RelaxedAtomicBool
12082 # How many milliseconds to wait for an OCSP response before assuming it failed
12083 # (when fetching for soft-fail).
12084 - name: security.OCSP.timeoutMilliseconds.soft
12085 type: RelaxedAtomicUint32
12086 #ifdef RELEASE_OR_BETA
12093 # How many milliseconds to wait for an OCSP response before assuming it failed
12094 # (when fetching for hard-fail).
12095 - name: security.OCSP.timeoutMilliseconds.hard
12096 type: RelaxedAtomicUint32
12100 # Whether or not to enable OCSP must-staple (in other words, TLS-feature with
12102 - name: security.ssl.enable_ocsp_must_staple
12103 type: RelaxedAtomicBool
12107 # Whether or not to enable OCSP stapling.
12108 - name: security.ssl.enable_ocsp_stapling
12109 type: RelaxedAtomicBool
12113 # This is checked at startup to see if NSS should be initialized without the
12114 # user's certificate and key databases.
12115 - name: security.nocertdb
12120 # On Windows 8.1, if the following preference is 2, we will attempt to detect
12121 # if the Family Safety TLS interception feature has been enabled. If so, we
12122 # will behave as if the enterprise roots feature has been enabled (i.e. import
12123 # and trust third party root certificates from the OS).
12124 # With any other value of the pref or on any other platform, this does nothing.
12125 # This preference takes precedence over "security.enterprise_roots.enabled".
12126 - name: security.family_safety.mode
12127 type: RelaxedAtomicUint32
12131 # Whether or not to import and trust third party root certificates from the OS.
12132 - name: security.enterprise_roots.enabled
12133 type: RelaxedAtomicBool
12137 - name: security.intermediate_preloading_healer.enabled
12138 type: RelaxedAtomicBool
12139 #if defined(EARLY_BETA_OR_EARLIER) && !defined(MOZ_WIDGET_ANDROID)
12146 - name: security.intermediate_preloading_healer.timer_interval_ms
12147 type: RelaxedAtomicUint32
12151 # If true, attempt to load the osclientcerts PKCS#11 module at startup on a
12152 # background thread. This module allows Firefox to use client certificates
12153 # stored in OS certificate storage. Currently only available for Windows and
12155 - name: security.osclientcerts.autoload
12156 type: RelaxedAtomicBool
12160 - name: security.pki.cert_short_lifetime_in_days
12161 type: RelaxedAtomicUint32
12165 # NB: Changes to this pref affect CERT_CHAIN_SHA1_POLICY_STATUS telemetry.
12166 # See the comment in CertVerifier.cpp.
12167 # 1 = forbid sha1 in certificate signatures, even for imported roots
12168 - name: security.pki.sha1_enforcement_level
12169 type: RelaxedAtomicUint32
12173 # security.pki.netscape_step_up_policy controls how the platform handles the
12174 # id-Netscape-stepUp OID in extended key usage extensions of CA certificates.
12175 # 0: id-Netscape-stepUp is always considered equivalent to id-kp-serverAuth
12176 # 1: it is considered equivalent when the notBefore is before 23 August 2016
12177 # 2: similarly, but for 23 August 2015
12178 # 3: it is never considered equivalent
12179 - name: security.pki.netscape_step_up_policy
12180 type: RelaxedAtomicUint32
12181 #ifdef RELEASE_OR_BETA
12188 # Configures Certificate Transparency support mode:
12189 # 0: Fully disabled.
12190 # 1: Only collect telemetry. CT qualification checks are not performed.
12191 - name: security.pki.certificate_transparency.mode
12192 type: RelaxedAtomicUint32
12196 # 0: Disable CRLite entirely.
12197 # 1: Consult CRLite but only collect telemetry.
12198 # 2: Consult CRLite and enforce both "Revoked" and "Not Revoked" results.
12199 # 3: Consult CRLite and enforce "Not Revoked" results, but defer to OCSP for "Revoked".
12200 - name: security.pki.crlite_mode
12201 type: RelaxedAtomicUint32
12205 - name: security.tls.version.min
12206 type: RelaxedAtomicUint32
12210 - name: security.tls.version.max
12211 type: RelaxedAtomicUint32
12215 - name: security.tls.version.enable-deprecated
12216 type: RelaxedAtomicBool
12220 - name: security.tls.version.fallback-limit
12221 type: RelaxedAtomicUint32
12225 # Turn off post-handshake authentication for TLS 1.3 by default,
12226 # until the incompatibility with HTTP/2 is resolved:
12227 # https://tools.ietf.org/html/draft-davidben-http2-tls13-00
12228 - name: security.tls.enable_post_handshake_auth
12229 type: RelaxedAtomicBool
12233 - name: security.tls.hello_downgrade_check
12234 type: RelaxedAtomicBool
12238 - name: security.tls.enable_delegated_credentials
12239 type: RelaxedAtomicBool
12243 - name: security.tls.enable_0rtt_data
12244 type: RelaxedAtomicBool
12248 - name: security.ssl.treat_unsafe_negotiation_as_broken
12249 type: RelaxedAtomicBool
12253 - name: security.ssl.require_safe_negotiation
12254 type: RelaxedAtomicBool
12258 - name: security.ssl.enable_false_start
12259 type: RelaxedAtomicBool
12263 - name: security.ssl.enable_alpn
12264 type: RelaxedAtomicBool
12268 - name: security.ssl.disable_session_identifiers
12269 type: RelaxedAtomicBool
12273 - name: security.ssl3.ecdhe_rsa_aes_128_gcm_sha256
12274 type: RelaxedAtomicBool
12278 - name: security.ssl3.ecdhe_ecdsa_aes_128_gcm_sha256
12279 type: RelaxedAtomicBool
12283 - name: security.ssl3.ecdhe_ecdsa_chacha20_poly1305_sha256
12284 type: RelaxedAtomicBool
12288 - name: security.ssl3.ecdhe_rsa_chacha20_poly1305_sha256
12289 type: RelaxedAtomicBool
12293 - name: security.ssl3.ecdhe_ecdsa_aes_256_gcm_sha384
12294 type: RelaxedAtomicBool
12298 - name: security.ssl3.ecdhe_rsa_aes_256_gcm_sha384
12299 type: RelaxedAtomicBool
12303 - name: security.ssl3.ecdhe_rsa_aes_128_sha
12304 type: RelaxedAtomicBool
12308 - name: security.ssl3.ecdhe_ecdsa_aes_128_sha
12309 type: RelaxedAtomicBool
12313 - name: security.ssl3.ecdhe_rsa_aes_256_sha
12314 type: RelaxedAtomicBool
12318 - name: security.ssl3.ecdhe_ecdsa_aes_256_sha
12319 type: RelaxedAtomicBool
12323 - name: security.ssl3.dhe_rsa_aes_128_sha
12324 type: RelaxedAtomicBool
12328 - name: security.ssl3.dhe_rsa_aes_256_sha
12329 type: RelaxedAtomicBool
12333 - name: security.ssl3.rsa_aes_128_sha
12334 type: RelaxedAtomicBool
12338 - name: security.ssl3.rsa_aes_256_sha
12339 type: RelaxedAtomicBool
12343 - name: security.ssl3.rsa_aes_128_gcm_sha256
12344 type: RelaxedAtomicBool
12348 - name: security.ssl3.rsa_aes_256_gcm_sha384
12349 type: RelaxedAtomicBool
12353 - name: security.ssl3.deprecated.rsa_des_ede3_sha
12354 type: RelaxedAtomicBool
12358 - name: security.tls13.aes_128_gcm_sha256
12359 type: RelaxedAtomicBool
12363 - name: security.tls13.chacha20_poly1305_sha256
12364 type: RelaxedAtomicBool
12368 - name: security.tls13.aes_256_gcm_sha384
12369 type: RelaxedAtomicBool
12373 #---------------------------------------------------------------------------
12374 # Prefs starting with "signon."
12375 #---------------------------------------------------------------------------
12376 - name: signon.usernameOnlyForm.enabled
12381 #---------------------------------------------------------------------------
12382 # Prefs starting with "slider."
12383 #---------------------------------------------------------------------------
12385 # Scrollbar snapping region.
12387 # - 1 and higher: slider thickness multiple
12388 - name: slider.snapMultiplier
12397 #---------------------------------------------------------------------------
12398 # Prefs starting with "storage."
12399 #---------------------------------------------------------------------------
12401 # Whether to use a non-exclusive VFS.
12402 # By default we use the unix-excl VFS, for the following reasons:
12403 # 1. It improves compatibility with NFS shares, whose implementation
12404 # is incompatible with SQLite's locking requirements (reliable fcntl), and
12405 # in particular with WAL journaling.
12406 # Bug 433129 attempted to automatically identify such file-systems,
12407 # but a reliable way was not found and the fallback locking is slower than
12408 # POSIX locking, so we do not want to do it by default.
12409 # 2. It allows wal mode to avoid the memory mapped -shm file, reducing the
12410 # likelihood of SIGBUS failures when disk space is exhausted.
12411 # 3. It provides some protection from third party database tampering while a
12412 # connection is open.
12413 # Note there's no win32-excl VFS, so this has no effect on Windows.
12414 - name: storage.sqlite.exclusiveLock.enabled
12415 type: RelaxedAtomicBool
12416 value: @IS_NOT_ANDROID@
12419 #---------------------------------------------------------------------------
12420 # Prefs starting with "svg."
12421 #---------------------------------------------------------------------------
12423 # This pref controls whether the 'context-fill' and 'context-stroke' keywords
12424 # can be used in SVG-as-an-image in the content processes to use the fill/
12425 # stroke specified on the element that embeds the image. (These keywords are
12426 # always enabled in the chrome process, regardless of this pref.) Also, these
12427 # keywords are currently not part of any spec, which is partly why we disable
12428 # them for web content.
12429 - name: svg.context-properties.content.enabled
12430 type: RelaxedAtomicBool
12434 # Enables the 'context-fill' and 'context-stroke' keywords for particular
12435 # domains. We expect this list to be Mozilla-controlled properties, since the
12436 # 'context-*' keywords are not part of any spec. We expect to remove this
12437 # preference and the 'context-` keyword support entirely in the
12438 # not-too-distant future when a standardized alternative ships. This preference
12439 # is _not_ for allowing web content to use these keywords. For performance
12440 # reasons, the list of domains in this preference should remain short in
12442 - name: svg.context-properties.content.allowed-domains
12447 # Enable the use of display-lists for SVG hit-testing.
12448 - name: svg.display-lists.hit-testing.enabled
12453 # Enable the use of display-lists for SVG painting.
12454 - name: svg.display-lists.painting.enabled
12459 # Is support for the new getBBox method from SVG 2 enabled?
12460 # See https://svgwg.org/svg2-draft/single-page.html#types-SVGBoundingBoxOptions
12461 - name: svg.new-getBBox.enabled
12466 # Tweak which elements are allowed in <svg:use> subtrees, and in which
12467 # circumstances. See RemoveForbiddenNodes in SVGUseElement.cpp for the spec
12470 # - 0: Don't restrict ever.
12471 # - 1: Restrict only cross-document.
12472 # - 2/other: restrict always.
12474 # We allow the behavior to be configurable via this pref. Our chosen default
12475 # value forbids non-graphical content in <svg:use> clones of cross-document
12476 # elements. This is a compromise between our more-permissive pre-existing
12477 # behavior (which SVG 2 seems to call for, and maps to pref value 0) and the
12478 # behavior of other UAs (which SVG 1.1 seems to call for, and maps to pref
12480 - name: svg.use-element.graphics-element-restrictions
12485 #---------------------------------------------------------------------------
12486 # Prefs starting with "telemetry."
12487 #---------------------------------------------------------------------------
12489 # Enable origin telemetry test mode or not
12490 # NOTE: turning this on will override the
12491 # privacy.trackingprotection.origin_telemetry.enabled pref.
12492 - name: telemetry.origin_telemetry_test_mode.enabled
12493 type: RelaxedAtomicBool
12497 - name: telemetry.number_of_site_origin.min_interval
12502 - name: telemetry.fog.test.localhost_port
12503 type: RelaxedAtomicInt32
12508 - name: telemetry.fog.test.activity_limit
12509 type: RelaxedAtomicUint32
12514 - name: telemetry.fog.test.inactivity_limit
12515 type: RelaxedAtomicUint32
12520 #---------------------------------------------------------------------------
12521 # Prefs starting with "test."
12522 #---------------------------------------------------------------------------
12524 - name: test.events.async.enabled
12525 type: RelaxedAtomicBool
12529 - name: test.mousescroll
12530 type: RelaxedAtomicBool
12534 #---------------------------------------------------------------------------
12535 # Prefs starting with "thread."
12536 #---------------------------------------------------------------------------
12538 - name: threads.medium_high_event_queue.enabled
12539 type: RelaxedAtomicBool
12543 # If control tasks aren't enabled, they get medium high priority.
12544 - name: threads.control_event_queue.enabled
12545 type: RelaxedAtomicBool
12549 #---------------------------------------------------------------------------
12550 # Prefs starting with "timer."
12551 #---------------------------------------------------------------------------
12553 # Since our timestamp on macOS does not increment while the system is asleep, we
12554 # should ignore sleep/wake notifications to make timer thread process timers.
12555 - name: timer.ignore_sleep_wake_notifications
12556 type: RelaxedAtomicBool
12564 #---------------------------------------------------------------------------
12565 # Prefs starting with "toolkit."
12566 #---------------------------------------------------------------------------
12568 # Returns true if BHR is disabled.
12569 - name: toolkit.content-background-hang-monitor.disabled
12574 - name: toolkit.scrollbox.horizontalScrollDistance
12575 type: RelaxedAtomicInt32
12579 - name: toolkit.scrollbox.verticalScrollDistance
12580 type: RelaxedAtomicInt32
12584 # The lateWriteChecksStage and fastShutdownStage below represent the stage
12585 # of shutdown after which we (for lateWriteChecksStage) crash / gather
12586 # telemetry data on file writes, or (for fastShutdownStage) we call _exit(0).
12587 # Higher values are earlier during shutdown, and the full enumeration can
12588 # be found in AppShutdown.h in the AppShutdownPhase enum.
12589 - name: toolkit.shutdown.lateWriteChecksStage
12591 #ifdef MOZ_CODE_COVERAGE
12598 # See the comment above toolkit.shutdown.lateWriteChecksStage. A higher value
12599 # for this pref means we call _exit(0) earlier during shutdown.
12600 - name: toolkit.shutdown.fastShutdownStage
12602 #if !defined(DEBUG) && !defined(MOZ_ASAN) && !defined(MOZ_TSAN) && !defined(MOZ_CODE_COVERAGE) && !defined(MOZ_VALGRIND) && !defined(MOZ_PROFILE_GENERATE) && !defined(JS_STRUCTURED_SPEW)
12609 # Sending each remote accumulation immediately places undue strain on the IPC
12610 # subsystem. Batch the remote accumulations for a period of time before sending
12611 # them all at once. This value was chosen as a balance between data timeliness
12612 # and performance (see bug 1218576).
12613 - name: toolkit.telemetry.ipcBatchTimeout
12618 - name: toolkit.telemetry.geckoview.batchDurationMS
12619 type: RelaxedAtomicUint32
12623 - name: toolkit.telemetry.geckoview.maxBatchStalenessMS
12624 type: RelaxedAtomicUint32
12628 - name: toolkit.telemetry.geckoview.streaming
12629 type: RelaxedAtomicBool
12633 - name: toolkit.telemetry.testing.overrideProductsCheck
12634 type: RelaxedAtomicBool
12638 #---------------------------------------------------------------------------
12639 # Prefs starting with "ui."
12640 #---------------------------------------------------------------------------
12642 - name: ui.key.generalAccessKey
12647 # Only used if generalAccessKey is -1.
12648 - name: ui.key.chromeAccess
12651 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 3 = ctrl+shift, 8 = Meta
12654 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 5 = Alt+Shift,
12655 # 8 = Meta, 16 = Win
12660 # Only used if generalAccessKey is -1.
12661 - name: ui.key.contentAccess
12664 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 3 = ctrl+shift, 8 = Meta
12667 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 5 = Alt+Shift,
12668 # 8 = Meta, 16 = Win
12673 # Does the access key by itself focus the menu bar?
12674 - name: ui.key.menuAccessKeyFocuses
12676 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
12677 # On Windows and Linux, we now default to showing the menu bar only when alt
12685 # Whether native key bindings in the environment or builtin shortcut key
12686 # definitions in Gecko are used first in <input> and <textarea>
12687 - name: ui.key.textcontrol.prefer_native_key_bindings_over_builtin_shortcut_key_definitions
12692 #ifdef MOZ_WIDGET_GTK
12693 # Only GtkTextView (native multiline text viewer/editor) supports "select-all"
12694 # signal so that we cannot know "select-all" key bindings only with GtkEntry.
12695 # When this pref is set to true, if a key combination does not cause any
12696 # signals in GtkEntry, try to check the key combination is mapped to
12697 # "select-all" in GtkTextView or not. If it's mapped to other commands, they
12698 # are just ignored.
12699 - name: ui.key.use_select_all_in_single_line_editor
12705 # Duration of timeout of incremental search in menus (ms). 0 means infinite.
12706 - name: ui.menu.incremental_search.timeout
12711 # If true, all popups won't hide automatically on blur
12712 - name: ui.popup.disable_autohide
12713 type: RelaxedAtomicBool
12717 # Negate scroll, true will make the mouse scroll wheel move the screen the
12718 # same direction as with most desktops or laptops.
12719 - name: ui.scrolling.negate_wheel_scroll
12720 type: RelaxedAtomicBool
12721 value: @IS_ANDROID@
12724 # If the user puts a finger down on an element and we think the user might be
12725 # executing a pan gesture, how long do we wait before tentatively deciding the
12726 # gesture is actually a tap and activating the target element?
12727 - name: ui.touch_activation.delay_ms
12732 # If the user has clicked an element, how long do we keep the :active state
12733 # before it is cleared by the mouse sequences fired after a
12734 # touchstart/touchend.
12735 - name: ui.touch_activation.duration_ms
12740 # Prevent system colors from being exposed to CSS or canvas.
12741 - name: ui.use_standins_for_native_colors
12742 type: RelaxedAtomicBool
12746 # Disable page loading activity cursor by default.
12747 - name: ui.use_activity_cursor
12752 # Whether context menus should only appear on mouseup instead of mousedown,
12753 # on OSes where they normally appear on mousedown (macOS, *nix).
12754 # Note: ignored on Windows (context menus always use mouseup).
12755 - name: ui.context_menus.after_mouseup
12760 # Whether click-hold context menus are enabled.
12761 - name: ui.click_hold_context_menus
12762 type: RelaxedAtomicBool
12766 # How long to wait for a drag gesture before displaying click-hold context menu,
12768 - name: ui.click_hold_context_menus.delay
12769 type: RelaxedAtomicInt32
12773 # When enabled, the touch.radius and mouse.radius prefs allow events to be
12774 # dispatched to nearby elements that are sensitive to the event. See
12775 # PositionedEventTargeting.cpp. The 'mm' prefs define a rectangle around the
12776 # nominal event target point within which we will search for suitable elements.
12777 # 'visitedWeight' is a percentage weight; a value > 100 makes a visited link be
12778 # treated as further away from the event target than it really is, while a
12779 # value < 100 makes a visited link be treated as closer to the event target
12780 # than it really is.
12782 - name: ui.touch.radius.enabled
12784 value: @IS_ANDROID@
12787 - name: ui.touch.radius.topmm
12796 - name: ui.touch.radius.rightmm
12805 - name: ui.touch.radius.bottommm
12814 - name: ui.touch.radius.leftmm
12823 - name: ui.touch.radius.visitedWeight
12828 - name: ui.mouse.radius.enabled
12830 value: @IS_ANDROID@
12833 - name: ui.mouse.radius.topmm
12842 - name: ui.mouse.radius.rightmm
12851 - name: ui.mouse.radius.bottommm
12860 - name: ui.mouse.radius.leftmm
12869 - name: ui.mouse.radius.visitedWeight
12874 - name: ui.mouse.radius.reposition
12876 value: @IS_ANDROID@
12879 # When true, the ui.mouse.radius.* prefs will only affect simulated mouse
12880 # events generated by touch input. When false, the prefs will be used for all
12882 - name: ui.mouse.radius.inputSource.touchOnly
12887 #---------------------------------------------------------------------------
12888 # Prefs starting with "urlclassifier."
12889 #---------------------------------------------------------------------------
12891 # Update server response timeout for Safe Browsing.
12892 - name: urlclassifier.update.response_timeout_ms
12897 # Download update timeout for Safe Browsing.
12898 - name: urlclassifier.update.timeout_ms
12903 #---------------------------------------------------------------------------
12904 # Prefs starting with "view_source."
12905 #---------------------------------------------------------------------------
12907 - name: view_source.editor.external
12912 - name: view_source.wrap_long_lines
12914 value: @IS_ANDROID@
12917 - name: view_source.syntax_highlight
12922 - name: view_source.tab_size
12927 #---------------------------------------------------------------------------
12928 # Prefs starting with "webgl." (for pref access from Worker threads)
12929 #---------------------------------------------------------------------------
12931 - name: webgl.1.allow-core-profiles
12932 type: RelaxedAtomicBool
12940 - name: webgl.all-angle-options
12941 type: RelaxedAtomicBool
12945 - name: webgl.angle.force-d3d11
12946 type: RelaxedAtomicBool
12950 - name: webgl.angle.try-d3d11
12951 type: RelaxedAtomicBool
12959 - name: webgl.angle.force-warp
12960 type: RelaxedAtomicBool
12964 - name: webgl.auto-flush
12965 type: RelaxedAtomicBool
12969 - name: webgl.auto-flush.gl
12970 type: RelaxedAtomicBool
12974 - name: webgl.can-lose-context-in-foreground
12975 type: RelaxedAtomicBool
12979 - name: webgl.cgl.multithreaded
12980 type: RelaxedAtomicBool
12984 - name: webgl.colorspaces.prototype
12985 type: RelaxedAtomicBool
12989 - name: webgl.debug.incomplete-tex-color
12990 type: RelaxedAtomicUint32
12994 - name: webgl.default-antialias
12995 type: RelaxedAtomicBool
12996 value: @IS_NOT_ANDROID@
12999 - name: webgl.default-no-alpha
13000 type: RelaxedAtomicBool
13004 - name: webgl.disable-angle
13005 type: RelaxedAtomicBool
13009 - name: webgl.disable-wgl
13010 type: RelaxedAtomicBool
13014 - name: webgl.dxgl.enabled
13015 type: RelaxedAtomicBool
13023 - name: webgl.dxgl.needs-finish
13024 type: RelaxedAtomicBool
13028 - name: webgl.disable-fail-if-major-performance-caveat
13029 type: RelaxedAtomicBool
13033 - name: webgl.disable-DOM-blit-uploads
13034 type: RelaxedAtomicBool
13038 - name: webgl.disabled
13039 type: RelaxedAtomicBool
13043 - name: webgl.enable-debug-renderer-info
13044 type: RelaxedAtomicBool
13048 - name: webgl.enable-draft-extensions
13049 type: RelaxedAtomicBool
13053 - name: webgl.enable-privileged-extensions
13054 type: RelaxedAtomicBool
13058 - name: webgl.enable-renderer-query
13059 type: RelaxedAtomicBool
13063 - name: webgl.enable-surface-texture
13064 type: RelaxedAtomicBool
13068 - name: webgl.enable-ahardwarebuffer
13069 type: RelaxedAtomicBool
13073 - name: webgl.enable-webgl2
13074 type: RelaxedAtomicBool
13078 - name: webgl.force-enabled
13079 type: RelaxedAtomicBool
13083 - name: webgl.force-layers-readback
13084 type: RelaxedAtomicBool
13088 - name: webgl.force-index-validation
13089 type: RelaxedAtomicInt32
13093 - name: webgl.lose-context-on-memory-pressure
13094 type: RelaxedAtomicBool
13098 - name: webgl.max-contexts
13099 type: RelaxedAtomicUint32
13103 - name: webgl.max-contexts-per-principal
13104 type: RelaxedAtomicUint32
13108 - name: webgl.max-warnings-per-context
13109 type: RelaxedAtomicUint32
13113 - name: webgl.min_capability_mode
13114 type: RelaxedAtomicBool
13118 - name: webgl.msaa-force
13119 type: RelaxedAtomicBool
13123 - name: webgl.msaa-samples
13124 type: RelaxedAtomicUint32
13128 - name: webgl.out-of-process
13129 type: RelaxedAtomicBool
13130 # (When reading the next line, know that preprocessor.py doesn't
13131 # understand parentheses, but && is higher precedence than ||.)
13132 #if defined(XP_MACOSX) || defined(XP_WIN) || defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID)
13139 - name: webgl.out-of-process.worker
13140 type: RelaxedAtomicBool
13141 # (When reading the next line, know that preprocessor.py doesn't
13142 # understand parentheses, but && is higher precedence than ||.)
13143 #if defined(XP_MACOSX) || defined(XP_WIN) || defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID)
13150 - name: webgl.out-of-process.force
13151 type: RelaxedAtomicBool
13155 - name: webgl.out-of-process.shmem-size
13156 type: RelaxedAtomicUint32
13157 value: 100000 # 100KB
13160 # Override the blocklist to assume that GL is threadsafe.
13161 - name: webgl.threadsafe-gl.force-enabled
13166 # Override the blocklist to assume that GL is not threadsafe.
13167 - name: webgl.threadsafe-gl.force-disabled
13172 - name: webgl.override-unmasked-renderer
13177 - name: webgl.override-unmasked-vendor
13182 - name: webgl.power-preference-override
13183 type: RelaxedAtomicInt32
13187 - name: webgl.prefer-16bpp
13188 type: RelaxedAtomicBool
13192 - name: webgl.sanitize-unmasked-renderer
13193 type: RelaxedAtomicBool
13197 - name: webgl.allow-immediate-queries
13198 type: RelaxedAtomicBool
13202 - name: webgl.allow-fb-invalidation
13203 type: RelaxedAtomicBool
13208 - name: webgl.perf.max-warnings
13209 type: RelaxedAtomicInt32
13213 - name: webgl.perf.max-acceptable-fb-status-invals
13214 type: RelaxedAtomicInt32
13218 - name: webgl.perf.spew-frame-allocs
13219 type: RelaxedAtomicBool
13223 #---------------------------------------------------------------------------
13224 # Prefs starting with "widget."
13225 #---------------------------------------------------------------------------
13227 # Global user preference for disabling native theme in content processes.
13229 # NOTE(emilio): When changing this make sure to update the non_native_theme
13230 # entry in python/mozbuild/mozbuild/mozinfo.py and test_fission_autostart.py
13231 - name: widget.non-native-theme.enabled
13232 type: RelaxedAtomicBool
13236 # Whether the non-native theme should always use system colors. Useful mostly
13237 # for testing forced colors mode.
13238 - name: widget.non-native-theme.always-high-contrast
13239 type: RelaxedAtomicBool
13243 # The style of scrollbars to use. Here are the current options:
13245 # 0: Default platform scrollbar style.
13246 # 1: macOS scrollbars
13247 # 2: GTK scrollbars
13248 # 3: Android scrollbars
13249 # 4: Windows 10 scrollbars
13250 # 5: Windows 11 scrollbars
13252 # Note that switching to non-default scrollbars is experimental and other
13253 # scrollbar-related prefs may interfere with the experience. For example,
13254 # setting the GTK thumb size may have no effect when using non-GTK scrollbars
13256 - name: widget.non-native-theme.scrollbar.style
13261 # An override that allows to override the default platform size. The size in CSS
13262 # pixels at full zoom of the minimum scrollbar width.
13263 - name: widget.non-native-theme.scrollbar.size.override
13268 # Whether we should use themed values for dark scrollbars.
13269 - name: widget.non-native-theme.scrollbar.dark-themed
13270 type: RelaxedAtomicBool
13274 # Whether the active thumb color should always use the themed colors, even if
13275 # dark scrollbars are in use.
13276 - name: widget.non-native-theme.scrollbar.active-always-themed
13277 type: RelaxedAtomicBool
13281 # Whether we use the Windows CSS scrollbar sizes, or the scrollbar sizes
13283 - name: widget.non-native-theme.win.scrollbar.use-system-size
13288 # Whether Windows 11 scrollbars are always drawn with the thinner "overlay"
13290 - name: widget.non-native-theme.win11.scrollbar.force-overlay-style
13295 # The amount of space that the thumb should fill the scrollbar, from zero to
13297 - name: widget.non-native-theme.gtk.scrollbar.thumb-size
13302 # The minimum size of the scroll thumb, in the scrollbar direction.
13303 - name: widget.non-native-theme.gtk.scrollbar.thumb-cross-size
13308 # Whether the thumb should be rounded for the non-native scrollbars.
13309 - name: widget.non-native-theme.gtk.scrollbar.round-thumb
13314 # Whether buttons shouldn't be suppressed for non-native scrollbars.
13315 - name: widget.non-native-theme.gtk.scrollbar.allow-buttons
13320 # Whether we should use the default accent color or the theme-provided one.
13322 # TODO(emilio): This should probably do the right thing in most other
13323 # platforms, but stick to the standard colors on those.
13324 - name: widget.non-native-theme.use-theme-accent
13325 type: RelaxedAtomicBool
13326 #if defined(MOZ_WIDGET_GTK) || defined(XP_MACOSX) || defined(ANDROID)
13333 # Whether we should try to use WebRender to render widgets.
13334 - name: widget.non-native-theme.webrender
13336 #if defined(XP_MACOSX)
13337 # Disabled on macOS release / beta because of a suspected AMD driver bug (see
13339 value: @IS_NIGHTLY_BUILD@
13345 # Preference to disable dark scrollbar implementation.
13346 # This is mainly for testing because dark scrollbars have to be semi-
13347 # transparent, but many reftests expect scrollbars to look identical
13348 # among different backgrounds.
13349 # However, some users may want to disable this as well.
13350 - name: widget.disable-dark-scrollbar
13355 - name: widget.window-transforms.disabled
13356 type: RelaxedAtomicBool
13362 # Whether to shift by the menubar height on fullscreen mode.
13365 # 2: auto (tries to detect when it is needed)
13366 - name: widget.macos.shift-by-menubar-on-fullscreen
13367 type: RelaxedAtomicUint32
13371 - name: widget.macos.native-context-menus
13372 type: RelaxedAtomicBool
13377 # Whether to allow gtk dark themes in content.
13378 - name: widget.content.allow-gtk-dark-theme
13379 type: RelaxedAtomicBool
13383 # Whether native GTK context menus are enabled.
13384 # Disabled because at the very least there's missing custom icon support.
13385 - name: widget.gtk.native-context-menus
13386 type: RelaxedAtomicBool
13390 # Whether we use overlay scrollbars on GTK.
13391 - name: widget.gtk.overlay-scrollbars.enabled
13392 type: RelaxedAtomicBool
13396 # Whether we honor the scrollbar colors from the gtk theme.
13397 - name: widget.gtk.theme-scrollbar-colors.enabled
13402 # Whether selection colors for the non-system theme get passed from the system
13404 - name: widget.gtk.alt-theme.selection
13409 # Whether form control accent colors for the non-system theme get passed from
13410 # the system GTK theme.
13411 - name: widget.gtk.alt-theme.accent
13416 # Whether the scrollbar thumb active color from the non-system theme gets
13417 # passed from the system GTK theme.
13418 - name: widget.gtk.alt-theme.scrollbar_active
13423 # Whether to use gtk high contrast themes to disable content styling like on
13424 # windows high contrast mode.
13425 - name: widget.content.gtk-high-contrast.enabled
13430 # Whether to pause the compositor when a native window is minimized.
13431 - name: widget.pause-compositor-when-minimized
13437 # Whether to override the DMABuf blocklist.
13438 - name: widget.dmabuf.force-enabled
13443 #ifdef NIGHTLY_BUILD
13444 # Keep those pref hidden on non-nightly builds to avoid people accidentally
13447 # Use DMABuf for content textures.
13448 # For testing purposes only.
13449 - name: widget.dmabuf-textures.enabled
13450 type: RelaxedAtomicBool
13455 # Use DMABuf backend for WebGL.
13456 - name: widget.dmabuf-webgl.enabled
13457 type: RelaxedAtomicBool
13461 # Force fractional scaling using wp_viewporter. Valid values: 0.5 - 8
13462 - name: widget.wayland.fractional_buffer_scale
13467 # Use opaque region for MozContainer wl_surface
13468 - name: widget.wayland.opaque-region.enabled
13473 # Use frame callback based vsync
13474 - name: widget.wayland.vsync.enabled
13480 #ifdef MOZ_WIDGET_GTK
13482 # Use gdk_window_move_to_rect to move Wayland popups when available.
13483 - name: widget.wayland.use-move-to-rect
13488 # The time we should spend on a DBUS call to the FileManager1 interface before
13489 # giving up and trying an alternative method.
13491 # -1 for the default system timeout, INT_MAX for "infinite time".
13493 # This happens right now on the main thread so 1 second should be enough, we
13494 # should consider moving it to a background task and just use the default
13496 - name: widget.gtk.file-manager-show-items-timeout-ms
13501 # The timeout we should spend on a DBUS call to the Settings proxy before
13504 # -1 for the default system timeout, INT_MAX for "infinite time".
13506 # This runs just once, but during startup, so make sure it doesn't take too
13507 # long. Three seconds should be way more than enough, and if we don't get the
13508 # reply on time then the only potential issue is that we use a light instead of
13509 # dark interface or vice versa.
13510 - name: widget.gtk.settings-portal-timeout-ms
13515 # Whether to use gtk portal for the file picker.
13518 # - 2: auto (true for flatpak or GTK_USE_PORTAL=1, false otherwise)
13519 - name: widget.use-xdg-desktop-portal.file-picker
13524 # Whether to use gtk portal for the mime handler.
13527 # - 2: auto (for now only true for flatpak, see bug 1516290)
13528 - name: widget.use-xdg-desktop-portal.mime-handler
13533 # Whether to try to use XDG portal for settings / look-and-feel information.
13534 # https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.Settings
13538 - name: widget.use-xdg-desktop-portal.settings
13543 # Whether to use XDG portal for geolocation.
13544 # https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.Location
13548 - name: widget.use-xdg-desktop-portal.location
13555 # WindowsUIUtils::Share to wait for user action on Windows share dialog
13556 # `true` means the promise resolves when user completes or cancels the share
13557 # action. This can be unsafe since selecting copy action fires no DataPackage
13558 # event as of 21H1.
13559 # `false` means the promise resolves when the share data is passed to
13561 # This affects the behavior of `navigator.share()`.
13562 - name: widget.windows.share.wait_action.enabled
13567 - name: widget.windows.window_occlusion_tracking.enabled
13572 # Whether overlay scrollbars respect the system settings.
13573 # Note that these can be overridden by the ui.useOverlayScrollbars pref.
13574 - name: widget.windows.overlay-scrollbars.enabled
13579 - name: widget.windows.window_occlusion_tracking_display_state.enabled
13584 - name: widget.windows.window_occlusion_tracking_session_lock.enabled
13589 - name: widget.windows.hide_cursor_when_typing
13595 # Whether to disable SwipeTracker (e.g. swipe-to-nav).
13596 - name: widget.disable-swipe-tracker
13599 value: @IS_NOT_NIGHTLY_BUILD@
13605 # Various metrics to control SwipeTracker.
13606 - name: widget.swipe.velocity-twitch-tolerance
13611 - name: widget.swipe.success-velocity-contribution
13616 - name: widget.swipe.whole-page-pixel-size
13618 #if defined(XP_WIN)
13625 - name: widget.transparent-windows
13630 #---------------------------------------------------------------------------
13631 # Prefs starting with "xul."
13632 #---------------------------------------------------------------------------
13634 # Pref to control whether arrow-panel animations are enabled or not.
13635 # Transitions are currently disabled on Linux due to rendering issues on
13636 # certain configurations.
13637 - name: xul.panel-animations.enabled
13639 #ifdef MOZ_WIDGET_GTK
13646 #---------------------------------------------------------------------------
13647 # Prefs starting with "zoom."
13648 #---------------------------------------------------------------------------
13650 - name: zoom.maxPercent
13659 - name: zoom.minPercent
13668 #---------------------------------------------------------------------------
13670 #---------------------------------------------------------------------------