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 #---------------------------------------------------------------------------
204 # Prefs starting with "alerts."
205 #---------------------------------------------------------------------------
207 # Whether to use platform-specific backends for showing desktop notifications.
208 # If no such backend is available, or if the pref is false, then XUL
209 # notifications are used.
210 - name: alerts.useSystemBackend
213 # Linux and macOS turn on system level notification as default, but Windows is
214 # disabled due to instability (dependencies of bug 1497425).
223 #---------------------------------------------------------------------------
224 # Prefs starting with "android."
225 #---------------------------------------------------------------------------
227 # On Android, we want an opaque background to be visible under the page,
228 # so layout should not force a default background.
229 - name: android.widget_paints_background
234 - name: android.touch_resampling.enabled
235 type: RelaxedAtomicBool
241 #---------------------------------------------------------------------------
242 # Prefs starting with "apz."
243 # The apz prefs are explained in AsyncPanZoomController.cpp
244 #---------------------------------------------------------------------------
246 - name: apz.allow_double_tap_zooming
247 type: RelaxedAtomicBool
251 - name: apz.allow_immediate_handoff
252 type: RelaxedAtomicBool
256 - name: apz.allow_zooming
257 type: RelaxedAtomicBool
261 - name: apz.allow_zooming_out
262 type: RelaxedAtomicBool
266 - name: apz.android.chrome_fling_physics.friction
271 - name: apz.android.chrome_fling_physics.inflexion
276 - name: apz.android.chrome_fling_physics.stop_threshold
281 - name: apz.autoscroll.enabled
282 type: RelaxedAtomicBool
286 - name: apz.axis_lock.breakout_angle
288 value: float(M_PI / 8.0) # 22.5 degrees
292 - name: apz.axis_lock.breakout_threshold
297 - name: apz.axis_lock.direct_pan_angle
299 value: float(M_PI / 3.0) # 60 degrees
303 - name: apz.axis_lock.lock_angle
305 value: float(M_PI / 6.0) # 30 degrees
309 # Whether to lock touch scrolling to one axis at a time.
310 # 0 = FREE (No locking at all)
311 # 1 = STANDARD (Once locked, remain locked until scrolling ends)
312 # 2 = STICKY (Allow lock to be broken, with hysteresis)
313 - name: apz.axis_lock.mode
314 type: RelaxedAtomicInt32
318 - name: apz.content_response_timeout
319 type: RelaxedAtomicInt32
323 - name: apz.danger_zone_x
324 type: RelaxedAtomicInt32
328 - name: apz.danger_zone_y
329 type: RelaxedAtomicInt32
333 - name: apz.disable_for_scroll_linked_effects
334 type: RelaxedAtomicBool
338 - name: apz.displayport_expiry_ms
339 type: RelaxedAtomicUint32
343 - name: apz.drag.enabled
344 type: RelaxedAtomicBool
348 - name: apz.drag.initial.enabled
349 type: RelaxedAtomicBool
353 - name: apz.drag.touch.enabled
354 type: RelaxedAtomicBool
358 - name: apz.enlarge_displayport_when_clipped
359 type: RelaxedAtomicBool
364 - name: apz.fixed-margin-override.enabled
365 type: RelaxedAtomicBool
370 - name: apz.fixed-margin-override.bottom
371 type: RelaxedAtomicInt32
376 - name: apz.fixed-margin-override.top
377 type: RelaxedAtomicInt32
381 - name: apz.fling_accel_base_mult
386 - name: apz.fling_accel_supplemental_mult
391 - name: apz.fling_accel_min_fling_velocity
396 - name: apz.fling_accel_min_pan_velocity
401 - name: apz.fling_accel_max_pause_interval_ms
402 type: RelaxedAtomicInt32
406 - name: apz.fling_curve_function_x1
411 - name: apz.fling_curve_function_x2
416 - name: apz.fling_curve_function_y1
421 - name: apz.fling_curve_function_y2
426 - name: apz.fling_curve_threshold_inches_per_ms
431 - name: apz.fling_friction
436 - name: apz.fling_min_velocity_threshold
441 - name: apz.fling_stop_on_tap_threshold
446 - name: apz.fling_stopped_threshold
451 - name: apz.touch_acceleration_factor_x
456 - name: apz.touch_acceleration_factor_y
461 # new scrollbar code for desktop zooming
462 - name: apz.force_disable_desktop_zooming_scrollbars
463 type: RelaxedAtomicBool
467 #ifdef MOZ_WIDGET_GTK
468 - name: apz.gtk.kinetic_scroll.enabled
469 type: RelaxedAtomicBool
473 - name: apz.gtk.touchpad_pinch.enabled
474 type: RelaxedAtomicBool
479 - name: apz.keyboard.enabled
481 value: @IS_NOT_ANDROID@
484 - name: apz.keyboard.passive-listeners
485 type: RelaxedAtomicBool
486 value: @IS_NOT_ANDROID@
489 - name: apz.max_tap_time
490 type: RelaxedAtomicInt32
494 - name: apz.max_velocity_inches_per_ms
499 - name: apz.max_velocity_queue_size
504 - name: apz.min_skate_speed
509 - name: apz.minimap.enabled
510 type: RelaxedAtomicBool
514 - name: apz.mvm.force-enabled
515 type: RelaxedAtomicBool
519 - name: apz.one_touch_pinch.enabled
520 type: RelaxedAtomicBool
524 - name: apz.overscroll.enabled
525 type: RelaxedAtomicBool
529 - name: apz.overscroll.min_pan_distance_ratio
534 - name: apz.overscroll.stop_distance_threshold
539 - name: apz.paint_skipping.enabled
540 type: RelaxedAtomicBool
544 - name: apz.peek_messages.enabled
545 type: RelaxedAtomicBool
549 # Fetch displayport updates early from the message queue.
550 - name: apz.pinch_lock.mode
551 type: RelaxedAtomicInt32
555 - name: apz.pinch_lock.scroll_lock_threshold
557 value: 1.0f / 32.0f # 1/32 inches
560 - name: apz.pinch_lock.span_breakout_threshold
562 value: 1.0f / 32.0f # 1/32 inches
565 - name: apz.pinch_lock.span_lock_threshold
567 value: 1.0f / 32.0f # 1/32 inches
570 - name: apz.pinch_lock.buffer_max_age
572 value: 50 # milliseconds
575 - name: apz.popups.enabled
576 type: RelaxedAtomicBool
580 # Whether to print the APZC tree for debugging.
581 - name: apz.printtree
582 type: RelaxedAtomicBool
586 - name: apz.record_checkerboarding
587 type: RelaxedAtomicBool
588 value: @IS_NIGHTLY_BUILD@
591 - name: apz.second_tap_tolerance
596 - name: apz.test.fails_with_native_injection
597 type: RelaxedAtomicBool
601 - name: apz.test.logging_enabled
602 type: RelaxedAtomicBool
606 - name: apz.touch_move_tolerance
611 - name: apz.touch_start_tolerance
616 - name: apz.velocity_bias
621 - name: apz.velocity_relevance_time_ms
622 type: RelaxedAtomicUint32
626 - name: apz.windows.force_disable_direct_manipulation
627 type: RelaxedAtomicBool
631 - name: apz.windows.use_direct_manipulation
632 type: RelaxedAtomicBool
636 - name: apz.x_skate_highmem_adjust
641 - name: apz.x_skate_size_multiplier
646 - name: apz.x_stationary_size_multiplier
651 - name: apz.y_skate_highmem_adjust
656 - name: apz.y_skate_size_multiplier
658 #if defined(MOZ_WIDGET_ANDROID)
665 - name: apz.y_stationary_size_multiplier
667 #if defined(MOZ_WIDGET_ANDROID)
674 - name: apz.zoom_animation_duration_ms
675 type: RelaxedAtomicInt32
679 - name: apz.scale_repaint_delay_ms
680 type: RelaxedAtomicInt32
684 #---------------------------------------------------------------------------
685 # Prefs starting with "beacon."
686 #---------------------------------------------------------------------------
688 # Is support for Navigator.sendBeacon enabled?
689 - name: beacon.enabled
694 #---------------------------------------------------------------------------
695 # Prefs starting with "bidi."
696 #---------------------------------------------------------------------------
698 # Whether delete and backspace should immediately delete characters not
699 # visually adjacent to the caret, or adjust the visual position of the caret
700 # on the first keypress and delete the character on a second keypress
701 - name: bidi.edit.delete_immediately
706 # Bidi caret movement style:
709 # 2 = visual, but logical during selection
710 - name: bidi.edit.caret_movement_style
712 #if !defined(XP_LINUX) && defined(NIGHTLY_BUILD)
715 value: 2 # See Bug 1638240
719 #---------------------------------------------------------------------------
720 # Prefs starting with "browser."
721 #---------------------------------------------------------------------------
723 - name: browser.active_color
728 - name: browser.anchor_color
733 # See http://dev.w3.org/html5/spec/forms.html#attr-fe-autofocus
734 - name: browser.autofocus
739 - name: browser.cache.offline.enable
744 - name: browser.cache.offline.storage.enable
749 - name: browser.cache.disk.enable
750 type: RelaxedAtomicBool
754 - name: browser.cache.memory.enable
755 type: RelaxedAtomicBool
759 # Limit of recent metadata we keep in memory for faster access, in KB.
760 - name: browser.cache.disk.metadata_memory_limit
761 type: RelaxedAtomicUint32
765 # Does the user want smart-sizing?
766 - name: browser.cache.disk.smart_size.enabled
767 type: RelaxedAtomicBool
771 # Disk cache capacity in kilobytes. It's used only when
772 # browser.cache.disk.smart_size.enabled == false
773 - name: browser.cache.disk.capacity
774 type: RelaxedAtomicUint32
778 # -1 = determine dynamically, 0 = none, n = memory capacity in kilobytes.
779 - name: browser.cache.memory.capacity
780 type: RelaxedAtomicInt32
784 # When smartsizing is disabled we could potentially fill all disk space by
785 # cache data when the disk capacity is not set correctly. To avoid that we
786 # check the free space every time we write some data to the cache. The free
787 # space is checked against two limits. Once the soft limit is reached we start
788 # evicting the least useful entries, when we reach the hard limit writing to
790 - name: browser.cache.disk.free_space_soft_limit
791 type: RelaxedAtomicUint32
792 value: 5 * 1024 # 5MB
795 - name: browser.cache.disk.free_space_hard_limit
796 type: RelaxedAtomicUint32
800 # The number of chunks we preload ahead of read. One chunk currently has
802 - name: browser.cache.disk.preload_chunk_count
803 type: RelaxedAtomicUint32
804 value: 4 # 1 MB of read ahead
807 # Max-size (in KB) for entries in disk cache. Set to -1 for no limit.
808 # (Note: entries bigger than 1/8 of disk-cache are never cached)
809 - name: browser.cache.disk.max_entry_size
810 type: RelaxedAtomicUint32
811 value: 50 * 1024 # 50 MB
814 # Max-size (in KB) for entries in memory cache. Set to -1 for no limit.
815 # (Note: entries bigger than than 90% of the mem-cache are never cached.)
816 - name: browser.cache.memory.max_entry_size
817 type: RelaxedAtomicInt32
821 # Memory limit (in kB) for new cache data not yet written to disk. Writes to
822 # the cache are buffered and written to disk on background with low priority.
823 # With a slow persistent storage these buffers may grow when data is coming
824 # fast from the network. When the amount of unwritten data is exceeded, new
825 # writes will simply fail. We have two buckets, one for important data
826 # (priority) like html, css, fonts and js, and one for other data like images,
828 # Note: 0 means no limit.
829 - name: browser.cache.disk.max_chunks_memory_usage
830 type: RelaxedAtomicUint32
833 - name: browser.cache.disk.max_priority_chunks_memory_usage
834 type: RelaxedAtomicUint32
838 # Number of seconds the cache spends writing pending data and closing files
839 # after shutdown has been signalled. Past that time data is not written and
840 # files are left open for the OS to clean up.
841 - name: browser.cache.max_shutdown_io_lag
842 type: RelaxedAtomicUint32
846 # A percentage limit for media content type in the disk cache. When some entries
847 # need to be evicted and media is over the limit, it's evicted first.
848 - name: browser.cache.disk.content_type_media_limit
849 type: RelaxedAtomicInt32
853 # How often to validate document in cache
854 # 0 = once-per-session,
857 # 3 = when-appropriate/automatically
858 - name: browser.cache.check_doc_frequency
859 type: RelaxedAtomicUint32
863 - name: browser.contentblocking.database.enabled
868 # How many recent block/unblock actions per origins we remember in the
869 # Content Blocking log for each top-level window.
870 - name: browser.contentblocking.originlog.length
875 - name: browser.display.background_color
880 # 0 = always, except in high contrast mode
884 # Default to 0 on windows, 1 elsewhere.
885 - name: browser.display.document_color_use
886 type: RelaxedAtomicUint32
895 # This pref dictates whether or not backplates and background images
896 # are to be drawn, when in high-contrast mode:
897 # false: do not draw backplates or render background images
898 # true: render background images and draw backplates
899 # This condition is only considered when high-contrast mode is enabled
900 # in Firefox, ie. when the user has:
901 # (1) mUseAccessibilityMode set to true (Widows high-contrast mode is on)
902 # AND browser.display.document_color_use set to 0
903 # (only with high-contrast themes) OR
904 # (2) browser.display.document_color_use set to 2 (always)
905 - name: browser.display.permit_backplate
906 type: RelaxedAtomicBool
911 # Whether we should suppress the background-image of the canvas (the root
912 # frame) if we're in forced colors mode.
914 # This is important because some sites use background-image with a plain color
915 # and it causes undesirable results in high-contrast mode.
917 # See bug 1614921 for example.
918 - name: browser.display.suppress_canvas_background_image_on_forced_colors
923 - name: browser.display.focus_ring_on_anything
928 - name: browser.display.focus_ring_width
933 - name: browser.display.focus_background_color
938 # Focus ring border style.
939 # 0 = solid border, 1 = dotted border
940 - name: browser.display.focus_ring_style
945 - name: browser.display.focus_text_color
949 - name: browser.display.foreground_color
954 # Whether focus rings are always shown by default.
956 # This is the initial value of nsWindowRoot::mShowFocusRings, but it can be
957 # overridden by system preferences. For Windows, we start with default-true,
958 # and by default the UISF_HIDEFOCUS message comes by and sets it to false.
959 - name: browser.display.show_focus_rings
968 # Whether we should always enable focus rings after focus was moved by keyboard.
970 # This behavior matches both historical and GTK / Windows focus behavior.
972 # :focus-visible is intended to provide better heuristics than this, so for now
973 # we make this false whenever layout.css.focus-visible.enabled is enabled by
975 - name: browser.display.always_show_rings_after_key_focus
980 # In theory: 0 = never, 1 = quick, 2 = always, though we always just use it as
982 - name: browser.display.use_document_fonts
983 type: RelaxedAtomicInt32
988 - name: browser.display.use_focus_colors
993 - name: browser.display.use_system_colors
998 - name: browser.dom.window.dump.enabled
999 type: RelaxedAtomicBool
1000 value: @IS_NOT_MOZILLA_OFFICIAL@
1003 - name: browser.download.sanitize_non_media_extensions
1008 # Image document's automatic image sizing.
1009 - name: browser.enable_automatic_image_resizing
1014 # Image document's click-to-resize.
1015 - name: browser.enable_click_image_resizing
1017 value: @IS_NOT_ANDROID@
1020 # The max url length we'll store in history.
1022 # The default value is mostly a guess based on various facts:
1024 # * IE didn't support urls longer than 2083 chars
1025 # * Sitemaps protocol used to support a maximum of 2048 chars
1026 # * Various SEO guides suggest to not go over 2000 chars
1027 # * Various apps/services are known to have issues over 2000 chars
1028 # * RFC 2616 - HTTP/1.1 suggests being cautious about depending
1029 # on URI lengths above 255 bytes
1031 - name: browser.history.maxUrlLength
1036 # Render animations and videos as a solid color
1037 - name: browser.measurement.render_anims_and_video_solid
1038 type: RelaxedAtomicBool
1042 - name: browser.navigation.requireUserInteraction
1047 # Indicates if about:newtab shows content (enabled) or just blank.
1048 - name: browser.newtabpage.enabled
1053 # Open PDFs in Edge with the --app flag if it is the default.
1054 - name: browser.pdf.launchDefaultEdgeAsApp
1059 # Force usage of in-memory (rather than file on disk) media cache for video streaming when private browsing
1060 - name: browser.privatebrowsing.forceMediaMemoryCache
1065 # Blocked plugin content
1066 - name: browser.safebrowsing.blockedURIs.enabled
1071 # Malware protection
1072 - name: browser.safebrowsing.malware.enabled
1077 # Password protection
1078 - name: browser.safebrowsing.passwords.enabled
1083 # Phishing protection
1084 - name: browser.safebrowsing.phishing.enabled
1089 # Maximum size for an array to store the safebrowsing prefixset.
1090 - name: browser.safebrowsing.prefixset_max_array_size
1091 type: RelaxedAtomicUint32
1095 # ContentSessionStore prefs
1096 # Maximum number of bytes of DOMSessionStorage data we collect per origin.
1097 - name: browser.sessionstore.dom_storage_limit
1102 # If set, use DocumentChannel to directly initiate loads entirely
1103 # from parent-process BrowsingContexts
1104 - name: browser.tabs.documentchannel.parent-controlled
1109 - name: browser.tabs.remote.desktopbehavior
1114 - name: browser.tabs.remote.force-paint
1119 # When this pref is enabled document loads with a mismatched
1120 # Cross-Origin-Embedder-Policy header will fail to load
1121 - name: browser.tabs.remote.useCrossOriginEmbedderPolicy
1122 type: RelaxedAtomicBool
1123 #if !defined(ANDROID)
1126 value: false # Blocked by DocumentChannel, see Bug 1589982.
1130 # When this pref is enabled top level loads with a mismatched
1131 # Cross-Origin-Opener-Policy header will be loaded in a separate process.
1132 - name: browser.tabs.remote.useCrossOriginOpenerPolicy
1133 type: RelaxedAtomicBool
1134 #if !defined(ANDROID)
1137 value: false # Blocked by DocumentChannel, see Bug 1589982.
1141 # When true, zooming will be enabled on all sites, even ones that declare
1143 - name: browser.ui.zoom.force-user-scalable
1144 type: RelaxedAtomicBool
1148 - name: browser.underline_anchors
1153 - name: browser.viewport.desktopWidth
1154 type: RelaxedAtomicInt32
1158 - name: browser.visited_color
1163 #---------------------------------------------------------------------------
1164 # Prefs starting with "canvas."
1165 #---------------------------------------------------------------------------
1167 # Limit for the canvas image cache. 0 means unlimited.
1168 - name: canvas.image.cache.limit
1173 # Add support for canvas path objects
1174 - name: canvas.path.enabled
1179 - name: canvas.capturestream.enabled
1184 # Is support for CanvasRenderingContext2D.filter enabled?
1185 - name: canvas.filters.enabled
1190 # Provide ability to turn on support for canvas focus rings.
1191 - name: canvas.focusring.enabled
1196 # Is support for CanvasRenderingContext2D's hitRegion APIs enabled?
1197 - name: canvas.hitregions.enabled
1202 # Is support for CanvasRenderingContext2D's createConicGradient API enabled?
1203 - name: canvas.createConicGradient.enabled
1204 type: RelaxedAtomicBool
1205 value: @IS_NIGHTLY_BUILD@
1208 # Provide ability to turn on support for canvas mozGetAsFile API.
1209 - name: canvas.mozgetasfile.enabled
1214 #---------------------------------------------------------------------------
1215 # Prefs starting with "channelclassifier."
1216 #---------------------------------------------------------------------------
1218 - name: channelclassifier.allowlist_example
1223 #---------------------------------------------------------------------------
1224 # Prefs starting with "clipboard."
1225 #---------------------------------------------------------------------------
1227 # Clipboard behavior.
1228 - name: clipboard.autocopy
1230 #if !defined(ANDROID) && !defined(XP_MACOSX) && defined(XP_UNIX)
1237 #---------------------------------------------------------------------------
1238 # Prefs starting with "consoleservice."
1239 #---------------------------------------------------------------------------
1241 #if defined(ANDROID)
1242 # Disable sending console to logcat on release builds.
1243 - name: consoleservice.logcat
1244 type: RelaxedAtomicBool
1245 value: @IS_NOT_RELEASE_OR_BETA@
1249 #---------------------------------------------------------------------------
1250 # Prefs starting with "content."
1251 #---------------------------------------------------------------------------
1253 - name: content.cors.disable
1258 # Back off timer notification after count.
1260 - name: content.notify.backoffcount
1265 # Notification interval in microseconds.
1266 # The notification interval has a dramatic effect on how long it takes to
1267 # initially display content for slow connections. The current value
1268 # provides good incremental display of content without causing an increase
1269 # in page load time. If this value is set below 1/10 of a second it starts
1270 # to impact page load performance.
1271 # See bugzilla bug 72138 for more info.
1272 - name: content.notify.interval
1277 # Do we notify based on time?
1278 - name: content.notify.ontimer
1283 # How many times to deflect in interactive mode.
1284 - name: content.sink.interactive_deflect_count
1289 # How many times to deflect in perf mode.
1290 - name: content.sink.perf_deflect_count
1295 # Parse mode for handling pending events.
1296 # 0 = don't check for pending events
1297 # 1 = don't deflect if there are pending events
1298 # 2 = bail if there are pending events
1299 - name: content.sink.pending_event_mode
1308 # How often to probe for pending events. 1 = every token.
1309 - name: content.sink.event_probe_rate
1314 # How long to stay off the event loop in interactive mode.
1315 - name: content.sink.interactive_parse_time
1320 # How long to stay off the event loop in perf mode.
1321 - name: content.sink.perf_parse_time
1326 # How long to be in interactive mode after an event.
1327 - name: content.sink.interactive_time
1332 # How long to stay in perf mode after initial loading.
1333 - name: content.sink.initial_perf_time
1338 # Should we switch between perf-mode and interactive-mode?
1340 # 1 = Interactive mode
1342 - name: content.sink.enable_perf_mode
1347 #---------------------------------------------------------------------------
1348 # Prefs starting with "converter."
1349 #---------------------------------------------------------------------------
1351 # Whether we include ruby annotation in the text despite whether it
1352 # is requested. This was true because we didn't explicitly strip out
1353 # annotations. Set false by default to provide a better behavior, but
1354 # we want to be able to pref-off it if user doesn't like it.
1355 - name: converter.html2txt.always_include_ruby
1360 #---------------------------------------------------------------------------
1361 # Prefs starting with "datareporting."
1362 #---------------------------------------------------------------------------
1364 - name: datareporting.healthreport.uploadEnabled
1365 type: RelaxedAtomicBool
1370 #---------------------------------------------------------------------------
1371 # Prefs starting with "device."
1372 #---------------------------------------------------------------------------
1374 # Is support for the device sensors API enabled?
1375 - name: device.sensors.enabled
1380 - name: device.sensors.ambientLight.enabled
1385 - name: device.sensors.motion.enabled
1390 - name: device.sensors.orientation.enabled
1395 - name: device.sensors.proximity.enabled
1400 - name: device.sensors.test.events
1405 #---------------------------------------------------------------------------
1406 # Prefs starting with "devtools."
1407 #---------------------------------------------------------------------------
1409 # Tells if DevTools have been explicitely enabled by the user. This pref
1410 # allows to disable all features related to DevTools for users that never use
1411 # them. Until bug 1361080 lands, we always consider them enabled.
1412 - name: devtools.enabled
1413 type: RelaxedAtomicBool
1417 - name: devtools.console.stdout.chrome
1418 type: RelaxedAtomicBool
1419 value: @IS_NOT_MOZILLA_OFFICIAL@
1422 - name: devtools.console.stdout.content
1423 type: RelaxedAtomicBool
1427 - name: devtools.toolbox.force-chrome-prefs
1428 type: RelaxedAtomicBool
1432 #---------------------------------------------------------------------------
1433 # Prefs starting with "docshell."
1434 #---------------------------------------------------------------------------
1436 # Used to indicate whether session history listeners should be notified
1437 # about content viewer eviction. Used only for testing.
1438 - name: docshell.shistory.testing.bfevict
1443 # If true, pages with an opener won't be bfcached.
1444 - name: docshell.shistory.bfcache.require_no_opener
1449 # If true, page with beforeunload or unload event listeners can be bfcached.
1450 - name: docshell.shistory.bfcache.allow_unload_listeners
1455 #---------------------------------------------------------------------------
1456 # Prefs starting with "dom."
1457 #---------------------------------------------------------------------------
1459 # Whether window.mozPaintCount is exposed to the web.
1460 - name: dom.mozPaintCount.enabled
1466 - name: dom.allow_cut_copy
1471 - name: dom.allow_XUL_XBL_for_file
1476 # Checks if offscreen animation throttling is enabled.
1477 - name: dom.animations.offscreen-throttling
1482 # Is support for automatically removing replaced filling animations enabled?
1483 - name: dom.animations-api.autoremove.enabled
1488 # Is support for composite operations from the Web Animations API enabled?
1489 - name: dom.animations-api.compositing.enabled
1494 # Is support for the core interfaces of Web Animations API enabled?
1495 - name: dom.animations-api.core.enabled
1500 # Is support for Document.getAnimations() and Element.getAnimations()
1502 - name: dom.animations-api.getAnimations.enabled
1507 # Is support for animations from the Web Animations API without 0%/100%
1508 # keyframes enabled?
1509 - name: dom.animations-api.implicit-keyframes.enabled
1514 # Is support for timelines from the Web Animations API enabled?
1515 - name: dom.animations-api.timelines.enabled
1520 # Synchronize transform animations with geometric animations on the
1522 - name: dom.animations.mainthread-synchronization-with-geometric-animations
1524 value: @IS_NOT_NIGHTLY_BUILD@
1527 # Is support for AudioWorklet enabled?
1528 - name: dom.audioworklet.enabled
1533 # Is support for Navigator.getBattery enabled?
1534 - name: dom.battery.enabled
1539 # Block multiple external protocol URLs in iframes per single event.
1540 - name: dom.block_external_protocol_in_iframes
1545 # Block Insecure downloads from Secure Origins
1546 - name: dom.block_download_insecure
1548 value: @IS_NIGHTLY_BUILD@
1551 # Block all downloads in iframes with the sandboxed attribute
1552 - name: dom.block_download_in_sandboxed_iframes
1557 # Block multiple window.open() per single event.
1558 - name: dom.block_multiple_popups
1563 # The maximum number of popup that is allowed to be opened. Set to -1 for no
1565 - name: dom.popup_maximum
1570 # Whether window.location.reload() and window.history.go(0) should be blocked
1571 # if called directly from a window resize event handler.
1573 # This used to be necessary long ago to prevent terrible UX when using stuff
1574 # like TypeAheadFind (bug 258917), but it also causes compat issues on mobile
1577 # So for now disable it on Android and Desktop Nightly, to see if we have any
1578 # desktop regression before removing it completely. Note that this means that
1579 # non-nightly RDM behaves different than Android in this case.
1580 - name: dom.block_reload_from_resize_event_handler
1582 #if defined(MOZ_WIDGET_ANDROID) || defined(NIGHTLY_BUILD)
1590 - name: dom.caches.enabled
1591 type: RelaxedAtomicBool
1595 - name: dom.caches.testing.enabled
1596 type: RelaxedAtomicBool
1600 # Disable capture attribute for input elements; only supported on GeckoView.
1601 - name: dom.capture.enabled
1606 # Allow control characters appear in composition string.
1607 # When this is false, control characters except
1608 # CHARACTER TABULATION (horizontal tab) are removed from
1609 # both composition string and data attribute of compositionupdate
1610 # and compositionend events.
1611 - name: dom.compositionevent.allow_control_characters
1616 # Is support for CSSPseudoElement enabled?
1617 - name: dom.css_pseudo_element.enabled
1622 # After how many seconds we allow external protocol URLs in iframe when not in
1624 - name: dom.delay.block_external_protocol_in_iframes
1626 value: 10 # in seconds
1629 # Whether the above pref has any effect at all.
1630 - name: dom.delay.block_external_protocol_in_iframes.enabled
1632 value: @IS_NOT_NIGHTLY_BUILD@
1635 # HTML <dialog> element
1636 - name: dom.dialog_element.enabled
1638 value: @IS_NIGHTLY_BUILD@
1641 # Only propagate the open window click permission if the setTimeout() is equal
1642 # to or less than this value.
1643 - name: dom.disable_open_click_delay
1648 - name: dom.disable_open_during_load
1653 - name: dom.disable_beforeunload
1658 - name: dom.require_user_interaction_for_beforeunload
1663 # If set this to true, `Document.execCommand` may be performed nestedly.
1664 # Otherwise, nested calls just return false.
1665 - name: dom.document.exec_command.nested_calls_allowed
1670 - name: dom.enable_window_print
1672 value: @IS_NOT_ANDROID@
1675 - name: dom.element.transform-getters.enabled
1680 # Is support for Performance.mozMemory enabled?
1681 - name: dom.enable_memory_stats
1686 # Enable Performance API
1687 # Whether nonzero values can be returned from performance.timing.*
1688 - name: dom.enable_performance
1689 type: RelaxedAtomicBool
1693 # Enable Performance Observer API
1694 - name: dom.enable_performance_observer
1695 type: RelaxedAtomicBool
1699 # Whether resource timing will be gathered and returned by performance.GetEntries*
1700 - name: dom.enable_resource_timing
1705 # Whether performance.GetEntries* will contain an entry for the active document
1706 - name: dom.enable_performance_navigation_timing
1711 # If this is true, it's allowed to fire "cut", "copy" and "paste" events.
1712 # Additionally, "input" events may expose clipboard content when inputType
1713 # is "insertFromPaste" or something.
1714 - name: dom.event.clipboardevents.enabled
1719 # Whether touch event listeners are passive by default.
1720 - name: dom.event.default_to_passive_touch_listeners
1725 # Whether wheel listeners are passive by default.
1726 - name: dom.event.default_to_passive_wheel_listeners
1731 # Whether WheelEvent should return pixels instead of lines for
1732 # WheelEvent.deltaX/Y/Z, when deltaMode hasn't been checked.
1734 # Other browsers don't use line deltas and websites forget to check for it, see
1736 - name: dom.event.wheel-deltaMode-lines.disabled
1738 value: @IS_NIGHTLY_BUILD@
1741 # Mostly for debugging. Whether we should do the same as
1742 # dom.event.wheel-deltaMode-lines.disabled, but unconditionally rather than
1743 # only when deltaMode hasn't been checked.
1744 - name: dom.event.wheel-deltaMode-lines.always-disabled
1749 # When dom.event.wheel-deltaMode-lines.disabled is true, this is the lines to
1750 # pixels multiplier that gets used.
1752 # The value here is taken from PIXELS_PER_LINE_SCALE from pdf.js.
1753 - name: dom.event.wheel-deltaMode-lines-to-pixel-scale
1758 #if defined(XP_MACOSX)
1759 # Whether to disable treating ctrl click as right click
1760 - name: dom.event.treat_ctrl_click_as_right_click.disabled
1762 value: @IS_NIGHTLY_BUILD@
1766 # Whether .offset{X,Y} for events targeted at SVG nodes returns bounds relative
1768 - name: dom.events.offset-in-svg-relative-to-svg-root
1773 # Enable clipboard readText() and writeText() by default
1774 - name: dom.events.asyncClipboard
1779 # Disable clipboard read() by default
1780 - name: dom.events.asyncClipboard.dataTransfer
1785 # Disable ClipboardItem and clipboard.write by default
1786 - name: dom.events.asyncClipboard.clipboardItem
1791 # Should only be enabled in tests.
1792 # Access with Clipboard::IsTestingPrefEnabled().
1793 - name: dom.events.testing.asyncClipboard
1797 do_not_use_directly: true
1799 # This pref controls whether or not the `protected` dataTransfer state is
1800 # enabled. If the `protected` dataTransfer stae is disabled, then the
1801 # DataTransfer will be read-only whenever it should be protected, and will not
1802 # be disconnected after a drag event is completed.
1803 - name: dom.events.dataTransfer.protected.enabled
1808 # User interaction timer interval, in ms
1809 - name: dom.events.user_interaction_interval
1814 # Whether to try to compress touchmove events on IPC layer.
1815 - name: dom.events.compress.touchmove
1820 # Whether to expose test interfaces of various sorts
1821 - name: dom.expose_test_interfaces
1826 - name: dom.fetchObserver.enabled
1827 type: RelaxedAtomicBool
1831 # Allow the content process to create a File from a path. This is allowed just
1832 # on parent process, on 'file' Content process, or for testing.
1833 - name: dom.file.createInChild
1834 type: RelaxedAtomicBool
1838 # Enable formData event
1839 - name: dom.formdata.event.enabled
1844 # Support @autocomplete values for form autofill feature.
1845 - name: dom.forms.autocomplete.formautofill
1850 # This pref just controls whether we format the number with grouping separator
1851 # characters when the internal value is set or updated. It does not stop the
1852 # user from typing in a number and using grouping separators.
1853 - name: dom.forms.number.grouping
1858 # Enable the form.requestSubmit API
1859 - name: dom.forms.requestsubmit.enabled
1864 # Whether the Gamepad API is enabled
1865 - name: dom.gamepad.enabled
1870 # Is Gamepad Extension API enabled?
1871 - name: dom.gamepad.extensions.enabled
1876 # Is LightIndicator API enabled in Gamepad Extension API?
1877 - name: dom.gamepad.extensions.lightindicator
1882 # Is MultiTouch API enabled in Gamepad Extension API?
1883 - name: dom.gamepad.extensions.multitouch
1888 # Is Gamepad vibrate haptic feedback function enabled?
1889 - name: dom.gamepad.haptic_feedback.enabled
1894 - name: dom.gamepad.non_standard_events.enabled
1896 value: @IS_NOT_RELEASE_OR_BETA@
1899 - name: dom.gamepad.test.enabled
1904 # W3C draft ImageCapture API
1905 - name: dom.imagecapture.enabled
1910 # <img loading="lazy">
1912 # See https://github.com/whatwg/html/pull/3752
1913 - name: dom.image-lazy-loading.enabled
1914 type: RelaxedAtomicBool
1918 # The root margin for image lazy loading, defined as four (value, percentage)
1921 # (0px, 0px, 0px, 0px) by default, for now. We could also consider an
1922 # adaptative version of this.
1923 - name: dom.image-lazy-loading.root-margin.top
1928 - name: dom.image-lazy-loading.root-margin.top.percentage
1933 - name: dom.image-lazy-loading.root-margin.bottom
1938 - name: dom.image-lazy-loading.root-margin.bottom.percentage
1943 - name: dom.image-lazy-loading.root-margin.left
1948 - name: dom.image-lazy-loading.root-margin.left.percentage
1953 - name: dom.image-lazy-loading.root-margin.right
1958 - name: dom.image-lazy-loading.root-margin.right.percentage
1963 # Enable passing the "storage" option to indexedDB.open.
1964 - name: dom.indexedDB.storageOption.enabled
1965 type: RelaxedAtomicBool
1969 # Enable indexedDB in private browsing mode.
1970 - name: dom.indexedDB.privateBrowsing.enabled
1971 type: RelaxedAtomicBool
1975 - name: dom.input_events.beforeinput.enabled
1980 # Whether innerWidth / innerHeight return rounded or fractional sizes.
1982 # NOTE(emilio): Fractional sizes are not web-compatible, see the regressions
1983 # from bug 1676843, but we want to expose the fractional sizes (probably in
1984 # another API) one way or another, see [1], so we're keeping the code for the
1987 # [1]: https://github.com/w3c/csswg-drafts/issues/5260
1988 - name: dom.innerSize.rounded
1993 # Whether we conform to Input Events Level 1 or Input Events Level 2.
1994 # true: conforming to Level 1
1995 # false: conforming to Level 2
1996 - name: dom.input_events.conform_to_level_1
2001 # Whether we allow BrowsingContextGroup to suspend input events
2002 - name: dom.input_events.canSuspendInBCG.enabled
2007 # Enable not moving the cursor to end when a text input or textarea has .value
2008 # set to the value it already has. By default, enabled.
2009 - name: dom.input.skip_cursor_move_for_same_value_set
2014 - name: dom.IntersectionObserver.enabled
2019 - name: dom.IntersectionObserverExplicitDocumentRoot.enabled
2024 - name: dom.ipc.cancel_content_js_when_navigating
2029 # How often to check for CPOW timeouts (ms). CPOWs are only timed
2030 # out by the hang monitor.
2031 - name: dom.ipc.cpow.timeout
2036 #ifdef MOZ_ENABLE_FORKSERVER
2037 - name: dom.ipc.forkserver.enable
2043 # Whether or not to collect a paired minidump when force-killing a
2045 - name: dom.ipc.tabs.createKillHardCrashReports
2047 value: @IS_NOT_RELEASE_OR_BETA@
2050 # Allow Flash async drawing mode in 64-bit release builds.
2051 - name: dom.ipc.plugins.asyncdrawing.enabled
2052 type: RelaxedAtomicBool
2056 # How long we wait before unloading an idle plugin process.
2057 - name: dom.ipc.plugins.unloadTimeoutSecs
2058 type: RelaxedAtomicUint32
2062 - name: dom.ipc.plugins.allow_dxgi_surface
2067 # Enable e10s hang monitoring (slow script checking and plugin hang detection).
2068 - name: dom.ipc.processHangMonitor
2073 # Whether we report such process hangs
2074 - name: dom.ipc.reportProcessHangs
2075 type: RelaxedAtomicBool
2076 # Don't report hangs in DEBUG builds. They're too slow and often a
2077 # debugger is attached.
2085 - name: dom.ipc.tabs.disabled
2090 # Process launch delay (in milliseconds).
2091 - name: dom.ipc.processPrelaunch.delayMs
2093 # This number is fairly arbitrary ... the intention is to put off
2094 # launching another app process until the last one has finished
2095 # loading its content, to reduce CPU/memory/IO contention.
2099 # Process preallocation cache
2100 # Only used in fission; in e10s we use 1 always
2101 - name: dom.ipc.processPrelaunch.fission.number
2106 - name: dom.ipc.processPriorityManager.enabled
2111 - name: dom.ipc.processPriorityManager.testMode
2116 - name: dom.ipc.processPriorityManager.backgroundPerceivableGracePeriodMS
2121 - name: dom.ipc.processPriorityManager.backgroundGracePeriodMS
2126 # Is support for HTMLElement.autocapitalize enabled?
2127 - name: dom.forms.autocapitalize
2129 value: @IS_NIGHTLY_BUILD@
2132 # Support for input type=month, type=week and type=datetime-local. By default,
2134 - name: dom.forms.datetime.others
2139 # Is support for HTMLElement.enterKeyHint enabled?
2140 - name: dom.forms.enterkeyhint
2142 value: @IS_NIGHTLY_BUILD@
2145 # Is support for HTMLElement.inputMode enabled?
2146 - name: dom.forms.inputmode
2148 #if defined(ANDROID)
2151 value: @IS_NOT_RELEASE_OR_BETA@
2155 # Enable Directory API. By default, disabled.
2156 - name: dom.input.dirpicker
2161 # Whether to allow or disallow web apps to cancel `beforeinput` events caused
2162 # by MozEditableElement#setUserInput() which is used by autocomplete, autofill
2163 # and password manager.
2164 - name: dom.input_event.allow_to_cancel_set_user_input
2169 # How long a content process can take before closing its IPC channel
2170 # after shutdown is initiated. If the process exceeds the timeout,
2171 # we fear the worst and kill it.
2172 - name: dom.ipc.tabs.shutdownTimeoutSecs
2173 type: RelaxedAtomicUint32
2174 #if !defined(DEBUG) && !defined(MOZ_ASAN) && !defined(MOZ_VALGRIND) && !defined(MOZ_TSAN)
2181 # Whether a native event loop should be used in the content process.
2182 - name: dom.ipc.useNativeEventProcessing.content
2183 type: RelaxedAtomicBool
2184 #if defined(XP_WIN) || defined(XP_MACOSX)
2191 # If this is true, TextEventDispatcher dispatches keydown and keyup events
2192 # even during composition (keypress events are never fired during composition
2193 # even if this is true).
2194 - name: dom.keyboardevent.dispatch_during_composition
2199 # If this is true, keypress events for non-printable keys are dispatched only
2200 # for event listeners of the system event group in web content.
2201 - name: dom.keyboardevent.keypress.dispatch_non_printable_keys_only_system_group_in_content
2206 # If this is true, "keypress" event's keyCode value and charCode value always
2207 # become same if the event is not created/initialized by JS.
2208 - name: dom.keyboardevent.keypress.set_keycode_and_charcode_to_same_value
2213 # Whether the Large-Allocation header is enabled.
2214 - name: dom.largeAllocationHeader.enabled
2219 - name: dom.largeAllocation.forceEnable
2224 # Whether "W3C Web Manifest" processing is enabled
2225 - name: dom.manifest.enabled
2230 # Enable mapped array buffer by default.
2231 - name: dom.mapped_arraybuffer.enabled
2236 # This pref is used to enable/disable the `document.autoplayPolicy` API which
2237 # returns a enum string which presents current autoplay policy and can change
2238 # overtime based on user session activity.
2239 - name: dom.media.autoplay.autoplay-policy-api
2245 - name: dom.media.mediasession.enabled
2250 # Number of seconds of very quiet or silent audio before considering the audio
2252 - name: dom.media.silence_duration_for_audibility
2257 - name: dom.menuitem.enabled
2262 # Enable meta-viewport support in remote APZ-enabled frames.
2263 - name: dom.meta-viewport.enabled
2264 type: RelaxedAtomicBool
2268 # Timeout clamp in ms for timeouts we clamp.
2269 - name: dom.min_timeout_value
2274 # Timeout clamp in ms for background windows.
2275 - name: dom.min_background_timeout_value
2280 # Timeout clamp in ms for background windows when throttling isn't enabled.
2281 - name: dom.min_background_timeout_value_without_budget_throttling
2286 # Are missing-property use counters for certain DOM attributes enabled?
2287 - name: dom.missing_prop_counters.enabled
2292 # Is support for module scripts (<script type="module">) enabled for content?
2293 - name: dom.moduleScripts.enabled
2298 # Whether we disable triggering mutation events for changes to style
2299 # attribute via CSSOM.
2300 # NOTE: This preference is used in unit tests. If it is removed or its default
2301 # value changes, please update test_sharedMap_static_prefs.js accordingly.
2302 - name: dom.mutation-events.cssom.disabled
2307 # Limit of location change caused by content scripts in a time span per
2308 # BrowsingContext. This includes calls to History and Location APIs.
2309 - name: dom.navigation.locationChangeRateLimit.count
2314 # Time span in seconds for location change rate limit.
2315 - name: dom.navigation.locationChangeRateLimit.timespan
2320 # Network Information API
2321 - name: dom.netinfo.enabled
2322 type: RelaxedAtomicBool
2326 # Whether we should open noopener links in a new process.
2327 - name: dom.noopener.newprocess.enabled
2332 # Whether we shouldn't show an error page for unknown protocols (and should
2333 # show a console warning instead).
2334 - name: dom.no_unknown_protocol_error.enabled
2339 # Is support for Window.paintWorklet enabled?
2340 - name: dom.paintWorklet.enabled
2345 # Enable/disable the PaymentRequest API
2346 - name: dom.payments.request.enabled
2351 # Whether a user gesture is required to call PaymentRequest.prototype.show().
2352 - name: dom.payments.request.user_interaction_required
2357 # Time in milliseconds for PaymentResponse to wait for
2358 # the Web page to call complete().
2359 - name: dom.payments.response.timeout
2364 # Enable printing performance marks/measures to log
2365 - name: dom.performance.enable_user_timing_logging
2366 type: RelaxedAtomicBool
2370 - name: dom.performance.children_results_ipc_timeout
2375 # Enable notification of performance timing
2376 - name: dom.performance.enable_notify_performance_timing
2381 # Is support for PerformanceTiming.timeToContentfulPaint enabled?
2382 - name: dom.performance.time_to_contentful_paint.enabled
2387 # Is support for PerformanceTiming.timeToDOMContentFlushed enabled?
2388 - name: dom.performance.time_to_dom_content_flushed.enabled
2393 # Is support for PerformanceTiming.timeToFirstInteractive enabled?
2394 - name: dom.performance.time_to_first_interactive.enabled
2399 # Is support for PerformanceTiming.timeToNonBlankPaint enabled?
2400 - name: dom.performance.time_to_non_blank_paint.enabled
2405 # Is support for Permissions.revoke enabled?
2406 - name: dom.permissions.revoke.enable
2411 # Whether we should show the placeholder when the element is focused but empty.
2412 - name: dom.placeholder.show_on_focus
2417 # Is support for Element.requestPointerLock enabled?
2418 # This is added for accessibility purpose. When user has no way to exit
2419 # pointer lock (e.g. no keyboard available), they can use this pref to
2420 # disable the Pointer Lock API altogether.
2421 - name: dom.pointer-lock.enabled
2426 # re-SAB: Whether to allow postMessage of a SharedArrayBuffer if various
2427 # preconditions related to COOP and COEP are met
2428 - name: dom.postMessage.sharedArrayBuffer.withCOOP_COEP
2430 #if !defined(ANDROID)
2433 value: false # Blocked by DocumentChannel, see Bug 1589982.
2437 # Overridden in all.js on RELEASE_OR_BETA in order to add the locked attribute.
2438 - name: dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled
2439 type: RelaxedAtomicBool
2444 - name: dom.presentation.enabled
2446 #if defined(ANDROID)
2447 value: @IS_NOT_RELEASE_OR_BETA@
2453 - name: dom.presentation.controller.enabled
2455 #if defined(ANDROID)
2456 value: @IS_NOT_RELEASE_OR_BETA@
2462 - name: dom.presentation.receiver.enabled
2464 #if defined(ANDROID)
2465 value: @IS_NOT_RELEASE_OR_BETA@
2471 - name: dom.presentation.testing.simulate-receiver
2476 # This currently only affects XHTML. For XUL the cache is always allowed.
2477 - name: dom.prototype_document_cache.enabled
2483 - name: dom.push.enabled
2484 type: RelaxedAtomicBool
2488 # Preference that is primarily used for testing of problematic file paths.
2489 # It can also be used for switching between different storage directories, but
2490 # such feature is not officially supported.
2491 - name: dom.quotaManager.storageName
2496 # Should we try to load origin information from the cache?
2497 # See bug 1563023 for more details.
2498 - name: dom.quotaManager.loadQuotaFromCache
2499 type: RelaxedAtomicBool
2503 # Preference that users can set to override temporary storage smart limit
2505 - name: dom.quotaManager.temporaryStorage.fixedLimit
2506 type: RelaxedAtomicInt32
2510 # Preference that users can set to override temporary storage smart limit
2512 - name: dom.quotaManager.temporaryStorage.chunkSize
2513 type: RelaxedAtomicUint32
2517 # A pref that is used to enable testing features.
2518 - name: dom.quotaManager.testing
2519 type: SequentiallyConsistentAtomicBool
2524 # Preference that is used to set nsILocalFileWin::useDOSDevicePathSyntax
2525 # attribute for all local file instances created by QuotaManager and its
2526 # clients. The value of this preference is cached so changing the preference
2527 # during runtime has no effect.
2528 # See bug 1626846 for setting this to false by default.
2529 - name: dom.quotaManager.useDOSDevicePathSyntax
2530 type: RelaxedAtomicBool
2533 do_not_use_directly: true
2535 # Preference that is used to enable the hack for overrriding xFullPathname in
2537 - name: dom.quotaManager.overrideXFullPathname
2538 type: RelaxedAtomicBool
2544 - name: dom.reporting.enabled
2545 type: RelaxedAtomicBool
2546 value: @IS_NIGHTLY_BUILD@
2549 - name: dom.reporting.testing.enabled
2550 type: RelaxedAtomicBool
2554 - name: dom.reporting.featurePolicy.enabled
2555 type: RelaxedAtomicBool
2556 value: @IS_NIGHTLY_BUILD@
2559 - name: dom.reporting.crash.enabled
2560 type: RelaxedAtomicBool
2564 - name: dom.reporting.header.enabled
2565 type: RelaxedAtomicBool
2569 # In seconds. The timeout to remove not-active report-to endpoints.
2570 - name: dom.reporting.cleanup.timeout
2575 # Any X seconds the reports are dispatched to endpoints.
2576 - name: dom.reporting.delivering.timeout
2581 # How many times the delivering of a report should be tried.
2582 - name: dom.reporting.delivering.maxFailures
2587 # How many reports should be stored in the report queue before being delivered.
2588 - name: dom.reporting.delivering.maxReports
2593 # Enable requestIdleCallback API
2594 - name: dom.requestIdleCallback.enabled
2599 # Whether to enable the JavaScript start-up cache. This causes one of the first
2600 # execution to record the bytecode of the JavaScript function used, and save it
2601 # in the existing cache entry. On the following loads of the same script, the
2602 # bytecode would be loaded from the cache instead of being generated once more.
2603 - name: dom.script_loader.bytecode_cache.enabled
2608 # Ignore the heuristics of the bytecode cache, and always record on the first
2609 # visit. (used for testing purposes).
2611 # Choose one strategy to use to decide when the bytecode should be encoded and
2612 # saved. The following strategies are available right now:
2613 # * -2 : (reader mode) The bytecode cache would be read, but it would never
2615 # * -1 : (eager mode) The bytecode would be saved as soon as the script is
2616 # seen for the first time, independently of the size or last access
2618 # * 0 : (default) The bytecode would be saved in order to minimize the
2621 # Other values might lead to experimental strategies. For more details, have a
2622 # look at: ScriptLoader::ShouldCacheBytecode function.
2623 - name: dom.script_loader.bytecode_cache.strategy
2628 # Is support for decoding external (non-inline) classic or module DOM scripts
2629 # (i.e. anything but workers) as UTF-8, then directly compiling without
2630 # inflating to UTF-16, enabled?
2631 - name: dom.script_loader.external_scripts.utf8_parsing.enabled
2636 # Enable speculative off main thread parsing of external scripts as
2637 # soon as they are fetched.
2638 - name: dom.script_loader.external_scripts.speculative_omt_parse.enabled
2643 # Speculatively compile non parser inserted scripts
2644 - name: dom.script_loader.external_scripts.speculate_non_parser_inserted.enabled
2649 # Speculatively compile async scripts
2650 - name: dom.script_loader.external_scripts.speculate_async.enabled
2655 # Speculatively compile link preload scripts
2656 - name: dom.script_loader.external_scripts.speculate_link_preload.enabled
2661 - name: dom.securecontext.whitelist_onions
2666 # This pref enables Sec-Fetch-* logic and causes corresponding
2667 # request headers to be set.
2668 - name: dom.security.secFetch.enabled
2669 type: RelaxedAtomicBool
2670 value: @IS_NIGHTLY_BUILD@
2673 # This pref enables the featurePolicy header support.
2674 - name: dom.security.featurePolicy.header.enabled
2679 - name: dom.security.featurePolicy.experimental.enabled
2684 # Expose the 'featurePolicy' attribute in document and HTMLIFrameElement
2685 - name: dom.security.featurePolicy.webidl.enabled
2690 # For testing purposes only: Flipping this pref to true allows
2691 # to skip the allowlist for about: pages and do not ship with a
2692 # CSP and NS_ASSERT right away.
2693 - name: dom.security.skip_about_page_csp_allowlist_and_assert
2694 type: RelaxedAtomicBool
2698 # For testing purposes only: Flipping this pref to true allows
2699 # to skip the assertion that every about page ships with a CSP.
2700 - name: dom.security.skip_about_page_has_csp_assert
2701 type: RelaxedAtomicBool
2705 # For testing purposes only: Flipping this pref to true allows
2706 # to skip the assertion that HTML fragments (e.g. innerHTML) can
2707 # not be used within chrome code or about: pages.
2708 - name: dom.security.skip_html_fragment_assertion
2709 type: RelaxedAtomicBool
2713 # For testing purposes only; Flipping this pref to true allows
2714 # to skip the assertion that remote scripts can not be loaded
2715 # in system privileged contexts.
2716 - name: dom.security.skip_remote_script_assertion_in_system_priv_context
2717 type: RelaxedAtomicBool
2721 # If true, all content requests will get upgraded to HTTPS://
2722 # (some Firefox functionality requests, like OCSP will not be affected)
2723 - name: dom.security.https_only_mode
2724 type: RelaxedAtomicBool
2728 # If true, all content requests in Private Browsing Mode will get
2729 # upgraded to HTTPS://. (If dom.security.https_only_mode is set
2730 # to true then this pref has no effect)
2731 - name: dom.security.https_only_mode_pbm
2732 type: RelaxedAtomicBool
2736 # If true, sends http background request for top-level sites to
2737 # counter long timeouts.
2738 - name: dom.security.https_only_mode_send_http_background_request
2739 type: RelaxedAtomicBool
2743 # If true and HTTPS-only mode is enabled, requests
2744 # to local IP addresses are also upgraded
2745 - name: dom.security.https_only_mode.upgrade_local
2746 type: RelaxedAtomicBool
2750 # If true and HTTPS-only mode is enabled, requests
2751 # to .onion hosts are also upgraded
2752 - name: dom.security.https_only_mode.upgrade_onion
2753 type: RelaxedAtomicBool
2757 # WARNING: Don't ever update that pref manually! It is only used
2758 # for telemetry purposes and allows to reason about retention of
2759 # the pref dom.security.https_only_mode from above.
2760 - name: dom.security.https_only_mode_ever_enabled
2761 type: RelaxedAtomicBool
2765 # WARNING: Don't ever update that pref manually! It is only used
2766 # for telemetry purposes and allows to reason about retention of
2767 # the pref dom.security.https_only_mode_pbm from above.
2768 - name: dom.security.https_only_mode_ever_enabled_pbm
2769 type: RelaxedAtomicBool
2773 - name: dom.security.unexpected_system_load_telemetry_enabled
2778 # pref controls `Sanitizer` API being exposed
2779 - name: dom.security.sanitizer.enabled
2784 # Is support for selection event APIs enabled?
2785 - name: dom.select_events.enabled
2790 # Whether or not selection events on text controls are enabled.
2791 - name: dom.select_events.textcontrols.enabled
2793 value: @IS_NIGHTLY_BUILD@
2796 - name: dom.separate_event_queue_for_post_message.enabled
2801 - name: dom.arena_allocator.enabled
2806 - name: dom.serviceWorkers.enabled
2807 type: RelaxedAtomicBool
2811 # If true. then the service worker interception and the ServiceWorkerManager
2812 # will live in the parent process. This only takes effect on browser start.
2813 - name: dom.serviceWorkers.parent_intercept
2818 - name: dom.serviceWorkers.testing.enabled
2819 type: RelaxedAtomicBool
2823 - name: dom.workers.serialized-sab-access
2824 type: RelaxedAtomicBool
2828 # Whether automatic storage access granting heuristics should be turned on.
2829 - name: dom.storage_access.auto_grants
2834 - name: dom.storage_access.auto_grants.delayed
2839 # Storage-access API.
2840 - name: dom.storage_access.enabled
2845 # The maximum number of origins that a given third-party tracker is allowed
2846 # to have concurrent access to before the user is presented with a storage
2847 # access prompt. Only effective when the auto_grants pref is turned on.
2848 - name: dom.storage_access.max_concurrent_auto_grants
2853 # Enable Storage API for all platforms except Android.
2854 - name: dom.storageManager.enabled
2855 type: RelaxedAtomicBool
2856 value: @IS_NOT_ANDROID@
2859 # Should we abort LocalStorage requests when a sync message from parent is
2862 # LocalStorage is a synchronous API involving sync IPC from the child to the
2863 # parent. Accessibility interfaces currently also involve different forms of
2864 # synchronous parent-to-child communication. (See bug 1516136 comment 11 and
2865 # comment 15.) Although LocalStorage NextGen no longer needs to consult the
2866 # main thread, thereby eliminating the possibility of deadlock, the browser is
2867 # very complex and so we have retained a fail-safe mechanism that will cause
2868 # blocking LocalStorage operations to abort on synchronous IPC from the parent
2871 # We are disabling this fail-safe mechanism because it is fundamentally visible
2872 # to content when activated. When we abort the synchronous LocalStorage
2873 # operation we throw an error which has the potential to break web content.
2874 # This is not a hypothetical. In bug 1574569 content broke due to accessibility
2875 # path aborting the LS call, but the LS call didn't need to abort because it
2876 # was not at risk of deadlock.
2878 # But we are retaining the preference in the event that regressions occur
2879 # anywhere in the code-base that could cause a cascade that would result in
2880 # deadlock. (There have been logic bugs in components that resulted in
2881 # PBackground synchronously blocking in a way that could result in deadlock.)
2882 # This allows us to re-enable the fail-safe with only a pref flip.
2883 - name: dom.storage.abort_on_sync_parent_to_child_messages
2888 # LocalStorage data limit as determined by summing up the lengths of all string
2889 # keys and values. This is consistent with the legacy implementation and other
2890 # browser engines. This value should really only ever change in unit testing
2891 # where being able to lower it makes it easier for us to test certain edge
2892 # cases. Measured in KiBs.
2893 - name: dom.storage.default_quota
2894 type: RelaxedAtomicUint32
2895 # Only allow relatively small amounts of data since performance of the
2896 # synchronous IO is very bad. We are enforcing simple per-origin quota only.
2900 # Per-site quota for legacy LocalStorage implementation.
2901 - name: dom.storage.default_site_quota
2902 type: RelaxedAtomicUint32
2906 # Whether or not LSNG (Next Generation Local Storage) is enabled.
2907 # See bug 1517090 for enabling this on Nightly.
2908 # See bug 1534736 for changing it to EARLY_BETA_OR_EARLIER.
2909 # See bug 1539835 for enabling this unconditionally.
2910 # See bug 1619948 for changing it back to EARLY_BETA_OR_EARLIER.
2911 - name: dom.storage.next_gen
2912 type: RelaxedAtomicBool
2913 value: @IS_EARLY_BETA_OR_EARLIER@
2915 do_not_use_directly: true
2917 # Is support for Storage test APIs enabled?
2918 - name: dom.storage.testing
2923 # For area and anchor elements with target=_blank and no rel set to
2925 - name: dom.targetBlankNoOpener.enabled
2930 # Is support for Selection.GetRangesForInterval enabled?
2931 - name: dom.testing.selection.GetRangesForInterval
2936 - name: dom.testing.structuredclonetester.enabled
2937 type: RelaxedAtomicBool
2941 - name: dom.testing.sync-content-blocking-notifications
2946 - name: dom.textMetrics.actualBoundingBox.enabled
2951 - name: dom.textMetrics.baselines.enabled
2956 - name: dom.textMetrics.emHeight.enabled
2961 - name: dom.textMetrics.fontBoundingBox.enabled
2966 # Time (in ms) that it takes to regenerate 1ms.
2967 - name: dom.timeout.background_budget_regeneration_rate
2972 # Time (in ms) that it takes to regenerate 1ms.
2973 - name: dom.timeout.foreground_budget_regeneration_rate
2978 # Maximum value (in ms) for the background budget. Only valid for
2979 # values greater than 0.
2980 - name: dom.timeout.background_throttling_max_budget
2985 # Maximum value (in ms) for the foreground budget. Only valid for
2986 # values greater than 0.
2987 - name: dom.timeout.foreground_throttling_max_budget
2992 # The maximum amount a timeout can be delayed by budget throttling.
2993 - name: dom.timeout.budget_throttling_max_delay
2998 # Turn on budget throttling by default.
2999 - name: dom.timeout.enable_budget_timer_throttling
3004 # Should we defer timeouts and intervals while loading a page. Released
3005 # on Idle or when the page is loaded.
3006 - name: dom.timeout.defer_during_load
3011 # Maximum amount of time in milliseconds consecutive setTimeout()/setInterval()
3012 # callback are allowed to run before yielding the event loop.
3013 - name: dom.timeout.max_consecutive_callbacks_ms
3018 # Maximum deferral time for setTimeout/Interval in milliseconds
3019 - name: dom.timeout.max_idle_defer_ms
3024 # Delay in ms from document load until we start throttling background timeouts.
3025 - name: dom.timeout.throttling_delay
3031 - name: dom.udpsocket.enabled
3036 # Time limit, in milliseconds, for user gesture transient activation.
3037 - name: dom.user_activation.transient.timeout
3042 # Whether to shim a Components object on untrusted windows.
3043 - name: dom.use_components_shim
3045 value: @IS_NOT_NIGHTLY_BUILD@
3048 - name: dom.vibrator.enabled
3053 - name: dom.vibrator.max_vibrate_ms
3058 - name: dom.vibrator.max_vibrate_list_len
3063 # Is support for Window.visualViewport enabled?
3064 - name: dom.visualviewport.enabled
3069 # Is support for WebVR APIs enabled?
3070 # Enabled by default in beta and release for Windows and OS X and for all
3071 # platforms in nightly and aurora.
3072 - name: dom.vr.enabled
3073 type: RelaxedAtomicBool
3074 #if defined(XP_WIN) || defined(XP_DARWIN) || !defined(RELEASE_OR_BETA)
3081 # Should VR sessions always be reported as supported, without first
3082 # checking for VR runtimes? This will prevent permission prompts
3083 # from being suppressed on machines without VR runtimes and cause
3084 # navigatior.xr.isSessionSupported to always report that immersive-vr
3086 - name: dom.vr.always_support_vr
3087 type: RelaxedAtomicBool
3091 # Should AR sessions always be reported as supported, without first
3092 # checking for AR runtimes? This will prevent permission prompts
3093 # from being suppressed on machines without AR runtimes and cause
3094 # navigatior.xr.isSessionSupported to always report that immersive-ar
3096 - name: dom.vr.always_support_ar
3097 type: RelaxedAtomicBool
3101 # It is often desirable to automatically start vr presentation when
3102 # a user puts on the VR headset. This is done by emitting the
3103 # Window.vrdisplayactivate event when the headset's sensors detect it
3104 # being worn. This can result in WebVR content taking over the headset
3105 # when the user is using it outside the browser or inadvertent start of
3106 # presentation due to the high sensitivity of the proximity sensor in some
3107 # headsets, so it is off by default.
3108 - name: dom.vr.autoactivate.enabled
3109 type: RelaxedAtomicBool
3113 # Minimum number of milliseconds that the browser will wait before
3114 # attempting to poll again for connected VR controllers. The browser
3115 # will not attempt to poll for VR controllers until it needs to use them.
3116 - name: dom.vr.controller.enumerate.interval
3117 type: RelaxedAtomicInt32
3121 # The threshold value of trigger inputs for VR controllers.
3122 - name: dom.vr.controller_trigger_threshold
3127 # Minimum number of milliseconds that the browser will wait before
3128 # attempting to poll again for connected VR displays. The browser
3129 # will not attempt to poll for VR displays until it needs to use
3130 # them, such as when detecting a WebVR site.
3131 - name: dom.vr.display.enumerate.interval
3132 type: RelaxedAtomicInt32
3136 # The number of milliseconds since last frame start before triggering a new
3137 # frame. When content is failing to submit frames on time or the lower level
3138 # VR platform APIs are rejecting frames, it determines the rate at which RAF
3139 # callbacks will be called.
3140 - name: dom.vr.display.rafMaxDuration
3141 type: RelaxedAtomicUint32
3145 # Minimum number of milliseconds the browser will wait before attempting
3146 # to re-start the VR service after an enumeration returned no devices.
3147 - name: dom.vr.external.notdetected.timeout
3148 type: RelaxedAtomicInt32
3152 # Minimum number of milliseconds the browser will wait before attempting
3153 # to re-start the VR service after a VR API (eg, OpenVR or Oculus)
3154 # requests that we shutdown and unload its libraries.
3155 # To ensure that we don't interfere with VR runtime software auto-updates,
3156 # we will not attempt to re-load the service until this timeout has elapsed.
3157 - name: dom.vr.external.quit.timeout
3158 type: RelaxedAtomicInt32
3162 # Minimum number of milliseconds that the VR session will be kept
3163 # alive after the browser and content no longer are using the
3164 # hardware. If a VR multitasking environment, this should be set
3165 # very low or set to 0.
3166 - name: dom.vr.inactive.timeout
3167 type: RelaxedAtomicInt32
3171 # Maximum number of milliseconds the browser will wait for content to call
3172 # VRDisplay.requestPresent after emitting vrdisplayactivate during VR
3173 # link traversal. This prevents a long running event handler for
3174 # vrdisplayactivate from later calling VRDisplay.requestPresent, which would
3175 # result in a non-responsive browser in the VR headset.
3176 - name: dom.vr.navigation.timeout
3177 type: RelaxedAtomicInt32
3182 - name: dom.vr.oculus.enabled
3183 type: RelaxedAtomicBool
3184 #if defined(HAVE_64BIT_BUILD) && !defined(ANDROID)
3185 # We are only enabling WebVR by default on 64-bit builds (Bug 1384459).
3188 # On Android, this pref is irrelevant.
3193 # When enabled, Oculus sessions may be created with the ovrInit_Invisible
3194 # flag if a page is using tracking but not presenting. When a page
3195 # begins presenting VR frames, the session will be re-initialized without
3196 # the flag. This eliminates the "Firefox not responding" warnings in
3197 # the headset, but might not be compatible with all versions of the Oculus
3199 - name: dom.vr.oculus.invisible.enabled
3200 type: RelaxedAtomicBool
3204 # Minimum number of milliseconds after content has stopped VR presentation
3205 # before the Oculus session is re-initialized to an invisible / tracking
3206 # only mode. If this value is too high, users will need to wait longer
3207 # after stopping WebVR presentation before automatically returning to the
3208 # Oculus home interface. (They can immediately return to the Oculus Home
3209 # interface through the Oculus HUD without waiting this duration)
3210 # If this value is too low, the Oculus Home interface may be visible
3211 # momentarily during VR link navigation.
3212 - name: dom.vr.oculus.present.timeout
3213 type: RelaxedAtomicInt32
3218 - name: dom.vr.openvr.enabled
3219 type: RelaxedAtomicBool
3220 #if !defined(HAVE_64BIT_BUILD) && !defined(ANDROID)
3221 # We are only enabling WebVR by default on 64-bit builds (Bug 1384459).
3223 #elif defined(XP_WIN) || defined(XP_MACOSX)
3224 # We enable OpenVR by default for Windows and macOS.
3227 # See Bug 1310663 (Linux). On Android, this pref is irrelevant.
3233 - name: dom.vr.osvr.enabled
3234 type: RelaxedAtomicBool
3238 # Pose prediction reduces latency effects by returning future predicted HMD
3239 # poses to callers of the WebVR API. This currently only has an effect for
3240 # Oculus Rift on SDK 0.8 or greater.
3241 - name: dom.vr.poseprediction.enabled
3242 type: RelaxedAtomicBool
3246 # Enable a separate process for VR module.
3247 - name: dom.vr.process.enabled
3256 - name: dom.vr.process.startup_timeout_ms
3261 # Puppet device, used for simulating VR hardware within tests and dev tools.
3262 - name: dom.vr.puppet.enabled
3263 type: RelaxedAtomicBool
3267 # Starting VR presentation is only allowed within a user gesture or event such
3268 # as VRDisplayActivate triggered by the system. dom.vr.require-gesture allows
3269 # this requirement to be disabled for special cases such as during automated
3270 # tests or in a headless kiosk system.
3271 - name: dom.vr.require-gesture
3272 type: RelaxedAtomicBool
3276 # Is support for WebXR APIs enabled?
3277 - name: dom.vr.webxr.enabled
3278 type: RelaxedAtomicBool
3283 # Control firing WidgetMouseEvent by handling Windows pointer messages or
3285 - name: dom.w3c_pointer_events.dispatch_by_pointer_messages
3291 # If the value is >= 0, it will be used for max touch points in child processes.
3292 - name: dom.maxtouchpoints.testing.value
3297 # W3C pointer events draft.
3298 - name: dom.w3c_pointer_events.implicit_capture
3300 value: @IS_NIGHTLY_BUILD@
3303 # Is support for Navigator.webdriver enabled?
3304 - name: dom.webdriver.enabled
3309 # In case Touch API is enabled, this pref controls whether to support
3310 # ontouch* event handlers, document.createTouch, document.createTouchList and
3311 # document.createEvent("TouchEvent").
3312 - name: dom.w3c_touch_events.legacy_apis.enabled
3318 # 0 - disabled, 1 - enabled, 2 - autodetect
3319 # Autodetection is currently only supported on Windows and GTK3 (and assumed on
3321 - name: dom.w3c_touch_events.enabled
3323 #if defined(XP_MACOSX)
3330 # Is support for the Web Audio API enabled?
3331 - name: dom.webaudio.enabled
3336 - name: dom.webkitBlink.dirPicker.enabled
3337 type: RelaxedAtomicBool
3338 value: @IS_NOT_ANDROID@
3341 # NOTE: This preference is used in unit tests. If it is removed or its default
3342 # value changes, please update test_sharedMap_static_prefs.js accordingly.
3343 - name: dom.webcomponents.shadowdom.report_usage
3348 # Is support for form-associated custom element enabled?
3349 - name: dom.webcomponents.formAssociatedCustomElement.enabled
3351 value: @IS_NIGHTLY_BUILD@
3354 # Is support for the Web GPU API enabled?
3355 - name: dom.webgpu.enabled
3356 type: RelaxedAtomicBool
3360 # Is support for HTMLInputElement.webkitEntries enabled?
3361 - name: dom.webkitBlink.filesystem.enabled
3363 value: @IS_NOT_ANDROID@
3366 # Whether the WebMIDI API is enabled
3367 - name: dom.webmidi.enabled
3372 - name: dom.webnotifications.allowinsecure
3373 type: RelaxedAtomicBool
3377 - name: dom.webnotifications.allowcrossoriginiframe
3378 type: RelaxedAtomicBool
3382 - name: dom.webnotifications.enabled
3383 type: RelaxedAtomicBool
3387 - name: dom.webnotifications.requireuserinteraction
3388 type: RelaxedAtomicBool
3392 - name: dom.webnotifications.requireinteraction.enabled
3393 type: RelaxedAtomicBool
3394 value: @IS_NIGHTLY_BUILD@
3397 - name: dom.webnotifications.serviceworker.enabled
3398 type: RelaxedAtomicBool
3402 # Is support for Window.event enabled?
3403 - name: dom.window.event.enabled
3408 - name: dom.window.history.async
3413 # Enable the "noreferrer" feature argument for window.open()
3414 - name: dom.window.open.noreferrer.enabled
3419 - name: dom.window.content.untrusted.enabled
3421 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
3424 - name: dom.worker.canceling.timeoutMilliseconds
3425 type: RelaxedAtomicUint32
3426 value: 30000 # 30 seconds
3429 # Is support for compiling DOM worker scripts directly from UTF-8 (without ever
3430 # inflating to UTF-16) enabled?
3431 - name: dom.worker.script_loader.utf8_parsing.enabled
3432 type: RelaxedAtomicBool
3436 - name: dom.worker.use_medium_high_event_queue
3437 type: RelaxedAtomicBool
3441 # Enables the dispatching of console log events from worker threads to the
3443 - name: dom.worker.console.dispatch_events_to_main_thread
3444 type: RelaxedAtomicBool
3448 - name: dom.worklet.enabled
3453 # Enable content type normalization of XHR uploads via MIME Sniffing standard
3454 - name: dom.xhr.standard_content_type_normalization
3455 type: RelaxedAtomicBool
3459 # When this pref is set, parent documents may consider child iframes have
3460 # loaded while they are still loading.
3461 - name: dom.cross_origin_iframes_loaded_in_background
3466 # WebIDL test prefs.
3467 - name: dom.webidl.test1
3471 - name: dom.webidl.test2
3476 # WebShare API - exposes navigator.share()
3477 - name: dom.webshare.enabled
3482 # WebShare API - allows WebShare without user interaction (for tests only).
3483 - name: dom.webshare.requireinteraction
3488 # about:home and about:newtab include remote snippets that contain arbitrarily
3489 # placed anchor tags in their content; we want sanitization to be turned off
3490 # in order to render them correctly
3491 - name: dom.about_newtab_sanitization.enabled
3496 # Hide the confirm dialog when a POST request is reloaded.
3497 - name: dom.confirm_repost.testing.always_accept
3502 # Whether we should suspend inactive tabs or not
3503 - name: dom.suspend_inactive.enabled
3508 # The following four prefs control the maximum script run time before slow
3510 - name: dom.max_script_run_time
3515 - name: dom.max_script_run_time_without_important_user_input
3517 #ifdef NIGHTLY_BUILD
3524 - name: dom.max_chrome_script_run_time
3529 - name: dom.max_ext_content_script_run_time
3534 #---------------------------------------------------------------------------
3535 # Prefs starting with "editor"
3536 #---------------------------------------------------------------------------
3538 # Allow or disallow to delete `<hr>` element when caret is at start of
3539 # following line of the element. If false, Backspace from start of following
3540 # line of an `<hr>` element causes moving caret to immediatly after the `<hr>`
3541 # element, and then, another Backspace can delete it.
3542 - name: editor.hr_element.allow_to_delete_from_following_line
3547 # Delay to mask last input character in password fields.
3548 # If negative value, to use platform's default behavior.
3549 # If 0, no delay to mask password.
3550 # Otherwise, password fields unmask last input character(s) during specified
3551 # time (in milliseconds).
3552 - name: editor.password.mask_delay
3557 # Set to true when you test mask_delay of password editor. If this is set
3558 # to true, "MozLastInputMasked" is fired when last input characters are
3559 # masked by timeout.
3560 - name: editor.password.testing.mask_delay
3565 # General prefs for editor, indicating whether Gecko-specific editing UI is
3566 # enabled by default. Those UIs are not implemented by any other browsers. So,
3567 # only Firefox users can change some styles with them. This means that Firefox
3568 # users may get unexpected result of some web apps if they assume that users
3569 # cannot change such styles.
3570 - name: editor.resizing.enabled_by_default
3574 - name: editor.inline_table_editing.enabled_by_default
3578 - name: editor.positioning.enabled_by_default
3583 # Whether user pastes should be truncated.
3584 - name: editor.truncate_user_pastes
3589 # How line breakers are treated in single line editor:
3590 # * 0: Only remove the leading and trailing newlines.
3591 # * 1: Remove the first newline and all characters following it.
3592 # * 2: Replace newlines with spaces (default of Firefox).
3593 # * 3: Remove newlines from the string.
3594 # * 4: Replace newlines with commas (default of Thunderbird).
3595 # * 5: Collapse newlines and surrounding white space characters and
3596 # remove them from the string.
3597 # Other values are treated as 1.
3598 - name: editor.singleLine.pasteNewlines
3603 # Whether enabling blink compatible white-space normalizer or keep using
3604 # Gecko's traditional white-space normalizer.
3605 - name: editor.white_space_normalization.blink_compatible
3610 #---------------------------------------------------------------------------
3611 # Prefs starting with "extensions."
3612 #---------------------------------------------------------------------------
3614 # Private browsing opt-in is only supported on Firefox desktop.
3615 - name: extensions.allowPrivateBrowsingByDefault
3620 # Whether the background.service_worker in the extension manifest.json file
3622 - name: extensions.backgroundServiceWorker.enabled
3627 # Whether the extensions can register a service worker on its own.
3628 # NOTE: WebExtensions Framework ability to register a background service worker
3629 # is not controlled by this pref, only the extension code ability to use
3630 # navigator.serviceWorker.register is locked behind this pref.
3631 - name: extensions.serviceWorkerRegister.allowed
3636 # This pref governs whether we run webextensions in a separate process (true)
3637 # or the parent/main process (false)
3638 - name: extensions.webextensions.remote
3639 type: RelaxedAtomicBool
3643 #---------------------------------------------------------------------------
3644 # Prefs starting with "findbar."
3645 #---------------------------------------------------------------------------
3647 - name: findbar.modalHighlight
3652 #---------------------------------------------------------------------------
3653 # Prefs starting with "fission."
3654 #---------------------------------------------------------------------------
3656 # Whether to enable Fission in new windows by default.
3657 # IMPORTANT: This preference should *never* be checked directly, since any
3658 # session can contain a mix of Fission and non-Fission windows. Instead,
3659 # callers should check whether the relevant nsILoadContext has the
3660 # `useRemoteSubframes` flag set.
3661 # Callers which cannot use `useRemoteSubframes` must use
3662 # `Services.appinfo.fissionAutostart` or `mozilla::FissionAutostart()` to check
3663 # if fission is enabled by default.
3664 - name: fission.autostart
3669 # Prefs used by normandy to orchestrate the fission experiment. For more
3670 # details, see the comments in nsAppRunner.cpp.
3671 - name: fission.experiment.enrollmentStatus
3676 - name: fission.experiment.startupEnrollmentStatus
3681 # This pref has no effect within fission windows, it only controls the
3682 # behaviour within non-fission windows. If true, preserve browsing contexts
3683 # between process swaps.
3684 - name: fission.preserve_browsing_contexts
3689 # Store the session history in the parent process, and access it over IPC
3690 # from the child processes.
3691 - name: fission.sessionHistoryInParent
3695 do_not_use_directly: true
3697 # Allow renaming of process names to the origin on nightly
3698 # Setting this pref creates a privacy leak, but helps greatly with
3700 - name: fission.processOriginNames
3705 # If true, allow process-switching documents loaded by <object> and <embed>
3706 # elements into a remote process.
3707 # NOTE: This pref has no impact outside of windows with the
3708 # `useRemoteSubframes` flag set.
3709 - name: fission.remoteObjectEmbed
3714 # If true, show option for opening a non-Fission window in a menu, when Fission
3716 - name: fission.openNonFissionWindowOption
3721 #---------------------------------------------------------------------------
3722 # Prefs starting with "font."
3723 #---------------------------------------------------------------------------
3725 # A value greater than zero enables font size inflation for
3726 # pan-and-zoom UIs, so that the fonts in a block are at least the size
3727 # that, if a block's width is scaled to match the device's width, the
3728 # fonts in the block are big enough that at most the pref value ems of
3729 # text fit in *the width of the device*.
3731 # When both this pref and the next are set, the larger inflation is used.
3732 - name: font.size.inflation.emPerLine
3737 # A value greater than zero enables font size inflation for
3738 # pan-and-zoom UIs, so that if a block's width is scaled to match the
3739 # device's width, the fonts in a block are at least the given font size.
3740 # The value given is in twips, i.e., 1/20 of a point, or 1/1440 of an inch.
3742 # When both this pref and the previous are set, the larger inflation is used.
3743 - name: font.size.inflation.minTwips
3748 # In products with multi-mode pan-and-zoom and non-pan-and-zoom UIs,
3749 # this pref forces font inflation to always be enabled in all modes.
3750 # That is, any heuristics used to detect pan-and-zoom
3751 # vs. non-pan-and-zoom modes are disabled and all content is treated
3752 # as pan-and-zoom mode wrt font inflation.
3754 # This pref has no effect if font inflation is not enabled through
3755 # either of the prefs above. It has no meaning in single-mode UIs.
3756 - name: font.size.inflation.forceEnabled
3761 # In products with multi-mode pan-and-zoom and non-pan-and-zoom UIs,
3762 # this pref disables font inflation in master-process contexts where
3763 # existing heuristics can't be used determine enabled-ness.
3765 # This pref has no effect if font inflation is not enabled through
3766 # either of the prefs above. The "forceEnabled" pref above overrides
3768 - name: font.size.inflation.disabledInMasterProcess
3773 # Defines the font size inflation mapping intercept parameter.
3775 # Font size inflation computes a minimum font size, m, based on
3776 # other preferences (see font.size.inflation.minTwips and
3777 # font.size.inflation.emPerLine, above) and the width of the
3778 # frame in which the text resides. Using this minimum, a specified
3779 # font size, s, is mapped to an inflated font size, i, using an
3780 # equation that varies depending on the value of the font size
3781 # inflation mapping intercept parameter, P.
3783 # If the intercept parameter is negative, then the following mapping
3788 # If the intercept parameter is non-negative, then the mapping function
3789 # is a function such that its graph meets the graph of i = s at the
3790 # point where both i and s are (1 + P/2) * m for values of s that are
3791 # large enough. This means that when s=0, i is always equal to m.
3792 - name: font.size.inflation.mappingIntercept
3797 # Since the goal of font size inflation is to avoid having to
3798 # repeatedly scroll side to side to read a block of text, and there are
3799 # a number of page layouts where a relatively small chunk of text is
3800 # better off not being inflated according to the same algorithm we use
3801 # for larger chunks of text, we want a threshold for an amount of text
3802 # that triggers font size inflation. This preference controls that
3805 # It controls the threshold used within an *approximation* of the
3806 # number of lines of text we use. In particular, if we assume that
3807 # each character (collapsing collapsible whitespace) has a width the
3808 # same as the em-size of the font (when, normally, it's actually quite
3809 # a bit smaller on average), this preference gives the percentage of a
3810 # number of lines of text we'd need to trigger inflation. This means
3811 # that a percentage of 100 means that we'd need a number of characters
3812 # (we know the font size and the width) equivalent to one line of
3813 # square text (which is actually a lot less than a real line of text).
3815 # A value of 0 means there's no character length threshold.
3816 - name: font.size.inflation.lineThreshold
3821 # This controls the percentage that fonts will be inflated, if font
3822 # size inflation is enabled. Essentially, if we have a specified font
3823 # size, s, and an inflated font size, i, this specifies that the ratio
3824 # i/s * 100 should never exceed the value of this preference. In order
3825 # for this preference to have any effect, its value must be greater
3826 # than 100, since font inflation can never decrease the ratio i/s.
3827 - name: font.size.inflation.maxRatio
3832 # This setting corresponds to a global text zoom setting affecting
3833 # all content that is not already subject to font size inflation.
3834 # It is interpreted as a percentage value that is applied on top
3835 # of the document's current text zoom setting.
3837 # The resulting total zoom factor (text zoom * system font scale)
3838 # will be limited by zoom.minPercent and maxPercent.
3839 - name: font.size.systemFontScale
3844 #---------------------------------------------------------------------------
3845 # Prefs starting with "full-screen-api."
3846 #---------------------------------------------------------------------------
3848 - name: full-screen-api.enabled
3853 - name: full-screen-api.allow-trusted-requests-only
3858 - name: full-screen-api.mouse-event-allow-left-button-only
3863 - name: full-screen-api.exit-on.windowOpen
3868 - name: full-screen-api.exit-on.windowRaise
3873 - name: full-screen-api.pointer-lock.enabled
3878 #---------------------------------------------------------------------------
3879 # Prefs starting with "fuzzing.". It's important that these can only be
3880 # checked in fuzzing builds (when FUZZING is defined), otherwise you could
3881 # enable the fuzzing stuff on your regular build which would be bad :)
3882 #---------------------------------------------------------------------------
3885 - name: fuzzing.enabled
3890 - name: fuzzing.necko.enabled
3891 type: RelaxedAtomicBool
3896 #---------------------------------------------------------------------------
3897 # Prefs starting with "general."
3898 #---------------------------------------------------------------------------
3900 - name: general.aboutConfig.enable
3905 # Limits the depth of recursive conversion of data when opening
3906 # a content to view. This is mostly intended to prevent infinite
3907 # loops with faulty converters involved.
3908 - name: general.document_open_conversion_depth_limit
3913 - name: general.smoothScroll
3914 type: RelaxedAtomicBool
3918 # This pref and general.smoothScroll.stopDecelerationWeighting determine
3919 # the timing function.
3920 - name: general.smoothScroll.currentVelocityWeighting
3925 # To connect consecutive scroll events into a continuous flow, the animation's
3926 # duration should be longer than scroll events intervals (or else the scroll
3927 # will stop before the next event arrives - we're guessing the next interval
3928 # by averaging recent intervals).
3929 # This defines how much longer the duration is compared to the events
3930 # interval (percentage).
3931 - name: general.smoothScroll.durationToIntervalRatio
3932 type: RelaxedAtomicInt32
3936 - name: general.smoothScroll.lines
3937 type: RelaxedAtomicBool
3941 - name: general.smoothScroll.lines.durationMaxMS
3942 type: RelaxedAtomicInt32
3946 - name: general.smoothScroll.lines.durationMinMS
3947 type: RelaxedAtomicInt32
3951 - name: general.smoothScroll.mouseWheel
3952 type: RelaxedAtomicBool
3956 - name: general.smoothScroll.mouseWheel.durationMaxMS
3957 type: RelaxedAtomicInt32
3961 - name: general.smoothScroll.mouseWheel.durationMinMS
3962 type: RelaxedAtomicInt32
3966 - name: general.smoothScroll.mouseWheel.migrationPercent
3967 type: RelaxedAtomicInt32
3971 - name: general.smoothScroll.other
3972 type: RelaxedAtomicBool
3976 - name: general.smoothScroll.other.durationMaxMS
3977 type: RelaxedAtomicInt32
3981 - name: general.smoothScroll.other.durationMinMS
3982 type: RelaxedAtomicInt32
3986 - name: general.smoothScroll.pages
3987 type: RelaxedAtomicBool
3991 - name: general.smoothScroll.pages.durationMaxMS
3992 type: RelaxedAtomicInt32
3996 - name: general.smoothScroll.pages.durationMinMS
3997 type: RelaxedAtomicInt32
4001 - name: general.smoothScroll.scrollbars
4002 type: RelaxedAtomicBool
4006 - name: general.smoothScroll.scrollbars.durationMaxMS
4007 type: RelaxedAtomicInt32
4011 - name: general.smoothScroll.scrollbars.durationMinMS
4012 type: RelaxedAtomicInt32
4016 - name: general.smoothScroll.pixels
4017 type: RelaxedAtomicBool
4021 - name: general.smoothScroll.pixels.durationMaxMS
4022 type: RelaxedAtomicInt32
4026 - name: general.smoothScroll.pixels.durationMinMS
4027 type: RelaxedAtomicInt32
4031 # This pref and general.smoothScroll.currentVelocityWeighting determine
4032 # the timing function.
4033 - name: general.smoothScroll.stopDecelerationWeighting
4038 # Alternative smooth scroll physics. ("MSD" = Mass-Spring-Damper)
4039 - name: general.smoothScroll.msdPhysics.enabled
4040 type: RelaxedAtomicBool
4044 - name: general.smoothScroll.msdPhysics.continuousMotionMaxDeltaMS
4045 type: RelaxedAtomicInt32
4049 - name: general.smoothScroll.msdPhysics.motionBeginSpringConstant
4050 type: RelaxedAtomicInt32
4054 - name: general.smoothScroll.msdPhysics.slowdownMinDeltaMS
4055 type: RelaxedAtomicInt32
4059 - name: general.smoothScroll.msdPhysics.slowdownMinDeltaRatio
4064 - name: general.smoothScroll.msdPhysics.slowdownSpringConstant
4065 type: RelaxedAtomicInt32
4069 - name: general.smoothScroll.msdPhysics.regularSpringConstant
4070 type: RelaxedAtomicInt32
4074 #---------------------------------------------------------------------------
4075 # Prefs starting with "geo."
4076 #---------------------------------------------------------------------------
4078 # Is support for Navigator.geolocation enabled?
4084 # Time, in milliseconds, to wait for the location provider to spin up.
4090 #---------------------------------------------------------------------------
4091 # Prefs starting with "gfx."
4092 #---------------------------------------------------------------------------
4094 - name: gfx.allow-texture-direct-mapping
4099 # Allow 24-bit colour when the hardware supports it.
4100 - name: gfx.android.rgb16.force
4105 - name: gfx.apitrace.enabled
4110 # Nb: we ignore this pref on release and beta.
4111 - name: gfx.blocklist.all
4116 # 0x7fff is the maximum supported xlib surface size and is more than enough for canvases.
4117 - name: gfx.canvas.max-size
4118 type: RelaxedAtomicInt32
4122 - name: gfx.canvas.remote
4123 type: RelaxedAtomicBool
4131 - name: gfx.color_management.enablev4
4132 type: RelaxedAtomicBool
4136 # 0 = Off, 1 = Full, 2 = Tagged Images Only.
4137 # See eCMSMode in gfx/thebes/gfxPlatform.h.
4138 - name: gfx.color_management.mode
4139 type: RelaxedAtomicInt32
4143 # The zero default here should match QCMS_INTENT_DEFAULT from qcms.h
4144 - name: gfx.color_management.rendering_intent
4145 type: RelaxedAtomicInt32
4149 - name: gfx.compositor.clearstate
4150 type: RelaxedAtomicBool
4154 # Whether GL contexts can be migrated to a different GPU (to match the one the
4155 # OS is using for composition).
4157 # 0 = force disable migration
4158 # 1 = use migration where in safe configurations (the default)
4159 # 2 = force enable migration (for testing)
4160 - name: gfx.compositor.gpu-migration
4161 type: RelaxedAtomicInt32
4165 - name: gfx.core-animation.tint-opaque
4166 type: RelaxedAtomicBool
4170 #if defined(MOZ_WIDGET_ANDROID)
4171 # Overrides the glClear color used when the surface origin is not (0, 0)
4172 # Used for drawing a border around the content.
4173 - name: gfx.compositor.override.clear-color.r
4178 - name: gfx.compositor.override.clear-color.g
4183 - name: gfx.compositor.override.clear-color.b
4188 - name: gfx.compositor.override.clear-color.a
4192 #endif # defined(MOZ_WIDGET_ANDROID)
4194 - name: gfx.content.always-paint
4195 type: RelaxedAtomicBool
4200 - name: gfx.content.skia-font-cache-size
4205 - name: gfx.device-reset.limit
4210 - name: gfx.device-reset.threshold-ms
4216 # Whether to disable the automatic detection and use of direct2d.
4217 - name: gfx.direct2d.disabled
4222 # Whether to attempt to enable Direct2D regardless of automatic detection or
4224 - name: gfx.direct2d.force-enabled
4229 # Whether to defer destruction of Direct2D DrawTargets to the paint thread
4231 - name: gfx.direct2d.destroy-dt-on-paintthread
4232 type: RelaxedAtomicBool
4236 - name: gfx.direct3d11.reuse-decoder-device
4237 type: RelaxedAtomicInt32
4241 - name: gfx.direct3d11.allow-keyed-mutex
4242 type: RelaxedAtomicBool
4246 - name: gfx.direct3d11.use-double-buffering
4247 type: RelaxedAtomicBool
4251 - name: gfx.direct3d11.enable-debug-layer
4256 - name: gfx.direct3d11.break-on-error
4261 - name: gfx.direct3d11.sleep-on-create-device
4266 # Whether to preserve color bitmap tables in fonts (bypassing OTS).
4267 # Currently these are supported only on platforms where we use Freetype
4268 # to render fonts (Linux/Gtk and Android).
4269 - name: gfx.downloadable_fonts.keep_color_bitmaps
4270 type: RelaxedAtomicBool
4274 # Whether font sanitization is performed on the main thread or not.
4275 - name: gfx.downloadable_fonts.sanitize_omt
4276 type: RelaxedAtomicBool
4280 # Whether to validate OpenType variation tables in fonts.
4281 - name: gfx.downloadable_fonts.validate_variation_tables
4282 type: RelaxedAtomicBool
4286 # Whether OTS validation should be applied to OpenType Layout (OTL) tables.
4287 - name: gfx.downloadable_fonts.otl_validation
4288 type: RelaxedAtomicBool
4289 value: @IS_NOT_RELEASE_OR_BETA@
4292 - name: gfx.draw-color-bars
4293 type: RelaxedAtomicBool
4297 - name: gfx.e10s.hide-plugins-for-scroll
4302 - name: gfx.e10s.font-list.shared
4304 value: @IS_EARLY_BETA_OR_EARLIER@
4307 # Whether to load fonts (e.g. Twemoji Mozilla) bundled with the application:
4308 # -1 - Auto behavior based on OS version (currently, disables loading on Win8.1 or later,
4309 # or on "low-memory" Android devices)
4310 # 0 - Skip loading any bundled fonts
4311 # 1 - Always load bundled fonts
4312 - name: gfx.bundled-fonts.activate
4317 - name: gfx.font_loader.delay
4326 # Disable antialiasing of Ahem, for use in tests.
4327 - name: gfx.font_rendering.ahem_antialias_none
4328 type: RelaxedAtomicBool
4332 #if defined(XP_MACOSX)
4333 # Set to true to revert from HarfBuzz AAT shaping to the old Core Text
4335 - name: gfx.font_rendering.coretext.enabled
4336 type: RelaxedAtomicBool
4341 - name: gfx.font_rendering.opentype_svg.enabled
4342 type: RelaxedAtomicBool
4347 - name: gfx.font_rendering.fallback.async
4348 type: RelaxedAtomicBool
4352 # Whether to enable LayerScope tool and default listening port.
4353 - name: gfx.layerscope.enabled
4354 type: RelaxedAtomicBool
4358 - name: gfx.layerscope.port
4359 type: RelaxedAtomicInt32
4363 # The level of logging:
4366 # - 2: adds warnings;
4367 # - 3 or 4: adds debug logging.
4368 # If you set the value to 4, you will also need to set the environment
4369 # variable MOZ_LOG to gfx:4. See mozilla/Logging.h for details.
4370 - name: gfx.logging.level
4371 type: RelaxedAtomicInt32
4372 value: mozilla::gfx::LOG_DEFAULT
4374 include: mozilla/gfx/LoggingConstants.h
4376 - name: gfx.logging.crash.length
4381 - name: gfx.logging.painted-pixel-count.enabled
4382 type: RelaxedAtomicBool
4386 # The maximums here are quite conservative, we can tighten them if problems show up.
4387 - name: gfx.logging.texture-usage.enabled
4392 - name: gfx.logging.peak-texture-usage.enabled
4397 - name: gfx.logging.slow-frames.enabled
4402 # Use gfxPlatform::MaxAllocSize instead of the pref directly.
4403 - name: gfx.max-alloc-size
4405 value: (int32_t)500000000
4407 do_not_use_directly: true
4409 # Use gfxPlatform::MaxTextureSize instead of the pref directly.
4410 - name: gfx.max-texture-size
4412 value: (int32_t)32767
4414 do_not_use_directly: true
4416 - name: gfx.offscreencanvas.enabled
4417 type: RelaxedAtomicBool
4421 - name: gfx.omta.background-color
4426 - name: gfx.partialpresent.force
4427 type: RelaxedAtomicInt32
4431 # Log severe performance warnings to the error console and profiles.
4432 # This should be use to quickly find which slow paths are used by test cases.
4433 - name: gfx.perf-warnings.enabled
4434 type: RelaxedAtomicBool
4438 # Prefer EGL over GLX if available.
4439 - name: gfx.prefer-x11-egl
4444 - name: gfx.testing.device-fail
4445 type: RelaxedAtomicBool
4449 - name: gfx.testing.device-reset
4450 type: RelaxedAtomicInt32
4454 - name: gfx.text.disable-aa
4459 - name: gfx.text.subpixel-position.force-enabled
4464 - name: gfx.text.subpixel-position.force-disabled
4469 # Disable surface sharing due to issues with compatible FBConfigs on
4470 # NVIDIA drivers as described in bug 1193015.
4471 - name: gfx.use-glx-texture-from-pixmap
4472 type: RelaxedAtomicBool
4476 - name: gfx.use-iosurface-textures
4481 - name: gfx.use-mutex-on-present
4486 - name: gfx.use-ahardwarebuffer-content
4491 # Use SurfaceTextures as preferred backend for TextureClient/Host.
4492 - name: gfx.use-surfacetexture-textures
4497 - name: gfx.vsync.collect-scroll-transforms
4498 type: RelaxedAtomicBool
4502 - name: gfx.vsync.compositor.unobserve-count
4507 - name: gfx.vsync.force-disable-waitforvblank
4508 type: RelaxedAtomicBool
4512 # We expose two prefs: gfx.webrender.all and gfx.webrender.enabled.
4513 # The first enables WR+additional features, and the second just enables WR.
4514 # For developer convenience, building with --enable-webrender=true or just
4515 # --enable-webrender will set gfx.webrender.enabled to true by default.
4517 # We also have a pref gfx.webrender.all.qualified which is not exposed via
4518 # about:config. That pref enables WR but only on qualified hardware. This is
4519 # the pref we'll eventually flip to deploy WebRender to the target population.
4520 - name: gfx.webrender.all
4525 - name: gfx.webrender.enabled
4529 do_not_use_directly: true
4532 - name: gfx.webrender.force-angle
4538 # WebRender is not enabled when there is no GPU process on window when
4539 # WebRender uses ANGLE. It is for avoiding that WebGL and WebRender use ANGLE
4540 # at once. But there is a case that we want to enable WebRender for testing.
4542 - name: gfx.webrender.enabled-no-gpu-process-with-angle-win
4548 - name: gfx.webrender.blob-images
4549 type: RelaxedAtomicBool
4553 - name: gfx.webrender.svg-images
4554 type: RelaxedAtomicBool
4558 - name: gfx.webrender.blob.paint-flashing
4559 type: RelaxedAtomicBool
4563 - name: gfx.webrender.enable-capture
4565 #ifdef NIGHTLY_BUILD
4572 - name: gfx.webrender.dl.dump-parent
4573 type: RelaxedAtomicBool
4577 - name: gfx.webrender.dl.dump-content
4578 type: RelaxedAtomicBool
4582 - name: gfx.webrender.dl.dump-content-serialized
4583 type: RelaxedAtomicBool
4587 # Also expose a pref to allow users to force-disable WR. This is exposed
4588 # on all channels because WR can be enabled on qualified hardware on all
4590 - name: gfx.webrender.force-disabled
4595 - name: gfx.webrender.highlight-painted-layers
4596 type: RelaxedAtomicBool
4600 - name: gfx.webrender.late-scenebuild-threshold
4601 type: RelaxedAtomicInt32
4605 - name: gfx.webrender.max-filter-ops-per-chain
4606 type: RelaxedAtomicUint32
4610 - name: gfx.webrender.enable-multithreading
4615 - name: gfx.webrender.batching.lookback
4620 - name: gfx.webrender.compositor
4622 #if defined(XP_WIN) || defined(XP_MACOSX)
4629 - name: gfx.webrender.compositor.force-enabled
4634 - name: gfx.webrender.compositor.max_update_rects
4636 #if defined(XP_WIN) || defined(XP_MACOSX)
4643 - name: gfx.webrender.compositor.surface-pool-size
4648 # Number of damage rects we can give to the compositor for a new frame with
4649 # partial present. This controls whether partial present is used or not.
4650 - name: gfx.webrender.max-partial-present-rects
4652 #if defined(XP_WIN) || defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GTK)
4659 # Whether or not we can reuse the buffer contents using the GL buffer age
4660 # extension, if supported by the platform. This requires partial present
4662 - name: gfx.webrender.allow-partial-present-buffer-age
4667 - name: gfx.webrender.enable-gpu-markers
4676 - name: gfx.webrender.enable-item-cache
4681 # Whether or not to fallback from WebRender/WebRender Software to Basic.
4682 - name: gfx.webrender.fallback.basic
4687 # Whether or not to fallback from WebRender to Software WebRender.
4688 - name: gfx.webrender.fallback.software
4690 value: @IS_NIGHTLY_BUILD@
4694 # Whether or not to fallback from WebRender to Software WebRender + D3D11.
4695 - name: gfx.webrender.fallback.software-d3d11
4697 value: @IS_NIGHTLY_BUILD@
4701 - name: gfx.webrender.use-optimized-shaders
4706 - name: gfx.webrender.precache-shaders
4711 # When gl debug message is a high severity message, forwward it to gfx critical
4713 - name: gfx.webrender.gl-debug-message-critical-note
4715 #if defined(XP_WIN) && defined(NIGHTLY_BUILD)
4722 # Enable printing gl debug messages
4723 - name: gfx.webrender.gl-debug-message-print
4728 #ifdef NIGHTLY_BUILD
4729 # Keep this pref hidden on non-nightly builds to avoid people accidentally
4731 - name: gfx.webrender.panic-on-gl-error
4737 #ifdef NIGHTLY_BUILD
4738 # Keep this pref hidden on non-nightly builds to avoid people accidentally
4740 - name: gfx.webrender.start-debug-server
4741 type: RelaxedAtomicBool
4747 # Enables display of performance debugging counters when DirectComposition
4749 # Performance counters are displayed on the top-right corner of the screen.
4750 - name: gfx.webrender.debug.dcomp-counter
4751 type: RelaxedAtomicBool
4754 # Enables highlighting redraw regions of DCompositionVisual
4755 - name: gfx.webrender.debug.dcomp-redraw-regions
4756 type: RelaxedAtomicBool
4761 - name: gfx.webrender.enable-low-priority-pool
4762 type: RelaxedAtomicBool
4763 #if defined(ANDROID)
4770 # Force subpixel anti-aliasing as much as possible, despite performance cost.
4771 - name: gfx.webrender.quality.force-subpixel-aa-where-possible
4777 - name: gfx.webrender.enable-client-storage
4783 # Width of WebRender tile size
4784 - name: gfx.webrender.picture-tile-width
4785 type: RelaxedAtomicInt32
4789 # Width of WebRender tile size
4790 - name: gfx.webrender.picture-tile-height
4791 type: RelaxedAtomicInt32
4795 # Whether to use EGL robustness or not.
4796 - name: gfx.webrender.prefer-robustness
4798 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
4805 # Whether to use the WebRender software backend
4806 - name: gfx.webrender.software
4811 # Whether to use the D3D11 RenderCompositor when using WebRender software backend
4812 - name: gfx.webrender.software.d3d11
4817 - name: gfx.webrender.software.d3d11.upload-mode
4818 type: RelaxedAtomicInt32
4822 # Use vsync events generated by hardware
4823 - name: gfx.work-around-driver-bugs
4828 - name: gfx.ycbcr.accurate-conversion
4829 type: RelaxedAtomicBool
4833 #---------------------------------------------------------------------------
4834 # Prefs starting with "gl." (OpenGL)
4835 #---------------------------------------------------------------------------
4837 - name: gl.allow-high-power
4838 type: RelaxedAtomicBool
4842 - name: gl.ignore-dx-interop2-blacklist
4843 type: RelaxedAtomicBool
4847 - name: gl.use-tls-is-current
4848 type: RelaxedAtomicInt32
4852 #---------------------------------------------------------------------------
4853 # Prefs starting with "html5."
4854 #---------------------------------------------------------------------------
4856 # Turn HTML:inert on or off.
4857 - name: html5.inert.enabled
4862 # Toggle which thread the HTML5 parser uses for stream parsing.
4863 - name: html5.offmainthread
4868 # Time in milliseconds between the time a network buffer is seen and the timer
4869 # firing when the timer hasn't fired previously in this parse in the
4870 # off-the-main-thread HTML5 parser.
4871 - name: html5.flushtimer.initialdelay
4872 type: RelaxedAtomicInt32
4876 # Time in milliseconds between the time a network buffer is seen and the timer
4877 # firing when the timer has already fired previously in this parse.
4878 - name: html5.flushtimer.subsequentdelay
4879 type: RelaxedAtomicInt32
4883 #---------------------------------------------------------------------------
4884 # Prefs starting with "idle_period."
4885 #---------------------------------------------------------------------------
4887 - name: idle_period.min
4892 - name: idle_period.during_page_load.min
4897 - name: idle_period.cross_process_scheduling
4898 type: RelaxedAtomicBool
4902 #---------------------------------------------------------------------------
4903 # Prefs starting with "image."
4904 #---------------------------------------------------------------------------
4906 # The maximum size (in kB) that the aggregate frames of an animation can use
4907 # before it starts to discard already displayed frames and redecode them as
4909 - name: image.animated.decode-on-demand.threshold-kb
4910 type: RelaxedAtomicUint32
4914 # The minimum number of frames we want to have buffered ahead of an
4915 # animation's currently displayed frame.
4916 - name: image.animated.decode-on-demand.batch-size
4917 type: RelaxedAtomicUint32
4921 # Whether we should recycle already displayed frames instead of discarding
4922 # them. This saves on the allocation itself, and may be able to reuse the
4923 # contents as well. Only applies if generating full frames.
4924 - name: image.animated.decode-on-demand.recycle
4929 # Resume an animated image from the last displayed frame rather than
4930 # advancing when out of view.
4931 - name: image.animated.resume-from-last-displayed
4932 type: RelaxedAtomicBool
4936 # Maximum number of surfaces for an image before entering "factor of 2" mode.
4937 # This in addition to the number of "native" sizes of an image. A native size
4938 # is a size for which we can decode a frame without up or downscaling. Most
4939 # images only have 1, but some (i.e. ICOs) may have multiple frames for the
4940 # same data at different sizes.
4941 - name: image.cache.factor2.threshold-surfaces
4942 type: RelaxedAtomicInt32
4946 # Maximum size of a surface in KB we are willing to produce when rasterizing
4948 - name: image.cache.max-rasterized-svg-threshold-kb
4949 type: RelaxedAtomicInt32
4953 # The maximum size, in bytes, of the decoded images we cache.
4954 - name: image.cache.size
4959 # A weight, from 0-1000, to place on time when comparing to size.
4960 # Size is given a weight of 1000 - timeweight.
4961 - name: image.cache.timeweight
4966 # Decode all images automatically on load, ignoring our normal heuristics.
4967 - name: image.decode-immediately.enabled
4968 type: RelaxedAtomicBool
4972 # Whether we attempt to downscale images during decoding.
4973 - name: image.downscale-during-decode.enabled
4974 type: RelaxedAtomicBool
4978 # Whether to honor orientation metadata (such as JPEG EXIF tags) by default.
4979 # When this pref is enabled, all images used by the platform will be correctly
4980 # re-oriented, except for content images (HTML <img> and CSS generated content
4981 # images) with image-orientation:none.
4982 - name: image.honor-orientation-metadata
4983 type: RelaxedAtomicBool
4987 # Honor image orientation metadata in the naturalWidth and naturalHeight
4988 # APIs on HTMLImageElement.
4989 - name: image.honor_orientation_metadata.natural_size
4994 # The threshold for inferring that changes to an <img> element's |src|
4995 # attribute by JavaScript represent an animation, in milliseconds. If the |src|
4996 # attribute is changing more frequently than this value, then we enter a
4997 # special "animation mode" which is designed to eliminate flicker. Set to 0 to
4999 - name: image.infer-src-animation.threshold-ms
5000 type: RelaxedAtomicUint32
5004 # Whether the network request priority should be adjusted according
5005 # the layout and view frame position of each particular image.
5006 - name: image.layout_network_priority
5007 type: RelaxedAtomicBool
5011 # Chunk size for calls to the image decoders.
5012 - name: image.mem.decode_bytes_at_a_time
5017 # Discards inactive image frames and re-decodes them on demand from
5019 - name: image.mem.discardable
5020 type: RelaxedAtomicBool
5024 # Discards inactive image frames of _animated_ images and re-decodes them on
5025 # demand from compressed data. Has no effect if image.mem.discardable is false.
5026 - name: image.mem.animated.discardable
5031 # Whether the heap should be used for frames from animated images. On Android,
5032 # volatile memory keeps file handles open for each buffer.
5033 - name: image.mem.animated.use_heap
5034 type: RelaxedAtomicBool
5038 # Enable extra information for debugging in the image memory reports.
5039 - name: image.mem.debug-reporting
5040 type: RelaxedAtomicBool
5044 # Decodes images into shared memory to allow direct use in separate
5045 # rendering processes. Only applicable with WebRender.
5046 - name: image.mem.shared
5047 type: RelaxedAtomicBool
5051 # How much of the data in the surface cache is discarded when we get a memory
5052 # pressure notification, as a fraction. The discard factor is interpreted as a
5053 # reciprocal, so a discard factor of 1 means to discard everything in the
5054 # surface cache on memory pressure, a discard factor of 2 means to discard half
5055 # of the data, and so forth. The default should be a good balance for desktop
5056 # and laptop systems, where we never discard visible images.
5057 - name: image.mem.surfacecache.discard_factor
5062 # Maximum size for the surface cache, in kilobytes.
5063 - name: image.mem.surfacecache.max_size_kb
5068 # Minimum timeout for expiring unused images from the surface cache, in
5069 # milliseconds. This controls how long we store cached temporary surfaces.
5070 - name: image.mem.surfacecache.min_expiration_ms
5075 # The surface cache's size, within the constraints of the maximum size set
5076 # above, is determined as a fraction of main memory size. The size factor is
5077 # interpreted as a reciprocal, so a size factor of 4 means to use no more than
5078 # 1/4 of main memory. The default should be a good balance for most systems.
5079 - name: image.mem.surfacecache.size_factor
5084 # Minimum buffer size in KB before using volatile memory over the heap.
5085 - name: image.mem.volatile.min_threshold_kb
5086 type: RelaxedAtomicInt32
5087 #if defined(ANDROID)
5088 # On Android, volatile memory keeps file handles open for each buffer.
5095 # How long in ms before we should start shutting down idle decoder threads.
5096 - name: image.multithreaded_decoding.idle_timeout
5101 # How many threads we'll use for multithreaded decoding. If < 0, will be
5102 # automatically determined based on the system's number of cores.
5103 - name: image.multithreaded_decoding.limit
5108 # Whether we attempt to decode WebP images or not.
5109 - name: image.webp.enabled
5110 type: RelaxedAtomicBool
5114 # Whether we attempt to decode AVIF images or not.
5115 - name: image.avif.enabled
5116 type: RelaxedAtomicBool
5120 # Whether we use dav1d (true) or libaom (false) to decode AVIF image
5121 - name: image.avif.use-dav1d
5122 type: RelaxedAtomicBool
5126 #---------------------------------------------------------------------------
5127 # Prefs starting with "intl."
5128 #---------------------------------------------------------------------------
5130 # Whether the new encoding detector is enabled for the .jp TLD.
5131 - name: intl.charset.detector.ng.jp.enabled
5136 # Whether the new encoding detector is enabled for the .in TLD.
5137 - name: intl.charset.detector.ng.in.enabled
5142 # Whether the new encoding detector is enabled for the .lk TLD.
5143 - name: intl.charset.detector.ng.lk.enabled
5148 # If true, dispatch the keydown and keyup events on any web apps even during
5150 - name: intl.ime.hack.on_any_apps.fire_key_events_for_composition
5155 # Android-specific pref to control if keydown and keyup events are fired even
5156 # during composition. Note that those prefs are ignored if
5157 # dom.keyboardevent.dispatch_during_composition is false.
5158 - name: intl.ime.hack.on_ime_unaware_apps.fire_key_events_for_composition
5160 # If true and intl.ime.hack.on_any_apps.fire_key_events_for_composition is
5161 # false, dispatch the keydown and keyup events only on IME-unaware web apps.
5162 # So, this supports web apps which listen to only keydown or keyup events
5163 # to get a change to do something at every text input.
5168 # If true, automatically extend selection to cluster boundaries when
5169 # TSF/TIP requests to select from/by middle of a cluster.
5170 - name: intl.tsf.hack.extend_setting_selection_range_to_cluster_boundaries
5172 value: @IS_NOT_EARLY_BETA_OR_EARLIER@
5176 # If you use legacy Chinese IME which puts an ideographic space to composition
5177 # string as placeholder, this pref might be useful. If this is true and when
5178 # web contents forcibly commits composition (e.g., moving focus), the
5179 # ideographic space will be ignored (i.e., commits with empty string).
5180 - name: intl.ime.remove_placeholder_character_at_commit
5185 #---------------------------------------------------------------------------
5186 # Prefs starting with "javascript."
5187 #---------------------------------------------------------------------------
5189 - name: javascript.options.compact_on_user_inactive
5194 # The default amount of time to wait from the user being idle to starting a
5195 # shrinking GC. Measured in milliseconds.
5196 - name: javascript.options.compact_on_user_inactive_delay
5198 #ifdef NIGHTLY_BUILD
5205 # Use better error message when accessing property of null or undefined.
5206 - name: javascript.options.property_error_message_fix
5207 type: RelaxedAtomicBool
5208 value: @IS_NIGHTLY_OR_DEV_EDITION@
5211 # Support for weak references in JavaScript (WeakRef and FinalizationRegistry).
5212 - name: javascript.options.weakrefs
5213 type: RelaxedAtomicBool
5217 # Whether to expose the FinalizationRegistry.prototype.cleanupSome method.
5218 - name: javascript.options.experimental.weakrefs.expose_cleanupSome
5219 type: RelaxedAtomicBool
5223 #ifdef NIGHTLY_BUILD
5224 # Experimental support for Iterator Helpers in JavaScript.
5225 - name: javascript.options.experimental.iterator_helpers
5226 type: RelaxedAtomicBool
5230 # Experimental support for Private Fields in JavaScript.
5231 - name: javascript.options.experimental.private_fields
5232 type: RelaxedAtomicBool
5236 # Experimental support for Private Methods in JavaScript.
5237 - name: javascript.options.experimental.private_methods
5238 type: RelaxedAtomicBool
5242 # Experimental support for Top-level Await in JavaScript.
5243 - name: javascript.options.experimental.top_level_await
5244 type: RelaxedAtomicBool
5249 # The amount of time we wait between a request to GC (due to leaving a page) and doing the actual GC, in ms.
5250 - name: javascript.options.gc_delay
5255 # The amount of time we wait from the first request to GC to actually doing the first GC, in ms.
5256 - name: javascript.options.gc_delay.first
5261 # After doing a zonal GC, wait this much time (in ms) and then do a full GC,
5262 # unless one is already pending.
5263 - name: javascript.options.gc_delay.full
5268 # Maximum amount of time that should elapse between incremental GC slices, in ms.
5269 - name: javascript.options.gc_delay.interslice
5274 # nsJSEnvironmentObserver observes the memory-pressure notifications and
5275 # forces a garbage collection and cycle collection when it happens, if the
5276 # appropriate pref is set.
5277 - name: javascript.options.gc_on_memory_pressure
5279 # Disable the JS engine's GC on memory pressure, since we do one in the
5280 # mobile browser (bug 669346).
5281 # XXX: this value possibly should be changed, or the pref removed entirely.
5283 value: @IS_NOT_ANDROID@
5286 - name: javascript.options.mem.log
5291 - name: javascript.options.mem.notify
5297 - name: javascript.options.streams
5298 type: RelaxedAtomicBool
5302 # Writable Streams API. (The pref above must also be set to expose this.)
5304 # Writable streams are still EXTRAORDINARILY BETA and it is well-known that
5305 # things are likely pretty broken if you poke much at all, so if you flip this
5306 # preference, don't report bugs against it just yet.
5307 - name: javascript.options.writable_streams
5308 type: RelaxedAtomicBool
5312 - name: javascript.options.main_thread_stack_quota_cap
5314 #if defined(MOZ_ASAN)
5315 value: 6 * 1024 * 1024
5317 value: 2 * 1024 * 1024
5321 - name: javascript.options.wasm_optimizingjit
5323 #if defined(MOZ_AARCH64) && !defined(ENABLE_WASM_CRANELIFT)
5330 #if defined(ENABLE_WASM_SIMD)
5331 - name: javascript.options.wasm_simd
5333 #if defined(NIGHTLY_BUILD)
5341 #if defined(ENABLE_WASM_SIMD_WORMHOLE)
5342 # This is x64-only nightly-only and it would break unified macOS builds if
5344 - name: javascript.options.wasm_simd_wormhole
5350 - name: javascript.options.large_arraybuffers
5351 type: RelaxedAtomicBool
5355 #---------------------------------------------------------------------------
5356 # Prefs starting with "layers."
5357 #---------------------------------------------------------------------------
5359 # Whether to disable acceleration for all widgets.
5360 - name: layers.acceleration.disabled
5364 do_not_use_directly: true
5365 # Instead, use gfxConfig::IsEnabled(Feature::HW_COMPOSITING).
5367 - name: layers.acceleration.draw-fps
5368 type: RelaxedAtomicBool
5372 - name: layers.acceleration.draw-fps.print-histogram
5373 type: RelaxedAtomicBool
5377 - name: layers.acceleration.draw-fps.write-to-file
5378 type: RelaxedAtomicBool
5382 # Whether to force acceleration on, ignoring blacklists.
5384 # bug 838603 -- on Android, accidentally blacklisting OpenGL layers
5385 # means a startup crash for everyone.
5386 # Temporarily force-enable GL compositing. This is default-disabled
5387 # deep within the bowels of the widgetry system. Remove me when GL
5388 # compositing isn't default disabled in widget/android.
5389 - name: layers.acceleration.force-enabled
5393 do_not_use_directly: true
5395 - name: layers.advanced.basic-layer.enabled
5396 type: RelaxedAtomicBool
5400 # Whether we allow advanced layers with fission
5401 - name: layers.advanced.fission.enabled
5406 # Whether we allow AMD switchable graphics.
5407 - name: layers.amd-switchable-gfx.enabled
5412 # Whether to use async panning and zooming.
5413 - name: layers.async-pan-zoom.enabled
5417 do_not_use_directly: true
5419 # Preference that when switched at runtime will run a series of benchmarks
5420 # and output the result to stderr.
5421 - name: layers.bench.enabled
5422 type: RelaxedAtomicBool
5426 - name: layers.bufferrotation.enabled
5431 - name: layers.child-process-shutdown
5432 type: RelaxedAtomicBool
5436 - name: layers.componentalpha.enabled
5438 #ifdef MOZ_GFX_OPTIMIZE_MOBILE
5439 # Nb: we ignore this pref if MOZ_GFX_OPTIMIZE_MOBILE is defined, as if this
5440 # pref was always false. But we go to the effort of setting it to false so
5441 # that telemetry's reporting of the pref value is more likely to reflect what
5442 # the code is doing.
5448 do_not_use_directly: true
5450 - name: layers.d3d11.force-warp
5455 - name: layers.d3d11.enable-blacklist
5460 # Enable DEAA antialiasing for transformed layers in the compositor.
5461 - name: layers.deaa.enabled
5462 type: RelaxedAtomicBool
5463 #if defined(MOZ_WIDGET_ANDROID)
5470 - name: layers.draw-bigimage-borders
5471 type: RelaxedAtomicBool
5475 - name: layers.draw-borders
5476 type: RelaxedAtomicBool
5480 - name: layers.draw-tile-borders
5481 type: RelaxedAtomicBool
5485 - name: layers.draw-layer-info
5486 type: RelaxedAtomicBool
5491 type: RelaxedAtomicBool
5495 # If we're dumping layers, also dump the texture data
5496 - name: layers.dump-texture
5497 type: RelaxedAtomicBool
5501 #ifdef MOZ_DUMP_PAINTING
5502 - name: layers.dump-decision
5503 type: RelaxedAtomicBool
5508 - name: layers.dump-client-layers
5509 type: RelaxedAtomicBool
5513 - name: layers.dump-host-layers
5514 type: RelaxedAtomicBool
5518 - name: layers.compositing-tiles.width
5519 type: RelaxedAtomicInt32
5523 - name: layers.compositing-tiles.height
5524 type: RelaxedAtomicInt32
5528 # 0 is "no change" for contrast, positive values increase it, negative values
5529 # decrease it until we hit mid gray at -1 contrast, after that it gets weird.
5530 - name: layers.effect.contrast
5535 - name: layers.effect.grayscale
5536 type: RelaxedAtomicBool
5540 - name: layers.effect.invert
5541 type: RelaxedAtomicBool
5545 - name: layers.enable-tiles
5547 #if defined(XP_MACOSX) || defined (XP_OPENBSD)
5554 - name: layers.enable-tiles-if-skia-pomtp
5563 - name: layers.flash-borders
5564 type: RelaxedAtomicBool
5568 # Force all possible layers to be always active layers.
5569 - name: layers.force-active
5574 - name: layers.force-shmem-tiles
5579 - name: layers.draw-mask-debug
5580 type: RelaxedAtomicBool
5584 - name: layers.force-synchronous-resize
5585 type: RelaxedAtomicBool
5589 # Whether to enable arbitrary layer geometry for OpenGL compositor.
5590 - name: layers.geometry.opengl.enabled
5591 type: RelaxedAtomicBool
5595 # Whether to enable arbitrary layer geometry for Basic compositor.
5596 - name: layers.geometry.basic.enabled
5597 type: RelaxedAtomicBool
5601 # Whether to enable arbitrary layer geometry for DirectX compositor.
5602 - name: layers.geometry.d3d11.enabled
5603 type: RelaxedAtomicBool
5607 - name: layers.gpu-process.allow-software
5616 - name: layers.gpu-process.enabled
5625 - name: layers.gpu-process.force-enabled
5630 - name: layers.gpu-process.ipc_reply_timeout_ms
5635 - name: layers.gpu-process.max_restarts
5636 type: RelaxedAtomicInt32
5637 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
5638 #if defined(NIGHTLY_BUILD)
5648 # Note: This pref will only be used if it is less than layers.gpu-process.max_restarts.
5649 - name: layers.gpu-process.max_restarts_with_decoder
5650 type: RelaxedAtomicInt32
5654 - name: layers.gpu-process.startup_timeout_ms
5659 - name: layers.gpu-process.crash-also-crashes-browser
5664 - name: layers.low-precision-buffer
5665 type: RelaxedAtomicBool
5669 - name: layers.low-precision-opacity
5674 - name: layers.low-precision-resolution
5679 # Max number of layers per container. See Overwrite in mobile prefs.
5680 - name: layers.max-active
5681 type: RelaxedAtomicInt32
5685 - name: layers.mlgpu.enabled
5689 do_not_use_directly: true
5691 - name: layers.mlgpu.enable-buffer-cache
5696 - name: layers.mlgpu.enable-buffer-sharing
5701 - name: layers.mlgpu.enable-clear-view
5706 - name: layers.mlgpu.enable-cpu-occlusion
5711 - name: layers.mlgpu.enable-depth-buffer
5716 - name: layers.mlgpu.enable-invalidation
5717 type: RelaxedAtomicBool
5721 # Both this and the master "enabled" pref must be on to use Advanced Layers
5723 - name: layers.mlgpu.enable-on-windows7
5732 # Whether to animate simple opacity and transforms on the compositor.
5733 - name: layers.offmainthreadcomposition.async-animations
5738 # Whether to log information about off main thread animations to stderr.
5739 - name: layers.offmainthreadcomposition.log-animations
5744 - name: layers.offmainthreadcomposition.force-disabled
5749 # Compositor target frame rate. NOTE: If vsync is enabled the compositor
5750 # frame rate will still be capped.
5751 # -1 -> default (match layout.frame_rate or 60 FPS)
5752 # 0 -> full-tilt mode: Recomposite even if not transaction occured.
5753 - name: layers.offmainthreadcomposition.frame-rate
5754 type: RelaxedAtomicInt32
5758 - name: layers.omtp.capture-limit
5760 value: 25 * 1024 * 1024
5763 - name: layers.omtp.dump-capture
5764 type: RelaxedAtomicBool
5768 - name: layers.omtp.paint-workers
5773 - name: layers.omtp.release-capture-on-main-thread
5774 type: RelaxedAtomicBool
5778 - name: layers.orientation.sync.timeout
5779 type: RelaxedAtomicUint32
5784 - name: layers.prefer-opengl
5790 - name: layers.progressive-paint
5791 type: RelaxedAtomicBool
5795 # Copy-on-write canvas.
5796 - name: layers.shared-buffer-provider.enabled
5797 type: RelaxedAtomicBool
5801 - name: layers.single-tile.enabled
5802 type: RelaxedAtomicBool
5806 # We allow for configurable and rectangular tile size to avoid wasting memory
5807 # on devices whose screen size does not align nicely to the default tile size.
5808 # Although layers can be any size, they are often the same size as the screen,
5809 # especially for width.
5810 - name: layers.tile-width
5815 - name: layers.tile-height
5820 - name: layers.tile-initial-pool-size
5825 - name: layers.tile-pool-unused-size
5830 - name: layers.tile-pool-shrink-timeout
5835 - name: layers.tile-pool-clear-timeout
5837 value: (uint32_t)5000
5840 # If this is set the tile size will only be treated as a suggestion.
5841 # On B2G we will round this to the stride of the underlying allocation.
5842 # On any platform we may later use the screen size and ignore
5843 # tile-width/tile-height entirely. Its recommended to turn this off
5844 # if you change the tile size.
5845 - name: layers.tiles.adjust
5850 - name: layers.tiles.edge-padding
5855 - name: layers.tiles.fade-in.enabled
5856 type: RelaxedAtomicBool
5860 - name: layers.tiles.fade-in.duration-ms
5861 type: RelaxedAtomicUint32
5865 - name: layers.tiles.retain-back-buffer
5866 type: RelaxedAtomicBool
5870 - name: layers.transaction.warning-ms
5871 type: RelaxedAtomicUint32
5875 - name: layers.uniformity-info
5880 - name: layers.use-image-offscreen-surfaces
5885 - name: layers.recycle-allocator-rdd
5890 - name: layers.iosurfaceimage.recycle-limit
5891 type: RelaxedAtomicUint32
5895 #---------------------------------------------------------------------------
5896 # Prefs starting with "layout."
5897 #---------------------------------------------------------------------------
5899 # Debug-only pref to force enable the AccessibleCaret. If you want to
5900 # control AccessibleCaret by mouse, you'll need to set
5901 # "layout.accessiblecaret.hide_carets_for_mouse_input" to false.
5902 - name: layout.accessiblecaret.enabled
5907 # Enable the accessible caret on platforms/devices
5908 # that we detect have touch support. Note that this pref is an
5909 # additional way to enable the accessible carets, rather than
5910 # overriding the layout.accessiblecaret.enabled pref.
5911 - name: layout.accessiblecaret.enabled_on_touch
5916 # By default, carets become tilt only when they are overlapping.
5917 - name: layout.accessiblecaret.always_tilt
5922 # Show caret in cursor mode when long tapping on an empty content. This
5923 # also changes the default update behavior in cursor mode, which is based
5924 # on the emptiness of the content, into something more heuristic. See
5925 # AccessibleCaretManager::UpdateCaretsForCursorMode() for the details.
5926 - name: layout.accessiblecaret.caret_shown_when_long_tapping_on_empty_content
5931 # 0 = by default, always hide carets for selection changes due to JS calls.
5932 # 1 = update any visible carets for selection changes due to JS calls,
5933 # but don't show carets if carets are hidden.
5934 # 2 = always show carets for selection changes due to JS calls.
5935 - name: layout.accessiblecaret.script_change_update_mode
5940 # Allow one caret to be dragged across the other caret without any limitation.
5941 # This matches the built-in convention for all desktop platforms.
5942 - name: layout.accessiblecaret.allow_dragging_across_other_caret
5947 # Optionally provide haptic feedback on long-press selection events.
5948 - name: layout.accessiblecaret.hapticfeedback
5953 # Smart phone-number selection on long-press is not enabled by default.
5954 - name: layout.accessiblecaret.extend_selection_for_phone_number
5959 # Keep the accessible carets hidden when the user is using mouse input (as
5960 # opposed to touch/pen/etc.).
5961 - name: layout.accessiblecaret.hide_carets_for_mouse_input
5966 # CSS attributes (width, height, margin-left) of the AccessibleCaret in CSS
5968 - name: layout.accessiblecaret.width
5973 - name: layout.accessiblecaret.height
5978 - name: layout.accessiblecaret.margin-left
5983 - name: layout.accessiblecaret.transition-duration
5988 # Simulate long tap events to select words. Mainly used in manual testing
5990 - name: layout.accessiblecaret.use_long_tap_injector
5995 # Whether we should layerize all animated images (if otherwise possible).
5996 - name: layout.animated-image-layers.enabled
6001 # One of several prefs affecting the maximum area to pre-render when animating
6002 # a large element on the compositor.
6003 # This pref enables transform (and transform like properties) animations on a
6004 # large element run on the compositor with rendering partial area of the
6005 # element on the main thread instead of rendering the whole area. Once the
6006 # animation tried to composite out of the partial rendered area, the animation
6007 # is rendered again with the latest visible partial area.
6008 - name: layout.animation.prerender.partial
6009 type: RelaxedAtomicBool
6010 value: @IS_NIGHTLY_BUILD@
6013 # One of several prefs affecting the maximum area to pre-render when animating
6014 # a large element on the compositor.
6015 # This value is applied to both x and y axes and a perfect square contructed
6016 # by the greater axis value which will be capped by the absolute limits is used
6017 # for the partial pre-render area.
6018 - name: layout.animation.prerender.viewport-ratio-limit
6023 # One of several prefs affecting the maximum area to pre-render when animating
6024 # a large element on the compositor.
6025 - name: layout.animation.prerender.absolute-limit-x
6026 type: RelaxedAtomicUint32
6030 # One of several prefs affecting the maximum area to pre-render when animating
6031 # a large element on the compositor.
6032 - name: layout.animation.prerender.absolute-limit-y
6033 type: RelaxedAtomicUint32
6037 # Test-only pref, if this is true, partial pre-rendered transform animations
6038 # get stuck when it reaches to the pre-rendered boundaries and the pre-render
6039 # region is never updated.
6040 - name: layout.animation.prerender.partial.jank
6041 type: RelaxedAtomicBool
6045 # Whether Constructable Stylesheets are enabled in script.
6046 - name: layout.css.constructable-stylesheets.enabled
6051 # Should we look for counter ancestor scopes first?
6052 - name: layout.css.counter-ancestor-scope.enabled
6057 # Whether we get notified of history queries for visited even if unvisited.
6058 - name: layout.css.notify-of-unvisited
6059 type: RelaxedAtomicBool
6063 # Whether we always restyle / repaint as a result of a visited query
6064 - name: layout.css.always-repaint-on-unvisited
6065 type: RelaxedAtomicBool
6069 # Make `zoom` a `transform` + `transform-origin` alias.
6070 - name: layout.css.zoom-transform-hack.enabled
6071 type: RelaxedAtomicBool
6076 # Whether the `no-preference` value for `prefers-color-scheme` is parsed.
6078 # It never matches regardless.
6079 - name: layout.css.prefers-color-scheme-no-preference.enabled
6080 type: RelaxedAtomicBool
6085 # Whether the `:focus-visible` pseudo-class is enabled.
6087 # NOTE: You probably want to change the default value of
6088 # browser.display.always_show_rings_after_key_focus whenever you change the
6089 # default value of this pref.
6090 - name: layout.css.focus-visible.enabled
6091 type: RelaxedAtomicBool
6096 # Whether the `:autofill` pseudo-class is exposed to content.
6097 - name: layout.css.autofill.enabled
6098 type: RelaxedAtomicBool
6103 # Whether the `aspect-ratio` in css-sizing-4 is enabled.
6104 - name: layout.css.aspect-ratio.enabled
6106 value: @IS_NIGHTLY_BUILD@
6110 # Is the codepath for using cached scrollbar styles enabled?
6111 - name: layout.css.cached-scrollbar-styles.enabled
6116 # Is path() supported in clip-path?
6117 - name: layout.css.clip-path-path.enabled
6118 type: RelaxedAtomicBool
6123 # Is the image-set() function enabled?
6124 - name: layout.css.image-set.enabled
6125 type: RelaxedAtomicBool
6126 value: @IS_NIGHTLY_BUILD@
6130 # Are implicit tracks in computed grid templates serialized?
6131 - name: layout.css.serialize-grid-implicit-tracks
6132 type: RelaxedAtomicBool
6136 # Set the number of device pixels per CSS pixel. A value <= 0 means choose
6137 # automatically based on user settings for the platform (e.g., "UI scale factor"
6138 # on Mac). A positive value is used as-is. This effectively controls the size
6139 # of a CSS "px". This is only used for windows on the screen, not for printing.
6140 - name: layout.css.devPixelsPerPx
6145 # Is support for CSS backdrop-filter enabled?
6146 - name: layout.css.backdrop-filter.enabled
6151 # Should stray control characters be rendered visibly?
6152 - name: layout.css.control-characters.visible
6153 type: RelaxedAtomicBool
6154 value: @IS_NOT_RELEASE_OR_BETA@
6158 # Is support for GeometryUtils.convert*FromNode enabled?
6159 - name: layout.css.convertFromNode.enabled
6161 value: @IS_NOT_RELEASE_OR_BETA@
6164 - name: layout.css.cross-fade.enabled
6165 type: RelaxedAtomicBool
6170 # Is support for DOMMatrix enabled?
6171 - name: layout.css.DOMMatrix.enabled
6172 type: RelaxedAtomicBool
6176 # Is support for DOMQuad enabled?
6177 - name: layout.css.DOMQuad.enabled
6178 type: RelaxedAtomicBool
6182 # Is support for DOMPoint enabled?
6183 - name: layout.css.DOMPoint.enabled
6184 type: RelaxedAtomicBool
6188 # Are we emulating -moz-{inline}-box layout using CSS flexbox?
6189 - name: layout.css.emulate-moz-box-with-flex
6194 # Is support for the font-display @font-face descriptor enabled?
6195 - name: layout.css.font-display.enabled
6196 type: RelaxedAtomicBool
6201 # Is support for document.fonts enabled?
6202 - name: layout.css.font-loading-api.enabled
6207 # Is support for variation fonts enabled?
6208 - name: layout.css.font-variations.enabled
6209 type: RelaxedAtomicBool
6214 # Visibility level of font families available to CSS font-matching:
6215 # 1 - only base system fonts
6216 # 2 - also fonts from optional language packs
6217 # 3 - also user-installed fonts
6218 - name: layout.css.font-visibility.level
6219 type: RelaxedAtomicInt32
6223 # Is support for GeometryUtils.getBoxQuads enabled?
6224 - name: layout.css.getBoxQuads.enabled
6226 value: @IS_NOT_RELEASE_OR_BETA@
6229 # Is support for CSS "grid-template-{columns,rows}: subgrid X" enabled?
6230 - name: layout.css.grid-template-subgrid-value.enabled
6231 type: RelaxedAtomicBool
6236 # Is support for CSS masonry layout enabled?
6237 - name: layout.css.grid-template-masonry-value.enabled
6238 type: RelaxedAtomicBool
6239 value: @IS_NIGHTLY_BUILD@
6243 # Is support for CSS individual transform enabled?
6244 - name: layout.css.individual-transform.enabled
6249 # Is the initial value for the image-orientation property 'from-image'?
6250 - name: layout.css.image-orientation.initial-from-image
6251 type: RelaxedAtomicBool
6256 # Is support for CSS initial-letter property enabled?
6257 - name: layout.css.initial-letter.enabled
6262 # Pref to control whether line-height: -moz-block-height is exposed to content.
6263 - name: layout.css.line-height-moz-block-height.content.enabled
6264 type: RelaxedAtomicBool
6269 # Is support for motion-path enabled?
6270 - name: layout.css.motion-path.enabled
6275 # Is support for motion-path ray() enabled?
6276 - name: layout.css.motion-path-ray.enabled
6277 type: RelaxedAtomicBool
6278 value: @IS_NIGHTLY_BUILD@
6282 # Pref to control whether the ::marker property restrictions defined in [1]
6285 # [1]: https://drafts.csswg.org/css-pseudo-4/#selectordef-marker
6286 - name: layout.css.marker.restricted
6287 type: RelaxedAtomicBool
6292 # Is support for math-style enabled?
6293 - name: layout.css.math-style.enabled
6294 type: RelaxedAtomicBool
6295 value: @IS_NIGHTLY_BUILD@
6299 # Is support for math-depth enabled?
6300 # This must not be enabled until implementation is complete (see bug 1667090).
6301 - name: layout.css.math-depth.enabled
6302 type: RelaxedAtomicBool
6307 # Pref to control whether @-moz-document rules are enabled in content pages.
6308 - name: layout.css.moz-document.content.enabled
6309 type: RelaxedAtomicBool
6314 # Is -moz-osx-font-smoothing enabled? (Only supported in OSX builds)
6315 - name: layout.css.osx-font-smoothing.enabled
6317 #if defined(XP_MACOSX)
6324 # Is support for CSS overflow-clip-box enabled for non-UA sheets?
6325 - name: layout.css.overflow-clip-box.enabled
6330 # Is support for overscroll-behavior enabled?
6331 - name: layout.css.overscroll-behavior.enabled
6336 - name: layout.css.overflow-logical.enabled
6341 # Dictates whether or not the prefers contrast media query will be
6343 # true: prefers-contrast will toggle based on OS and browser settings.
6344 # false: prefers-contrast will only parse and toggle in the browser
6346 - name: layout.css.prefers-contrast.enabled
6347 type: RelaxedAtomicBool
6352 # Dictates whether or not the forced-colors media query is enabled.
6353 - name: layout.css.forced-colors.enabled
6354 type: RelaxedAtomicBool
6359 # Is support for -moz-prefixed animation properties enabled?
6360 - name: layout.css.prefixes.animations
6365 # Is support for -moz-border-image enabled?
6366 - name: layout.css.prefixes.border-image
6371 # Is support for -moz-box-sizing enabled?
6372 - name: layout.css.prefixes.box-sizing
6377 # Is support for -moz-prefixed multi-column properties (including column-gap) enabled?
6378 - name: layout.css.prefixes.columns
6383 # Is support for -moz-prefixed font feature properties enabled?
6384 - name: layout.css.prefixes.font-features
6389 # Is support for -moz-prefixed transform properties enabled?
6390 - name: layout.css.prefixes.transforms
6395 # Is support for -moz-prefixed transition properties enabled?
6396 - name: layout.css.prefixes.transitions
6401 # Is CSS error reporting enabled?
6402 - name: layout.css.report_errors
6407 - name: layout.css.resizeobserver.enabled
6412 # Are inter-character ruby annotations enabled?
6413 - name: layout.css.ruby.intercharacter.enabled
6418 - name: layout.css.scroll-behavior.damping-ratio
6423 - name: layout.css.supports-selector.enabled
6424 type: RelaxedAtomicBool
6429 # Is CSSOM-View scroll-behavior and its MSD smooth scrolling enabled?
6430 - name: layout.css.scroll-behavior.enabled
6431 type: RelaxedAtomicBool
6435 # Tuning of the smooth scroll motion used by CSSOM-View scroll-behavior.
6436 # Spring-constant controls the strength of the simulated MSD
6437 # (Mass-Spring-Damper).
6438 - name: layout.css.scroll-behavior.spring-constant
6443 # When selecting the snap point for CSS scroll snapping, the velocity of the
6444 # scroll frame is clamped to this speed, in CSS pixels / s.
6445 - name: layout.css.scroll-snap.prediction-max-velocity
6446 type: RelaxedAtomicInt32
6450 # When selecting the snap point for CSS scroll snapping, the velocity of the
6451 # scroll frame is integrated over this duration, in seconds. The snap point
6452 # best suited for this position is selected, enabling the user to perform fling
6454 - name: layout.css.scroll-snap.prediction-sensitivity
6459 # Set the threshold distance in CSS pixels below which scrolling will snap to
6460 # an edge, when scroll snapping is set to "proximity".
6461 - name: layout.css.scroll-snap.proximity-threshold
6462 type: RelaxedAtomicInt32
6466 # Is steps(jump-*) supported in easing functions?
6467 - name: layout.css.step-position-jump.enabled
6468 type: RelaxedAtomicBool
6473 # W3C touch-action css property (related to touch and pointer events)
6474 # Note that we turn this on even on platforms/configurations where touch
6475 # events are not supported (e.g. OS X, or Windows with e10s disabled). For
6476 # those platforms we don't handle touch events anyway so it's conceptually
6478 - name: layout.css.touch_action.enabled
6479 type: RelaxedAtomicBool
6483 # Are counters for implemented CSS properties enabled?
6484 - name: layout.css.use-counters.enabled
6489 # Are counters for unimplemented CSS properties enabled?
6490 - name: layout.css.use-counters-unimplemented.enabled
6491 type: RelaxedAtomicBool
6496 # Should the :visited selector ever match (otherwise :link matches instead)?
6497 - name: layout.css.visited_links_enabled
6502 - name: layout.css.xul-display-values.content.enabled
6503 type: RelaxedAtomicBool
6508 # Pref to control whether display: -moz-box and display: -moz-inline-box are
6509 # parsed in content pages.
6510 - name: layout.css.xul-box-display-values.content.enabled
6511 type: RelaxedAtomicBool
6516 # Whether to block large cursors intersecting UI.
6517 - name: layout.cursor.block.enabled
6522 # The maximum width or height of the cursor we should allow when intersecting
6523 # the UI, in CSS pixels.
6524 - name: layout.cursor.block.max-size
6529 - name: layout.display-list.build-twice
6530 type: RelaxedAtomicBool
6534 # Toggle retaining display lists between paints.
6535 - name: layout.display-list.retain
6536 type: RelaxedAtomicBool
6540 # Toggle retaining display lists between paints.
6541 - name: layout.display-list.retain.chrome
6542 type: RelaxedAtomicBool
6546 # Set the maximum number of modified frames allowed before doing a full
6547 # display list rebuild.
6548 - name: layout.display-list.rebuild-frame-limit
6549 type: RelaxedAtomicUint32
6553 # Pref to dump the display list to the log. Useful for debugging drawing.
6554 - name: layout.display-list.dump
6555 type: RelaxedAtomicBool
6559 # Pref to dump the display list to the log. Useful for debugging drawing.
6560 - name: layout.display-list.dump-content
6561 type: RelaxedAtomicBool
6565 # Pref to dump the display list to the log. Useful for debugging drawing.
6566 - name: layout.display-list.dump-parent
6567 type: RelaxedAtomicBool
6571 - name: layout.display-list.show-rebuild-area
6572 type: RelaxedAtomicBool
6576 - name: layout.display-list.flatten-transform
6577 type: RelaxedAtomicBool
6581 - name: layout.display-list.improve-fragmentation
6582 type: RelaxedAtomicBool
6586 # Are dynamic reflow roots enabled?
6587 - name: layout.dynamic-reflow-roots.enabled
6589 value: @IS_EARLY_BETA_OR_EARLIER@
6592 # Enables the <input type=search> custom layout frame with a clear icon.
6593 # Still needs tests and a web-exposed way to remove that icon, see bug 1654288.
6594 - name: layout.forms.input-type-search.enabled
6599 # Pref to control browser frame rate, in Hz. A value <= 0 means choose
6600 # automatically based on knowledge of the platform (or 60Hz if no platform-
6601 # specific information is available).
6602 - name: layout.frame_rate
6603 type: RelaxedAtomicInt32
6607 # The time in number of frames that we estimate for a refresh driver
6609 - name: layout.idle_period.required_quiescent_frames
6614 # The amount of time (milliseconds) needed between an idle period's
6615 # end and the start of the next tick to avoid jank.
6616 - name: layout.idle_period.time_limit
6621 # Enable/disable interruptible reflow, which allows reflows to stop
6622 # before completion (and display the partial results) when user events
6624 - name: layout.interruptible-reflow.enabled
6629 - name: layout.min-active-layer-size
6634 - name: layout.paint_rects_separately
6639 # On Android, don't synth mouse move events after scrolling, as they cause
6640 # unexpected user-visible behaviour. Can remove this after bug 1633450 is
6641 # satisfactorily resolved.
6642 - name: layout.reflow.synthMouseMove
6644 value: @IS_NOT_ANDROID@
6647 # This pref is to be set by test code only.
6648 - name: layout.scrollbars.always-layerize-track
6649 type: RelaxedAtomicBool
6653 # Controls caret style and word-delete during text selection.
6654 # 0: Use platform default
6655 # 1: Caret moves and blinks as when there is no selection; word
6656 # delete deselects the selection and then deletes word.
6657 # 2: Caret moves to selection edge and is not visible during selection;
6658 # word delete deletes the selection (Mac and Linux default).
6659 # 3: Caret moves and blinks as when there is no selection; word delete
6660 # deletes the selection.
6661 # Windows default is 1 for word delete behavior, the rest as for 2.
6662 - name: layout.selection.caret_style
6667 # If layout.show_previous_page is true then during loading of a new page we
6668 # will draw the previous page if the new page has painting suppressed.
6669 - name: layout.show_previous_page
6674 - name: layout.smaller-painted-layers
6675 type: RelaxedAtomicBool
6679 # Pref to stop overlay scrollbars from fading out, for testing purposes.
6680 - name: layout.testing.overlay-scrollbars.always-visible
6685 - name: layout.lower_priority_refresh_driver_during_load
6690 # Is layout of CSS outline-style:auto enabled?
6691 - name: layout.css.outline-style-auto.enabled
6696 # Pref to control enabling scroll anchoring.
6697 - name: layout.css.scroll-anchoring.enabled
6702 # Pref to control how many consecutive scroll-anchoring adjustments (since the
6703 # most recent user scroll) we'll average, before we consider whether to
6704 # automatically turn off scroll anchoring. When we hit this threshold, the
6705 # actual decision to disable also depends on the
6706 # min-average-adjustment-threshold pref, see below for more details.
6708 # Zero disables the heuristic.
6709 - name: layout.css.scroll-anchoring.max-consecutive-adjustments
6714 # Pref to control whether we should disable scroll anchoring on a scroller
6715 # where at least max-consecutive-adjustments have happened, and which the
6716 # average adjustment ends up being less than this number, in CSS pixels.
6718 # So, for example, given max-consecutive-adjustments=10 and
6719 # min-average-adjustment-treshold=3, we'll block scroll anchoring if there have
6720 # been 10 consecutive adjustments without a user scroll or more, and the
6721 # average offset difference between them amount to less than 3 CSS pixels.
6722 - name: layout.css.scroll-anchoring.min-average-adjustment-threshold
6727 # Pref to control disabling scroll anchoring suppression triggers, see
6729 # https://drafts.csswg.org/css-scroll-anchoring/#suppression-triggers
6731 # Those triggers should be unnecessary after bug 1561450.
6732 - name: layout.css.scroll-anchoring.suppressions.enabled
6737 - name: layout.css.scroll-anchoring.highlight
6742 # Are shared memory User Agent style sheets enabled?
6743 - name: layout.css.shared-memory-ua-sheets.enabled
6748 # Is support for -webkit-line-clamp enabled?
6749 - name: layout.css.webkit-line-clamp.enabled
6754 # Whether the computed value of line-height: normal returns the `normal`
6755 # keyword rather than a pixel value based on the first available font.
6757 # Only enabled on Nightly and early beta, at least for now.
6759 # It'd be nice to make numbers compute also to themselves, but it looks like
6760 # everybody agrees on turning them into pixels, see the discussion starting
6763 # [1]: https://github.com/w3c/csswg-drafts/issues/3749#issuecomment-477287453
6764 - name: layout.css.line-height.normal-as-resolved-value.enabled
6769 # Are the width and height attributes on image-like elements mapped to the
6770 # internal-for-now aspect-ratio property?
6771 - name: layout.css.width-and-height-map-to-aspect-ratio.enabled
6776 # Whether :is() and :where() ignore errors inside their selector lists
6777 # internally, rather than failing to parse altogether.
6779 # See https://github.com/w3c/csswg-drafts/issues/3264
6780 - name: layout.css.is-and-where-better-error-recovery.enabled
6781 type: RelaxedAtomicBool
6786 # Whether frame visibility tracking is enabled globally.
6787 - name: layout.framevisibility.enabled
6792 # The fraction of the scrollport we allow to horizontally scroll by before we
6793 # schedule an update of frame visibility.
6794 - name: layout.framevisibility.amountscrollbeforeupdatehorizontal
6799 # The fraction of the scrollport we allow to vertically scroll by before we
6800 # schedule an update of frame visibility.
6801 - name: layout.framevisibility.amountscrollbeforeupdatevertical
6806 # The number of scrollports wide to expand when tracking frame visibility.
6807 - name: layout.framevisibility.numscrollportwidths
6816 # The number of scrollports high to expand when tracking frame visibility.
6817 - name: layout.framevisibility.numscrollportheights
6823 - name: layout.dynamic-toolbar-max-height
6824 type: RelaxedAtomicInt32
6828 # Controls double click and Alt+Arrow word selection behavior.
6829 - name: layout.word_select.eat_space_to_next_word
6838 - name: layout.word_select.stop_at_punctuation
6843 # Whether underscore should be treated as a word-breaking character for
6844 # word selection/arrow-key movement purposes.
6845 - name: layout.word_select.stop_at_underscore
6850 #---------------------------------------------------------------------------
6851 # Prefs starting with "mathml."
6852 #---------------------------------------------------------------------------
6854 # Whether to disable deprecated style attributes background, color, fontfamily,
6855 # fontsize, fontstyle and fontweight.
6856 - name: mathml.deprecated_style_attributes.disabled
6861 # Whether to disable deprecated "radical" notation for the menclose element.
6862 - name: mathml.deprecated_menclose_notation_radical.disabled
6867 # Whether to disable legacy names "small", "normal" and "big" for the
6868 # mathsize attribute.
6869 - name: mathml.mathsize_names.disabled
6874 # Whether to disable legacy names "thickmathspace", "mediummathspace",
6875 # "thickmathspace" etc for length attributes.
6876 - name: mathml.mathspace_names.disabled
6878 value: @IS_NIGHTLY_BUILD@
6881 # Whether to disable the mfrac bevelled attribute.
6882 - name: mathml.mfrac_bevelled_attribute.disabled
6887 # Whether to disable legacy names "thin", "thick" and "medium" for the
6888 # linethickness attribute of the mfrac element.
6889 - name: mathml.mfrac_linethickness_names.disabled
6894 # Whether to disable deprecated numalign/denomalign/align attributes
6895 - name: mathml.deprecated_alignment_attributes.disabled
6900 # Whether to disable subscriptshift and superscriptshift attributes.
6901 - name: mathml.script_shift_attributes.disabled
6906 # Whether to disable the scriptminsize attribute.
6907 # Note that this only disables parsing, not the default effect when no attribute
6909 - name: mathml.scriptminsize_attribute.disabled
6911 value: @IS_NIGHTLY_BUILD@
6914 # Whether to disable the scriptsizemultiplier attribute.
6915 - name: mathml.scriptsizemultiplier_attribute.disabled
6917 value: @IS_NIGHTLY_BUILD@
6920 # Whether to disable support for XLink on MathML elements.
6921 - name: mathml.xlink.disabled
6926 # Whether to disable support for stretching operators with STIXGeneral fonts.
6927 # macos still has the deprecated STIXGeneral font pre-installed.
6928 - name: mathml.stixgeneral_operator_stretching.disabled
6930 #if defined(XP_MACOSX)
6931 value: @IS_NIGHTLY_BUILD@
6937 #---------------------------------------------------------------------------
6938 # Prefs starting with "media."
6939 #---------------------------------------------------------------------------
6942 # This pref defines what the blocking policy would be used in blocking autoplay.
6943 # 0 : use sticky activation (default)
6944 # https://html.spec.whatwg.org/multipage/interaction.html#sticky-activation
6945 # 1 : use transient activation (the transient activation duration can be
6946 # adjusted by the pref `dom.user_activation.transient.timeout`)
6947 # https://html.spec.whatwg.org/multipage/interaction.html#transient-activation
6948 # 2 : user input depth (allow autoplay when the play is trigged by user input
6949 # which is determined by the user input depth)
6950 - name: media.autoplay.blocking_policy
6955 # File-backed MediaCache size.
6956 - name: media.cache_size
6957 type: RelaxedAtomicUint32
6958 value: 512000 # Measured in KiB
6961 # Size of file backed MediaCache while on a connection which is cellular (3G,
6962 # etc), and thus assumed to be "expensive".
6963 - name: media.cache_size.cellular
6964 type: RelaxedAtomicUint32
6965 value: 32768 # Measured in KiB
6968 # Whether cubeb is sandboxed
6969 - name: media.cubeb.sandbox
6972 #if defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID)
6974 #elif defined(XP_WIN) && !defined(_ARM64_)
6980 # Whether or not to pass AUDCLNT_STREAMOPTIONS_RAW when initializing audio
6981 # streams when using WASAPI.
6982 # 0 - don't use RAW streams
6983 # 1 - use RAW streams for input streams only
6984 # 2 - use RAW streams for output streams only
6985 # 3 - use RAW streams for input and output streams
6986 #if defined (XP_WIN)
6987 - name: media.cubeb.wasapi-raw
6988 type: RelaxedAtomicUint32
6993 # ClockDrift desired buffering in milliseconds
6994 - name: media.clockdrift.buffering
6999 # If a resource is known to be smaller than this size (in kilobytes), a
7000 # memory-backed MediaCache may be used; otherwise the (single shared global)
7001 # file-backed MediaCache is used.
7002 - name: media.memory_cache_max_size
7004 value: 8192 # Measured in KiB
7007 # Don't create more memory-backed MediaCaches if their combined size would go
7008 # above this absolute size limit.
7009 - name: media.memory_caches_combined_limit_kb
7014 # Don't create more memory-backed MediaCaches if their combined size would go
7015 # above this relative size limit (a percentage of physical memory).
7016 - name: media.memory_caches_combined_limit_pc_sysmem
7018 value: 5 # A percentage
7021 # When a network connection is suspended, don't resume it until the amount of
7022 # buffered data falls below this threshold (in seconds).
7023 - name: media.cache_resume_threshold
7024 type: RelaxedAtomicUint32
7027 - name: media.cache_resume_threshold.cellular
7028 type: RelaxedAtomicUint32
7032 # Stop reading ahead when our buffered data is this many seconds ahead of the
7033 # current playback position. This limit can stop us from using arbitrary
7034 # amounts of network bandwidth prefetching huge videos.
7035 - name: media.cache_readahead_limit
7036 type: RelaxedAtomicUint32
7039 - name: media.cache_readahead_limit.cellular
7040 type: RelaxedAtomicUint32
7045 - name: media.mediacapabilities.drop-threshold
7046 type: RelaxedAtomicInt32
7050 - name: media.mediacapabilities.from-database
7051 type: RelaxedAtomicBool
7052 value: @IS_NIGHTLY_BUILD@
7056 - name: media.resampling.enabled
7057 type: RelaxedAtomicBool
7061 # libcubeb backend implements .get_preferred_channel_layout
7062 - name: media.forcestereo.enabled
7063 type: RelaxedAtomicBool
7064 #if defined(XP_WIN) || defined(XP_DARWIN) || defined(MOZ_PULSEAUDIO)
7073 # Whether to enable MediaSource support.
7074 - name: media.mediasource.enabled
7075 type: RelaxedAtomicBool
7079 - name: media.mediasource.mp4.enabled
7080 type: RelaxedAtomicBool
7084 - name: media.mediasource.webm.enabled
7085 type: RelaxedAtomicBool
7089 # Check if vp9 is enabled by default in mediasource. False on Android.
7090 # If disabled, vp9 will only be enabled under some conditions:
7091 # - h264 HW decoding is not supported
7092 # - mp4 is not enabled
7093 # - Device was deemed fast enough to decode VP9 via the VP9Benchmark utility
7094 # - A VP9 HW decoder is present.
7095 - name: media.mediasource.vp9.enabled
7096 type: RelaxedAtomicBool
7097 value: @IS_NOT_ANDROID@
7100 - name: media.mediasource.webm.audio.enabled
7101 type: RelaxedAtomicBool
7105 # Whether to enable MediaSource v2 support.
7106 - name: media.mediasource.experimental.enabled
7107 type: RelaxedAtomicBool
7112 - name: media.ruin-av-sync.enabled
7113 type: RelaxedAtomicBool
7117 # Encrypted Media Extensions
7118 - name: media.eme.enabled
7120 #if defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID)
7121 # On Linux EME is visible but disabled by default. This is so that the "Play
7122 # DRM content" checkbox in the Firefox UI is unchecked by default. DRM
7123 # requires downloading and installing proprietary binaries, which users on an
7124 # open source operating systems didn't opt into. The first time a site using
7125 # EME is encountered, the user will be prompted to enable DRM, whereupon the
7126 # EME plugin binaries will be downloaded if permission is granted.
7133 # Whether we expose the functionality proposed in
7134 # https://github.com/WICG/encrypted-media-encryption-scheme/blob/master/explainer.md
7135 # I.e. if true, apps calling navigator.requestMediaKeySystemAccess() can pass
7136 # an optional encryption scheme as part of MediaKeySystemMediaCapability
7137 # objects. If a scheme is present when we check for support, we must ensure we
7138 # support that scheme in order to provide key system access.
7139 - name: media.eme.encrypted-media-encryption-scheme.enabled
7144 # Do we need explicit approval from the application to allow access to EME?
7145 # If true, Gecko will ask for permission before allowing MediaKeySystemAccess.
7146 # At time of writing this is aimed at GeckoView, and setting this to true
7147 # outside of GeckoView or test environments will likely break EME.
7148 - name: media.eme.require-app-approval
7153 - name: media.eme.audio.blank
7154 type: RelaxedAtomicBool
7158 - name: media.eme.video.blank
7159 type: RelaxedAtomicBool
7163 - name: media.eme.chromium-api.video-shmems
7164 type: RelaxedAtomicUint32
7168 # Is support for MediaKeys.getStatusForPolicy enabled?
7169 - name: media.eme.hdcp-policy-check.enabled
7174 - name: media.clearkey.persistent-license.enabled
7179 - name: media.cloneElementVisually.testing
7184 #if defined(XP_LINUX) && defined(MOZ_SANDBOX)
7185 # Whether to allow, on a Linux system that doesn't support the necessary
7186 # sandboxing features, loading Gecko Media Plugins unsandboxed. However, EME
7187 # CDMs will not be loaded without sandboxing even if this pref is changed.
7188 - name: media.gmp.insecure.allow
7189 type: RelaxedAtomicBool
7195 # These prefs control whether or not a universal build running on
7196 # an Apple Silicon machine will attempt to use an x64 Widevine or
7197 # OpenH264 plugin. This requires launching the GMP child process
7198 # executable in x64 mode. We expect to allow this for Widevine until
7199 # an arm64 version of Widevine is made available. We don't expect
7200 # to need to allow this for OpenH264.
7202 # Allow a Widevine GMP x64 process to be executed on ARM builds.
7203 - name: media.gmp-widevinecdm.allow-x64-plugin-on-arm64
7204 type: RelaxedAtomicBool
7208 # Don't allow an OpenH264 GMP x64 process to be executed on ARM builds.
7209 - name: media.gmp-gmpopenh264.allow-x64-plugin-on-arm64
7210 type: RelaxedAtomicBool
7215 # Specifies whether the PDMFactory can create a test decoder that just outputs
7216 # blank frames/audio instead of actually decoding. The blank decoder works on
7218 - name: media.use-blank-decoder
7219 type: RelaxedAtomicBool
7223 - name: media.gpu-process-decoder
7224 type: RelaxedAtomicBool
7232 - name: media.rdd-process.enabled
7233 type: RelaxedAtomicBool
7236 #elif defined(XP_MACOSX)
7238 #elif defined(XP_LINUX) && !defined(ANDROID)
7245 - name: media.rdd-retryonfailure.enabled
7246 type: RelaxedAtomicBool
7250 - name: media.rdd-process.startup_timeout_ms
7251 type: RelaxedAtomicInt32
7256 - name: media.rdd-ffmpeg.enabled
7257 type: RelaxedAtomicBool
7263 - name: media.rdd-ffvpx.enabled
7264 type: RelaxedAtomicBool
7267 #elif defined(XP_MACOSX)
7269 #elif defined(XP_LINUX) && !defined(ANDROID)
7278 - name: media.rdd-wmf.enabled
7279 type: RelaxedAtomicBool
7284 #ifdef MOZ_APPLEMEDIA
7285 - name: media.rdd-applemedia.enabled
7286 type: RelaxedAtomicBool
7291 - name: media.rdd-theora.enabled
7292 type: RelaxedAtomicBool
7295 #elif defined(XP_MACOSX)
7297 #elif defined(XP_LINUX) && !defined(ANDROID)
7304 - name: media.rdd-vorbis.enabled
7305 type: RelaxedAtomicBool
7308 #elif defined(XP_MACOSX)
7310 #elif defined(XP_LINUX) && !defined(ANDROID)
7317 - name: media.rdd-vpx.enabled
7318 type: RelaxedAtomicBool
7321 #elif defined(XP_MACOSX)
7323 #elif defined(XP_LINUX) && !defined(ANDROID)
7330 - name: media.rdd-wav.enabled
7331 type: RelaxedAtomicBool
7334 #elif defined(XP_MACOSX)
7336 #elif defined(XP_LINUX) && !defined(ANDROID)
7343 - name: media.rdd-opus.enabled
7344 type: RelaxedAtomicBool
7347 #elif defined(XP_MACOSX)
7349 #elif defined(XP_LINUX) && !defined(ANDROID)
7356 - name: media.rdd-webaudio.batch.size
7357 type: RelaxedAtomicInt32
7362 # Enable the MediaCodec PlatformDecoderModule by default.
7363 - name: media.android-media-codec.enabled
7364 type: RelaxedAtomicBool
7368 - name: media.android-media-codec.preferred
7369 type: RelaxedAtomicBool
7375 - name: media.omx.enabled
7382 - name: media.ffmpeg.enabled
7383 type: RelaxedAtomicBool
7384 #if defined(XP_MACOSX)
7391 - name: media.libavcodec.allow-obsolete
7397 # Disable DMABuf for ffmpeg video textures on Linux
7398 - name: media.ffmpeg.dmabuf-textures.disabled
7399 type: RelaxedAtomicBool
7403 # Use VA-API for ffmpeg video playback on Linux
7404 - name: media.ffmpeg.vaapi.enabled
7405 type: RelaxedAtomicBool
7409 # Use DRM display for VA-API ffmpeg video decoding on Linux
7410 - name: media.ffmpeg.vaapi-drm-display.enabled
7411 type: RelaxedAtomicBool
7414 #endif # MOZ_WAYLAND
7417 - name: media.ffvpx.enabled
7418 type: RelaxedAtomicBool
7426 - name: media.ffvpx.mp3.enabled
7427 type: RelaxedAtomicBool
7435 # Set to true in marionette tests to disable the sanity test
7436 # which would lead to unnecessary start of the RDD process.
7437 - name: media.sanity-test.disabled
7438 type: RelaxedAtomicBool
7444 - name: media.wmf.enabled
7445 type: RelaxedAtomicBool
7449 # Whether DD should consider WMF-disabled a WMF failure, useful for testing.
7450 - name: media.decoder-doctor.wmf-disabled-is-failure
7455 - name: media.wmf.dxva.d3d11.enabled
7456 type: RelaxedAtomicBool
7460 - name: media.wmf.dxva.max-videos
7461 type: RelaxedAtomicUint32
7465 - name: media.wmf.use-nv12-format
7466 type: RelaxedAtomicBool
7470 - name: media.wmf.force.allow-p010-format
7471 type: RelaxedAtomicBool
7475 - name: media.wmf.use-sync-texture
7480 - name: media.wmf.low-latency.enabled
7481 type: RelaxedAtomicBool
7485 - name: media.wmf.low-latency.force-disabled
7486 type: RelaxedAtomicBool
7490 - name: media.wmf.skip-blacklist
7491 type: RelaxedAtomicBool
7495 - name: media.wmf.amd.highres.enabled
7496 type: RelaxedAtomicBool
7500 - name: media.wmf.allow-unsupported-resolutions
7501 type: RelaxedAtomicBool
7505 - name: media.wmf.vp9.enabled
7512 - name: media.hardware-video-decoding.force-enabled
7517 # Whether to check the decoder supports recycling.
7518 - name: media.decoder.recycle.enabled
7519 type: RelaxedAtomicBool
7523 # Should MFR try to skip to the next key frame?
7524 - name: media.decoder.skip-to-next-key-frame.enabled
7525 type: RelaxedAtomicBool
7529 - name: media.gmp.decoder.enabled
7530 type: RelaxedAtomicBool
7534 # Whether to suspend decoding of videos in background tabs.
7535 - name: media.suspend-bkgnd-video.enabled
7536 type: RelaxedAtomicBool
7540 # Delay, in ms, from time window goes to background to suspending
7541 # video decoders. Defaults to 10 seconds.
7542 - name: media.suspend-bkgnd-video.delay-ms
7543 type: RelaxedAtomicUint32
7547 - name: media.dormant-on-pause-timeout-ms
7548 type: RelaxedAtomicInt32
7552 # AudioTrack and VideoTrack support
7553 - name: media.track.enabled
7558 # This pref disables the reception of RTCP. It is used for testing.
7559 - name: media.webrtc.net.force_disable_rtcp_reception
7560 type: ReleaseAcquireAtomicBool
7564 # TextTrack WebVTT Region extension support.
7565 - name: media.webvtt.regions.enabled
7570 # This pref controls whether dispatch testing-only events.
7571 - name: media.webvtt.testing.events
7576 - name: media.webspeech.synth.force_global_queue
7581 - name: media.webspeech.test.enable
7586 - name: media.webspeech.test.fake_fsm_events
7591 - name: media.webspeech.test.fake_recognition_service
7596 #ifdef MOZ_WEBSPEECH
7597 - name: media.webspeech.recognition.enable
7603 - name: media.webspeech.recognition.force_enable
7608 #ifdef MOZ_WEBSPEECH
7609 - name: media.webspeech.synth.enabled
7613 #endif # MOZ_WEBSPEECH
7615 - name: media.encoder.webm.enabled
7616 type: RelaxedAtomicBool
7617 #if defined(MOZ_WEBM_ENCODER)
7624 - name: media.audio-max-decode-error
7626 #if defined(RELEASE_OR_BETA)
7629 # Zero tolerance in pre-release builds to detect any decoder regression.
7634 - name: media.video-max-decode-error
7636 #if defined(RELEASE_OR_BETA)
7639 # Zero tolerance in pre-release builds to detect any decoder regression.
7644 # Are video stats enabled? (Disabling can help prevent fingerprinting.)
7645 - name: media.video_stats.enabled
7651 - name: media.opus.enabled
7652 type: RelaxedAtomicBool
7657 - name: media.wave.enabled
7658 type: RelaxedAtomicBool
7663 - name: media.ogg.enabled
7664 type: RelaxedAtomicBool
7669 - name: media.webm.enabled
7670 type: RelaxedAtomicBool
7675 - name: media.av1.enabled
7676 type: RelaxedAtomicBool
7677 #if defined(XP_WIN) && !defined(_ARM64_)
7679 #elif defined(XP_MACOSX)
7681 #elif defined(MOZ_WIDGET_ANDROID)
7682 value: @IS_EARLY_BETA_OR_EARLIER@
7683 #elif defined(XP_UNIX)
7690 - name: media.av1.use-dav1d
7691 type: RelaxedAtomicBool
7692 #if defined(XP_WIN) && !defined(_ARM64_)
7694 #elif defined(XP_MACOSX)
7696 #elif defined(XP_UNIX)
7703 - name: media.flac.enabled
7709 - name: media.hls.enabled
7710 type: RelaxedAtomicBool
7714 # Max number of HLS players that can be created concurrently. Used only on
7715 # Android and when "media.hls.enabled" is true.
7717 - name: media.hls.max-allocations
7723 - name: media.mp4.enabled
7724 type: RelaxedAtomicBool
7732 # Error/warning handling, Decoder Doctor.
7734 # Set to true to force demux/decode warnings to be treated as errors.
7735 - name: media.playback.warnings-as-errors
7736 type: RelaxedAtomicBool
7740 # Resume video decoding when the cursor is hovering on a background tab to
7741 # reduce the resume latency and improve the user experience.
7742 - name: media.resume-bkgnd-video-on-tabhover
7747 - name: media.videocontrols.lock-video-orientation
7752 # Media Seamless Looping
7753 - name: media.seamless-looping
7754 type: RelaxedAtomicBool
7758 - name: media.autoplay.block-event.enabled
7763 - name: media.media-capabilities.enabled
7764 type: RelaxedAtomicBool
7768 - name: media.media-capabilities.screen.enabled
7769 type: RelaxedAtomicBool
7773 - name: media.benchmark.vp9.fps
7774 type: RelaxedAtomicUint32
7778 - name: media.benchmark.vp9.threshold
7779 type: RelaxedAtomicUint32
7783 - name: media.benchmark.vp9.versioncheck
7784 type: RelaxedAtomicUint32
7788 - name: media.benchmark.frames
7789 type: RelaxedAtomicUint32
7793 - name: media.benchmark.timeout
7794 type: RelaxedAtomicUint32
7798 - name: media.test.video-suspend
7799 type: RelaxedAtomicBool
7803 # MediaCapture prefs follow
7805 # Enables navigator.mediaDevices and getUserMedia() support. See also
7806 # media.peerconnection.enabled
7807 - name: media.navigator.enabled
7812 # This pref turns off [SecureContext] on the navigator.mediaDevices object, for
7813 # more compatible legacy behavior.
7814 - name: media.devices.insecure.enabled
7819 # If the above pref is also enabled, this pref enabled getUserMedia() support
7820 # in http, bypassing the instant NotAllowedError you get otherwise.
7821 - name: media.getusermedia.insecure.enabled
7826 # Enable tab sharing
7827 - name: media.getusermedia.browser.enabled
7828 type: RelaxedAtomicBool
7832 # The getDisplayMedia method is always SecureContext regardless of the above two
7833 # prefs. But it is not implemented on android, and can be turned off elsewhere.
7834 - name: media.getdisplaymedia.enabled
7836 value: @IS_NOT_ANDROID@
7839 # Turn off any cameras (but not mics) while in the background. This is desirable
7841 - name: media.getusermedia.camera.background.mute.enabled
7846 # WebRTC prefs follow
7848 # Enables RTCPeerConnection support. Note that, when true, this pref enables
7849 # navigator.mediaDevices and getUserMedia() support as well.
7850 # See also media.navigator.enabled
7851 - name: media.peerconnection.enabled
7856 - name: media.peerconnection.dtmf.enabled
7861 - name: media.peerconnection.identity.enabled
7866 - name: media.peerconnection.rtpsourcesapi.enabled
7873 - name: media.navigator.hardware.vp8_encode.acceleration_remote_enabled
7878 - name: media.navigator.hardware.vp8_encode.acceleration_enabled
7883 - name: media.navigator.hardware.vp8_decode.acceleration_enabled
7889 # Use MediaDataDecoder API for VP8/VP9 in WebRTC. This includes hardware
7890 # acceleration for decoding.
7891 - name: media.navigator.mediadatadecoder_vpx_enabled
7892 type: RelaxedAtomicBool
7893 #if defined(NIGHTLY_BUILD)
7900 # Use MediaDataDecoder API for H264 in WebRTC. This includes hardware
7901 # acceleration for decoding.
7902 - name: media.navigator.mediadatadecoder_h264_enabled
7903 type: RelaxedAtomicBool
7904 #if defined(_ARM64_) && defined(XP_WIN)
7913 # HTMLMediaElement.allowedToPlay should be exposed to web content when
7914 # block autoplay rides the trains to release. Until then, Nightly only.
7915 - name: media.allowed-to-play.enabled
7917 value: @IS_NIGHTLY_BUILD@
7920 # Is support for MediaDevices.ondevicechange enabled?
7921 - name: media.ondevicechange.enabled
7926 # Is support for HTMLMediaElement.seekToNextFrame enabled?
7927 - name: media.seekToNextFrame.enabled
7932 # setSinkId will be enabled in bug 1498512. Till then the
7933 # implementation will remain hidden behind this pref (Bug 1152401, Bug 934425).
7934 - name: media.setsinkid.enabled
7939 # Turn on this pref can enable test-only events for media element.
7940 - name: media.testing-only-events
7945 - name: media.useAudioChannelService.testing
7950 - name: media.audioFocus.management
7952 #if defined(MOZ_WIDGET_ANDROID)
7959 - name: media.hardwaremediakeys.enabled
7964 # If this pref is on, then `media.mediacontrol.stopcontrol.timer.ms` would take
7965 # effect and determine the timing to stop controlling media.
7966 - name: media.mediacontrol.stopcontrol.timer
7971 # If media is being paused after a certain period, then we would think that
7972 # media doesn't need to be controlled anymore. Therefore, that media would stop
7973 # listening to the media control key events. The value of this pref is how long
7974 # media would stop listening to the event after it's paused.
7975 - name: media.mediacontrol.stopcontrol.timer.ms
7976 type: RelaxedAtomicUint32
7980 # If this pref is on, we would stop controlling media after it reaches to the
7982 - name: media.mediacontrol.stopcontrol.aftermediaends
7987 # We would only use media control to control media which duration is longer
7989 - name: media.mediacontrol.eligible.media.duration.s
7994 - name: media.webrtc.platformencoder
7996 #if defined(MOZ_WIDGET_ANDROID)
8003 - name: media.block-autoplay-until-in-foreground
8005 #if !defined(MOZ_WIDGET_ANDROID)
8012 - name: media.webrtc.hw.h264.enabled
8014 #if defined(MOZ_WIDGET_ANDROID)
8021 # If true, then we require explicit approval from the embedding app (ex. Fenix)
8022 # on GeckoView to know if we can allow audible, inaudible media or both kinds
8023 # of media to autoplay.
8024 - name: media.geckoview.autoplay.request
8029 # This is used in testing only, in order to skip the prompting process. This
8030 # pref works only when enabling the pref `media.geckoview.autoplay.request`.
8031 # 0=prompt as normal, 1=allow all, 2=deny all, 3=allow audible request,
8032 # 4=deny audible request, 5=allow inaudible request, 6=deny inaudible request.
8033 # 7=leave all requests pending.
8034 - name: media.geckoview.autoplay.request.testing
8039 - name: media.mediacontrol.testingevents.enabled
8044 #if defined(XP_MACOSX)
8045 - name: media.macos.screenrecording.oscheck.enabled
8051 #---------------------------------------------------------------------------
8052 # Prefs starting with "mousewheel."
8053 #---------------------------------------------------------------------------
8055 # This affects how line scrolls from wheel events will be accelerated.
8056 # Factor to be multiplied for constant acceleration.
8057 - name: mousewheel.acceleration.factor
8058 type: RelaxedAtomicInt32
8062 # This affects how line scrolls from wheel events will be accelerated.
8063 # Number of mousewheel clicks when acceleration starts.
8064 # Acceleration can be turned off if pref is set to -1.
8065 - name: mousewheel.acceleration.start
8066 type: RelaxedAtomicInt32
8070 # Auto-dir is a feature which treats any single-wheel scroll as a scroll in the
8071 # only one scrollable direction if the target has only one scrollable
8072 # direction. For example, if the user scrolls a vertical wheel inside a target
8073 # which is horizontally scrollable but vertical unscrollable, then the vertical
8074 # scroll is converted to a horizontal scroll for that target.
8075 # Note that auto-dir only takes effect for |mousewheel.*.action|s and
8076 # |mousewheel.*.action.override_x|s whose values are 1.
8077 - name: mousewheel.autodir.enabled
8082 # When a wheel scroll is converted due to auto-dir, which side the converted
8083 # scroll goes towards is decided by one thing called "honoured target". If the
8084 # content of the honoured target horizontally starts from right to left, then
8085 # an upward scroll maps to a rightward scroll and a downward scroll maps to a
8086 # leftward scroll; otherwise, an upward scroll maps to a leftward scroll and a
8087 # downward scroll maps to a rightward scroll.
8088 # If this pref is set to false, then consider the scrolling target as the
8090 # If set to true, then consider the root element in the document where the
8091 # scrolling target is as the honoured target. But note that there's one
8092 # exception: for targets in an HTML document, the real root element(I.e. the
8093 # <html> element) is typically not considered as a root element, but the <body>
8094 # element is typically considered as a root element. If there is no <body>
8095 # element, then consider the <html> element instead.
8096 - name: mousewheel.autodir.honourroot
8101 - name: mousewheel.system_scroll_override_on_root_content.enabled
8102 type: RelaxedAtomicBool
8110 # Prefs for overriding the system mouse wheel scrolling speed on
8111 # content of the web pages. When
8112 # "mousewheel.system_scroll_override_on_root_content.enabled" is true and the
8113 # system scrolling speed isn't customized by the user, the content scrolling
8114 # speed is multiplied by the following factors. The value will be used as
8115 # 1/100. E.g., 200 means 2.00.
8116 # NOTE: Even if "mousewheel.system_scroll_override_on_root_content.enabled" is
8117 # true, when Gecko detects the user customized the system scrolling speed
8118 # settings, the override isn't executed.
8119 - name: mousewheel.system_scroll_override_on_root_content.horizontal.factor
8120 type: RelaxedAtomicInt32
8123 - name: mousewheel.system_scroll_override_on_root_content.vertical.factor
8124 type: RelaxedAtomicInt32
8128 # Mouse wheel scroll transaction is held even if the mouse cursor is moved.
8129 - name: mousewheel.transaction.ignoremovedelay
8130 type: RelaxedAtomicInt32
8134 # Mouse wheel scroll transaction period of time (in milliseconds).
8135 - name: mousewheel.transaction.timeout
8136 type: RelaxedAtomicInt32
8140 # Mouse wheel scroll position is determined by GetMessagePos rather than
8142 - name: mousewheel.ignore_cursor_position_in_lparam
8143 type: RelaxedAtomicBool
8147 # If line-height is lower than this value (in device pixels), 1 line scroll
8148 # scrolls this height.
8149 - name: mousewheel.min_line_scroll_amount
8154 #---------------------------------------------------------------------------
8155 # Prefs starting with "network."
8156 #---------------------------------------------------------------------------
8158 # Force less-secure NTLMv1 when needed (NTLMv2 is the default).
8159 - name: network.auth.force-generic-ntlm-v1
8160 type: RelaxedAtomicBool
8164 # Sub-resources HTTP-authentication:
8165 # 0 - don't allow sub-resources to open HTTP authentication credentials
8167 # 1 - allow sub-resources to open HTTP authentication credentials dialogs,
8168 # but don't allow it for cross-origin sub-resources
8169 # 2 - allow the cross-origin authentication as well.
8170 - name: network.auth.subresource-http-auth-allow
8175 # Sub-resources HTTP-authentication for cross-origin images:
8176 # - true: It is allowed to present http auth. dialog for cross-origin images.
8177 # - false: It is not allowed.
8178 # If network.auth.subresource-http-auth-allow has values 0 or 1 this pref does
8179 # not have any effect.
8180 - name: network.auth.subresource-img-cross-origin-http-auth-allow
8185 # Resources that are triggered by some non-web-content:
8186 # - true: They are allow to present http auth. dialog
8187 # - false: They are not allow to present http auth. dialog.
8188 - name: network.auth.non-web-content-triggered-resources-http-auth-allow
8193 # Whether to show anti-spoof confirmation prompts when navigating to a url
8195 - name: network.auth.confirmAuth.enabled
8200 # See the full list of values in nsICookieService.idl.
8201 - name: network.cookie.cookieBehavior
8202 type: RelaxedAtomicInt32
8203 value: 0 # accept all cookies
8206 # See the full list of values in nsICookieService.idl.
8207 - name: network.cookie.rejectForeignWithExceptions.enabled
8212 # Stale threshold for cookies in seconds.
8213 - name: network.cookie.staleThreshold
8218 # Cookie lifetime policy. Possible values:
8219 # 0 - accept all cookies
8220 # 1 - deprecated. don't use it.
8221 # 2 - accept as session cookies
8222 # 3 - deprecated. don't use it.
8223 - name: network.cookie.lifetimePolicy
8224 type: RelaxedAtomicInt32
8228 - name: network.cookie.sameSite.laxByDefault
8230 value: @IS_NIGHTLY_BUILD@
8233 # lax-by-default 2 minutes tollerance for unsafe methods. The value is in seconds.
8234 - name: network.cookie.sameSite.laxPlusPOST.timeout
8239 - name: network.cookie.sameSite.noneRequiresSecure
8241 value: @IS_NIGHTLY_BUILD@
8244 - name: network.cookie.sameSite.schemeful
8246 value: @IS_NIGHTLY_BUILD@
8249 - name: network.cookie.thirdparty.sessionOnly
8254 - name: network.cookie.thirdparty.nonsecureSessionOnly
8259 - name: network.data.max-uri-length-mobile
8260 type: RelaxedAtomicUint32
8261 value: 2 * 1024 * 1024
8264 # If we should attempt to race the cache and network.
8265 - name: network.http.rcwn.enabled
8270 - name: network.http.rcwn.cache_queue_normal_threshold
8275 - name: network.http.rcwn.cache_queue_priority_threshold
8280 # We might attempt to race the cache with the network only if a resource
8281 # is smaller than this size.
8282 - name: network.http.rcwn.small_resource_size_kb
8287 - name: network.http.rcwn.min_wait_before_racing_ms
8292 - name: network.http.rcwn.max_wait_before_racing_ms
8297 # false=real referer, true=spoof referer (use target URI as referer).
8298 - name: network.http.referer.spoofSource
8303 # Check whether we need to hide referrer when leaving a .onion domain.
8304 # false=allow onion referer, true=hide onion referer (use empty referer).
8305 - name: network.http.referer.hideOnionSource
8310 # Include an origin header on non-GET and non-HEAD requests regardless of CORS.
8311 # 0=never send, 1=send when same-origin only, 2=always send.
8312 - name: network.http.sendOriginHeader
8317 # Prefs allowing granular control of referers.
8318 # 0=don't send any, 1=send only on clicks, 2=send on image requests as well
8319 - name: network.http.sendRefererHeader
8323 do_not_use_directly: true
8325 # The maximum allowed length for a referrer header - 4096 default.
8327 - name: network.http.referer.referrerLengthLimit
8332 # 0=always send, 1=send iff base domains match, 2=send iff hosts match.
8333 - name: network.http.referer.XOriginPolicy
8337 do_not_use_directly: true
8339 # 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port.
8340 - name: network.http.referer.trimmingPolicy
8344 do_not_use_directly: true
8346 # 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port.
8347 - name: network.http.referer.XOriginTrimmingPolicy
8351 do_not_use_directly: true
8353 # Set the default Referrer Policy; to be used unless overriden by the site.
8354 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
8355 # 3=no-referrer-when-downgrade.
8356 - name: network.http.referer.defaultPolicy
8361 # Set the default Referrer Policy applied to third-party trackers when the
8362 # default cookie policy is set to reject third-party trackers, to be used
8363 # unless overriden by the site.
8364 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
8365 # 3=no-referrer-when-downgrade.
8366 # Trim referrers from trackers to origins by default.
8367 - name: network.http.referer.defaultPolicy.trackers
8372 # Set the Private Browsing Default Referrer Policy, to be used
8373 # unless overriden by the site.
8374 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
8375 # 3=no-referrer-when-downgrade.
8376 - name: network.http.referer.defaultPolicy.pbmode
8381 # Set the Private Browsing Default Referrer Policy applied to third-party
8382 # trackers when the default cookie policy is set to reject third-party
8383 # trackers, to be used unless overriden by the site.
8384 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
8385 # 3=no-referrer-when-downgrade.
8386 # No need to change this pref for trimming referrers from trackers since in
8387 # private windows we already trim all referrers to origin only.
8388 - name: network.http.referer.defaultPolicy.trackers.pbmode
8393 # Whether certain http header values should be censored out in logs.
8394 # Specifically filters out "authorization" and "proxy-authorization".
8395 - name: network.http.sanitize-headers-in-logs
8396 type: RelaxedAtomicBool
8400 # If set to true, IOService.offline depends on IOService.connectivity.
8401 - name: network.offline-mirrors-connectivity
8402 type: RelaxedAtomicBool
8406 # Enables the predictive service.
8407 - name: network.predictor.enabled
8412 # Set true to allow resolving proxy for localhost
8413 - name: network.proxy.allow_hijacking_localhost
8414 type: RelaxedAtomicBool
8418 # Allow CookieJarSettings to be unblocked for channels without a document.
8419 # This is for testing only.
8420 - name: network.cookieJarSettings.unblocked_for_testing
8425 - name: network.predictor.enable-hover-on-ssl
8430 - name: network.predictor.enable-prefetch
8435 - name: network.predictor.page-degradation.day
8439 - name: network.predictor.page-degradation.week
8443 - name: network.predictor.page-degradation.month
8447 - name: network.predictor.page-degradation.year
8451 - name: network.predictor.page-degradation.max
8456 - name: network.predictor.subresource-degradation.day
8460 - name: network.predictor.subresource-degradation.week
8464 - name: network.predictor.subresource-degradation.month
8468 - name: network.predictor.subresource-degradation.year
8472 - name: network.predictor.subresource-degradation.max
8477 - name: network.predictor.prefetch-rolling-load-count
8482 - name: network.predictor.prefetch-min-confidence
8486 - name: network.predictor.preconnect-min-confidence
8490 - name: network.predictor.preresolve-min-confidence
8495 - name: network.predictor.prefetch-force-valid-for
8500 - name: network.predictor.max-resources-per-entry
8505 # This is selected in concert with max-resources-per-entry to keep memory
8506 # usage low-ish. The default of the combo of the two is ~50k.
8507 - name: network.predictor.max-uri-length
8513 - name: network.predictor.doing-tests
8518 # Enables `<link rel="preload">` tag and `Link: rel=preload` response header handling.
8519 - name: network.preload
8520 type: RelaxedAtomicBool
8524 # Whether to use the network process or not
8525 # Start a separate socket process. Performing networking on the socket process
8526 # is control by a sepparate pref
8527 # ("network.http.network_access_on_socket_process.enabled").
8528 # Changing these prefs requires a restart.
8529 - name: network.process.enabled
8530 type: RelaxedAtomicBool
8532 #if defined(ANDROID) || defined(MOZ_THUNDERBIRD)
8533 value: false # see bug 1641427
8535 value: @IS_EARLY_BETA_OR_EARLIER@
8538 # Whether we can send OnDataAvailable to content process directly.
8539 - name: network.send_ODA_to_content_directly
8540 type: RelaxedAtomicBool
8544 # Perform all network access on the socket process.
8545 # The pref requires "network.process.enabled" to be true.
8546 # Changing these prefs requires a restart.
8547 - name: network.http.network_access_on_socket_process.enabled
8548 type: RelaxedAtomicBool
8552 # Telemetry of traffic categories. Whether or not to enable HttpTrafficAnalyzer.
8553 - name: network.traffic_analyzer.enabled
8554 type: RelaxedAtomicBool
8558 # Whether DNS resolution is limited to literals and cached entries.
8559 - name: network.dns.disabled
8560 type: RelaxedAtomicBool
8564 # Whether DNS resolution is limited to literals and cached entries.
8565 - name: network.dns.skipTRR-when-parental-control-enabled
8566 type: RelaxedAtomicBool
8570 - name: network.dns.disablePrefetchFromHTTPS
8575 # Max time to shutdown the resolver threads
8576 - name: network.dns.resolver_shutdown_timeout_ms
8581 # When true on Windows DNS resolutions for single label domains
8582 # (domains that don't contain a dot) will be resolved using the DnsQuery
8583 # API instead of PR_GetAddrInfoByName
8584 - name: network.dns.dns_query_single_label
8585 type: RelaxedAtomicBool
8589 # The proxy type. See nsIProtocolProxyService.idl
8590 # PROXYCONFIG_DIRECT = 0
8591 # PROXYCONFIG_MANUAL = 1
8592 # PROXYCONFIG_PAC = 2
8593 # PROXYCONFIG_WPAD = 4
8594 # PROXYCONFIG_SYSTEM = 5
8595 - name: network.proxy.type
8596 type: RelaxedAtomicUint32
8600 # Whether the SOCKS proxy should be in charge of DNS resolution.
8601 - name: network.proxy.socks_remote_dns
8602 type: RelaxedAtomicBool
8606 # Some requests during a page load are marked as "tail", mainly trackers, but not only.
8607 # This pref controls whether such requests are put to the tail, behind other requests
8608 # emerging during page loading process.
8609 - name: network.http.tailing.enabled
8614 # Whether to run proxy checks when processing Alt-Svc headers.
8615 - name: network.http.altsvc.proxy_checks
8620 - name: network.http.stale_while_revalidate.enabled
8621 type: RelaxedAtomicBool
8625 # Whether to cache SSL resumption tokens in necko.
8626 - name: network.ssl_tokens_cache_enabled
8627 type: RelaxedAtomicBool
8628 value: @IS_NIGHTLY_BUILD@
8631 # Capacity of the above cache, in kilobytes.
8632 - name: network.ssl_tokens_cache_capacity
8633 type: RelaxedAtomicUint32
8637 # The maximum allowed length for a URL - 1MB default.
8638 - name: network.standard-url.max-length
8639 type: RelaxedAtomicUint32
8643 # Single TRR request timeout, in milliseconds
8644 - name: network.trr.request_timeout_ms
8645 type: RelaxedAtomicUint32
8649 # Single TRR request timeout, in milliseconds for mode 3
8650 - name: network.trr.request_timeout_mode_trronly_ms
8651 type: RelaxedAtomicUint32
8655 # Whether to send the Accept-Language header for TRR requests
8656 - name: network.trr.send_accept-language_headers
8657 type: RelaxedAtomicBool
8661 # Whether to send an empty Accept-Encoding header for TRR requests
8662 - name: network.trr.send_empty_accept-encoding_headers
8663 type: RelaxedAtomicBool
8667 # Whether to send the User-Agent header for TRR requests
8668 - name: network.trr.send_user-agent_headers
8669 type: RelaxedAtomicBool
8673 # This pref controls whether to use TRRServiceChannel off main thread.
8674 - name: network.trr.fetch_off_main_thread
8675 type: RelaxedAtomicBool
8679 # If this pref is false, a task will be dispatched to remove the file from the
8680 # disk and the pref will be set to true.
8681 # It can probably be removed after a few releases.
8682 - name: network.trr.blocklist_cleanup_done
8683 type: RelaxedAtomicBool
8687 # If we should wait for captive portal confirmation before enabling TRR
8688 - name: network.trr.wait-for-portal
8689 type: RelaxedAtomicBool
8693 # Use GET (rather than POST)
8694 - name: network.trr.useGET
8695 type: RelaxedAtomicBool
8699 # Allow RFC1918 address in responses?
8700 - name: network.trr.allow-rfc1918
8701 type: RelaxedAtomicBool
8705 # Allow AAAA entries to be used "early", before the A results are in
8706 - name: network.trr.early-AAAA
8707 type: RelaxedAtomicBool
8711 # When true, it only sends AAAA when the system has IPv6 connectivity
8712 - name: network.trr.skip-AAAA-when-not-supported
8713 type: RelaxedAtomicBool
8717 # Whether to apply split horizon mitigations when using TRR.
8718 # These include adding the DNS suffix to the excluded domains
8719 - name: network.trr.split_horizon_mitigations
8720 type: RelaxedAtomicBool
8724 # When true, the DNS request will wait for both A and AAAA responses
8725 # (if both have been requested) before notifying the listeners.
8726 # When true, it effectively cancels `network.trr.early-AAAA`
8727 - name: network.trr.wait-for-A-and-AAAA
8728 type: RelaxedAtomicBool
8732 # Explicitly disable ECS (EDNS Client Subnet, RFC 7871)
8733 - name: network.trr.disable-ECS
8734 type: RelaxedAtomicBool
8738 # When true, the DNS+TRR cache will be cleared when a relevant TRR pref
8739 # changes. (uri, bootstrapAddress, excluded-domains)
8740 - name: network.trr.clear-cache-on-pref-change
8741 type: RelaxedAtomicBool
8745 # After this many failed TRR requests in a row, consider TRR borked
8746 - name: network.trr.max-fails
8747 type: RelaxedAtomicUint32
8751 # When the TRR confirmation is set to CONFIRM_FAILED due to many failures in
8752 # a row, we set a timer to retry. This has an exponential backoff up to
8754 - name: network.trr.retry-timeout-ms
8755 type: RelaxedAtomicUint32
8759 # Retry with no TRR when the response contained only 0.0.0.0 or ::
8760 - name: network.trr.fallback-on-zero-response
8761 type: RelaxedAtomicBool
8765 # If true we parse the /etc/hosts file and exclude any host names from TRR.
8766 # Reading the file is only done once, when TRR is first enabled - this could be
8767 # soon after startup or when the pref is flipped.
8768 - name: network.trr.exclude-etc-hosts
8769 type: RelaxedAtomicBool
8773 # Whether to enable odoh.
8774 - name: network.trr.odoh.enabled
8775 type: RelaxedAtomicBool
8779 # The uri of Oblivious Proxy.
8780 - name: network.trr.odoh.proxy_uri
8785 # The host name of Oblivious Target.
8786 - name: network.trr.odoh.target_host
8791 # The uri path of the odoh uri.
8792 - name: network.trr.odoh.target_path
8797 # Allow the network changed event to get sent when a network topology or setup
8798 # change is noticed while running.
8799 - name: network.notify.changed
8800 type: RelaxedAtomicBool
8804 # Allow network detection of IPv6 related changes (bug 1245059)
8805 - name: network.notify.IPv6
8806 type: RelaxedAtomicBool
8814 # Whether to check the dnsSuffix on network changes
8815 - name: network.notify.dnsSuffixList
8816 type: RelaxedAtomicBool
8820 # Whether to check the registry for proxies on network changes that indicate
8821 # that TRR should not be used.
8822 - name: network.notify.checkForProxies
8823 type: RelaxedAtomicBool
8827 # Whether to check the registry for NRPT rules on network changes that
8828 # indicate that TRR should not be used.
8829 - name: network.notify.checkForNRPT
8830 type: RelaxedAtomicBool
8834 # Whether NotifyIpInterfaceChange should be called immediately after
8835 # registration in order to record the initial state of the network adapters.
8836 - name: network.notify.initial_call
8837 type: RelaxedAtomicBool
8841 # Whether to use the rust implemented DefaultURI for unknown scheme types
8842 - name: network.url.useDefaultURI
8843 type: RelaxedAtomicBool
8847 # Force remapping of remote port numbers to allow reaching local testing
8848 # servers or port forwarders listening on non-standard ports. Note that
8849 # this is not changing the origin URL in the addressbar, only internally
8850 # the port number used. This is intended to be used along with the
8851 # `network.dns.forceResolve` preference.
8854 # "80,443,808-888=8080; 563=8081"
8855 # this will remap ports for HTTP, HTTPS and the range of 808-888 included
8856 # to use port 8080, and port 563 to go to 8081.
8857 - name: network.socket.forcePort
8862 # Receive buffer size of QUIC socket
8863 - name: network.http.http3.recvBufferSize
8864 type: RelaxedAtomicInt32
8868 - name: network.http.http3.enable_qlog
8869 type: RelaxedAtomicBool
8873 # When a h3 transaction is inserted in the pending queue, the time (ms) we wait
8874 # to create a TCP backup connection.
8875 - name: network.http.http3.backup_timer_delay
8876 type: RelaxedAtomicUint32
8880 # When true, a http request will be upgraded to https when HTTPS RR is
8882 - name: network.dns.upgrade_with_https_rr
8883 type: RelaxedAtomicBool
8887 # Whether to use HTTPS RR as AltSvc
8888 - name: network.dns.use_https_rr_as_altsvc
8889 type: RelaxedAtomicBool
8893 # Whether to check for NAT64 using the system resolver
8894 - name: network.connectivity-service.nat64-check
8899 # Manually enter the NAT64 prefix that will be used if IPv4 is unavailable.
8900 # The value is formatted as IPv6 with the least significant bits to be dropped.
8901 # For example, 64:ff9b:: is a common prefix. This will not disable
8902 # the NAT64 check, although the value of this pref will be prioritized.
8903 - name: network.connectivity-service.nat64-prefix
8908 # Whether to enable echconfig.
8909 - name: network.dns.echconfig.enabled
8910 type: RelaxedAtomicBool
8914 # This pref needs to be worked together with network.dns.echconfig.enabled
8915 # being true and there is no record without ECHConfig.
8916 # When we try all records with ECHConfig in HTTPS RRs and still can't connect,
8917 # this pref indicate whether we can fallback to the origin server.
8918 - name: network.dns.echconfig.fallback_to_origin_when_all_failed
8919 type: RelaxedAtomicBool
8923 # When true, reset the exclusion list when all records are excluded.
8924 - name: network.dns.httpssvc.reset_exclustion_list
8925 type: RelaxedAtomicBool
8929 # If the http3 connection cannot be ready after the timeout value here, the
8930 # transaction will start another non-http3 conneciton.
8931 # Setting this value to 0 indicates this feature is disabled.
8932 - name: network.dns.httpssvc.http3_fast_fallback_timeout
8933 type: RelaxedAtomicUint32
8937 # Whether to use https rr for speculative connections.
8938 - name: network.dns.use_https_rr_for_speculative_connection
8939 type: RelaxedAtomicBool
8943 - name: network.cache.frecency_array_check_enabled
8944 type: RelaxedAtomicBool
8945 value: @IS_EARLY_BETA_OR_EARLIER@
8948 #---------------------------------------------------------------------------
8949 # Prefs starting with "nglayout."
8950 #---------------------------------------------------------------------------
8952 # Enable/disable display list invalidation logging --- useful for debugging.
8953 - name: nglayout.debug.invalidation
8958 # Enable/disable widget update area flashing --- only supported with
8959 # BasicLayers (other layer managers always update the entire widget area).
8960 - name: nglayout.debug.widget_update_flashing
8961 type: RelaxedAtomicBool
8965 #---------------------------------------------------------------------------
8966 # Prefs starting with "page_load."
8967 #---------------------------------------------------------------------------
8969 # Time in milliseconds during which certain tasks are deprioritized during
8971 - name: page_load.deprioritization_period
8972 type: RelaxedAtomicUint32
8976 #---------------------------------------------------------------------------
8977 # Prefs starting with "permissions."
8978 #---------------------------------------------------------------------------
8980 # 1-Accept, 2-Deny, Any other value: Accept
8981 - name: permissions.default.image
8982 type: RelaxedAtomicUint32
8986 - name: permissions.delegation.enabled
8991 - name: permissions.isolateBy.userContext
8992 type: RelaxedAtomicBool
8996 - name: permissions.isolateBy.privateBrowsing
8997 type: RelaxedAtomicBool
8998 value: @IS_EARLY_BETA_OR_EARLIER@
9001 #---------------------------------------------------------------------------
9002 # Prefs starting with "plain_text."
9003 #---------------------------------------------------------------------------
9005 # When false, text in plaintext documents does not wrap long lines.
9006 - name: plain_text.wrap_long_lines
9011 #---------------------------------------------------------------------------
9012 # Prefs starting with "plugin."
9013 #---------------------------------------------------------------------------
9015 # Whether sending WM_MOUSEWHEEL and WM_MOUSEHWHEEL to plugins on Windows.
9016 - name: plugin.mousewheel.enabled
9021 - name: plugin.state.flash
9023 # Flash is Click-to-Activate by default on all channels. Disabled for ARM builds.
9024 #if defined(_ARM64_) && defined(XP_WIN)
9031 #---------------------------------------------------------------------------
9032 # Prefs starting with "plugins."
9033 #---------------------------------------------------------------------------
9035 - name: plugins.flashBlock.enabled
9040 - name: plugins.http_https_only
9045 #---------------------------------------------------------------------------
9046 # Prefs starting with "preferences."
9047 #---------------------------------------------------------------------------
9049 - name: preferences.allow.omt-write
9055 # If set to true, setting a Preference matched to a `Once` StaticPref will
9056 # assert that the value matches. Such assertion being broken is a clear flag
9057 # that the Once policy shouldn't be used.
9058 - name: preferences.check.once.policy
9063 # If set to true, StaticPrefs Once policy check will be skipped during
9064 # automation regression test. Use with care. This pref must be set back to
9065 # false as soon as specific test has completed.
9066 - name: preferences.force-disable.check.once.policy
9072 #---------------------------------------------------------------------------
9073 # Prefs starting with "print."
9074 #---------------------------------------------------------------------------
9076 # Variation fonts can't always be embedded in certain output formats
9077 # such as PDF. To work around this, draw the variation fonts using
9078 # paths instead of using font embedding.
9079 - name: print.font-variations-as-paths
9080 type: RelaxedAtomicBool
9084 # Whether we always print silently (without a print dialog).
9085 - name: print.always_print_silent
9086 type: RelaxedAtomicBool
9090 # Whether tab_modal print UI is enabled.
9092 # The tab modal print dialog is currently only for early beta or nightly.
9093 - name: print.tab_modal.enabled
9094 type: RelaxedAtomicBool
9095 value: @IS_EARLY_BETA_OR_EARLIER@
9098 # Whether the pages per sheet print setting is enabled.
9099 - name: print.pages_per_sheet.enabled
9100 type: RelaxedAtomicBool
9104 # Whether we allow the print progress dialog to show up.
9105 - name: print.show_print_progress
9106 type: RelaxedAtomicBool
9110 # The default DPI for printing.
9112 # For PDF-based output, DPI should ideally be irrelevant, but in fact it is not
9113 # for multiple reasons:
9115 # * Layout code that tries to respect device pixels (e.g. for snapping glyph
9116 # positions and baselines, and especially for the "GDI Classic"
9117 # rendering-mode threshold for certain fonts).
9119 # * The limitations of the PDF format mean that we can't natively represent
9120 # certain effects, such as filters, in PDF output, so we need to rasterize
9121 # the parts of the document with these applied.
9123 # * Other rasterized things like images and such are also affected by DPI
9124 # (both in the output, and the images we select via srcset, for example).
9126 # Therefore, using a high DPI is preferable. For now, we use 144dpi to match
9127 # physical printer output on Windows, but higher (e.g. 300dpi) might be better
9128 # if it does not lead to issues such as excessive memory use.
9129 - name: print.default_dpi
9134 # Whether support for monochrome printing is enabled for CUPS.
9135 - name: print.cups.monochrome.enabled
9136 type: RelaxedAtomicBool
9140 #---------------------------------------------------------------------------
9141 # Prefs starting with "privacy."
9142 #---------------------------------------------------------------------------
9144 - name: privacy.file_unique_origin
9149 - name: privacy.fuzzyfox.clockgrainus
9150 type: RelaxedAtomicUint32
9154 # Annotate trackers using the strict list. If set to false, the basic list will
9156 - name: privacy.annotate_channels.strict_list.enabled
9158 value: @IS_EARLY_BETA_OR_EARLIER@
9161 # First Party Isolation (double keying), disabled by default.
9162 - name: privacy.firstparty.isolate
9163 type: RelaxedAtomicBool
9167 # If false, two windows in the same domain with different first party domains
9168 # (top level URLs) can access resources through window.opener. This pref is
9169 # effective only when "privacy.firstparty.isolate" is true.
9170 - name: privacy.firstparty.isolate.restrict_opener_access
9171 type: RelaxedAtomicBool
9175 - name: privacy.firstparty.isolate.block_post_message
9176 type: RelaxedAtomicBool
9180 - name: privacy.firstparty.isolate.use_site
9181 type: RelaxedAtomicBool
9185 # Enforce tracking protection in all modes.
9186 - name: privacy.trackingprotection.enabled
9191 # Enforce tracking protection in Private Browsing mode.
9192 - name: privacy.trackingprotection.pbmode.enabled
9197 # Annotate channels based on the tracking protection list in all modes
9198 - name: privacy.trackingprotection.annotate_channels
9203 # Block 3rd party fingerprinting resources.
9204 - name: privacy.trackingprotection.fingerprinting.enabled
9209 # Block 3rd party cryptomining resources.
9210 - name: privacy.trackingprotection.cryptomining.enabled
9215 # Block 3rd party socialtracking resources.
9216 - name: privacy.trackingprotection.socialtracking.enabled
9221 # Consider socialtracking annotation as trackers (see ETP).
9222 - name: privacy.socialtracking.block_cookies.enabled
9227 # Whether Origin Telemetry should be enabled.
9228 # NOTE: if telemetry.origin_telemetry_test_mode.enabled is enabled, this pref
9229 # won't have any effect.
9230 - name: privacy.trackingprotection.origin_telemetry.enabled
9231 type: RelaxedAtomicBool
9232 value: @IS_NIGHTLY_BUILD@
9235 - name: privacy.trackingprotection.testing.report_blocked_node
9236 type: RelaxedAtomicBool
9240 # Whether to spoof user locale to English (used as part of Resist
9245 - name: privacy.spoof_english
9246 type: RelaxedAtomicUint32
9250 # Send "do not track" HTTP header, disabled by default.
9251 - name: privacy.donottrackheader.enabled
9256 # Lower the priority of network loads for resources on the tracking protection
9257 # list. Note that this requires the
9258 # privacy.trackingprotection.annotate_channels pref to be on in order to have
9260 - name: privacy.trackingprotection.lower_network_priority
9262 value: @IS_NIGHTLY_BUILD@
9265 # A subset of Resist Fingerprinting protections focused specifically on timers.
9266 # This affects the Animation API, the performance APIs, Date.getTime,
9267 # Event.timestamp, File.lastModified, audioContext.currentTime,
9268 # canvas.captureStream.currentTime.
9269 - name: privacy.reduceTimerPrecision
9270 type: RelaxedAtomicBool
9274 # If privacy.reduceTimerPrecision is false, this pref controls whether or not
9275 # to clamp all timers at a fixed 20 microsconds. It should always be enabled,
9276 # and is only specified as a pref to enable an emergency disabling in the event
9277 # of catastrophic failure.
9278 - name: privacy.reduceTimerPrecision.unconditional
9279 type: RelaxedAtomicBool
9283 # The resistFingerprinting variables are marked with 'Relaxed' memory ordering.
9284 # We don't particurally care that threads have a percently consistent view of
9285 # the values of these prefs. They are not expected to change often, and having
9286 # an outdated view is not particurally harmful. They will eventually become
9289 # The variables will, however, be read often (specifically .microseconds on
9290 # each timer rounding) so performance is important.
9292 - name: privacy.resistFingerprinting
9293 type: RelaxedAtomicBool
9297 # We automatically decline canvas permission requests if they are not initiated
9298 # from user input. Just in case that breaks something, we allow the user to
9299 # revert this behavior with this obscure pref. We do not intend to support this
9300 # long term. If you do set it, to work around some broken website, please file
9301 # a bug with information so we can understand why it is needed.
9302 - name: privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts
9307 # Whether canvas extraction should result in random data. If false, canvas
9308 # extraction results in all-white, opaque pixel data.
9309 - name: privacy.resistFingerprinting.randomDataOnCanvasExtract
9310 type: RelaxedAtomicBool
9314 # The log level for browser console messages logged in RFPHelper.jsm. Change to
9315 # 'All' and restart to see the messages.
9316 - name: privacy.resistFingerprinting.jsmloglevel
9321 # Enable jittering the clock one precision value forward.
9322 - name: privacy.resistFingerprinting.reduceTimerPrecision.jitter
9323 type: RelaxedAtomicBool
9327 # Dynamically tune the resolution of the timer reduction for
9328 # `privacy.reduceTimerPrecision` and `privacy.resistFingerprinting`.
9329 - name: privacy.resistFingerprinting.reduceTimerPrecision.microseconds
9330 type: RelaxedAtomicUint32
9334 - name: privacy.resistFingerprinting.target_video_res
9339 # Anti-tracking permission expiration.
9340 - name: privacy.restrict3rdpartystorage.expiration
9342 value: 2592000 # 30 days (in seconds)
9345 # Report Anti-tracking warnings to console lazily
9346 - name: privacy.restrict3rdpartystorage.console.lazy
9351 # Enable the heuristic to allow storage access for windows opened using window.open() after user interaction
9352 - name: privacy.restrict3rdpartystorage.heuristic.opened_window_after_interaction
9357 # Enable the heuristic to allow storage access for windows opened using window.open()
9358 - name: privacy.restrict3rdpartystorage.heuristic.window_open
9363 # Enable the heuristic to allow storage access for windows opened using window.open()
9364 - name: privacy.restrict3rdpartystorage.heuristic.redirect
9369 # Anti-tracking permission expiration.
9370 - name: privacy.restrict3rdpartystorage.expiration_redirect
9372 value: 900 # 15 minutes
9375 # Anti-tracking user-interaction expiration.
9376 - name: privacy.userInteraction.expiration
9378 value: 3888000 # 45 days (in seconds)
9381 # Anti-tracking user-interaction document interval.
9382 - name: privacy.userInteraction.document.interval
9384 value: 1800 # 30 minutes (in seconds)
9387 # Enable Anti-tracking testing. When it enables, it will notify the observers
9388 # when user-interaction permission or storage access permission is added. This
9389 # is for testing only.
9390 - name: privacy.antitracking.testing
9395 # Enable the heuristic to allow storage access for recent visited pages
9396 - name: privacy.restrict3rdpartystorage.heuristic.recently_visited
9401 # Valid time gap since last visit
9402 - name: privacy.restrict3rdpartystorage.heuristic.recently_visited_time
9404 value: 600 # 10 minutes
9407 # Recent visited pages redirection permission expiration.
9408 - name: privacy.restrict3rdpartystorage.expiration_visited
9410 value: 2592000 # 30 days (in seconds)
9413 # Maximum client-side cookie life-time cap. Measured in seconds, set to 0 to
9415 - name: privacy.documentCookies.maxage
9420 - name: privacy.storagePrincipal.enabledForTrackers
9421 type: RelaxedAtomicBool
9425 - name: privacy.window.maxInnerWidth
9430 - name: privacy.window.maxInnerHeight
9435 - name: privacy.sanitize.sanitizeOnShutdown
9436 type: RelaxedAtomicBool
9440 - name: privacy.clearOnShutdown.cache
9441 type: RelaxedAtomicBool
9445 - name: privacy.dynamic_firstparty.limitForeign
9446 type: RelaxedAtomicBool
9450 - name: privacy.dynamic_firstparty.use_site
9451 type: RelaxedAtomicBool
9455 - name: privacy.partition.network_state
9456 type: RelaxedAtomicBool
9460 - name: privacy.partition.bloburl_per_agent_cluster
9461 type: RelaxedAtomicBool
9462 value: @IS_NIGHTLY_BUILD@
9465 - name: privacy.window.name.update.enabled
9470 # By default, the network state isolation is not active when there is a proxy
9471 # setting. This pref forces the network isolation even in these scenarios.
9472 - name: privacy.partition.network_state.connection_with_proxy
9477 #---------------------------------------------------------------------------
9478 # Prefs starting with "prompts."
9479 #---------------------------------------------------------------------------
9481 # Prompt modal type prefs
9482 # See nsIPromptService::MODAL_TYPE fields for possible values.
9484 # Insecure form submit warning.
9485 - name: prompts.modalType.insecureFormSubmit
9490 # nsHttpChannelAuthProvider#ConfirmAuth anti-phishing prompts.
9491 - name: prompts.modalType.confirmAuth
9496 #---------------------------------------------------------------------------
9497 # Prefs starting with "security."
9498 #---------------------------------------------------------------------------
9500 # Mochitests that need to load resource:// URIs not declared content-accessible
9501 # in manifests should set this pref.
9502 - name: security.all_resource_uri_content_accessible
9507 - name: security.bad_cert_domain_error.url_fix_enabled
9512 - name: security.csp.enable
9517 - name: security.csp.reporting.script-sample.max-length
9522 # Allows loading ui resources in CheckLoadURIFlags
9523 # TODO Bug 1654488: Remove pref in CheckLoadURIFlags
9524 # which allows all UI resources to load
9525 - name: security.caps.allow_uri_is_ui_resource_in_checkloaduriflags
9530 # If true, all toplevel data: URI navigations will be blocked.
9531 # Please note that manually entering a data: URI in the
9532 # URL-Bar will not be blocked when flipping this pref.
9533 - name: security.data_uri.block_toplevel_data_uri_navigations
9538 # Whether window A is allowed to navigate cross-origin window B (that is not
9539 # a descendant frame of A) to a URI that loads externally.
9540 - name: security.allow_disjointed_external_uri_loads
9545 # Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but
9546 # not allowed for Firefox Desktop in firefox.js
9547 - name: security.allow_parent_unrestricted_js_loads
9548 type: RelaxedAtomicBool
9552 # Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but
9553 # not allowed for Firefox Desktop in firefox.js
9554 - name: security.allow_eval_with_system_principal
9555 type: RelaxedAtomicBool
9559 # Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but
9560 # not allowed for Firefox Desktop in firefox.js
9561 - name: security.allow_eval_in_parent_process
9562 type: RelaxedAtomicBool
9566 # Disallowed by default, ensure not disallowed content is loaded in the parent
9568 - name: security.allow_unsafe_parent_loads
9573 # Pref to block mixed scripts (fonts, plugin content, scripts, stylesheets,
9574 # iframes, websockets, XHR).
9575 - name: security.mixed_content.block_active_content
9580 # Pref to block sub requests that happen within an object.
9581 - name: security.mixed_content.block_object_subrequest
9586 # Pref for mixed display content blocking (images, audio, video).
9587 - name: security.mixed_content.block_display_content
9592 # Pref for mixed display content upgrading (images, audio, video).
9593 - name: security.mixed_content.upgrade_display_content
9595 value: @IS_NIGHTLY_BUILD@
9598 # Whether strict file origin policy is in effect. "False" is traditional.
9599 - name: security.fileuri.strict_origin_policy
9600 type: RelaxedAtomicBool
9605 # The level to which we sandbox the content process. firefox.js sets the
9606 # default to different values on a per-OS basis, and has documentation
9607 # on what the defaults are and what the numbers mean.
9608 - name: security.sandbox.content.level
9612 do_not_use_directly: true # Consumers should use SandboxSettings to ask.
9614 - name: security.sandbox.socket.process.level
9618 do_not_use_directly: true # Consumers should use SandboxSettings to ask.
9620 #if defined(XP_WIN) && defined(MOZ_SANDBOX)
9621 # Whether win32k is disabled for content processes.
9622 # true means win32k system calls are not permitted.
9623 - name: security.sandbox.content.win32k-disable
9624 type: RelaxedAtomicBool
9628 # Note: win32k is currently _not_ disabled for GMP due to intermittent test
9629 # failures, where the GMP process fails very early. See bug 1449348.
9630 - name: security.sandbox.gmp.win32k-disable
9631 type: RelaxedAtomicBool
9635 # Whether win32k is disabled for socket processes.
9636 # true means win32k system calls are not permitted.
9637 - name: security.sandbox.socket.win32k-disable
9638 type: RelaxedAtomicBool
9642 # Whether CET Shadow Stacks Strict mode is enabled for the content processes.
9643 - name: security.sandbox.content.shadow-stacks-strict
9644 type: RelaxedAtomicBool
9648 # Whether CET Shadow Stacks Strict mode is enabled for the RDD processes.
9649 - name: security.sandbox.rdd.shadow-stacks-strict
9650 type: RelaxedAtomicBool
9654 # Whether CET Shadow Stacks Strict mode is enabled for the socket processes.
9655 - name: security.sandbox.socket.shadow-stacks-strict
9656 type: RelaxedAtomicBool
9660 # Whether CET Shadow Stacks Strict mode is enabled for the GPU processes.
9661 - name: security.sandbox.gpu.shadow-stacks-strict
9662 type: RelaxedAtomicBool
9666 # Whether CET Shadow Stacks Strict mode is enabled for the GMP processes.
9667 - name: security.sandbox.gmp.shadow-stacks-strict
9668 type: RelaxedAtomicBool
9672 # This controls the depth of stack trace that is logged when Windows sandbox
9673 # logging is turned on. This is only currently available for the content
9674 # process because the only other sandbox (for GMP) has too strict a policy to
9675 # allow stack tracing. This does not require a restart to take effect.
9676 - name: security.sandbox.windows.log.stackTraceDepth
9677 type: RelaxedAtomicUint32
9682 #if defined(XP_LINUX) && defined(MOZ_SANDBOX)
9683 # Run content processes in headless mode and disallow connections to
9684 # the X server. Experimental; breaks WebGL and Flash, and requires
9685 # `widget.disable-native-theme-for-content` and `widget.remote-look-and-feel`.
9686 # Changing it requires a restart because sandbox policy information dependent
9687 # on it is cached. See bug 1640345 for details.
9688 - name: security.sandbox.content.headless
9694 # Pref to show warning when submitting from secure to insecure.
9695 - name: security.warn_submit_secure_to_insecure
9700 # Hardware Origin-bound Second Factor Support
9701 - name: security.webauth.webauthn
9706 # Navigate-to CSP 3 directive
9707 - name: security.csp.enableNavigateTo
9712 # No way to enable on Android, Bug 1552602
9713 - name: security.webauth.u2f
9715 value: @IS_NOT_ANDROID@
9718 # Block Worker/SharedWorker scripts with wrong MIME type.
9719 - name: security.block_Worker_with_wrong_mime
9724 # Cancel outgoing requests from SystemPrincipal
9725 - name: security.cancel_non_local_loads_triggered_by_systemprincipal
9730 #---------------------------------------------------------------------------
9731 # Prefs starting with "slider."
9732 #---------------------------------------------------------------------------
9734 # Scrollbar snapping region.
9736 # - 1 and higher: slider thickness multiple
9737 - name: slider.snapMultiplier
9746 #---------------------------------------------------------------------------
9747 # Prefs starting with "storage."
9748 #---------------------------------------------------------------------------
9750 # Whether to use a non-exclusive VFS.
9751 # By default we use the unix-excl VFS, for the following reasons:
9752 # 1. It improves compatibility with NFS shares, whose implementation
9753 # is incompatible with SQLite's locking requirements (reliable fcntl), and
9754 # in particular with WAL journaling.
9755 # Bug 433129 attempted to automatically identify such file-systems,
9756 # but a reliable way was not found and the fallback locking is slower than
9757 # POSIX locking, so we do not want to do it by default.
9758 # 2. It allows wal mode to avoid the memory mapped -shm file, reducing the
9759 # likelihood of SIGBUS failures when disk space is exhausted.
9760 # 3. It provides some protection from third party database tampering while a
9761 # connection is open.
9762 # Note there's no win32-excl VFS, so this has no effect on Windows.
9763 - name: storage.sqlite.exclusiveLock.enabled
9764 type: RelaxedAtomicBool
9765 value: @IS_NOT_ANDROID@
9768 #---------------------------------------------------------------------------
9769 # Prefs starting with "svg."
9770 #---------------------------------------------------------------------------
9772 # This pref controls whether the 'context-fill' and 'context-stroke' keywords
9773 # can be used in SVG-as-an-image in the content processes to use the fill/
9774 # stroke specified on the element that embeds the image. (These keywords are
9775 # always enabled in the chrome process, regardless of this pref.) Also, these
9776 # keywords are currently not part of any spec, which is partly why we disable
9777 # them for web content.
9778 - name: svg.context-properties.content.enabled
9783 # Enable the use of display-lists for SVG hit-testing.
9784 - name: svg.display-lists.hit-testing.enabled
9789 # Enable the use of display-lists for SVG painting.
9790 - name: svg.display-lists.painting.enabled
9795 # Is support for the new getBBox method from SVG 2 enabled?
9796 # See https://svgwg.org/svg2-draft/single-page.html#types-SVGBoundingBoxOptions
9797 - name: svg.new-getBBox.enabled
9802 # Is support for letter-spacing and word-spacing in SVG text enabled?
9803 - name: svg.text-spacing.enabled
9808 #---------------------------------------------------------------------------
9809 # Prefs starting with "telemetry."
9810 #---------------------------------------------------------------------------
9812 # Enable origin telemetry test mode or not
9813 # NOTE: turning this on will override the
9814 # privacy.trackingprotection.origin_telemetry.enabled pref.
9815 - name: telemetry.origin_telemetry_test_mode.enabled
9816 type: RelaxedAtomicBool
9820 - name: telemetry.number_of_site_origin.min_interval
9825 - name: telemetry.fog.test.localhost_port
9826 type: RelaxedAtomicInt32
9831 #---------------------------------------------------------------------------
9832 # Prefs starting with "test."
9833 #---------------------------------------------------------------------------
9835 - name: test.events.async.enabled
9836 type: RelaxedAtomicBool
9840 - name: test.mousescroll
9841 type: RelaxedAtomicBool
9845 #---------------------------------------------------------------------------
9846 # Prefs starting with "thread."
9847 #---------------------------------------------------------------------------
9849 - name: threads.medium_high_event_queue.enabled
9850 type: RelaxedAtomicBool
9854 #---------------------------------------------------------------------------
9855 # Prefs starting with "toolkit."
9856 #---------------------------------------------------------------------------
9858 # Returns true if BHR is disabled.
9859 - name: toolkit.content-background-hang-monitor.disabled
9864 - name: toolkit.scrollbox.horizontalScrollDistance
9865 type: RelaxedAtomicInt32
9869 - name: toolkit.scrollbox.verticalScrollDistance
9870 type: RelaxedAtomicInt32
9874 # The lateWriteChecksStage and fastShutdownStage below represent the stage
9875 # of shutdown after which we (for lateWriteChecksStage) crash / gather
9876 # telemetry data on file writes, or (for fastShutdownStage) we call _exit(0).
9877 # Higher values are earlier during shutdown, and the full enumeration can
9878 # be found in AppShutdown.h in the AppShutdownPhase enum.
9879 - name: toolkit.shutdown.lateWriteChecksStage
9881 #ifdef MOZ_CODE_COVERAGE
9888 # See the comment above toolkit.shutdown.lateWriteChecksStage. A higher value
9889 # for this pref means we call _exit(0) earlier during shutdown.
9890 - name: toolkit.shutdown.fastShutdownStage
9892 #if !defined(DEBUG) && !defined(MOZ_ASAN) && !defined(MOZ_TSAN) && !defined(MOZ_CODE_COVERAGE) && !defined(MOZ_VALGRIND) && !defined(MOZ_PROFILE_GENERATE) && !defined(JS_STRUCTURED_SPEW)
9893 #ifdef NIGHTLY_BUILD
9903 # Sending each remote accumulation immediately places undue strain on the IPC
9904 # subsystem. Batch the remote accumulations for a period of time before sending
9905 # them all at once. This value was chosen as a balance between data timeliness
9906 # and performance (see bug 1218576).
9907 - name: toolkit.telemetry.ipcBatchTimeout
9912 - name: toolkit.telemetry.geckoview.batchDurationMS
9913 type: RelaxedAtomicUint32
9917 - name: toolkit.telemetry.geckoview.maxBatchStalenessMS
9918 type: RelaxedAtomicUint32
9922 - name: toolkit.telemetry.geckoview.streaming
9923 type: RelaxedAtomicBool
9927 - name: toolkit.telemetry.testing.overrideProductsCheck
9928 type: RelaxedAtomicBool
9932 #---------------------------------------------------------------------------
9933 # Prefs starting with "ui."
9934 #---------------------------------------------------------------------------
9936 - name: ui.key.generalAccessKey
9941 # Only used if generalAccessKey is -1.
9942 - name: ui.key.chromeAccess
9945 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 3 = ctrl+shift, 8 = Meta
9948 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 5 = Alt+Shift,
9949 # 8 = Meta, 16 = Win
9954 # Only used if generalAccessKey is -1.
9955 - name: ui.key.contentAccess
9958 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 3 = ctrl+shift, 8 = Meta
9961 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 5 = Alt+Shift,
9962 # 8 = Meta, 16 = Win
9967 # Does the access key by itself focus the menu bar?
9968 - name: ui.key.menuAccessKeyFocuses
9970 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
9971 # On Windows and Linux, we now default to showing the menu bar only when alt
9979 # Duration of timeout of incremental search in menus (ms). 0 means infinite.
9980 - name: ui.menu.incremental_search.timeout
9985 # If true, all popups won't hide automatically on blur
9986 - name: ui.popup.disable_autohide
9987 type: RelaxedAtomicBool
9991 # Negate scroll, true will make the mouse scroll wheel move the screen the
9992 # same direction as with most desktops or laptops.
9993 - name: ui.scrolling.negate_wheel_scroll
9994 type: RelaxedAtomicBool
9998 # If the user puts a finger down on an element and we think the user might be
9999 # executing a pan gesture, how long do we wait before tentatively deciding the
10000 # gesture is actually a tap and activating the target element?
10001 - name: ui.touch_activation.delay_ms
10006 # If the user has clicked an element, how long do we keep the :active state
10007 # before it is cleared by the mouse sequences fired after a
10008 # touchstart/touchend.
10009 - name: ui.touch_activation.duration_ms
10014 - name: ui.use_native_colors
10015 type: RelaxedAtomicBool
10019 # Prevent system colors from being exposed to CSS or canvas.
10020 - name: ui.use_standins_for_native_colors
10021 type: RelaxedAtomicBool
10025 # Disable page loading activity cursor by default.
10026 - name: ui.use_activity_cursor
10031 # Whether context menus should only appear on mouseup instead of mousedown,
10032 # on OSes where they normally appear on mousedown (macOS, *nix).
10033 # Note: ignored on Windows (context menus always use mouseup).
10034 - name: ui.context_menus.after_mouseup
10039 # Whether click-hold context menus are enabled.
10040 - name: ui.click_hold_context_menus
10041 type: RelaxedAtomicBool
10045 # How long to wait for a drag gesture before displaying click-hold context menu,
10047 - name: ui.click_hold_context_menus.delay
10048 type: RelaxedAtomicInt32
10052 # When enabled, the touch.radius and mouse.radius prefs allow events to be
10053 # dispatched to nearby elements that are sensitive to the event. See
10054 # PositionedEventTargeting.cpp. The 'mm' prefs define a rectangle around the
10055 # nominal event target point within which we will search for suitable elements.
10056 # 'visitedWeight' is a percentage weight; a value > 100 makes a visited link be
10057 # treated as further away from the event target than it really is, while a
10058 # value < 100 makes a visited link be treated as closer to the event target
10059 # than it really is.
10061 - name: ui.touch.radius.enabled
10063 value: @IS_ANDROID@
10066 - name: ui.touch.radius.topmm
10075 - name: ui.touch.radius.rightmm
10084 - name: ui.touch.radius.bottommm
10093 - name: ui.touch.radius.leftmm
10102 - name: ui.touch.radius.visitedWeight
10107 - name: ui.mouse.radius.enabled
10109 value: @IS_ANDROID@
10112 - name: ui.mouse.radius.topmm
10121 - name: ui.mouse.radius.rightmm
10130 - name: ui.mouse.radius.bottommm
10139 - name: ui.mouse.radius.leftmm
10148 - name: ui.mouse.radius.visitedWeight
10153 - name: ui.mouse.radius.reposition
10155 value: @IS_ANDROID@
10158 # When true, the ui.mouse.radius.* prefs will only affect simulated mouse
10159 # events generated by touch input. When false, the prefs will be used for all
10161 - name: ui.mouse.radius.inputSource.touchOnly
10166 #---------------------------------------------------------------------------
10167 # Prefs starting with "urlclassifier."
10168 #---------------------------------------------------------------------------
10170 # Update server response timeout for Safe Browsing.
10171 - name: urlclassifier.update.response_timeout_ms
10176 # Download update timeout for Safe Browsing.
10177 - name: urlclassifier.update.timeout_ms
10182 #---------------------------------------------------------------------------
10183 # Prefs starting with "view_source."
10184 #---------------------------------------------------------------------------
10186 - name: view_source.editor.external
10191 - name: view_source.wrap_long_lines
10193 value: @IS_ANDROID@
10196 - name: view_source.syntax_highlight
10201 - name: view_source.tab_size
10206 #---------------------------------------------------------------------------
10207 # Prefs starting with "webgl." (for pref access from Worker threads)
10208 #---------------------------------------------------------------------------
10210 - name: webgl.1.allow-core-profiles
10211 type: RelaxedAtomicBool
10219 - name: webgl.all-angle-options
10220 type: RelaxedAtomicBool
10224 - name: webgl.angle.force-d3d11
10225 type: RelaxedAtomicBool
10229 - name: webgl.angle.try-d3d11
10230 type: RelaxedAtomicBool
10238 - name: webgl.angle.force-warp
10239 type: RelaxedAtomicBool
10243 - name: webgl.can-lose-context-in-foreground
10244 type: RelaxedAtomicBool
10248 - name: webgl.cgl.multithreaded
10249 type: RelaxedAtomicBool
10253 - name: webgl.debug.incomplete-tex-color
10254 type: RelaxedAtomicUint32
10258 - name: webgl.default-antialias
10259 type: RelaxedAtomicBool
10260 value: @IS_NOT_ANDROID@
10263 - name: webgl.default-no-alpha
10264 type: RelaxedAtomicBool
10268 - name: webgl.disable-angle
10269 type: RelaxedAtomicBool
10273 - name: webgl.disable-wgl
10274 type: RelaxedAtomicBool
10278 - name: webgl.dxgl.enabled
10279 type: RelaxedAtomicBool
10287 - name: webgl.dxgl.needs-finish
10288 type: RelaxedAtomicBool
10292 - name: webgl.disable-fail-if-major-performance-caveat
10293 type: RelaxedAtomicBool
10297 - name: webgl.disable-DOM-blit-uploads
10298 type: RelaxedAtomicBool
10302 - name: webgl.disabled
10303 type: RelaxedAtomicBool
10307 - name: webgl.enable-debug-renderer-info
10308 type: RelaxedAtomicBool
10312 - name: webgl.enable-draft-extensions
10313 type: RelaxedAtomicBool
10317 - name: webgl.enable-privileged-extensions
10318 type: RelaxedAtomicBool
10322 - name: webgl.enable-surface-texture
10323 type: RelaxedAtomicBool
10327 - name: webgl.enable-ahardwarebuffer
10328 type: RelaxedAtomicBool
10332 - name: webgl.enable-webgl2
10333 type: RelaxedAtomicBool
10337 - name: webgl.force-enabled
10338 type: RelaxedAtomicBool
10342 - name: webgl.force-layers-readback
10343 type: RelaxedAtomicBool
10347 - name: webgl.force-index-validation
10348 type: RelaxedAtomicInt32
10352 - name: webgl.lose-context-on-memory-pressure
10353 type: RelaxedAtomicBool
10357 - name: webgl.max-contexts
10358 type: RelaxedAtomicUint32
10362 - name: webgl.max-contexts-per-principal
10363 type: RelaxedAtomicUint32
10367 - name: webgl.max-warnings-per-context
10368 type: RelaxedAtomicUint32
10372 - name: webgl.min_capability_mode
10373 type: RelaxedAtomicBool
10377 - name: webgl.msaa-force
10378 type: RelaxedAtomicBool
10382 - name: webgl.msaa-samples
10383 type: RelaxedAtomicUint32
10387 - name: webgl.out-of-process
10388 type: RelaxedAtomicBool
10389 #if defined(XP_MACOSX) || defined(XP_WIN)
10396 - name: webgl.out-of-process.force
10397 type: RelaxedAtomicBool
10401 - name: webgl.out-of-process.shmem-size
10402 type: RelaxedAtomicUint32
10403 value: 100000 # 100KB
10406 - name: webgl.power-preference-override
10407 type: RelaxedAtomicInt32
10411 - name: webgl.prefer-16bpp
10412 type: RelaxedAtomicBool
10416 - name: webgl.allow-immediate-queries
10417 type: RelaxedAtomicBool
10421 - name: webgl.allow-fb-invalidation
10422 type: RelaxedAtomicBool
10427 - name: webgl.perf.max-warnings
10428 type: RelaxedAtomicInt32
10432 - name: webgl.perf.max-acceptable-fb-status-invals
10433 type: RelaxedAtomicInt32
10437 - name: webgl.perf.spew-frame-allocs
10438 type: RelaxedAtomicBool
10442 - name: webgl.oop.via-pcq
10443 type: RelaxedAtomicBool
10447 #---------------------------------------------------------------------------
10448 # Prefs starting with "widget."
10449 #---------------------------------------------------------------------------
10451 # Global user preference for disabling native theme in content processes.
10452 - name: widget.disable-native-theme-for-content
10453 type: RelaxedAtomicBool
10454 #if defined(XP_LINUX) && defined(NIGHTLY_BUILD) && !defined(ANDROID)
10461 # Preference to disable dark scrollbar implementation.
10462 # This is mainly for testing because dark scrollbars have to be semi-
10463 # transparent, but many reftests expect scrollbars to look identical
10464 # among different backgrounds.
10465 # However, some users may want to disable this as well.
10466 - name: widget.disable-dark-scrollbar
10471 - name: widget.window-transforms.disabled
10472 type: RelaxedAtomicBool
10476 # Whether to allow gtk dark themes in content.
10477 - name: widget.content.allow-gtk-dark-theme
10482 # Whether to use gtk high contrast themes to disable content styling like on
10483 # windows high contrast mode.
10484 - name: widget.content.gtk-high-contrast.enabled
10489 # Whether to pause the compositor when a native window is minimized.
10490 - name: widget.pause-compositor-when-minimized
10496 #ifdef NIGHTLY_BUILD
10497 # Keep those pref hidden on non-nightly builds to avoid people accidentally
10500 # Use DMABuf for content textures.
10501 # For testing purposes only.
10502 - name: widget.dmabuf-textures.enabled
10503 type: RelaxedAtomicBool
10508 # Use smooth rendering for Wayland basic compositor.
10509 - name: widget.wayland-smooth-rendering
10510 type: RelaxedAtomicBool
10514 # Use DMABuf backend for WebGL.
10515 - name: widget.dmabuf-webgl.enabled
10516 type: RelaxedAtomicBool
10521 # Enable the RemoteLookAndFeel in content processes, which will cause all
10522 # LookAndFeel values to be queried in the parent process and sent to content
10523 # processes using IPC. This is required for widgets to paint and behave
10524 # correctly when `security.sandbox.content.headless` is enabled.
10525 - name: widget.remote-look-and-feel
10527 #ifdef MOZ_WIDGET_GTK
10534 #---------------------------------------------------------------------------
10535 # Prefs starting with "xul."
10536 #---------------------------------------------------------------------------
10538 # Pref to control whether arrow-panel animations are enabled or not.
10539 # Transitions are currently disabled on Linux due to rendering issues on
10540 # certain configurations.
10541 - name: xul.panel-animations.enabled
10543 #ifdef MOZ_WIDGET_GTK
10550 #---------------------------------------------------------------------------
10551 # Prefs starting with "zoom."
10552 #---------------------------------------------------------------------------
10554 - name: zoom.maxPercent
10563 - name: zoom.minPercent
10572 #---------------------------------------------------------------------------
10574 #---------------------------------------------------------------------------