StaticPrefList.yaml (571749B)
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/. */ 4 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. 7 # 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. 12 # 13 # Basics 14 # ------ 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. 17 # 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 21 # here.) 22 # 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.) 27 # 28 # Definitions 29 # ----------- 30 # A pref definition looks like this: 31 # 32 # - name: <pref-name> # mandatory 33 # type: <cpp-type> # mandatory 34 # value: <default-value> # mandatory 35 # mirror: <never | once | always> # mandatory 36 # do_not_use_directly: <true | false> # optional 37 # include: <header-file> # optional 38 # rust: <true | false> # optional 39 # set_spidermonkey_pref: <false | startup | always> # optional 40 # 41 # - `name` is the name of the pref, without double-quotes, as it appears 42 # in about:config. It is used in most libpref API functions (from both C++ 43 # and JS code). 44 # 45 # - `type` is one of `bool`, `int32_t`, `uint32_t`, `float`, an atomic version 46 # of one of those, `String` or `DataMutexString`. Note that float prefs are 47 # stored internally as strings. The C++ preprocessor doesn't like template 48 # syntax in a macro argument, so use the typedefs defined in 49 # StaticPrefsBase.h; for example, use `RelaxedAtomicBool` instead of 50 # `Atomic<bool, Relaxed>`. 51 # 52 # - `value` is the default value. Its type should be appropriate for 53 # <cpp-type>, otherwise the generated code will fail to compile. A complex 54 # C++ numeric expressions like `60 * 60` (which the YAML parser cannot treat 55 # as an integer or float) is treated as a string and passed through without 56 # change, which is useful. 57 # 58 # - `mirror` indicates how the pref value is mirrored into a C++ variable. 59 # 60 # * `never`: There is no C++ mirror variable. The pref value can only be 61 # accessed via the standard libpref API functions. 62 # 63 # * `once`: The pref value is mirrored into a variable at startup; the 64 # mirror variable is left unchanged after that. (The exact point at which 65 # all `once` mirror variables are set is when the first `once` mirror 66 # variable is accessed, via its getter function.) This is mostly useful for 67 # graphics prefs where we often don't want a new pref value to apply until 68 # restart. Otherwise, this update policy is best avoided because its 69 # behaviour can cause confusion and bugs. 70 # 71 # * `always`: The mirror variable is always kept in sync with the pref value. 72 # This is the most common choice. 73 # 74 # When a mirror variable is present, a getter will be created that can access 75 # it. Using the getter function to read the pref's value has the two 76 # following advantages over the normal API functions. 77 # 78 # * A direct variable access is faster than a hash table lookup. 79 # 80 # * A mirror variable can be accessed off the main thread. If a pref *is* 81 # accessed off the main thread, it should have an atomic type. Assertions 82 # enforce this. 83 # 84 # Note that Rust code must access the mirror variable directly, rather than 85 # via the getter function. 86 # 87 # - `do_not_use_directly` indicates if `_DoNotUseDirectly` should be appended to 88 # the name of the getter function. This is simply a naming convention 89 # indicating that there is some other wrapper getter function that should be 90 # used in preference to the normal static pref getter. Defaults to `false` if 91 # not present. Cannot be used with a `never` mirror value, because there is 92 # no getter function in that case. 93 # 94 # - `include` names a header file that must be included for the pref value to 95 # compile correctly, e.g. because it refers to a code constant. System 96 # headers should be surrounded with angle brackets, e.g. `<cmath>`. 97 # 98 # - `rust` indicates if the mirror variable is used by Rust code. If so, it 99 # will be usable via the `static_prefs::pref!` macro, e.g. 100 # `static_prefs::pref!("layout.css.cross-fade.enabled")`. 101 # 102 # - `set_spidermonkey_pref` indicates whether SpiderMonkey boilerplate code 103 # should be generated for this pref. If this is set to 'startup', the 104 # pref on the SpiderMonkey side is only set during process startup. If set to 105 # 'always', the SpiderMonkey pref value is also updated when this pref is 106 # changed at runtime. 107 # This option is only valid for javascript.options.* prefs. 108 # 109 # The getter function's base name is the same as the pref's name, but with 110 # '.' or '-' chars converted to '_', to make a valid identifier. For example, 111 # the getter for `foo.bar_baz` is `foo_bar_baz()`. This is ugly but clear, 112 # and you can search for both the pref name and the getter using the regexp 113 # /foo.bar.baz/. Suffixes are added as follows: 114 # 115 # - If the `mirror` value is `once`, `_AtStartup` is appended, to indicate the 116 # value was obtained at startup. 117 # 118 # - If the `do_not_use_directly` value is true, `_DoNotUseDirectly` is 119 # appended. 120 # 121 # Preprocessor 122 # ------------ 123 # Note finally that this file is preprocessed by preprocessor.py, not the C++ 124 # preprocessor. As a result, the following things may be surprising. 125 # 126 # - YAML comments start with a '#', so putting a comment on the same line as a 127 # preprocessor directive is dubious. E.g. avoid lines like `#define X 3 # 128 # three` because the ` # three` will be part of `X`. 129 # 130 # - '@' use is required for substitutions to occur. E.g. with `#define FOO 1`, 131 # `FOO` won't be replaced with `1` unless it has '@' chars around it. 132 # 133 # - Spaces aren't permitted between the leading '#' and the name of a 134 # directive, e.g. `#ifdef XYZ` works but `# ifdef XYZ` does not. 135 # 136 # Please indent all prefs defined within #ifdef/#ifndef conditions. This 137 # improves readability, particular for conditional blocks that exceed a single 138 # screen. But note that the leading '-' in a definition must remain in the 139 # first column for it to be valid YAML. 140 141 #ifdef RELEASE_OR_BETA 142 #define IS_NOT_RELEASE_OR_BETA false 143 #else 144 #define IS_NOT_RELEASE_OR_BETA true 145 #endif 146 147 #ifdef NIGHTLY_BUILD 148 #define IS_NIGHTLY_BUILD true 149 #define IS_NOT_NIGHTLY_BUILD false 150 #else 151 #define IS_NIGHTLY_BUILD false 152 #define IS_NOT_NIGHTLY_BUILD true 153 #endif 154 155 #if defined(NIGHTLY_BUILD) || defined(MOZ_DEV_EDITION) 156 #define IS_NIGHTLY_OR_DEV_EDITION true 157 #else 158 #define IS_NIGHTLY_OR_DEV_EDITION false 159 #endif 160 161 #ifdef MOZILLA_OFFICIAL 162 #define IS_NOT_MOZILLA_OFFICIAL false 163 #else 164 #define IS_NOT_MOZILLA_OFFICIAL true 165 #endif 166 167 #ifdef EARLY_BETA_OR_EARLIER 168 #define IS_EARLY_BETA_OR_EARLIER true 169 #define IS_NOT_EARLY_BETA_OR_EARLIER false 170 #else 171 #define IS_EARLY_BETA_OR_EARLIER false 172 #define IS_NOT_EARLY_BETA_OR_EARLIER true 173 #endif 174 175 #if defined(MOZ_DEV_EDITION) || defined(EARLY_BETA_OR_EARLIER) 176 #define IS_DEV_EDITION_OR_EARLY_BETA_OR_EARLIER true 177 #else 178 #define IS_DEV_EDITION_OR_EARLY_BETA_OR_EARLIER false 179 #endif 180 181 #ifdef ANDROID 182 #define IS_ANDROID true 183 #define IS_NOT_ANDROID false 184 #else 185 #define IS_ANDROID false 186 #define IS_NOT_ANDROID true 187 #endif 188 189 #ifdef XP_WIN 190 #define IS_XP_WIN true 191 #define IS_NOT_XP_WIN false 192 #else 193 #define IS_XP_WIN false 194 #define IS_NOT_XP_WIN true 195 #endif 196 197 #ifdef XP_MACOSX 198 #define IS_XP_MACOSX true 199 #define IS_NOT_XP_MACOSX false 200 #else 201 #define IS_XP_MACOSX false 202 #define IS_NOT_XP_MACOSX true 203 #endif 204 205 #ifdef XP_IOS 206 #define IS_IOS true 207 #define IS_NOT_IOS false 208 #else 209 #define IS_IOS false 210 #define IS_NOT_IOS true 211 #endif 212 213 #if defined(ANDROID) || defined(XP_IOS) 214 #define IS_MOBILE true 215 #define IS_NOT_MOBILE false 216 #else 217 #define IS_MOBILE false 218 #define IS_NOT_MOBILE true 219 #endif 220 221 #--------------------------------------------------------------------------- 222 # Prefs starting with "accessibility." 223 #--------------------------------------------------------------------------- 224 225 # Tab focus model bit field: 226 # 1 focuses text controls, 2 focuses other form elements, 4 adds links. 227 # Most users will want 1, 3, or 7. On macOS we expose a checkbox to alter 228 # between 7 and 3. 229 - name: accessibility.tabfocus 230 type: int32_t 231 value: 7 232 mirror: always 233 234 # Only on mac tabfocus is expected to handle UI widgets as well as web content. 235 # FIXME(emilio): This is weird now that we have a lot of HTML in our pages. 236 - name: accessibility.tabfocus_applies_to_xul 237 type: bool 238 value: @IS_XP_MACOSX@ 239 mirror: always 240 241 - name: accessibility.accesskeycausesactivation 242 type: bool 243 value: true 244 mirror: always 245 246 - name: accessibility.monoaudio.enable 247 type: RelaxedAtomicBool 248 value: false 249 mirror: always 250 251 - name: accessibility.browsewithcaret 252 type: RelaxedAtomicBool 253 value: false 254 mirror: always 255 256 - name: accessibility.AOM.enabled 257 type: bool 258 value: false 259 mirror: always 260 261 - name: accessibility.ARIAElementReflection.enabled 262 type: bool 263 value: true 264 mirror: always 265 266 # Whether to enable automatic details relationships for 267 # anchor positioned content. 268 - name: accessibility.anchorPositionedAsDetails.enabled 269 type: bool 270 value: false 271 mirror: always 272 273 # Whether to enable all accessibility cache domains on startup. 274 # * false: enable domains as needed 275 # * true: enable all domains regardless of need (cache everything) 276 - name: accessibility.enable_all_cache_domains 277 type: bool 278 value: false 279 mirror: once 280 281 # Whether form controls and images should be focusable with mouse, in content 282 # documents. 283 # 284 # This matches historical macOS / Safari behavior. 285 # 286 # * 0: never 287 # * 1: always 288 # * 2: on content documents 289 - name: accessibility.mouse_focuses_formcontrol 290 type: int32_t 291 #ifdef XP_MACOSX 292 value: 2 293 #else 294 value: 1 295 #endif 296 mirror: always 297 298 # Whether to enable support for the UI Automation API on Windows. Values: 299 # * 0: Never. 300 # * 1: Always. 301 # * 2: Enable unless incompatible accessibility clients are detected. 302 - name: accessibility.uia.enable 303 type: uint32_t 304 value: 2 305 mirror: always 306 do_not_use_directly: true 307 308 #ifdef XP_WIN 309 # Whether to avoid accessibility activation on Windows shortly after clipboard 310 # copy. 311 # 312 # Possible values are: 313 # * 0: never 314 # * 1: always 315 # * 2 (or others): when needed 316 - name: accessibility.windows.suppress-after-clipboard-copy 317 type: uint32_t 318 value: 2 319 mirror: always 320 321 # Whether to avoid accessibility activation on Windows shortly after max button 322 # hit-test for the "snap layout" feature. 323 # 324 # Possible values are: 325 # * 0: never 326 # * 1: always 327 # * 2 (or others): when needed 328 - name: accessibility.windows.suppress-for-snap-layout 329 type: uint32_t 330 value: 2 331 mirror: always 332 #endif 333 334 #--------------------------------------------------------------------------- 335 # Prefs starting with "alerts." 336 #--------------------------------------------------------------------------- 337 338 # Whether to use platform-specific backends for showing desktop notifications. 339 # If no such backend is available, or if the pref is false, then XUL 340 # notifications are used. 341 - name: alerts.useSystemBackend 342 type: bool 343 value: true 344 mirror: always 345 346 #if defined(XP_WIN) 347 # On Windows, a COM Surrogate notification server receives notification events 348 # and can relaunch the application after it has been closed. 349 - name: alerts.useSystemBackend.windows.notificationserver.enabled 350 type: bool 351 value: true 352 mirror: never 353 #endif 354 355 #ifdef ANDROID 356 #--------------------------------------------------------------------------- 357 # Prefs starting with "android." 358 #--------------------------------------------------------------------------- 359 360 # On Android, we want an opaque background to be visible under the page, 361 # so layout should not force a default background. 362 - name: android.widget_paints_background 363 type: RelaxedAtomicBool 364 value: true 365 mirror: always 366 367 - name: android.touch_resampling.enabled 368 type: RelaxedAtomicBool 369 value: false 370 mirror: always 371 372 #endif 373 374 #--------------------------------------------------------------------------- 375 # Prefs starting with "apz." 376 # The apz prefs are explained in AsyncPanZoomController.cpp 377 #--------------------------------------------------------------------------- 378 379 # amount we zoom in for a double tap gesture if we couldn't find any content 380 # based rect to zoom to 381 - name: apz.doubletapzoom.defaultzoomin 382 type: AtomicFloat 383 value: 1.2f 384 mirror: always 385 386 # After a user has executed a pan gesture, we may receive momentum phase pan 387 # gestures from the OS. This specifies how long we should wait following the 388 # pan end gesture for possible momentum phase pan gestures before sending the 389 # TransformEnd notification. 390 - name: apz.scrollend-event.content.delay_ms 391 type: RelaxedAtomicInt32 392 value: 100 393 mirror: always 394 395 - name: apz.wr.activate_all_scroll_frames 396 type: RelaxedAtomicBool 397 value: false 398 mirror: always 399 400 - name: apz.wr.activate_all_scroll_frames_when_fission 401 type: RelaxedAtomicBool 402 value: true 403 mirror: always 404 405 - name: apz.prefer_jank_minimal_displayports 406 type: RelaxedAtomicBool 407 value: true 408 mirror: always 409 410 - name: apz.allow_double_tap_zooming 411 type: RelaxedAtomicBool 412 value: true 413 mirror: always 414 415 #ifdef XP_MACOSX 416 - name: apz.mac.enable_double_tap_zoom_touchpad_gesture 417 type: RelaxedAtomicBool 418 value: true 419 mirror: always 420 #endif 421 422 - name: apz.allow_immediate_handoff 423 type: RelaxedAtomicBool 424 value: false 425 mirror: always 426 427 - name: apz.allow_zooming 428 type: RelaxedAtomicBool 429 value: true 430 mirror: always 431 432 - name: apz.max_zoom 433 type: AtomicFloat 434 value: 10.0f 435 mirror: always 436 437 - name: apz.min_zoom 438 type: AtomicFloat 439 value: 0.25f 440 mirror: always 441 442 - name: apz.allow_zooming_out 443 type: RelaxedAtomicBool 444 value: false 445 mirror: always 446 447 #ifdef ANDROID 448 - name: apz.android.chrome_fling_physics.friction 449 type: AtomicFloat 450 value: 0.015f 451 mirror: always 452 453 - name: apz.android.chrome_fling_physics.inflexion 454 type: AtomicFloat 455 value: 0.35f 456 mirror: always 457 458 - name: apz.android.chrome_fling_physics.stop_threshold 459 type: AtomicFloat 460 value: 0.1f 461 mirror: always 462 #endif 463 464 - name: apz.autoscroll.enabled 465 type: RelaxedAtomicBool 466 value: true 467 mirror: always 468 469 - name: apz.axis_lock.breakout_angle 470 type: AtomicFloat 471 value: float(M_PI / 8.0) # 22.5 degrees 472 mirror: always 473 include: <cmath> 474 475 - name: apz.axis_lock.breakout_threshold 476 type: AtomicFloat 477 value: 1.0f / 32.0f 478 mirror: always 479 480 - name: apz.axis_lock.direct_pan_angle 481 type: AtomicFloat 482 value: float(M_PI / 3.0) # 60 degrees 483 mirror: always 484 include: <cmath> 485 486 - name: apz.axis_lock.lock_angle 487 type: AtomicFloat 488 value: float(M_PI / 6.0) # 30 degrees 489 mirror: always 490 include: <cmath> 491 492 # Whether to lock touch scrolling to one axis at a time. When a new 493 # axis lock mode is added, the APZCAxisLockCompatTester GTest shoud 494 # be updated to include the lock mode value. 495 # 0 = FREE (No locking at all) 496 # 1 = STANDARD (Once locked, remain locked until scrolling ends) 497 # 2 = STICKY (Allow lock to be broken, with hysteresis) 498 # 3 = DOMINANT_AXIS (Only allow movement on one axis at a time, only 499 # applies to touchpad scrolling) 500 - name: apz.axis_lock.mode 501 type: RelaxedAtomicInt32 502 #if defined(XP_MACOSX) 503 value: 3 504 #else 505 value: 2 506 #endif 507 mirror: always 508 509 - name: apz.content_response_timeout 510 type: RelaxedAtomicInt32 511 value: 400 512 mirror: always 513 514 - name: apz.danger_zone_x 515 type: RelaxedAtomicInt32 516 value: 50 517 mirror: always 518 519 - name: apz.danger_zone_y 520 type: RelaxedAtomicInt32 521 value: 100 522 mirror: always 523 524 - name: apz.disable_for_scroll_linked_effects 525 type: RelaxedAtomicBool 526 value: false 527 mirror: always 528 529 - name: apz.displayport_expiry_ms 530 type: RelaxedAtomicUint32 531 value: 15000 532 mirror: always 533 534 - name: apz.drag.enabled 535 type: RelaxedAtomicBool 536 value: true 537 mirror: always 538 539 - name: apz.drag.touch.enabled 540 type: RelaxedAtomicBool 541 value: true 542 mirror: always 543 544 - name: apz.enlarge_displayport_when_clipped 545 type: RelaxedAtomicBool 546 value: @IS_ANDROID@ 547 mirror: always 548 549 # Test only. 550 - name: apz.fixed-margin-override.enabled 551 type: RelaxedAtomicBool 552 value: false 553 mirror: always 554 555 # Test only. 556 - name: apz.fixed-margin-override.bottom 557 type: RelaxedAtomicInt32 558 value: 0 559 mirror: always 560 561 # Test only. 562 - name: apz.fixed-margin-override.top 563 type: RelaxedAtomicInt32 564 value: 0 565 mirror: always 566 567 - name: apz.fling_accel_base_mult 568 type: AtomicFloat 569 value: 1.0f 570 mirror: always 571 572 - name: apz.fling_accel_supplemental_mult 573 type: AtomicFloat 574 value: 1.0f 575 mirror: always 576 577 - name: apz.fling_accel_min_fling_velocity 578 type: AtomicFloat 579 value: 1.5f 580 mirror: always 581 582 - name: apz.fling_accel_min_pan_velocity 583 type: AtomicFloat 584 value: 0.8f 585 mirror: always 586 587 - name: apz.fling_accel_max_pause_interval_ms 588 type: RelaxedAtomicInt32 589 value: 50 590 mirror: always 591 592 - name: apz.fling_curve_function_x1 593 type: float 594 value: 0.0f 595 mirror: once 596 597 - name: apz.fling_curve_function_x2 598 type: float 599 value: 1.0f 600 mirror: once 601 602 - name: apz.fling_curve_function_y1 603 type: float 604 value: 0.0f 605 mirror: once 606 607 - name: apz.fling_curve_function_y2 608 type: float 609 value: 1.0f 610 mirror: once 611 612 - name: apz.fling_curve_threshold_inches_per_ms 613 type: AtomicFloat 614 value: -1.0f 615 mirror: always 616 617 - name: apz.fling_friction 618 type: AtomicFloat 619 value: 0.002f 620 mirror: always 621 622 - name: apz.fling_min_velocity_threshold 623 type: AtomicFloat 624 value: 0.5f 625 mirror: always 626 627 - name: apz.fling_stop_on_tap_threshold 628 type: AtomicFloat 629 value: 0.05f 630 mirror: always 631 632 - name: apz.fling_stopped_threshold 633 type: AtomicFloat 634 value: 0.01f 635 mirror: always 636 637 - name: apz.touch_acceleration_factor_x 638 type: float 639 value: 1.0f 640 mirror: always 641 642 - name: apz.touch_acceleration_factor_y 643 type: float 644 value: 1.0f 645 mirror: always 646 647 #ifdef MOZ_WIDGET_GTK 648 - name: apz.gtk.kinetic_scroll.enabled 649 type: RelaxedAtomicBool 650 value: true 651 mirror: always 652 653 - name: apz.gtk.pangesture.enabled 654 type: RelaxedAtomicBool 655 value: true 656 mirror: always 657 658 # Mode to use when receiving pan gesture input. 659 # 660 # * 0: Auto mode (uses the default behavior, subject to change). 661 # * 1: Page mode: Uses gtk deltas as a percentage of the page size to scroll. This mode matches: 662 # 663 # https://gitlab.gnome.org/GNOME/gtk/blob/c734c7e9188b56f56c3a504abee05fa40c5475ac/gtk/gtkrange.c#L3063-3074 664 # 665 # * 2: Pixel mode: Uses gtk deltas as a fixed pixel multiplier. This mode matches e.g. GNOME web. 666 # 667 # https://webkit-search.igalia.com/webkit/rev/215039ef09d6bfd6e088175bfe30788d95b9705d/Source/WebKit/Shared/gtk/WebEventFactory.cpp#265-296 668 # (multiplied then by pixelsPerLineStep which in GNOME-web is 40). 669 - name: apz.gtk.pangesture.delta_mode 670 type: uint32_t 671 value: 0 672 mirror: always 673 674 - name: apz.gtk.pangesture.page_delta_mode_multiplier 675 type: float 676 value: 1.0f 677 mirror: always 678 679 - name: apz.gtk.pangesture.pixel_delta_mode_multiplier 680 type: float 681 value: 40.0f 682 mirror: always 683 684 - name: apz.gtk.touchpad_pinch.enabled 685 type: RelaxedAtomicBool 686 value: true 687 mirror: always 688 689 - name: apz.gtk.touchpad_pinch.three_fingers.enabled 690 type: RelaxedAtomicBool 691 value: false 692 mirror: always 693 694 - name: apz.gtk.touchpad_hold.enabled 695 type: RelaxedAtomicBool 696 value: true 697 mirror: always 698 #endif 699 700 - name: apz.keyboard.enabled 701 type: bool 702 value: @IS_NOT_MOBILE@ 703 mirror: once 704 705 - name: apz.keyboard.passive-listeners 706 type: RelaxedAtomicBool 707 value: @IS_NOT_MOBILE@ 708 mirror: always 709 710 - name: apz.keyboard.focus-optimization 711 type: bool 712 value: false 713 mirror: always 714 715 - name: apz.max_tap_time 716 type: RelaxedAtomicInt32 717 value: 300 718 mirror: always 719 720 - name: apz.max_velocity_inches_per_ms 721 type: AtomicFloat 722 value: -1.0f 723 mirror: always 724 725 - name: apz.max_velocity_queue_size 726 type: uint32_t 727 value: 5 728 mirror: once 729 730 - name: apz.min_skate_speed 731 type: AtomicFloat 732 value: 1.0f 733 mirror: always 734 735 - name: apz.minimap.enabled 736 type: RelaxedAtomicBool 737 value: false 738 mirror: always 739 740 - name: apz.mousemove_hittest_optimization.enabled 741 type: RelaxedAtomicBool 742 value: true 743 mirror: always 744 745 - name: apz.one_touch_pinch.enabled 746 type: RelaxedAtomicBool 747 value: @IS_ANDROID@ 748 mirror: always 749 750 - name: apz.overscroll.enabled 751 type: RelaxedAtomicBool 752 value: true 753 mirror: always 754 755 # The "test async scroll offset" (used via reftest-async-scroll 756 # or nsIDOMWindowUtils.setAsyncScrollOffset()) can be used to 757 # trigger overscroll. Used for tests only. 758 - name: apz.overscroll.test_async_scroll_offset.enabled 759 type: RelaxedAtomicBool 760 value: false 761 mirror: always 762 763 - name: apz.overscroll.min_pan_distance_ratio 764 type: AtomicFloat 765 value: 1.0f 766 mirror: always 767 768 - name: apz.overscroll.stop_distance_threshold 769 type: AtomicFloat 770 value: 5.0f 771 mirror: always 772 773 - name: apz.overscroll.spring_stiffness 774 type: AtomicFloat 775 value: 200 776 mirror: always 777 778 - name: apz.overscroll.damping 779 type: AtomicFloat 780 value: 1.1 781 mirror: always 782 783 - name: apz.overscroll.max_velocity 784 type: AtomicFloat 785 value: 10 786 mirror: always 787 788 - name: apz.paint_skipping.enabled 789 type: RelaxedAtomicBool 790 value: true 791 mirror: always 792 793 # Fetch displayport updates early from the message queue. 794 - name: apz.pinch_lock.mode 795 type: RelaxedAtomicInt32 796 value: 2 797 mirror: always 798 799 - name: apz.pinch_lock.scroll_lock_threshold 800 type: AtomicFloat 801 value: 1.0f / 16.0f # 1/16 inches 802 mirror: always 803 804 - name: apz.pinch_lock.span_breakout_threshold 805 type: AtomicFloat 806 value: 1.0f / 32.0f # 1/32 inches 807 mirror: always 808 809 - name: apz.pinch_lock.span_lock_threshold 810 type: AtomicFloat 811 value: 1.0f / 32.0f # 1/32 inches 812 mirror: always 813 814 - name: apz.pinch_lock.buffer_max_age 815 type: int32_t 816 value: 80 # milliseconds 817 mirror: once 818 819 - name: apz.popups.enabled 820 type: RelaxedAtomicBool 821 value: true 822 mirror: always 823 824 - name: apz.popups_without_remote.enabled 825 type: RelaxedAtomicBool 826 value: true 827 mirror: always 828 829 # Whether to print the APZC tree for debugging. 830 - name: apz.printtree 831 type: RelaxedAtomicBool 832 value: false 833 mirror: always 834 835 - name: apz.record_checkerboarding 836 type: RelaxedAtomicBool 837 value: @IS_NIGHTLY_BUILD@ 838 mirror: always 839 840 - name: apz.second_tap_tolerance 841 type: AtomicFloat 842 value: 0.5f 843 mirror: always 844 845 # If this is true, APZ fully recalculates the scroll thumb size and 846 # position in the compositor. This leads to the size and position 847 # being more accurate in scenarios such as async zooming. 848 - name: apz.scrollthumb.recalc 849 type: RelaxedAtomicBool 850 value: true 851 mirror: always 852 853 - name: apz.test.fails_with_native_injection 854 type: RelaxedAtomicBool 855 value: false 856 mirror: always 857 858 - name: apz.test.logging_enabled 859 type: RelaxedAtomicBool 860 value: false 861 mirror: always 862 863 - name: apz.touch_move_tolerance 864 type: AtomicFloat 865 value: 0.1f 866 mirror: always 867 868 - name: apz.touch_scroll.buffer_max_age 869 type: int32_t 870 value: 200 # milliseconds 871 mirror: once 872 873 - name: apz.touch_start_tolerance 874 type: AtomicFloat 875 value: 0.1f 876 mirror: always 877 878 - name: apz.velocity_bias 879 type: AtomicFloat 880 value: 0.0f 881 mirror: always 882 883 - name: apz.velocity_relevance_time_ms 884 type: RelaxedAtomicUint32 885 value: 100 886 mirror: always 887 888 #ifdef XP_WIN 889 - name: apz.windows.force_disable_direct_manipulation 890 type: RelaxedAtomicBool 891 value: false 892 mirror: always 893 894 - name: apz.windows.check_for_pan_gesture_conversion 895 type: RelaxedAtomicBool 896 value: true 897 mirror: always 898 #endif 899 900 - name: apz.x_skate_highmem_adjust 901 type: AtomicFloat 902 value: 0.0f 903 mirror: always 904 905 - name: apz.x_skate_size_multiplier 906 type: AtomicFloat 907 value: 1.25f 908 mirror: always 909 910 - name: apz.x_stationary_size_multiplier 911 type: AtomicFloat 912 value: 1.5f 913 mirror: always 914 915 - name: apz.y_skate_highmem_adjust 916 type: AtomicFloat 917 value: 0.0f 918 mirror: always 919 920 - name: apz.y_skate_size_multiplier 921 type: AtomicFloat 922 #if defined(MOZ_WIDGET_ANDROID) 923 value: 1.5f 924 #else 925 value: 3.5f 926 #endif 927 mirror: always 928 929 - name: apz.y_stationary_size_multiplier 930 type: AtomicFloat 931 #if defined(MOZ_WIDGET_ANDROID) 932 value: 1.5f 933 #else 934 value: 3.5f 935 #endif 936 mirror: always 937 938 - name: apz.zoom_animation_duration_ms 939 type: RelaxedAtomicInt32 940 #if defined(MOZ_WIDGET_ANDROID) 941 value: 250 942 #else 943 value: 350 944 #endif 945 mirror: always 946 947 - name: apz.scale_repaint_delay_ms 948 type: RelaxedAtomicInt32 949 value: 500 950 mirror: always 951 952 # Whether to use rounded external scroll offsets. 953 - name: apz.rounded_external_scroll_offset 954 type: bool 955 value: false 956 mirror: always 957 958 # Whether to async scroll CSS anchor pos. 959 - name: apz.async_scroll_css_anchor_pos 960 type: bool 961 value: true 962 mirror: once 963 964 #--------------------------------------------------------------------------- 965 # Prefs starting with "beacon." 966 #--------------------------------------------------------------------------- 967 968 # Is support for Navigator.sendBeacon enabled? 969 - name: beacon.enabled 970 type: bool 971 value: true 972 mirror: always 973 974 #--------------------------------------------------------------------------- 975 # Prefs starting with "bidi." 976 #--------------------------------------------------------------------------- 977 978 # Whether delete and backspace should immediately delete characters not 979 # visually adjacent to the caret, or adjust the visual position of the caret 980 # on the first keypress and delete the character on a second keypress 981 - name: bidi.edit.delete_immediately 982 type: bool 983 value: true 984 mirror: always 985 986 # Bidi caret movement style: 987 # 0 = logical 988 # 1 = visual 989 # 2 = visual, but logical during selection 990 - name: bidi.edit.caret_movement_style 991 type: int32_t 992 #if !defined(XP_LINUX) && defined(NIGHTLY_BUILD) 993 value: 1 994 #else 995 value: 2 # See Bug 1638240 996 #endif 997 mirror: always 998 999 # Bidi numeral style: 1000 # 0 = nominalnumeralBidi * 1001 # 1 = regularcontextnumeralBidi 1002 # 2 = hindicontextnumeralBidi 1003 # 3 = arabicnumeralBidi 1004 # 4 = hindinumeralBidi 1005 # 5 = persiancontextnumeralBidi 1006 # 6 = persiannumeralBidi 1007 - name: bidi.numeral 1008 type: RelaxedAtomicUint32 1009 value: 0 1010 mirror: always 1011 1012 # Bidi text type 1013 # 1 = charsettexttypeBidi * 1014 # 2 = logicaltexttypeBidi 1015 # 3 = visualtexttypeBidi 1016 - name: bidi.texttype 1017 type: RelaxedAtomicUint32 1018 value: 1 1019 mirror: always 1020 1021 # Bidi direction 1022 # 1 = directionLTRBidi * 1023 # 2 = directionRTLBidi 1024 - name: bidi.direction 1025 type: RelaxedAtomicUint32 1026 value: 1 1027 mirror: always 1028 1029 # Setting this pref to |true| forces Bidi UI menu items and keyboard shortcuts 1030 # to be exposed, and enables the directional caret hook. By default, only 1031 # expose it for bidi-associated system locales. 1032 - name: bidi.browser.ui 1033 type: bool 1034 value: false 1035 mirror: always 1036 1037 #--------------------------------------------------------------------------- 1038 # Prefs starting with "browser." 1039 #--------------------------------------------------------------------------- 1040 1041 - name: browser.active_color 1042 type: String 1043 value: "#EE0000" 1044 mirror: never 1045 1046 - name: browser.active_color.dark 1047 type: String 1048 value: "#FF6666" 1049 mirror: never 1050 1051 - name: browser.anchor_color 1052 type: String 1053 value: "#0000EE" 1054 mirror: never 1055 1056 # If you change this, you probably also want to change 1057 # nsXPLookAndFeel::GenericDarkColor for Linktext. 1058 - name: browser.anchor_color.dark 1059 type: String 1060 value: "#8C8CFF" 1061 mirror: never 1062 1063 # See http://dev.w3.org/html5/spec/forms.html#attr-fe-autofocus 1064 - name: browser.autofocus 1065 type: bool 1066 value: true 1067 mirror: always 1068 1069 - name: browser.cache.disk.enable 1070 type: RelaxedAtomicBool 1071 value: true 1072 mirror: always 1073 1074 - name: browser.cache.memory.enable 1075 type: RelaxedAtomicBool 1076 value: true 1077 mirror: always 1078 1079 # Limit of recent metadata we keep in memory for faster access, in KB. 1080 - name: browser.cache.disk.metadata_memory_limit 1081 type: RelaxedAtomicUint32 1082 value: 1024 # 1 MB 1083 mirror: always 1084 1085 # Does the user want smart-sizing? 1086 - name: browser.cache.disk.smart_size.enabled 1087 type: RelaxedAtomicBool 1088 value: true 1089 mirror: always 1090 1091 # Disk cache capacity in kilobytes. It's used only when 1092 # browser.cache.disk.smart_size.enabled == false 1093 - name: browser.cache.disk.capacity 1094 type: RelaxedAtomicUint32 1095 value: 256000 1096 mirror: always 1097 1098 # -1 = determine dynamically, 0 = none, n = memory capacity in kilobytes. 1099 - name: browser.cache.memory.capacity 1100 type: RelaxedAtomicInt32 1101 value: -1 1102 mirror: always 1103 1104 # When smartsizing is disabled we could potentially fill all disk space by 1105 # cache data when the disk capacity is not set correctly. To avoid that we 1106 # check the free space every time we write some data to the cache. The free 1107 # space is checked against two limits. Once the soft limit is reached we start 1108 # evicting the least useful entries, when we reach the hard limit writing to 1109 # the entry fails. 1110 - name: browser.cache.disk.free_space_soft_limit 1111 type: RelaxedAtomicUint32 1112 value: 5 * 1024 # 5MB 1113 mirror: always 1114 1115 - name: browser.cache.disk.free_space_hard_limit 1116 type: RelaxedAtomicUint32 1117 value: 1024 # 1MB 1118 mirror: always 1119 1120 # The number of chunks we preload ahead of read. One chunk currently has 1121 # 256kB. 1122 - name: browser.cache.disk.preload_chunk_count 1123 type: RelaxedAtomicUint32 1124 value: 4 # 1 MB of read ahead 1125 mirror: always 1126 1127 # Max-size (in KB) for entries in disk cache. Set to -1 for no limit. 1128 # (Note: entries bigger than 1/8 of disk-cache are never cached) 1129 - name: browser.cache.disk.max_entry_size 1130 type: RelaxedAtomicUint32 1131 value: 50 * 1024 # 50 MB 1132 mirror: always 1133 1134 # Max-size (in KB) for entries in memory cache. Set to -1 for no limit. 1135 # (Note: entries bigger than than 90% of the mem-cache are never cached.) 1136 - name: browser.cache.memory.max_entry_size 1137 type: RelaxedAtomicInt32 1138 value: 5 * 1024 1139 mirror: always 1140 1141 # Memory limit (in kB) for new cache data not yet written to disk. Writes to 1142 # the cache are buffered and written to disk on background with low priority. 1143 # With a slow persistent storage these buffers may grow when data is coming 1144 # fast from the network. When the amount of unwritten data is exceeded, new 1145 # writes will simply fail. We have two buckets, one for important data 1146 # (priority) like html, css, fonts and js, and one for other data like images, 1147 # video, etc. 1148 # Note: 0 means no limit. 1149 - name: browser.cache.disk.max_chunks_memory_usage 1150 type: RelaxedAtomicUint32 1151 value: 40 * 1024 1152 mirror: always 1153 - name: browser.cache.disk.max_priority_chunks_memory_usage 1154 type: RelaxedAtomicUint32 1155 value: 40 * 1024 1156 mirror: always 1157 1158 1159 # Number of seconds the cache spends writing pending data and closing files 1160 # after shutdown has been signalled. Past that time data is not written and 1161 # files are left open for the OS to clean up. 1162 - name: browser.cache.max_shutdown_io_lag 1163 type: RelaxedAtomicUint32 1164 value: 2 1165 mirror: always 1166 1167 # After the max_shutdown_io_lag has passed, we will attempt to cancel 1168 # blocking IO (on windows). The CacheIOThread may pick up more blocking 1169 # tasks so we want to cancel those too. The main thread will be woken 1170 # up every shutdown_io_time_between_cancellations_ms to cancel the IO 1171 # on the other thread. 1172 - name: browser.cache.shutdown_io_time_between_cancellations_ms 1173 type: RelaxedAtomicUint32 1174 value: 5 1175 mirror: always 1176 1177 # A percentage limit for media content type in the disk cache. When some entries 1178 # need to be evicted and media is over the limit, it's evicted first. 1179 - name: browser.cache.disk.content_type_media_limit 1180 type: RelaxedAtomicInt32 1181 value: 50 1182 mirror: always 1183 1184 # How often to validate document in cache 1185 # 0 = once-per-session, 1186 # 1 = each-time, 1187 # 2 = never, 1188 # 3 = when-appropriate/automatically 1189 - name: browser.cache.check_doc_frequency 1190 type: RelaxedAtomicUint32 1191 value: 3 1192 mirror: always 1193 1194 # Compression level for cached JavaScript bytecode 1195 # 0 = do not compress, 1196 # 1 = minimal compression, 1197 # 9 = maximal compression 1198 - name: browser.cache.jsbc_compression_level 1199 type: RelaxedAtomicUint32 1200 value: 0 1201 mirror: always 1202 1203 # Whether tooltips are enabled. 1204 - name: browser.chrome.toolbar_tips 1205 type: bool 1206 value: true 1207 mirror: always 1208 1209 # Whether tooltips are hidden on keydown. 1210 # 0: never 1211 # 1: always 1212 # 2: only on non-modifier keys 1213 - name: browser.chrome.toolbar_tips.hide_on_keydown 1214 type: uint32_t 1215 #if defined(XP_WIN) 1216 value: 0 1217 #else 1218 value: 2 1219 #endif 1220 mirror: always 1221 1222 # DLP agent name, for display in the browser 1223 - name: browser.contentanalysis.agent_name 1224 type: String 1225 value: "A DLP agent" 1226 mirror: never 1227 1228 # (optional) The organization name that the DLP agent should have. If this is 1229 # non-empty and the DLP agent is not signed with this organization name, 1230 # Firefox will fail the connection. 1231 - name: browser.contentanalysis.client_signature 1232 type: String 1233 value: "" 1234 mirror: never 1235 1236 # Content analysis by external applications, e.g. data-loss prevention apps 1237 - name: browser.contentanalysis.enabled 1238 type: bool 1239 value: false 1240 mirror: always 1241 1242 # On Windows, whether to bring the foreground window to the front when printing 1243 # to avoid a DLP agent stealing focus and cancelling the print (bug 1980225) 1244 - name: browser.contentanalysis.print_set_foreground_window 1245 type: bool 1246 value: true 1247 mirror: always 1248 1249 # What content analysis should return if there is a problem communicating 1250 # with the agent. (see DefaultResponse enum in ContentAnalysis.h) 1251 # Make sure these stay in sync with the out-of-range check in Policies.sys.mjs. 1252 # 1253 # 0: Block all requests 1254 # 1: Warn on all requests (which lets the user decide) 1255 # 2: Allow all requests 1256 - name: browser.contentanalysis.default_result 1257 type: uint32_t 1258 value: 0 1259 mirror: always 1260 1261 # What content analysis should return if the agent takes too long to respond 1262 # to a request. (see DefaultResponse enum in ContentAnalysis.h) 1263 # Make sure these stay in sync with the out-of-range check in Policies.sys.mjs. 1264 # 1265 # 0: Block all requests 1266 # 1: Warn on all requests (which lets the user decide) 1267 # 2: Allow all requests 1268 - name: browser.contentanalysis.timeout_result 1269 type: uint32_t 1270 value: 0 1271 mirror: always 1272 1273 # Is the IPC pipe to the DLP tool specific to the user or to the system? 1274 - name: browser.contentanalysis.is_per_user 1275 type: bool 1276 value: true 1277 mirror: always 1278 1279 # Path name of pipe used to connect to a configured DLP agent. 1280 - name: browser.contentanalysis.pipe_path_name 1281 type: String 1282 value: "path_user" 1283 mirror: never 1284 1285 # Space-separated list of regexs that are compared to URLs of resources 1286 # being checked by content-analysis. Resources that match are not checked 1287 # and are always permitted. 1288 # By default this does not check any about: page except for about:blank 1289 # and about:srcdoc. 1290 - name: browser.contentanalysis.allow_url_regex_list 1291 type: String 1292 value: "^about:(?!blank|srcdoc).*" 1293 mirror: never 1294 1295 # Space-separated list of regexs that are compared to URLs of resources 1296 # being checked by content-analysis. Resources that match are not checked 1297 # and are always denied. 1298 - name: browser.contentanalysis.deny_url_regex_list 1299 type: String 1300 value: "" 1301 mirror: never 1302 1303 # Should CA ignore the system setting and use silent notifications? 1304 - name: browser.contentanalysis.silent_notifications 1305 type: bool 1306 value: false 1307 mirror: always 1308 1309 # Time (secs) after which content analysis operations are considered timed-out 1310 # A non-positive value indicates a timeout of 25ms, which is used for testing. 1311 - name: browser.contentanalysis.agent_timeout 1312 type: int32_t 1313 value: 300 1314 mirror: always 1315 1316 # Should Firefox show a notification or dialog when content analysis blocks 1317 # access? 1318 - name: browser.contentanalysis.show_blocked_result 1319 type: bool 1320 value: true 1321 mirror: always 1322 1323 # Should Firefox bypass content analysis for pastes and drags whose source 1324 # is the same tab? 1325 - name: browser.contentanalysis.bypass_for_same_tab_operations 1326 type: bool 1327 value: false 1328 mirror: always 1329 1330 # Max number of concurrent connections to the DLP agent. For stability 1331 # reasons, values exceeding 256 will be ignored. 1332 - name: browser.contentanalysis.max_connections 1333 type: uint32_t 1334 value: 32 1335 mirror: always 1336 1337 # Should Firefox use content analysis for clipboard operations? 1338 # Note that this has no effect unless browser.contentanalysis.enabled 1339 # is true. 1340 - name: browser.contentanalysis.interception_point.clipboard.enabled 1341 type: bool 1342 value: true 1343 mirror: always 1344 1345 # Should Firefox only analyze plain text contents of the clipboard? 1346 # If this is false, all formats on the clipboard will be analyzed. 1347 # Note that regardless of this setting, files on the clipboard 1348 # will be analyzed. 1349 - name: browser.contentanalysis.interception_point.clipboard.plain_text_only 1350 type: bool 1351 value: true 1352 mirror: always 1353 1354 # Should Firefox use content analysis for download operations? 1355 # Note that this has no effect unless browser.contentanalysis.enabled 1356 # is true. 1357 # This defaults to false so as to not break existing content analysis 1358 # configurations. 1359 - name: browser.contentanalysis.interception_point.download.enabled 1360 type: bool 1361 value: false 1362 mirror: always 1363 1364 # Should Firefox use content analysis for drag and drop operations? 1365 # Note that this has no effect unless browser.contentanalysis.enabled 1366 # is true. 1367 - name: browser.contentanalysis.interception_point.drag_and_drop.enabled 1368 type: bool 1369 value: true 1370 mirror: always 1371 1372 # Should Firefox only analyze plain text contents for drag and drop 1373 # operations? 1374 # If this is false, all formats that are part of the drag and drop 1375 # operation will be analyzed. 1376 # Note that regardless of this setting, files that are dragged and dropped 1377 # will be analyzed. 1378 - name: browser.contentanalysis.interception_point.drag_and_drop.plain_text_only 1379 type: bool 1380 value: true 1381 mirror: always 1382 1383 # Should Firefox use content analysis for file upload operations through 1384 # a file dialog? 1385 # Note that this has no effect unless browser.contentanalysis.enabled 1386 # is true. 1387 - name: browser.contentanalysis.interception_point.file_upload.enabled 1388 type: bool 1389 value: true 1390 mirror: always 1391 1392 # Should Firefox use content analysis for print operations? 1393 # Note that this has no effect unless browser.contentanalysis.enabled 1394 # is true. 1395 - name: browser.contentanalysis.interception_point.print.enabled 1396 type: bool 1397 value: true 1398 mirror: always 1399 1400 # Content blocking for Enhanced Tracking Protection 1401 - name: browser.contentblocking.database.enabled 1402 type: bool 1403 value: false 1404 mirror: always 1405 1406 # How many recent block/unblock actions per origins we remember in the 1407 # Content Blocking log for each top-level window. 1408 - name: browser.contentblocking.originlog.length 1409 type: uint32_t 1410 value: 32 1411 mirror: always 1412 1413 # Whether memorytesting is enabled when crash reporter client is launched 1414 - name: browser.crashReporter.memtest 1415 type: RelaxedAtomicBool 1416 value: true 1417 mirror: always 1418 1419 # Space-separated list of prioritized memory test kinds 1420 - name: browser.crashReporter.memtestKinds 1421 type: DataMutexString 1422 value: "" 1423 mirror: always 1424 1425 # Control whether we enable the feature of crash pull at all 1426 - name: browser.crashReports.crashPull 1427 type: bool 1428 value: true 1429 mirror: always 1430 1431 # Should we prompt the user to send targeted crash report requested by devs? 1432 - name: browser.crashReports.requestedNeverShowAgain 1433 type: bool 1434 value: false 1435 mirror: always 1436 1437 # Do not show crash pull prompt before this unix epoch time to avoid spamming user 1438 - name: browser.crashReports.dontShowBefore 1439 type: uint32_t 1440 value: 0 1441 mirror: always 1442 1443 # Min font device pixel size at which to turn on high quality. 1444 - name: browser.display.auto_quality_min_font_size 1445 type: RelaxedAtomicUint32 1446 value: 20 1447 mirror: always 1448 1449 - name: browser.display.background_color 1450 type: String 1451 value: "#FFFFFF" 1452 mirror: never 1453 1454 - name: browser.display.background_color.dark 1455 type: String 1456 value: "#1C1B22" 1457 mirror: never 1458 1459 # This preference is a bit confusing because we use the opposite 1460 # string value in the colors dialog to indicate to users how FF HCM 1461 # will behave. 1462 # With resect to document colors, these values mean: 1463 # 0 = "default" = always, except in high contrast mode 1464 # 1 = "always" 1465 # 2 = "never" 1466 # 1467 # On windows, we set this to 0, which means FF HCM will mirror OS HCM. 1468 # Everywhere else, we set this to 1, disabling FF HCM. 1469 - name: browser.display.document_color_use 1470 type: RelaxedAtomicUint32 1471 #if defined(XP_WIN) 1472 value: 0 1473 #else 1474 value: 1 1475 #endif 1476 mirror: always 1477 rust: true 1478 1479 # This pref dictates whether or not backplates and background images 1480 # are to be drawn, when in high-contrast mode: 1481 # false: do not draw backplates or render background images 1482 # true: render background images and draw backplates 1483 # This condition is only considered when high-contrast mode is enabled 1484 # in Firefox, ie. when the user has: 1485 # (1) mUseAccessibilityMode set to true (Widows high-contrast mode is on) 1486 # AND browser.display.document_color_use set to 0 1487 # (only with high-contrast themes) OR 1488 # (2) browser.display.document_color_use set to 2 (always) 1489 - name: browser.display.permit_backplate 1490 type: RelaxedAtomicBool 1491 value: true 1492 mirror: always 1493 rust: true 1494 1495 # Whether we should suppress the background-image of the canvas (the root 1496 # frame) if we're in forced colors mode. 1497 # 1498 # This is important because some sites use background-image with a plain color 1499 # and it causes undesirable results in high-contrast mode. 1500 # 1501 # See bug 1614921 for example. 1502 - name: browser.display.suppress_canvas_background_image_on_forced_colors 1503 type: bool 1504 value: true 1505 mirror: always 1506 1507 - name: browser.display.foreground_color 1508 type: String 1509 value: "#000000" 1510 mirror: never 1511 1512 - name: browser.display.foreground_color.dark 1513 type: String 1514 value: "#FBFBFE" 1515 mirror: never 1516 1517 # Determines the behavior of OS zoom settings. 1518 # 1519 # 0: doesn't affect rendering at all 1520 # 1: affects full zoom (dpi, effectively). 1521 # 2: affects text zoom. 1522 # 1523 # Default is (1): Historical behavior on Linux, matches other browsers on 1524 # Windows, and generally creates more consistent rendering. 1525 - name: browser.display.os-zoom-behavior 1526 type: RelaxedAtomicInt32 1527 value: 1 1528 mirror: always 1529 rust: true 1530 1531 # Whether focus rings are always shown by default. 1532 # 1533 # This is the initial value of nsWindowRoot::mShowFocusRings, but it can be 1534 # overridden by system preferences. 1535 - name: browser.display.show_focus_rings 1536 type: bool 1537 value: false 1538 mirror: always 1539 1540 # Enable showing image placeholders while image is loading or when image is broken. 1541 - name: browser.display.show_image_placeholders 1542 type: bool 1543 value: true 1544 mirror: always 1545 1546 # Whether we should always enable focus rings after focus was moved by keyboard. 1547 # 1548 # This behavior matches both historical and GTK / Windows focus behavior. 1549 # 1550 # :focus-visible is intended to provide better heuristics than this. 1551 - name: browser.display.always_show_rings_after_key_focus 1552 type: bool 1553 value: false 1554 mirror: always 1555 1556 # In theory: 0 = never, 1 = quick, 2 = always, though we always just use it as 1557 # a bool! 1558 - name: browser.display.use_document_fonts 1559 type: RelaxedAtomicInt32 1560 value: 1 1561 mirror: always 1562 rust: true 1563 1564 # font-family names for which we'll override use_document_fonts=0, and always 1565 # use the specified font. 1566 # This is to support ligature-icon fonts, which render literal strings like 1567 # "arrow_drop_down" with an icon, even when use_document_fonts is disabled. 1568 # If an author provides & uses such a font, and we decline to use it, we'll end 1569 # up rendering these literal strings where the author intended an icon, which 1570 # can cause all sorts of overlapping/unreadable content. 1571 - name: browser.display.use_document_fonts.icon_font_allowlist 1572 type: String 1573 value: >- 1574 Material Icons, 1575 Material Icons Extended, 1576 Material Icons Outlined, 1577 Material Icons Round, 1578 Material Icons Sharp, 1579 Material Icons Two Tone, 1580 Google Material Icons, 1581 Google Material Icons Filled, 1582 Material Symbols Outlined, 1583 Material Symbols Round, 1584 Material Symbols Rounded, 1585 Material Symbols Sharp, 1586 Google Symbols, 1587 FontAwesome 1588 mirror: never 1589 1590 - name: browser.display.use_system_colors 1591 type: RelaxedAtomicBool 1592 #ifdef XP_WIN 1593 value: true 1594 #else 1595 value: false 1596 #endif 1597 mirror: always 1598 1599 - name: browser.dom.window.dump.enabled 1600 type: RelaxedAtomicBool 1601 value: @IS_NOT_MOZILLA_OFFICIAL@ 1602 mirror: always 1603 1604 # See bug 1738574 1605 - name: browser.download.start_downloads_in_tmp_dir 1606 type: bool 1607 value: false 1608 mirror: always 1609 1610 # See bug 1747343 1611 - name: browser.download.always_ask_before_handling_new_types 1612 type: bool 1613 value: false 1614 mirror: always 1615 1616 # See bug 1790641 1617 - name: browser.download.enableDeletePrivate 1618 type: bool 1619 value: true 1620 mirror: always 1621 1622 - name: browser.download.deletePrivate 1623 type: bool 1624 value: false 1625 mirror: always 1626 1627 # See bug 1731668 1628 - name: browser.download.enable_spam_prevention 1629 type: bool 1630 value: false 1631 mirror: always 1632 1633 # See bug 1772569 1634 - name: browser.download.open_pdf_attachments_inline 1635 type: bool 1636 value: false 1637 mirror: always 1638 1639 # tor-browser#42220 1640 - name: browser.download.ignore_content_disposition 1641 type: bool 1642 value: true 1643 mirror: always 1644 1645 # See bug 1811830 1646 - name: browser.download.force_save_internally_handled_attachments 1647 type: bool 1648 value: false 1649 mirror: always 1650 1651 - name: browser.download.sanitize_non_media_extensions 1652 type: bool 1653 value: true 1654 mirror: always 1655 1656 # Image document's automatic image sizing. 1657 - name: browser.enable_automatic_image_resizing 1658 type: bool 1659 value: true 1660 mirror: always 1661 1662 # Image document's click-to-resize. 1663 - name: browser.enable_click_image_resizing 1664 type: bool 1665 value: @IS_NOT_MOBILE@ 1666 mirror: always 1667 1668 - name: browser.find.ignore_ruby_annotations 1669 type: bool 1670 value: true 1671 mirror: always 1672 1673 #if defined(XP_MACOSX) 1674 # Whether pressing Esc will exit fullscreen. 1675 - name: browser.fullscreen.exit_on_escape 1676 type: bool 1677 value: true 1678 mirror: always 1679 #endif 1680 1681 # The max url length we'll store in history. 1682 # 1683 # The default value is mostly a guess based on various facts: 1684 # 1685 # * IE didn't support urls longer than 2083 chars 1686 # * Sitemaps protocol used to support a maximum of 2048 chars 1687 # * Various SEO guides suggest to not go over 2000 chars 1688 # * Various apps/services are known to have issues over 2000 chars 1689 # * RFC 2616 - HTTP/1.1 suggests being cautious about depending 1690 # on URI lengths above 255 bytes 1691 # 1692 - name: browser.history.maxUrlLength 1693 type: uint32_t 1694 value: 2000 1695 mirror: always 1696 1697 # Max size of push/replaceState data parameter 1698 - name: browser.history.maxStateObjectSize 1699 type: int32_t 1700 value: 16777216 1701 mirror: always 1702 1703 # True to collect wireframes upon navigations / pushState 1704 - name: browser.history.collectWireframes 1705 type: bool 1706 value: false 1707 mirror: always 1708 1709 # If false, show internal error page for HTTP responses with error 1710 # codes (4xx, 5xx) and "Content-Length": 0 instead of blank page 1711 # See https://bugzilla.mozilla.org/show_bug.cgi?id=1325876#c32 for why this 1712 # is disabled on Android. 1713 - name: browser.http.blank_page_with_error_response.enabled 1714 type: bool 1715 #if !defined(ANDROID) 1716 value: false 1717 #else 1718 value: true 1719 #endif 1720 mirror: always 1721 1722 # The minimum area for a rect to be included in a wireframe, in CSS pixels. 1723 # 1724 # The current value of 50 is pretty arbitrary, and will be tuned as we refine 1725 # and test the wireframing capability. 1726 - name: browser.history.wireframeAreaThreshold 1727 type: uint32_t 1728 value: 50 1729 mirror: always 1730 1731 #if defined(XP_WIN) || defined(XP_LINUX) 1732 # Notify TabUnloader or send the memory pressure if the memory resource 1733 # notification is signaled AND the available commit space is lower than 1734 # this value. 1735 - name: browser.low_commit_space_threshold_mb 1736 type: RelaxedAtomicUint32 1737 value: 200 1738 mirror: always 1739 #endif 1740 1741 #ifdef XP_LINUX 1742 # On Linux we also check available memory in comparison to total memory, 1743 # and use this percent value (out of 100) to determine if we are in a 1744 # low memory scenario. 1745 - name: browser.low_commit_space_threshold_percent 1746 type: RelaxedAtomicUint32 1747 value: 5 1748 mirror: always 1749 #endif 1750 1751 # Render animations and videos as a solid color 1752 - name: browser.measurement.render_anims_and_video_solid 1753 type: RelaxedAtomicBool 1754 value: false 1755 mirror: always 1756 1757 - name: browser.navigation.requireUserInteraction 1758 type: bool 1759 value: true 1760 mirror: always 1761 1762 # Indicates if about:newtab shows content (enabled) or just blank. 1763 - name: browser.newtabpage.enabled 1764 type: bool 1765 value: true 1766 mirror: always 1767 1768 # Open PDFs in Edge with the --app flag if it is the default. 1769 - name: browser.pdf.launchDefaultEdgeAsApp 1770 type: bool 1771 value: true 1772 mirror: always 1773 1774 # Maximium delay between keystrokes that will be considered typing (milliseconds). 1775 - name: browser.places.interactions.typing_timeout_ms 1776 type: RelaxedAtomicUint32 1777 value: 3000 1778 mirror: always 1779 1780 # Maximum delay between scroll input events that will be considered a scrolling interaction (milliseconds). 1781 - name: browser.places.interactions.scrolling_timeout_ms 1782 type: RelaxedAtomicUint32 1783 value: 5000 1784 mirror: always 1785 1786 # Number of seconds till the sponsored session is timeout. 1787 - name: browser.places.sponsoredSession.timeoutSecs 1788 type: RelaxedAtomicUint32 1789 value: 3600 1790 mirror: always 1791 1792 # Whether to start the private browsing mode at application startup 1793 - name: browser.privatebrowsing.autostart 1794 type: bool 1795 value: false 1796 mirror: always 1797 1798 # Force usage of in-memory (rather than file on disk) media cache for video streaming when private browsing 1799 - name: browser.privatebrowsing.forceMediaMemoryCache 1800 type: bool 1801 value: false 1802 mirror: always 1803 1804 # Disable state restoration, allowing the kiosk desktop environment to manage state and position. 1805 - name: browser.restoreWindowState.disabled 1806 type: bool 1807 value: false 1808 mirror: always 1809 1810 # Communicates the toolbar color to platform (for e.g., prefers-color-scheme). 1811 # 1812 # Returns whether the toolbar is dark (0), light (1), or system (2). The 1813 # theming code overrides it if appropriate. 1814 - name: browser.theme.toolbar-theme 1815 type: RelaxedAtomicUint32 1816 value: 2 1817 mirror: always 1818 1819 # Whether (-moz-native-theme) evaluates to true by default. 1820 - name: browser.theme.native-theme 1821 type: RelaxedAtomicBool 1822 #ifdef MOZ_WIDGET_GTK 1823 value: true 1824 #else 1825 value: false 1826 #endif 1827 mirror: always 1828 rust: true 1829 1830 # Communicates the preferred content theme color to platform (for e.g., 1831 # prefers-color-scheme). 1832 # 1833 # dark (0), light (1), or system (2) 1834 # 1835 # Default to "system", the theming code sets it appropriately. 1836 - name: browser.theme.content-theme 1837 type: RelaxedAtomicUint32 1838 value: 2 1839 mirror: always 1840 rust: true 1841 1842 # Whether the firefox titlebar respects the 1843 # -moz-windows-accent-color-in-titlebar setting on the tab strip. 1844 - name: browser.theme.windows.accent-color-in-tabs.enabled 1845 type: RelaxedAtomicBool 1846 value: false 1847 mirror: always 1848 rust: true 1849 1850 # Blocked plugin content 1851 - name: browser.safebrowsing.blockedURIs.enabled 1852 type: bool 1853 value: true 1854 mirror: always 1855 1856 # Malware protection 1857 - name: browser.safebrowsing.malware.enabled 1858 type: bool 1859 value: true 1860 mirror: always 1861 1862 # Phishing protection 1863 - name: browser.safebrowsing.phishing.enabled 1864 type: bool 1865 value: true 1866 mirror: always 1867 1868 # Maximum size for an array to store the safebrowsing prefixset. 1869 - name: browser.safebrowsing.prefixset_max_array_size 1870 type: RelaxedAtomicUint32 1871 value: 512*1024 1872 mirror: always 1873 1874 # Whether to only classify top-level channels for safe browsing. 1875 - name: browser.safebrowsing.only_top_level 1876 type: bool 1877 value: true 1878 mirror: always 1879 1880 # SessionStore prefs 1881 # Maximum number of bytes of DOMSessionStorage data we collect per origin. 1882 - name: browser.sessionstore.dom_storage_limit 1883 type: uint32_t 1884 value: 2048 1885 mirror: always 1886 1887 # Maximum number of characters of form field data per field we collect. 1888 - name: browser.sessionstore.dom_form_limit 1889 type: uint32_t 1890 value: 1024*1024*2 1891 mirror: always 1892 1893 # Maximum number of characters of form data we collect per origin. 1894 - name: browser.sessionstore.dom_form_max_limit 1895 type: uint32_t 1896 value: 1024*1024*50 1897 mirror: always 1898 1899 # Minimal interval between two save operations in milliseconds (while the user is active). 1900 - name: browser.sessionstore.interval 1901 type: RelaxedAtomicUint32 1902 value: 15000 1903 mirror: always 1904 1905 # Disable collection of data for session store using the native collector code, 1906 # instead use the older implementation that's not compatible with session 1907 # history in the parent (and thus Fission). 1908 - name: browser.sessionstore.disable_platform_collection 1909 type: bool 1910 #if defined(MOZ_THUNDERBIRD) 1911 value: true 1912 #else 1913 value: false 1914 #endif 1915 mirror: once 1916 do_not_use_directly: true 1917 1918 #if defined(NIGHTLY_BUILD) || defined(MOZ_DEV_EDITION) || defined(DEBUG) 1919 - name: browser.startup.record 1920 type: bool 1921 value: false 1922 mirror: always 1923 #endif 1924 1925 # Causes SessionStore to ignore non-final update messages from 1926 # browser tabs that were not caused by a flush from the parent. 1927 # This is a testing flag and should not be used by end-users. 1928 - name: browser.sessionstore.debug.no_auto_updates 1929 type: RelaxedAtomicBool 1930 value: false 1931 mirror: always 1932 1933 # Whether to restore windows to the virtual desktop (aka workspace) 1934 # they were on when they were closed. 1935 - name: browser.sessionstore.restore_windows_to_virtual_desktop 1936 type: RelaxedAtomicBool 1937 value: true 1938 mirror: always 1939 1940 # If set, when a link is opened to a new tab, do not switch to the new tab. 1941 # 1942 # This pref is used when the link is opened with "Open Link in New Tab", 1943 # middle-click, etc. 1944 # 1945 # See also browser.tabs.loadDivertedInBackground, which is used when the website 1946 # diverts the link into a new tab. 1947 - name: browser.tabs.loadInBackground 1948 type: bool 1949 value: true 1950 mirror: always 1951 1952 # Whether we should draw the tabs on top of the titlebar. 1953 # 1954 # no (0), yes (1), or default (2), which is true everywhere except Linux. 1955 - name: browser.tabs.inTitlebar 1956 type: int32_t 1957 value: 2 1958 mirror: always 1959 1960 # If set, middle clicking on a link opens the link in a new tab. 1961 - name: browser.tabs.opentabfor.middleclick 1962 type: bool 1963 value: true 1964 mirror: always 1965 1966 # Testing-only pref which makes data: URIs be loaded in a "web" content process 1967 # instead of within a process based on the URI's loader. 1968 - name: browser.tabs.remote.dataUriInDefaultWebProcess 1969 type: bool 1970 value: false 1971 mirror: always 1972 1973 # Testing-only pref to force system-triggered about:blank loads to not change 1974 # content processes. This is used for performance tests which load an 1975 # about:blank document between navigations for historical reasons to avoid 1976 # unnecessary process switches. 1977 - name: browser.tabs.remote.systemTriggeredAboutBlankAnywhere 1978 type: bool 1979 value: false 1980 mirror: always 1981 1982 # Testing-only pref to cause PBrowser creation for a specific BrowsingContext to 1983 # fail, to test the errored codepath. 1984 - name: browser.tabs.remote.testOnly.failPBrowserCreation.enabled 1985 type: bool 1986 value: false 1987 mirror: always 1988 1989 - name: browser.tabs.remote.force-paint 1990 type: bool 1991 value: true 1992 mirror: always 1993 1994 # When this pref is enabled document loads with a mismatched 1995 # Cross-Origin-Embedder-Policy header will fail to load 1996 - name: browser.tabs.remote.useCrossOriginEmbedderPolicy 1997 type: RelaxedAtomicBool 1998 value: true 1999 mirror: always 2000 2001 # This pref makes `credentialless` a valid value for 2002 # Cross-Origin-Embedder-Policy header 2003 - name: browser.tabs.remote.coep.credentialless 2004 type: RelaxedAtomicBool 2005 #if defined(ANDROID) 2006 value: @IS_NIGHTLY_BUILD@ 2007 #else 2008 value: true 2009 #endif 2010 mirror: always 2011 do_not_use_directly: true 2012 2013 # When this pref is enabled top level loads with a mismatched 2014 # Cross-Origin-Opener-Policy header will be loaded in a separate process. 2015 - name: browser.tabs.remote.useCrossOriginOpenerPolicy 2016 type: RelaxedAtomicBool 2017 value: true 2018 mirror: always 2019 2020 # When this pref is enabled then we use a separate content process for 2021 # top-level load of file:// URIs 2022 - name: browser.tabs.remote.separateFileUriProcess 2023 type: RelaxedAtomicBool 2024 #if !defined(ANDROID) 2025 value: true 2026 #else 2027 value: false 2028 #endif 2029 mirror: always 2030 2031 # Pref to control whether we use a separate privileged content process 2032 # for certain mozilla webpages (which are listed in the pref 2033 # browser.tabs.remote.separatedMozillaDomains). 2034 - name: browser.tabs.remote.separatePrivilegedMozillaWebContentProcess 2035 type: bool 2036 value: false 2037 mirror: always 2038 2039 # Whether or not process selection for subframes will prefer re-using an 2040 # existing content process over creating a new one. Enabling this pref should 2041 # reduce the number of processes allocated for non-first-party domains if 2042 # dom.ipc.processCount.webIsolated > 1. 2043 - name: browser.tabs.remote.subframesPreferUsed 2044 type: bool 2045 value: true 2046 mirror: always 2047 2048 # When this pref is enabled, opaque response is only allowed to enter the 2049 # content process if it's a response for media (audio, image, video), CSS, or 2050 # JavaScript. 2051 - name: browser.opaqueResponseBlocking 2052 type: RelaxedAtomicBool 2053 #if defined(ANDROID) 2054 value: false 2055 #else 2056 value: true 2057 #endif 2058 mirror: always 2059 2060 # When this pref is enabled, the JS validator will be enabled for 2061 # ORB. 2062 - name: browser.opaqueResponseBlocking.javascriptValidator 2063 type: bool 2064 value: true 2065 mirror: always 2066 2067 # This pref controls how filtering of opaque responses for calls to `Window.fetch`. 2068 # (and similar) is performed in the parent process. This is intended to make sure 2069 # that data that would be filtered in a content process never actually reaches that 2070 # content process. 2071 # See https://fetch.spec.whatwg.org/#concept-filtered-response-opaque 2072 # 0) Don't filter in the parent process at all, and let content processes handle 2073 # opaque filtering. Regardless of if ORB is enabled or not. N.B. that if ORB 2074 # is enabled opaque responses will be blocked. 2075 # 1) If ORB is enabled, in the parent process, filter the responses that ORB allows. 2076 # N.B. any responses ORB doesn't allow will not send data to a content process 2077 # since they will return a NetworkError. If the request is allowed by ORB, the 2078 # internal response will be intact and sent to the content process as is. 2079 # 2) If ORB is enabled, in the parent process, filter the responses that ORB blocks, 2080 # when they were issued by `Window.fetch` (and similar). 2081 # 3) Filter all responses in the parent, regardless of if ORB is enabled or not. 2082 # This means that opaque responses coming from `Window.fetch` won't even be 2083 # considered for being blocked by ORB. 2084 - name: browser.opaqueResponseBlocking.filterFetchResponse 2085 type: uint32_t 2086 value: 2 2087 mirror: always 2088 do_not_use_directly: true 2089 2090 # This pref controls how exceptions to opaque response blocking for the media MIME types 2091 # `audio/*` and `video/*` are handled. This is because step 8 in the spec that performs 2092 # audio or video type pattern matching cannot handle certain MIME types (yet). 2093 # See https://whatpr.org/fetch/1442.html#orb-algorithm 2094 # 0) No exceptions 2095 # 1) Some exceptions, explicitly hard coded in `IsOpaqueSafeListedSpecBreakingMIMEType` 2096 # 2) Allow all MIME types beginning with `audio/*` or `video/*`. 2097 - name: browser.opaqueResponseBlocking.mediaExceptionsStrategy 2098 type: uint32_t 2099 value: 1 2100 mirror: always 2101 do_not_use_directly: true 2102 2103 # When true, zooming will be enabled on all sites, even ones that declare 2104 # user-scalable=no or use touch-action to disable pinch gestures. 2105 - name: browser.ui.zoom.force-user-scalable 2106 type: RelaxedAtomicBool 2107 value: false 2108 mirror: always 2109 2110 # tor-browser#28005, tor-browser#40458: enable .tor.onion aliases by default. 2111 # When they are enabled, the browser will need to refresh the alias lists by 2112 # connecting to third parties periodically. 2113 - name: browser.urlbar.onionRewrites.enabled 2114 type: RelaxedAtomicBool 2115 value: true 2116 mirror: always 2117 2118 - name: browser.viewport.desktopWidth 2119 type: RelaxedAtomicInt32 2120 value: 980 2121 mirror: always 2122 2123 - name: browser.visited_color 2124 type: String 2125 value: "#551A8B" 2126 mirror: never 2127 2128 # If you change this, you probably also want to change 2129 # nsXPLookAndFeel::GenericDarkColor for Visitedtext. 2130 - name: browser.visited_color.dark 2131 type: String 2132 value: "#FFADFF" 2133 mirror: never 2134 2135 # When true, soft reloads (including location.reload()) 2136 # will only froce validate the top level document, subresources will 2137 # be loaded normally as-if users normally navigated to the page. 2138 - name: browser.soft_reload.only_force_validate_top_level_document 2139 type: bool 2140 value: true 2141 mirror: always 2142 2143 # Whether or not to save and restore zoom levels on a per-site basis. 2144 - name: browser.zoom.siteSpecific 2145 type: bool 2146 value: @IS_NOT_ANDROID@ 2147 mirror: always 2148 2149 # Whether we block opening pickers from background tabs. 2150 - name: browser.disable_pickers_background_tabs 2151 type: RelaxedAtomicBool 2152 value: true 2153 mirror: always 2154 2155 # Whether we block opening pickers from hidden extension pages in WebExtensions. 2156 # This includes background pages and devtools pages, but not background tabs. 2157 - name: browser.disable_pickers_in_hidden_extension_pages 2158 type: RelaxedAtomicBool 2159 value: @IS_NIGHTLY_BUILD@ 2160 mirror: always 2161 2162 #--------------------------------------------------------------------------- 2163 # Prefs starting with "channelclassifier." 2164 #--------------------------------------------------------------------------- 2165 2166 - name: channelclassifier.allowlist_example 2167 type: bool 2168 value: false 2169 mirror: always 2170 2171 #--------------------------------------------------------------------------- 2172 # Prefs starting with "clipboard." 2173 #--------------------------------------------------------------------------- 2174 2175 # Clipboard behavior. 2176 - name: clipboard.autocopy 2177 type: bool 2178 #if !defined(ANDROID) && !defined(XP_MACOSX) && defined(XP_UNIX) 2179 value: true 2180 #else 2181 value: false 2182 #endif 2183 mirror: always 2184 2185 # Allow clipboard data to be copied to the clipboard history/cloud 2186 # (used for sensitive data from about:logins and Private Browsing) 2187 # On GTK this controls the usage of the x-kde-passwordManagerHint MIME. 2188 - name: clipboard.copyPrivateDataToClipboardCloudOrHistory 2189 type: bool 2190 value: false 2191 mirror: always 2192 2193 #ifdef XP_WIN 2194 # Whether to put a file promise onto the clipboard when copying images on Windows 2195 - name: clipboard.imageAsFile.enabled 2196 type: bool 2197 value: false 2198 mirror: always 2199 2200 # On Windows, whether to add PNG before BMP (CF_DIB) in the list of supported 2201 # formats when copying an image to the clipboard. 2202 - name: clipboard.copy_image.as_png 2203 type: RelaxedAtomicBool 2204 value: true 2205 mirror: always 2206 2207 # On Windows, whether we encode an image as PNG (instead of the previous 2208 # default of BMP) when an application to which we are copying an image 2209 # requests that it be provided as a temporary file (CF_HDROP). 2210 - name: clipboard.copy_image_file.as_png 2211 type: RelaxedAtomicBool 2212 value: true 2213 mirror: always 2214 #endif 2215 2216 #--------------------------------------------------------------------------- 2217 # Prefs starting with "consoleservice." 2218 #--------------------------------------------------------------------------- 2219 2220 #if defined(ANDROID) 2221 # Disable sending console to logcat on release builds. 2222 - name: consoleservice.logcat 2223 type: RelaxedAtomicBool 2224 value: @IS_NOT_RELEASE_OR_BETA@ 2225 mirror: always 2226 #endif 2227 2228 #--------------------------------------------------------------------------- 2229 # Prefs starting with "content." 2230 #--------------------------------------------------------------------------- 2231 2232 - name: content.cors.disable 2233 type: bool 2234 value: false 2235 mirror: always 2236 2237 # If true, we'll use the triggering principal rather than the loading principal 2238 # when doing CORS checks. Doing so is generally not correct, but we shipped 2239 # with this behavior for a long time, so we're leaving it preffable in case 2240 # it's needed for testing or if we discover some edge case that requires it. 2241 # 2242 # TODO(dholbert): Remove this pref after the 'false' default-value has 2243 # successfully shipped for a release or two. 2244 - name: content.cors.use_triggering_principal 2245 type: bool 2246 value: false 2247 mirror: always 2248 2249 # Back off timer notification after count. 2250 # -1 means never. 2251 - name: content.notify.backoffcount 2252 type: int32_t 2253 value: -1 2254 mirror: always 2255 2256 # Notification interval in microseconds. 2257 # The notification interval has a dramatic effect on how long it takes to 2258 # initially display content for slow connections. The current value 2259 # provides good incremental display of content without causing an increase 2260 # in page load time. If this value is set below 1/10 of a second it starts 2261 # to impact page load performance. 2262 # See bugzilla bug 72138 for more info. 2263 - name: content.notify.interval 2264 type: int32_t 2265 value: 120000 2266 mirror: always 2267 2268 # Do we notify based on time? 2269 - name: content.notify.ontimer 2270 type: bool 2271 value: true 2272 mirror: always 2273 2274 # How many times to deflect in interactive mode. 2275 - name: content.sink.interactive_deflect_count 2276 type: int32_t 2277 value: 0 2278 mirror: always 2279 2280 # How many times to deflect in perf mode. 2281 - name: content.sink.perf_deflect_count 2282 type: int32_t 2283 value: 200 2284 mirror: always 2285 2286 # Parse mode for handling pending events. 2287 # 0 = don't check for pending events 2288 # 1 = don't deflect if there are pending events 2289 # 2 = bail if there are pending events 2290 - name: content.sink.pending_event_mode 2291 type: int32_t 2292 #ifdef XP_WIN 2293 value: 1 2294 #else 2295 value: 0 2296 #endif 2297 mirror: always 2298 2299 # How often to probe for pending events. 1 = every token. 2300 - name: content.sink.event_probe_rate 2301 type: int32_t 2302 value: 1 2303 mirror: always 2304 2305 # How long to stay off the event loop in interactive mode (microseconds). 2306 - name: content.sink.interactive_parse_time 2307 type: int32_t 2308 value: 3000 2309 mirror: always 2310 2311 # How long to stay off the event loop in perf mode. 2312 - name: content.sink.perf_parse_time 2313 type: int32_t 2314 value: 30000 2315 mirror: always 2316 2317 # How long to be in interactive mode after an event. 2318 - name: content.sink.interactive_time 2319 type: uint32_t 2320 value: 750000 2321 mirror: always 2322 2323 # How long to stay in perf mode after initial loading. 2324 - name: content.sink.initial_perf_time 2325 type: uint32_t 2326 value: 2000000 2327 mirror: always 2328 2329 # Should we switch between perf-mode and interactive-mode? 2330 # 0 = Switch 2331 # 1 = Interactive mode 2332 # 2 = Perf mode 2333 - name: content.sink.enable_perf_mode 2334 type: int32_t 2335 value: 0 2336 mirror: always 2337 2338 #--------------------------------------------------------------------------- 2339 # Prefs starting with "converter." 2340 #--------------------------------------------------------------------------- 2341 2342 # Whether we include ruby annotation in the text despite whether it 2343 # is requested. This was true because we didn't explicitly strip out 2344 # annotations. Set false by default to provide a better behavior, but 2345 # we want to be able to pref-off it if user doesn't like it. 2346 - name: converter.html2txt.always_include_ruby 2347 type: bool 2348 value: false 2349 mirror: always 2350 2351 #--------------------------------------------------------------------------- 2352 # Prefs starting with "cookiebanners." 2353 #--------------------------------------------------------------------------- 2354 2355 # Controls the cookie banner handling mode in normal browsing. 2356 # 0: Disables all cookie banner handling. 2357 # 1: Reject-all if possible, otherwise do nothing. 2358 # 2: Reject-all if possible, otherwise accept-all. 2359 - name: cookiebanners.service.mode 2360 type: uint32_t 2361 value: 0 2362 mirror: always 2363 2364 # When set to true, cookie banners are detected and detection events are 2365 # dispatched, but they will not be handled. Requires the service to be enabled 2366 # for the desired mode via pref cookiebanners.service.mode* 2367 - name: cookiebanners.service.detectOnly 2368 type: bool 2369 value: false 2370 mirror: always 2371 2372 # Controls the cookie banner handling mode in private browsing. Same mode 2373 # options as the normal browsing pref above. 2374 - name: cookiebanners.service.mode.privateBrowsing 2375 type: uint32_t 2376 value: 0 2377 mirror: always 2378 2379 # Enables use of global CookieBannerRules, which apply to all sites. This is 2380 # used for click rules that can handle common Consent Management Providers 2381 # (CMP). 2382 # Enabling this (when the cookie handling feature is enabled) may negatively 2383 # impact site performance since it requires us to run rule-defined query 2384 # selectors for every page. 2385 - name: cookiebanners.service.enableGlobalRules 2386 type: bool 2387 value: true 2388 mirror: always 2389 2390 # Whether global rules are allowed to run in sub-frames. Running query selectors 2391 # in every sub-frame may negatively impact performance, but is required for some 2392 # CMPs. 2393 - name: cookiebanners.service.enableGlobalRules.subFrames 2394 type: bool 2395 value: true 2396 mirror: always 2397 2398 # Enables the cookie banner cookie injector. The cookie banner cookie injector 2399 # depends on the `cookiebanners.service.mode` pref above. 2400 - name: cookiebanners.cookieInjector.enabled 2401 type: bool 2402 value: true 2403 mirror: always 2404 2405 # By default, how many seconds in the future cookies should expire after they 2406 # have been injected. Defaults to 12 months. Individual cookie rules may 2407 # override this. 2408 - name: cookiebanners.cookieInjector.defaultExpiryRelative 2409 type: uint32_t 2410 value: 31536000 2411 mirror: always 2412 2413 # How many times per site and site load to check for cookie banners after which 2414 # the mechanism is considered on cooldown for the site in the current browsing 2415 # session. If the threshold is set to zero, banner clicking won't be considered 2416 # as being on cooldown regardless of how many times the site is loaded. The 2417 # maximum value for the retry is 255, any value over than that will be capped. 2418 - name: cookiebanners.bannerClicking.maxTriesPerSiteAndSession 2419 type: uint32_t 2420 value: 3 2421 mirror: always 2422 2423 #--------------------------------------------------------------------------- 2424 # Prefs starting with "datareporting." 2425 #--------------------------------------------------------------------------- 2426 2427 # Do note that the toggle on Fenix and Focus does NOT reflect to this pref. 2428 - name: datareporting.healthreport.uploadEnabled 2429 type: RelaxedAtomicBool 2430 value: false 2431 mirror: always 2432 rust: true 2433 2434 #--------------------------------------------------------------------------- 2435 # Prefs starting with "device." 2436 #--------------------------------------------------------------------------- 2437 2438 # Is support for the device sensors API enabled? 2439 - name: device.sensors.enabled 2440 type: bool 2441 value: true 2442 mirror: always 2443 2444 # KaiOS-only, see https://bugzilla.mozilla.org/show_bug.cgi?id=1699707#c10 2445 - name: device.sensors.ambientLight.enabled 2446 type: bool 2447 value: false 2448 mirror: always 2449 2450 - name: device.sensors.motion.enabled 2451 type: bool 2452 value: true 2453 mirror: always 2454 2455 - name: device.sensors.orientation.enabled 2456 type: bool 2457 value: true 2458 mirror: always 2459 2460 # KaiOS-only, see https://bugzilla.mozilla.org/show_bug.cgi?id=1699707#c10 2461 - name: device.sensors.proximity.enabled 2462 type: bool 2463 value: false 2464 mirror: always 2465 2466 - name: device.sensors.test.events 2467 type: bool 2468 value: false 2469 mirror: always 2470 2471 #--------------------------------------------------------------------------- 2472 # Prefs starting with "devtools." 2473 #--------------------------------------------------------------------------- 2474 2475 - name: devtools.console.stdout.chrome 2476 type: RelaxedAtomicBool 2477 value: @IS_NOT_MOZILLA_OFFICIAL@ 2478 mirror: always 2479 2480 - name: devtools.console.stdout.content 2481 type: RelaxedAtomicBool 2482 value: false 2483 mirror: always 2484 2485 #--------------------------------------------------------------------------- 2486 # Prefs starting with "docshell." 2487 #--------------------------------------------------------------------------- 2488 2489 # Used to indicate whether session history listeners should be notified 2490 # about content viewer eviction. Used only for testing. 2491 - name: docshell.shistory.testing.bfevict 2492 type: bool 2493 value: false 2494 mirror: always 2495 2496 # If true, pages with an opener won't be bfcached. 2497 - name: docshell.shistory.bfcache.require_no_opener 2498 type: bool 2499 value: @IS_ANDROID@ 2500 mirror: always 2501 2502 # If true, page with beforeunload or unload event listeners can be bfcached. 2503 - name: docshell.shistory.bfcache.allow_unload_listeners 2504 type: bool 2505 value: @IS_ANDROID@ 2506 mirror: always 2507 2508 # If true, page with beforeunload event listeners can be bfcached. 2509 # This only works when sessionHistoryInParent is enabled. 2510 - name: docshell.shistory.bfcache.ship_allow_beforeunload_listeners 2511 type: bool 2512 value: true 2513 mirror: always 2514 2515 - name: docshell.shistory.sameDocumentNavigationOverridesLoadType 2516 type: bool 2517 value: @IS_NOT_NIGHTLY_BUILD@ 2518 mirror: always 2519 2520 - name: docshell.shistory.sameDocumentNavigationOverridesLoadType.forceDisable 2521 type: String 2522 value: "" 2523 mirror: never 2524 2525 #--------------------------------------------------------------------------- 2526 # Prefs starting with "dom." 2527 #--------------------------------------------------------------------------- 2528 2529 # Allow cut/copy 2530 - name: dom.allow_cut_copy 2531 type: bool 2532 value: true 2533 mirror: always 2534 2535 # Checks if offscreen animation throttling is enabled. 2536 - name: dom.animations.offscreen-throttling 2537 type: bool 2538 value: true 2539 mirror: always 2540 2541 # Should CommitStyles use the end-point inclusive timing? 2542 - name: dom.animations.commit-styles-endpoint-inclusive 2543 type: bool 2544 value: true 2545 mirror: always 2546 2547 # Is support for Navigator.getBattery enabled? 2548 - name: dom.battery.enabled 2549 type: bool 2550 value: true 2551 mirror: always 2552 2553 # Block multiple external protocol URLs in iframes per single event. 2554 - name: dom.block_external_protocol_in_iframes 2555 type: bool 2556 value: true 2557 mirror: always 2558 2559 # Block Insecure downloads from Secure Origins 2560 - name: dom.block_download_insecure 2561 type: bool 2562 value: true 2563 mirror: always 2564 2565 # The maximum number of popup that is allowed to be opened. Set to -1 for no 2566 # limit. 2567 - name: dom.popup_maximum 2568 type: int32_t 2569 value: -1 2570 mirror: always 2571 2572 # Enable CacheAPI in private browsing mode with encryption 2573 - name: dom.cache.privateBrowsing.enabled 2574 type: RelaxedAtomicBool 2575 value: true 2576 mirror: always 2577 2578 # Exposes window.caches and skips SecureContext check. 2579 # dom.serviceWorkers.testing.enabled also includes the same effect. 2580 - name: dom.caches.testing.enabled 2581 type: RelaxedAtomicBool 2582 value: false 2583 mirror: always 2584 2585 # A pref that is used to slow down database initialization for testing purposes. 2586 - name: dom.cache.databaseInitialization.pauseOnIOThreadMs 2587 type: RelaxedAtomicUint32 2588 value: 0 2589 mirror: always 2590 2591 # Disable capture attribute for input elements; only supported on GeckoView. 2592 - name: dom.capture.enabled 2593 type: bool 2594 value: false 2595 mirror: always 2596 2597 # HTML specification says the level should be 5 2598 # https://html.spec.whatwg.org/#timer-initialisation-steps 2599 - name: dom.clamp.timeout.nesting.level 2600 type: RelaxedAtomicUint32 2601 value: 5 2602 mirror: always 2603 2604 # Skip the security checks for document.cookie. 2605 - name: dom.cookie.testing.enabled 2606 type: RelaxedAtomicBool 2607 value: false 2608 mirror: always 2609 2610 # https://whatpr.org/html/10168/interaction.html#closewatcher 2611 - name: dom.closewatcher.enabled 2612 type: bool 2613 #if defined(ANDROID) 2614 value: false 2615 #else 2616 value: @IS_NIGHTLY_BUILD@ 2617 #endif 2618 mirror: always 2619 2620 # https://github.com/whatwg/html/pull/10737 2621 - name: dom.dialog.light-dismiss.enabled 2622 type: bool 2623 value: true 2624 mirror: always 2625 2626 # Enable relaxed Custom Element names 2627 - name: dom.custom_elements.relaxed_names.enabled 2628 type: bool 2629 value: true 2630 mirror: always 2631 2632 # Disable custom highlight API; implementation pending. 2633 - name: dom.customHighlightAPI.enabled 2634 type: RelaxedAtomicBool 2635 value: true 2636 mirror: always 2637 rust: true 2638 2639 # Allow control characters appear in composition string. 2640 # When this is false, control characters except 2641 # CHARACTER TABULATION (horizontal tab) are removed from 2642 # both composition string and data attribute of compositionupdate 2643 # and compositionend events. 2644 - name: dom.compositionevent.allow_control_characters 2645 type: bool 2646 value: false 2647 mirror: always 2648 2649 # Compression Streams (zstd) (CompressionStream/DecompressionStream) 2650 # Whether or not "zstd" is a supported format for these streams. 2651 - name: dom.compression_streams.zstd.enabled 2652 type: RelaxedAtomicBool 2653 value: false 2654 mirror: always 2655 2656 # Enable cookie-store API 2657 - name: dom.cookieStore.enabled 2658 type: RelaxedAtomicBool 2659 value: true 2660 mirror: always 2661 2662 # Is support for CSSPseudoElement enabled? 2663 - name: dom.css_pseudo_element.enabled 2664 type: bool 2665 value: false 2666 mirror: always 2667 2668 # After how many seconds we allow external protocol URLs in iframe when not in 2669 # single events 2670 - name: dom.delay.block_external_protocol_in_iframes 2671 type: uint32_t 2672 value: 10 # in seconds 2673 mirror: always 2674 2675 # Whether the above pref has any effect at all. 2676 # Make sure cases like bug 1795380 work before trying to turn this off. See 2677 # bug 1680721 for some other context that might be relevant. 2678 - name: dom.delay.block_external_protocol_in_iframes.enabled 2679 type: bool 2680 value: true 2681 mirror: always 2682 2683 - name: dom.details_group.enabled 2684 type: bool 2685 value: true 2686 mirror: always 2687 2688 # Only propagate the open window click permission if the setTimeout() is equal 2689 # to or less than this value. 2690 - name: dom.disable_open_click_delay 2691 type: int32_t 2692 value: 1000 2693 mirror: always 2694 2695 - name: dom.disable_open_during_load 2696 type: bool 2697 value: false 2698 mirror: always 2699 2700 - name: dom.disable_beforeunload 2701 type: bool 2702 value: false 2703 mirror: always 2704 2705 - name: dom.require_user_interaction_for_beforeunload 2706 type: bool 2707 value: true 2708 mirror: always 2709 2710 # Enable/disable Gecko specific edit commands 2711 - name: dom.document.edit_command.contentReadOnly.enabled 2712 type: bool 2713 value: false 2714 mirror: always 2715 2716 - name: dom.document.edit_command.insertBrOnReturn.enabled 2717 type: bool 2718 value: false 2719 mirror: always 2720 2721 # Only intended for fuzzing purposes, this will break mozPrintCallback, etc. 2722 - name: dom.window_print.fuzzing.block_while_printing 2723 type: bool 2724 value: false 2725 mirror: always 2726 2727 # HTMLDialogElement.prototype.requestClose 2728 # See https://html.spec.whatwg.org/#dom-dialog-requestclose 2729 - name: dom.element.dialog.request_close.enabled 2730 type: bool 2731 value: true 2732 mirror: always 2733 2734 - name: dom.element.transform-getters.enabled 2735 type: bool 2736 value: false 2737 mirror: always 2738 2739 # Whether the blocking attribute implementation is enabled, 2740 # see https://html.spec.whatwg.org/#blocking-attributes 2741 - name: dom.element.blocking.enabled 2742 type: RelaxedAtomicBool 2743 value: false 2744 mirror: always 2745 2746 # Whether the commandfor attribute implementation is enabled 2747 - name: dom.element.commandfor.enabled 2748 type: bool 2749 value: true 2750 mirror: always 2751 2752 # Whether the commandfor "toggle" and "open" details commands are enabled 2753 - name: dom.element.commandfor.on_details.enabled 2754 type: bool 2755 value: false 2756 mirror: always 2757 2758 - name: dom.mouse_capture.enabled 2759 type: bool 2760 value: true 2761 mirror: always 2762 2763 # Is support for Performance.mozMemory enabled? 2764 - name: dom.enable_memory_stats 2765 type: bool 2766 value: false 2767 mirror: always 2768 2769 # Enable Performance API 2770 # Whether nonzero values can be returned from performance.timing.* 2771 - name: dom.enable_performance 2772 type: RelaxedAtomicBool 2773 value: true 2774 mirror: always 2775 2776 # Enable Performance Observer API 2777 - name: dom.enable_performance_observer 2778 type: RelaxedAtomicBool 2779 value: true 2780 mirror: always 2781 2782 # Whether resource timing will be gathered and returned by performance.GetEntries* 2783 - name: dom.enable_resource_timing 2784 type: bool 2785 value: true 2786 mirror: always 2787 2788 # Whether event timing will be gathered and returned by performance observer* 2789 - name: dom.enable_event_timing 2790 type: RelaxedAtomicBool 2791 value: true 2792 mirror: always 2793 2794 # Whether the LargestContentfulPaint API will be gathered and returned by performance observer* 2795 - name: dom.enable_largest_contentful_paint 2796 type: RelaxedAtomicBool 2797 value: true 2798 mirror: always 2799 2800 - name: dom.performance.largest_contentful_paint.coarsened_rendertime_enabled 2801 type: RelaxedAtomicBool 2802 value: true 2803 mirror: always 2804 2805 # Whether performance.GetEntries* will contain an entry for the active document 2806 - name: dom.enable_performance_navigation_timing 2807 type: bool 2808 value: true 2809 mirror: always 2810 2811 # Whether the scheduler interface will be exposed 2812 - name: dom.enable_web_task_scheduling 2813 type: RelaxedAtomicBool 2814 value: true 2815 mirror: always 2816 2817 # If this is true, it's allowed to fire "cut", "copy" and "paste" events. 2818 # Additionally, "input" events may expose clipboard content when inputType 2819 # is "insertFromPaste" or something. 2820 - name: dom.event.clipboardevents.enabled 2821 type: bool 2822 value: true 2823 mirror: always 2824 2825 # Whether Shift+Right click force-opens the context menu 2826 - name: dom.event.contextmenu.shift_suppresses_event 2827 type: bool 2828 value: true 2829 mirror: always 2830 2831 - name: dom.event.dragexit.enabled 2832 type: bool 2833 value: @IS_NOT_NIGHTLY_BUILD@ 2834 mirror: always 2835 2836 # If this pref is set to true, typing a surrogate pair causes one `keypress` 2837 # event whose `charCode` stores the unicode code point over 0xFFFF. This is 2838 # compatible with Safari and Chrome in non-Windows platforms. 2839 # Otherwise, typing a surrogate pair causes two `keypress` events. This is 2840 # compatible with legacy web apps which does 2841 # `String.fromCharCode(event.charCode)`. 2842 - name: dom.event.keypress.dispatch_once_per_surrogate_pair 2843 type: bool 2844 value: false 2845 mirror: always 2846 2847 # This is meaningful only when `dispatch_once_per_surrogate_pair` is false. 2848 # If this pref is set to true, `.key` of the first `keypress` is set to the 2849 # high-surrogate and `.key` of the other is set to the low-surrogate. 2850 # Therefore, setting this exposing ill-formed UTF-16 string with `.key`. 2851 # (And also `InputEvent.data` if pressed in an editable element.) 2852 # Otherwise, `.key` of the first `keypress` is set to the surrogate pair, and 2853 # `.key` of the second `keypress` is set to the empty string. 2854 - name: dom.event.keypress.key.allow_lone_surrogate 2855 type: bool 2856 value: @IS_NOT_EARLY_BETA_OR_EARLIER@ 2857 mirror: always 2858 2859 # Make EventStateManager restore the last "mouseover" target when it's 2860 # reconnected immediately. The behavior is similar to Safari and old Chrome. 2861 - name: dom.event.mouse.boundary.restore_last_over_target_from_temporary_removal 2862 type: bool 2863 value: false 2864 mirror: always 2865 2866 # Whether the result of screenX, screenY, clientX, clientY, offsetX, offsetY, 2867 # x and y of trusted MouseEvent and subclasses may be fractional values. 2868 # Enabling this may cause backward compatibility issues. 2869 # Note that this pref is referred only when 2870 # `dom.event.pointer.fractional_coordinates.enabled` is `true`. 2871 - name: dom.event.mouse.fractional_coordinates.trusted.enabled 2872 type: bool 2873 value: false 2874 mirror: always 2875 2876 # Whether the result of screenX, screenY, clientX, clientY, offsetX, offsetY, 2877 # x and y of untrusted MouseEvent and subclasses may be fractional values. 2878 # I.e., this allows web apps to use fractional values with their own DOM events 2879 # which have MouseEvent interface. However, this might cause backward 2880 # compatibility issues if web apps initializes untrusted events with quotients. 2881 # Note that this pref is referred only when 2882 # `dom.event.pointer.fractional_coordinates.enabled` is `true`. 2883 - name: dom.event.mouse.fractional_coordinates.untrusted.enabled 2884 type: bool 2885 value: false 2886 mirror: always 2887 2888 # Whether pointer boundary events should be dispatched after the element is 2889 # changed by a layout change or something without pointer move. 2890 - name: dom.event.pointer.boundary.dispatch_when_layout_change 2891 type: bool 2892 value: true 2893 mirror: always 2894 2895 # Whether the result of screenX, screenY, clientX, clientY, offsetX, offsetY, 2896 # x and y of PointerEvent may be fractional values (except `click`, `auxclick` 2897 # and `contextmenu`) 2898 - name: dom.event.pointer.fractional_coordinates.enabled 2899 type: bool 2900 value: true 2901 mirror: always 2902 2903 # Whether pointerrawupdate event is enabled or disabled. 2904 - name: dom.event.pointer.rawupdate.enabled 2905 type: bool 2906 value: true 2907 mirror: always 2908 2909 # Whether pointerrawupdate's movementX and movementY are set to non-zero values. 2910 - name: dom.event.pointer.rawupdate.movement.enabled 2911 type: bool 2912 value: true 2913 mirror: always 2914 2915 # Whether wheel event target's should be grouped. When enabled, all wheel 2916 # events that occur in a given wheel transaction have the same event target. 2917 - name: dom.event.wheel-event-groups.enabled 2918 type: RelaxedAtomicBool 2919 value: true 2920 mirror: always 2921 2922 # Whether WheelEvent should return pixels instead of lines for 2923 # WheelEvent.deltaX/Y/Z, when deltaMode hasn't been checked. 2924 # 2925 # Other browsers don't use line deltas and websites forget to check for it, see 2926 # bug 1392460. 2927 - name: dom.event.wheel-deltaMode-lines.disabled 2928 type: bool 2929 value: true 2930 mirror: always 2931 2932 # Mostly for debugging. Whether we should do the same as 2933 # dom.event.wheel-deltaMode-lines.disabled, but unconditionally rather than 2934 # only when deltaMode hasn't been checked. 2935 - name: dom.event.wheel-deltaMode-lines.always-disabled 2936 type: bool 2937 value: false 2938 mirror: always 2939 2940 # A blocklist (list of domains) for the 2941 # dom.event.wheel-deltaMode-lines.disabled behavior, in case potential 2942 # unforeseen problems with it arrive. 2943 - name: dom.event.wheel-deltaMode-lines.always-enabled 2944 type: String 2945 value: "" 2946 mirror: never 2947 2948 #if defined(XP_MACOSX) 2949 # Whether to disable treating ctrl click as right click 2950 - name: dom.event.treat_ctrl_click_as_right_click.disabled 2951 type: bool 2952 value: @IS_NIGHTLY_BUILD@ 2953 mirror: always 2954 #endif 2955 2956 # Whether .offset{X,Y} for events targeted at SVG nodes returns bounds relative 2957 # to the outer SVG. 2958 - name: dom.events.offset-in-svg-relative-to-svg-root 2959 type: bool 2960 value: true 2961 mirror: always 2962 2963 # Skips checking permission and user activation when accessing the clipboard. 2964 # Should only be enabled in tests. 2965 # Access with Clipboard::IsTestingPrefEnabled(). 2966 - name: dom.events.testing.asyncClipboard 2967 type: bool 2968 value: false 2969 mirror: always 2970 do_not_use_directly: true 2971 2972 # This pref controls whether or not the `protected` dataTransfer state is 2973 # enabled. If the `protected` dataTransfer stae is disabled, then the 2974 # DataTransfer will be read-only whenever it should be protected, and will not 2975 # be disconnected after a drag event is completed. 2976 - name: dom.events.dataTransfer.protected.enabled 2977 type: bool 2978 value: false 2979 mirror: always 2980 2981 # Whether to hide normal files (i.e. non-images) in dataTransfer inside 2982 # the content process. 2983 - name: dom.events.dataTransfer.mozFile.enabled 2984 type: bool 2985 value: true 2986 mirror: always 2987 2988 - name: dom.events.dataTransfer.imageAsFile.enabled 2989 type: bool 2990 value: false 2991 mirror: always 2992 2993 # User interaction timer interval, in ms 2994 - name: dom.events.user_interaction_interval 2995 type: uint32_t 2996 value: 5000 2997 mirror: always 2998 2999 # Whether to try to compress touchmove events on IPC layer. 3000 - name: dom.events.compress.touchmove 3001 type: bool 3002 value: true 3003 mirror: always 3004 3005 # In addition to the above IPC layer compresison, allow touchmove 3006 # events to be further coalesced in the child side after they 3007 # are sent. 3008 - name: dom.events.coalesce.touchmove 3009 type: bool 3010 value: true 3011 mirror: always 3012 3013 # Allow mousemove events to be coalesced in the child side after they are sent. 3014 - name: dom.events.coalesce.mousemove 3015 type: bool 3016 value: true 3017 mirror: always 3018 3019 # Expose Window.TextEvent and make the builtin editors dispatch `textInput` 3020 # event as a default action of `beforeinput`. 3021 - name: dom.events.textevent.enabled 3022 type: bool 3023 value: true 3024 mirror: always 3025 3026 # Whether to expose execCommand("paste") to web content. 3027 - name: dom.execCommand.paste.enabled 3028 type: bool 3029 value: true 3030 mirror: always 3031 3032 # Whether to expose test interfaces of various sorts 3033 - name: dom.expose_test_interfaces 3034 type: bool 3035 value: false 3036 mirror: always 3037 3038 - name: dom.fetchKeepalive.enabled 3039 type: RelaxedAtomicBool 3040 value: true 3041 mirror: always 3042 3043 # The maximum number of pending fetch keepalive requests per browser instance 3044 - name: dom.fetchKeepalive.total_request_limit 3045 type: RelaxedAtomicUint32 3046 value: 2048 3047 mirror: always 3048 3049 # The maximum number of pending fetch keepalive requests per origin 3050 - name: dom.fetchKeepalive.request_limit_per_origin 3051 type: RelaxedAtomicUint32 3052 value: 256 3053 mirror: always 3054 3055 - name: dom.fetchObserver.enabled 3056 type: RelaxedAtomicBool 3057 value: false 3058 mirror: always 3059 3060 # Whether to set the incremental flag on the top level document's 3061 # priority header 3062 - name: dom.document_priority.incremental 3063 type: RelaxedAtomicBool 3064 value: true 3065 mirror: always 3066 3067 # Whether the Document PictureInPicture API is enabled 3068 # https://wicg.github.io/document-picture-in-picture/#api 3069 - name: dom.documentpip.enabled 3070 type: RelaxedAtomicBool 3071 #ifdef ANDROID 3072 # Always disable on android (unsupported) so that webpages aren't 3073 # confused by the webidl bindings being exposed 3074 value: false 3075 #else 3076 # Probably only enable by default after bug 543435 3077 value: @IS_NIGHTLY_BUILD@ 3078 #endif 3079 mirror: always 3080 rust: true 3081 3082 # Allow the content process to create a File from a path. This is allowed just 3083 # on parent process, on 'file' Content process, or for testing. 3084 - name: dom.file.createInChild 3085 type: RelaxedAtomicBool 3086 value: false 3087 mirror: always 3088 3089 # Support @autocomplete values for form autofill feature. 3090 - name: dom.forms.autocomplete.formautofill 3091 type: bool 3092 value: false 3093 mirror: always 3094 3095 # Is support for HTMLElement.autocorrect enabled? 3096 - name: dom.forms.autocorrect 3097 type: bool 3098 value: true 3099 mirror: always 3100 3101 # Only trusted submit event could trigger form submission. 3102 - name: dom.forms.submit.trusted_event_only 3103 type: bool 3104 value: false 3105 mirror: always 3106 3107 # This pref just controls whether we format the number with grouping separator 3108 # characters when the internal value is set or updated. It does not stop the 3109 # user from typing in a number and using grouping separators. 3110 - name: dom.forms.number.grouping 3111 type: bool 3112 value: false 3113 mirror: always 3114 3115 # This pref controls whether <input type=search> clears its value on Esc 3116 # keydown. 3117 - name: dom.forms.search.esc 3118 type: bool 3119 value: true 3120 mirror: always 3121 3122 # The interval in milliseconds between two Escape key events where the second 3123 # key event will exit fullscreen, even if it is consumed. 3124 - name: dom.fullscreen.force_exit_on_multiple_escape_interval 3125 type: uint32_t 3126 value: 500 3127 mirror: always 3128 3129 # Whether the Gamepad API is enabled 3130 - name: dom.gamepad.enabled 3131 type: bool 3132 value: true 3133 mirror: always 3134 3135 # Is Gamepad Extension API enabled? 3136 - name: dom.gamepad.extensions.enabled 3137 type: bool 3138 value: true 3139 mirror: always 3140 3141 # Is LightIndicator API enabled in Gamepad Extension API? 3142 - name: dom.gamepad.extensions.lightindicator 3143 type: bool 3144 value: false 3145 mirror: always 3146 3147 # Is MultiTouch API enabled in Gamepad Extension API? 3148 - name: dom.gamepad.extensions.multitouch 3149 type: bool 3150 value: false 3151 mirror: always 3152 3153 # Is Gamepad vibrate haptic feedback function enabled? 3154 - name: dom.gamepad.haptic_feedback.enabled 3155 type: bool 3156 value: true 3157 mirror: always 3158 3159 - name: dom.gamepad.non_standard_events.enabled 3160 type: bool 3161 value: @IS_NOT_RELEASE_OR_BETA@ 3162 mirror: always 3163 3164 - name: dom.gamepad.test.enabled 3165 type: RelaxedAtomicBool 3166 value: false 3167 mirror: always 3168 3169 # W3C draft ImageCapture API 3170 - name: dom.imagecapture.enabled 3171 type: bool 3172 value: false 3173 mirror: always 3174 3175 # The root margin for image lazy loading, defined as four (value, percentage) 3176 # pairs. 3177 - name: dom.lazy-loading.margin.top 3178 type: float 3179 value: 600 3180 mirror: always 3181 3182 - name: dom.lazy-loading.margin.top.percentage 3183 type: bool 3184 value: false 3185 mirror: always 3186 3187 - name: dom.lazy-loading.margin.bottom 3188 type: float 3189 value: 600 3190 mirror: always 3191 3192 - name: dom.lazy-loading.margin.bottom.percentage 3193 type: bool 3194 value: false 3195 mirror: always 3196 3197 - name: dom.lazy-loading.margin.left 3198 type: float 3199 value: 600 3200 mirror: always 3201 3202 - name: dom.lazy-loading.margin.left.percentage 3203 type: bool 3204 value: false 3205 mirror: always 3206 3207 - name: dom.lazy-loading.margin.right 3208 type: float 3209 value: 600 3210 mirror: always 3211 3212 - name: dom.lazy-loading.margin.right.percentage 3213 type: bool 3214 value: false 3215 mirror: always 3216 3217 # Whether we use scrollMargin or rootMargin 3218 - name: dom.lazy-loading.margin.is-scroll 3219 type: bool 3220 value: true 3221 mirror: always 3222 3223 # Enable indexedDB in private browsing mode with encryption 3224 - name: dom.indexedDB.privateBrowsing.enabled 3225 type: RelaxedAtomicBool 3226 value: true 3227 mirror: always 3228 3229 # A pref that is used to slow down connection idle maintenance for testing 3230 # purposes. 3231 - name: dom.indexedDB.connectionIdleMaintenance.pauseOnConnectionThreadMs 3232 type: RelaxedAtomicUint32 3233 value: 0 3234 mirror: always 3235 3236 # Whether or not indexedDB test mode is enabled. 3237 - name: dom.indexedDB.testing 3238 type: RelaxedAtomicBool 3239 value: false 3240 mirror: always 3241 3242 # Whether or not indexedDB experimental features are enabled. 3243 - name: dom.indexedDB.experimental 3244 type: RelaxedAtomicBool 3245 value: false 3246 mirror: always 3247 3248 # Whether or not indexedDB preprocessing is enabled. 3249 - name: dom.indexedDB.preprocessing 3250 type: RelaxedAtomicBool 3251 value: false 3252 mirror: always 3253 3254 # A pref that is used to slow down database initialization for testing purposes. 3255 - name: dom.indexedDB.databaseInitialization.pauseOnIOThreadMs 3256 type: RelaxedAtomicUint32 3257 value: 0 3258 mirror: always 3259 3260 # How innerWidth / innerHeight return rounded or fractional sizes. 3261 # 3262 # 0 or others: Do not round at all. 3263 # 1: Round. 3264 # 2: Truncate. 3265 # 3266 # NOTE(emilio): Fractional sizes are not web-compatible, see the regressions 3267 # from bug 1676843, but we want to expose the fractional sizes (probably in 3268 # another API) one way or another, see [1], so we're keeping the code for the 3269 # time being. 3270 # 3271 # [1]: https://github.com/w3c/csswg-drafts/issues/5260 3272 - name: dom.innerSize.rounding 3273 type: uint32_t 3274 value: 1 3275 mirror: always 3276 3277 # Whether we conform to Input Events Level 1 or Input Events Level 2. 3278 # true: conforming to Level 1 3279 # false: conforming to Level 2 3280 - name: dom.input_events.conform_to_level_1 3281 type: bool 3282 value: true 3283 mirror: always 3284 3285 # Whether we allow BrowsingContextGroup to suspend input events 3286 - name: dom.input_events.canSuspendInBCG.enabled 3287 type: bool 3288 value: false 3289 mirror: always 3290 3291 # Whether dispatch a redundant `input` event before `compositionend`. 3292 # Its `.isComposing` is `true`, but it might be useful to store the latest 3293 # composition string before `compositionend` event listeners (although, 3294 # `.data` of `compositionend` event contains the value. 3295 - name: dom.input_events.dispatch_before_compositionend 3296 type: bool 3297 value: true 3298 mirror: always 3299 3300 # The minimum number of ticks after page navigation 3301 # that need to occur before user input events are allowed to be handled. 3302 - name: dom.input_events.security.minNumTicks 3303 type: uint32_t 3304 value: 3 3305 mirror: always 3306 3307 # The minimum elapsed time (in milliseconds) after page navigation 3308 # for user input events are allowed to be handled. 3309 - name: dom.input_events.security.minTimeElapsedInMS 3310 type: uint32_t 3311 value: 100 3312 mirror: always 3313 3314 # By default user input handling delay is disabled (mostly) for testing , 3315 # this is used for forcefully enable it for certain tests. 3316 - name: dom.input_events.security.isUserInputHandlingDelayTest 3317 type: bool 3318 value: false 3319 mirror: always 3320 3321 # The maximum time (milliseconds) we reserve for handling input events in each 3322 # frame. 3323 - name: dom.input_event_queue.duration.max 3324 type: uint32_t 3325 value: 8 3326 mirror: always 3327 3328 - name: dom.interactive_widget_default_resizes_visual 3329 type: RelaxedAtomicBool 3330 value: true 3331 mirror: always 3332 3333 - name: dom.intersection_observer.scroll_margin.enabled 3334 type: bool 3335 value: true 3336 mirror: always 3337 3338 # How often to check for CPOW timeouts (ms). CPOWs are only timed 3339 # out by the hang monitor. 3340 - name: dom.ipc.cpow.timeout 3341 type: uint32_t 3342 value: 500 3343 mirror: always 3344 3345 #ifdef MOZ_ENABLE_FORKSERVER 3346 - name: dom.ipc.forkserver.enable 3347 type: bool 3348 #if defined(MOZ_CODE_COVERAGE) || defined(MOZ_ASAN) || defined(MOZ_TSAN) || defined(MOZ_MSAN) || defined(MOZ_UBSAN) 3349 value: false 3350 #else 3351 value: true 3352 #endif 3353 mirror: once 3354 #endif 3355 3356 #if defined(XP_DARWIN) 3357 # Whether or not to use the mach-based IPC backend on macOS/iOS. 3358 # Only read once at startup by IOThreadParent's constructor. 3359 - name: dom.ipc.backend.mach 3360 type: bool 3361 value: @IS_IOS@ 3362 mirror: never 3363 #endif 3364 3365 #ifdef MOZ_WIDGET_GTK 3366 # 3367 # Avoid the use of GTK in content processes if possible, by running 3368 # them in headless mode, to conserve resources (e.g., connections to 3369 # the X server). See the usage in `ContentParent.cpp` for the full 3370 # definition of "if possible". 3371 # 3372 # This does not affect sandbox policies; content processes may still 3373 # dynamically connect to the display server for, e.g., WebGL. 3374 - name: dom.ipc.avoid-gtk 3375 type: bool 3376 value: true 3377 mirror: always 3378 #endif 3379 3380 # Whether or not to collect a paired minidump when force-killing a 3381 # content process. 3382 - name: dom.ipc.tabs.createKillHardCrashReports 3383 type: bool 3384 value: @IS_NOT_RELEASE_OR_BETA@ 3385 mirror: once 3386 3387 # Enable e10s hang monitoring (slow script checking and plugin hang detection). 3388 - name: dom.ipc.processHangMonitor 3389 type: bool 3390 value: true 3391 mirror: once 3392 3393 # Whether we report such process hangs 3394 - name: dom.ipc.reportProcessHangs 3395 type: RelaxedAtomicBool 3396 # Don't report hangs in DEBUG builds. They're too slow and often a 3397 # debugger is attached. 3398 #ifdef DEBUG 3399 value: false 3400 #else 3401 value: true 3402 #endif 3403 mirror: always 3404 3405 # If true, disables non-required re-use of content processes. This can be used 3406 # in tests to force a new process to be used whenever a process selection 3407 # decision is made. Setting this pref can cause dom.ipc.processCount limits to 3408 # be exceeded. 3409 # WARNING: This will exceed even process limits for the extension or 3410 # privilegedAbout remote types, which may lead to unexpected breakage! 3411 # Should only be used for testing. 3412 - name: dom.ipc.disableContentProcessReuse 3413 type: bool 3414 value: false 3415 mirror: always 3416 3417 # If non-zero, a grace delay (in milliseconds) during which unused content 3418 # processes are kept available for re-use to avoid unnecessary process churn. 3419 - name: dom.ipc.processReuse.unusedGraceMs 3420 type: uint32_t 3421 value: 0 3422 mirror: always 3423 3424 # Process launch delay (in milliseconds). 3425 - name: dom.ipc.processPrelaunch.delayMs 3426 type: uint32_t 3427 # This number is fairly arbitrary ... the intention is to put off 3428 # launching another app process until the last one has finished 3429 # loading its content, to reduce CPU/memory/IO contention. 3430 value: 1000 3431 mirror: always 3432 3433 # Process preallocation cache 3434 # Only used in fission; in e10s we use 1 always 3435 - name: dom.ipc.processPrelaunch.fission.number 3436 type: uint32_t 3437 #ifdef ANDROID 3438 # Bug 1999950: Prelaunch 1 process on Android due to a performance regression. 3439 value: 1 3440 #else 3441 value: 3 3442 #endif 3443 mirror: always 3444 3445 # Limit preallocated processes below this memory size (in MB) 3446 - name: dom.ipc.processPrelaunch.lowmem_mb 3447 type: uint32_t 3448 value: 4096 3449 mirror: always 3450 3451 - name: dom.ipc.processPriorityManager.enabled 3452 type: bool 3453 value: true 3454 mirror: always 3455 3456 - name: dom.ipc.processPriorityManager.testMode 3457 type: bool 3458 value: false 3459 mirror: always 3460 3461 - name: dom.ipc.processPriorityManager.backgroundPerceivableGracePeriodMS 3462 type: uint32_t 3463 #if defined(MOZ_WIDGET_ANDROID) 3464 value: 3000 3465 #else 3466 value: 0 3467 #endif 3468 mirror: always 3469 3470 - name: dom.ipc.processPriorityManager.backgroundGracePeriodMS 3471 type: uint32_t 3472 #if defined(MOZ_WIDGET_ANDROID) 3473 value: 3000 3474 #else 3475 value: 0 3476 #endif 3477 mirror: always 3478 3479 #ifdef XP_WIN 3480 - name: dom.ipc.processPriorityManager.backgroundUsesEcoQoS 3481 type: bool 3482 value: false 3483 mirror: always 3484 #endif 3485 3486 # This controls whether JS IPC messages are sent from child to parent using 3487 # the typeable JSIPCValue encoding, or simply sent using structured cloning. 3488 # This being true is necessary to type check messages. 3489 - name: dom.jsipc.send_typed 3490 type: bool 3491 value: true 3492 mirror: always 3493 3494 # Support for input type=month, type=week. By default, disabled. 3495 - name: dom.forms.datetime.others 3496 type: bool 3497 value: @IS_ANDROID@ 3498 mirror: always 3499 3500 #ifndef ANDROID 3501 - name: dom.forms.html_color_picker.enabled 3502 type: bool 3503 value: @IS_NIGHTLY_BUILD@ 3504 mirror: always 3505 #endif 3506 3507 - name: dom.forms.always_allow_pointer_events.enabled 3508 type: bool 3509 value: true 3510 mirror: always 3511 3512 # Is support for key events and focus events on disabled elements enabled? 3513 - name: dom.forms.always_allow_key_and_focus_events.enabled 3514 type: bool 3515 value: true 3516 mirror: always 3517 3518 # Whether to disable only the descendants or the parent fieldset element too 3519 # Note that this still allows it to be selected by `:disable`. 3520 - name: dom.forms.fieldset_disable_only_descendants.enabled 3521 type: bool 3522 value: true 3523 mirror: always 3524 3525 # Whether to enable showPicker() support for datalist. 3526 - name: dom.input.showPicker_datalist.enabled 3527 type: bool 3528 value: @IS_EARLY_BETA_OR_EARLIER@ 3529 mirror: always 3530 3531 # Does mousewheel-scrolling over a focused <input type="number"> or 3532 # <input type="range"> field cause the value to increase/decrease (rather 3533 # than scrolling the page)? 3534 - name: dom.input.number_and_range_modified_by_mousewheel 3535 type: RelaxedAtomicBool 3536 value: false 3537 mirror: always 3538 3539 # Whether to allow or disallow web apps to cancel `beforeinput` events caused 3540 # by MozEditableElement#setUserInput() which is used by autocomplete, autofill 3541 # and password manager. 3542 - name: dom.input_event.allow_to_cancel_set_user_input 3543 type: bool 3544 value: false 3545 mirror: always 3546 3547 # How long a content process can take before closing its IPC channel 3548 # after shutdown is initiated. If the process exceeds the timeout, 3549 # we fear the worst and kill it. 3550 - name: dom.ipc.tabs.shutdownTimeoutSecs 3551 type: RelaxedAtomicUint32 3552 #if !defined(DEBUG) && !defined(MOZ_ASAN) && !defined(MOZ_VALGRIND) && !defined(MOZ_TSAN) 3553 value: 20 3554 #else 3555 value: 0 3556 #endif 3557 mirror: always 3558 3559 # Whether a native event loop should be used in the content process. 3560 - name: dom.ipc.useNativeEventProcessing.content 3561 type: RelaxedAtomicBool 3562 #if defined(XP_WIN) || defined(XP_DARWIN) 3563 value: false 3564 #else 3565 value: true 3566 #endif 3567 mirror: always 3568 3569 # Enable/disable KeyboardEvent.initKeyEvent function 3570 - name: dom.keyboardevent.init_key_event.enabled 3571 type: bool 3572 value: false 3573 mirror: always 3574 3575 # Enable/disable KeyboardEvent.initKeyEvent function in addons even if it's 3576 # disabled. 3577 - name: dom.keyboardevent.init_key_event.enabled_in_addons 3578 type: bool 3579 value: @IS_EARLY_BETA_OR_EARLIER@ 3580 mirror: always 3581 3582 # If this is true, keypress events for non-printable keys are dispatched only 3583 # for event listeners of the system event group in web content. 3584 - name: dom.keyboardevent.keypress.dispatch_non_printable_keys_only_system_group_in_content 3585 type: bool 3586 value: true 3587 mirror: always 3588 3589 # If this is true, "keypress" event's keyCode value and charCode value always 3590 # become same if the event is not created/initialized by JS. 3591 - name: dom.keyboardevent.keypress.set_keycode_and_charcode_to_same_value 3592 type: bool 3593 value: true 3594 mirror: always 3595 3596 # If this is set to true, location.ancestorOrigins feature defined 3597 # by the spec https://html.spec.whatwg.org/#concept-location-ancestor-origins-list 3598 # is enabled 3599 - name: dom.location.ancestorOrigins.enabled 3600 type: bool 3601 value: true 3602 mirror: always 3603 3604 # Whether "W3C Web Manifest" processing is enabled 3605 - name: dom.manifest.enabled 3606 type: bool 3607 value: true 3608 mirror: always 3609 3610 # Enable mapped array buffer by default. 3611 - name: dom.mapped_arraybuffer.enabled 3612 type: bool 3613 value: true 3614 mirror: always 3615 3616 # Autoplay Policy Detection https://w3c.github.io/autoplay/ 3617 - name: dom.media.autoplay-policy-detection.enabled 3618 type: RelaxedAtomicBool 3619 value: true 3620 mirror: always 3621 3622 # WebCodecs API 3623 - name: dom.media.webcodecs.enabled 3624 type: RelaxedAtomicBool 3625 #if defined(MOZ_WIDGET_ANDROID) 3626 value: @IS_NIGHTLY_BUILD@ 3627 #else 3628 value: true 3629 #endif 3630 mirror: always 3631 3632 # WebCodecs API - Image decoder 3633 - name: dom.media.webcodecs.image-decoder.enabled 3634 type: RelaxedAtomicBool 3635 value: true 3636 mirror: always 3637 3638 # WebCodecs API - H265 3639 - name: dom.media.webcodecs.h265.enabled 3640 type: RelaxedAtomicBool 3641 value: @IS_NIGHTLY_BUILD@ 3642 mirror: always 3643 3644 # WebCodecs API - Batch encoding size 3645 - name: dom.media.webcodecs.batch-encoding-size 3646 type: RelaxedAtomicUint32 3647 #if defined(XP_WIN) 3648 value: 4294967295 # max value of uint32_t 3649 #else 3650 # Bug 1984936: Batch encoding is not optimized on non-Windows platforms yet. 3651 value: 1 3652 #endif 3653 mirror: always 3654 3655 # Number of seconds of very quiet or silent audio before considering the audio 3656 # inaudible. 3657 - name: dom.media.silence_duration_for_audibility 3658 type: AtomicFloat 3659 value: 2.0f 3660 mirror: always 3661 3662 # Inform mozjemalloc that the foreground content processes can keep more dirty 3663 # pages in memory. 3664 - name: dom.memory.foreground_content_processes_have_larger_page_cache 3665 type: bool 3666 value: true 3667 mirror: always 3668 3669 # 0 no-op 3670 # 1 free dirty mozjemalloc pages 3671 # 2 trigger memory-pressure/heap-minimize 3672 # 3 trigger memory-pressure/low-memory 3673 - name: dom.memory.memory_pressure_on_background 3674 type: uint32_t 3675 value: 0 3676 mirror: always 3677 3678 # Enable meta-viewport support in remote APZ-enabled frames. 3679 - name: dom.meta-viewport.enabled 3680 type: RelaxedAtomicBool 3681 value: false 3682 mirror: always 3683 3684 # Timeout clamp in ms for timeouts we clamp. 3685 - name: dom.min_timeout_value 3686 type: RelaxedAtomicInt32 3687 value: 4 3688 mirror: always 3689 3690 # Timeout clamp in ms for background windows. 3691 - name: dom.min_background_timeout_value 3692 type: RelaxedAtomicInt32 3693 value: 1000 3694 mirror: always 3695 3696 # Timeout clamp in ms for background windows when throttling isn't enabled. 3697 - name: dom.min_background_timeout_value_without_budget_throttling 3698 type: RelaxedAtomicInt32 3699 value: 1000 3700 mirror: always 3701 3702 # Are missing-property use counters for certain DOM attributes enabled? 3703 - name: dom.missing_prop_counters.enabled 3704 type: bool 3705 value: true 3706 mirror: always 3707 3708 # Enable ParentNode.moveBefore(). 3709 - name: dom.movebefore.enabled 3710 type: bool 3711 value: true 3712 mirror: always 3713 3714 # Limit of location change caused by content scripts in a time span per 3715 # BrowsingContext. This includes calls to History and Location APIs. 3716 - name: dom.navigation.navigationRateLimit.count 3717 type: uint32_t 3718 value: 200 3719 mirror: always 3720 3721 # Time span in seconds for location change rate limit. 3722 - name: dom.navigation.navigationRateLimit.timespan 3723 type: uint32_t 3724 value: 10 3725 mirror: always 3726 3727 # Whether to allow <object> and <embed> element loads to be retargeted to an 3728 # external application or download. 3729 - name: dom.navigation.object_embed.allow_retargeting 3730 type: bool 3731 value: false 3732 mirror: always 3733 3734 # Whether the navigation API will be exposed. 3735 - name: dom.navigation.webidl.enabled 3736 type: RelaxedAtomicBool 3737 value: true 3738 mirror: always 3739 do_not_use_directly: true 3740 3741 # Strict mode for navigation API. 3742 # Known issues can be guarded using this pref 3743 # to avoid crashing users while investigating the issue. 3744 - name: dom.navigation.api.strict.enabled 3745 type: bool 3746 value: false 3747 mirror: always 3748 3749 # For non-Navigation API navigations, create an internal method tracker 3750 # so that it's possible to await navigations being committed. 3751 - name: dom.navigation.api.internal_method_tracker 3752 type: bool 3753 value: false 3754 mirror: always 3755 3756 # Network Information API 3757 # This feature is not available on Firefox desktop. It exposes too much 3758 # user information. Let's be consistent and disable it on Android. 3759 # But let's keep it around in case it becomes necessary for webcompat 3760 # reasons 3761 # https://bugzilla.mozilla.org/show_bug.cgi?id=1637922 3762 - name: dom.netinfo.enabled 3763 type: RelaxedAtomicBool 3764 value: false 3765 mirror: always 3766 3767 # Whether we should open noopener links in a new process. 3768 - name: dom.noopener.newprocess.enabled 3769 type: bool 3770 value: true 3771 mirror: always 3772 3773 # Whether the codebase attribute in an <object> is used as the base URI. 3774 - name: dom.object_embed.codebase.enabled 3775 type: bool 3776 value: false 3777 mirror: always 3778 3779 # Whether the type attribute in an <object> is used as a hint for the Content-Type 3780 # of the loading document. 3781 - name: dom.object_embed.type_hint.enabled 3782 type: bool 3783 value: false 3784 mirror: always 3785 3786 # Whether origin trials are enabled. 3787 - name: dom.origin-trials.enabled 3788 type: bool 3789 value: true 3790 mirror: always 3791 3792 # Whether we use the test key to verify tokens. 3793 - name: dom.origin-trials.test-key.enabled 3794 type: bool 3795 value: false 3796 mirror: always 3797 3798 # Origin trial state for "TestTrial". 3799 # 0: normal, 1: always-enabled, 2: always-disabled 3800 - name: dom.origin-trials.test-trial.state 3801 type: RelaxedAtomicInt32 3802 value: 0 3803 mirror: always 3804 3805 # Origin trial state for COEP: Credentialless. 3806 # 0: normal, 1: always-enabled, 2: always-disabled 3807 - name: dom.origin-trials.coep-credentialless.state 3808 type: RelaxedAtomicInt32 3809 value: 0 3810 mirror: always 3811 3812 # Origin trial state for Private Attribution 3813 # 0: normal, 1: always-enabled, 2: always-disabled 3814 - name: dom.origin-trials.private-attribution.state 3815 type: RelaxedAtomicInt32 3816 #ifdef ANDROID 3817 value: 2 3818 #else 3819 value: 0 3820 #endif 3821 mirror: always 3822 3823 # Origin trial state for MLS 3824 # 0: normal, 1: always-enabled, 2: always-disabled 3825 - name: dom.origin-trials.mls.state 3826 type: RelaxedAtomicInt32 3827 value: 0 3828 mirror: always 3829 3830 # User pref to control whether Private Attribution 3831 # information should be collected / submitted. 3832 - name: dom.private-attribution.submission.enabled 3833 type: bool 3834 value: false 3835 mirror: always 3836 3837 # Is support for Window.paintWorklet enabled? 3838 - name: dom.paintWorklet.enabled 3839 type: bool 3840 value: false 3841 mirror: always 3842 3843 # Enable/disable the PaymentRequest API 3844 - name: dom.payments.request.enabled 3845 type: bool 3846 value: false 3847 mirror: always 3848 3849 # Whether a user gesture is required to call PaymentRequest.prototype.show(). 3850 - name: dom.payments.request.user_interaction_required 3851 type: bool 3852 value: true 3853 mirror: always 3854 3855 # Time in milliseconds for PaymentResponse to wait for 3856 # the Web page to call complete(). 3857 - name: dom.payments.response.timeout 3858 type: uint32_t 3859 value: 5000 3860 mirror: always 3861 3862 # Enable printing performance marks/measures to log 3863 - name: dom.performance.enable_user_timing_logging 3864 type: RelaxedAtomicBool 3865 value: false 3866 mirror: always 3867 3868 # Enable notification of performance timing 3869 - name: dom.performance.enable_notify_performance_timing 3870 type: bool 3871 value: false 3872 mirror: always 3873 3874 # Is support for PerformanceTiming.timeToContentfulPaint enabled? 3875 - name: dom.performance.time_to_contentful_paint.enabled 3876 type: bool 3877 value: false 3878 mirror: always 3879 3880 # Is support for PerformanceTiming.timeToFirstInteractive enabled? 3881 - name: dom.performance.time_to_first_interactive.enabled 3882 type: bool 3883 value: false 3884 mirror: always 3885 3886 # Is support for PerformanceTiming.timeToNonBlankPaint enabled? 3887 - name: dom.performance.time_to_non_blank_paint.enabled 3888 type: bool 3889 value: false 3890 mirror: always 3891 3892 # Whether the interactionId will be computed and returned by performance observer* 3893 - name: dom.performance.event_timing.enable_interactionid 3894 type: RelaxedAtomicBool 3895 value: true 3896 mirror: always 3897 3898 # Is support for Element.requestPointerLock enabled? 3899 # This is added for accessibility purpose. When user has no way to exit 3900 # pointer lock (e.g. no keyboard available), they can use this pref to 3901 # disable the Pointer Lock API altogether. 3902 - name: dom.pointer-lock.enabled 3903 type: bool 3904 value: true 3905 mirror: always 3906 3907 # re-SAB: Whether to allow postMessage of a SharedArrayBuffer if various 3908 # preconditions related to COOP and COEP are met 3909 - name: dom.postMessage.sharedArrayBuffer.withCOOP_COEP 3910 type: bool 3911 value: true 3912 mirror: once 3913 3914 # Overridden in all.js on RELEASE_OR_BETA in order to add the locked attribute. 3915 - name: dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled 3916 type: RelaxedAtomicBool 3917 value: false 3918 mirror: always 3919 3920 # Should we speculatively prefetch dns for anchor elements on http documents 3921 - name: dom.prefetch_dns_for_anchor_http_document 3922 type: bool 3923 value: true 3924 mirror: always 3925 3926 # Should we speculatively prefetch dns for anchor elements on https documents 3927 - name: dom.prefetch_dns_for_anchor_https_document 3928 type: bool 3929 value: false 3930 mirror: always 3931 3932 # This currently only affects XHTML. For XUL the cache is always allowed. 3933 - name: dom.prototype_document_cache.enabled 3934 type: bool 3935 value: true 3936 mirror: always 3937 3938 # Push 3939 - name: dom.push.enabled 3940 type: RelaxedAtomicBool 3941 value: true 3942 mirror: always 3943 3944 # Indicate the deprecated aesgcm support in PushManager.supportedContentEncodings. 3945 # 3946 # This does not affect actual aesgcm support, any new and existing subscriptions 3947 # can still use aesgcm regardless of this pref. 3948 - name: dom.push.indicate_aesgcm_support.enabled 3949 type: RelaxedAtomicBool 3950 value: false 3951 mirror: always 3952 3953 # Preference that is primarily used for testing of problematic file paths. 3954 # It can also be used for switching between different storage directories, but 3955 # such feature is not officially supported. 3956 - name: dom.quotaManager.storageName 3957 type: String 3958 value: "storage" 3959 mirror: never 3960 3961 # An upper limit for the "age" of an origin. Any origin which is older than the 3962 # threshold is considered as unaccessed. That doesn't necessarily mean that 3963 # such origins will be immediatelly archived. They will be archived only when 3964 # dom.quotaManager.checkQuotaInfoLoadTime is true and loading of quota info 3965 # takes a long time (dom.quotaManager.longQuotaInfoLoadTimeThresholdMs is used 3966 # to decide what is a long quota info load time). 3967 - name: dom.quotaManager.unaccessedForLongTimeThresholdSec 3968 type: RelaxedAtomicUint32 3969 value: 33696000 # 13 months 3970 mirror: always 3971 3972 # Should we try to load origin information from the cache? 3973 # See bug 1563023 for more details. 3974 - name: dom.quotaManager.loadQuotaFromCache 3975 type: RelaxedAtomicBool 3976 value: true 3977 mirror: always 3978 3979 # Should we try to load origin information from the secondary cache? 3980 # 3981 # When enabled, quota information may be initialized from metadata files 3982 # instead of scanning origin directories, if the cached data is considered 3983 # valid. 3984 # 3985 # For the L2 quota info cache to work effectively, the following pref must also 3986 # be enabled: 3987 # dom.quotaManager.originInitialization.updateOriginMetadata 3988 # 3989 # That pref ensures that cached metadata is written back to disk after full 3990 # origin initialization. Without it, usable cached info may become outdated or 3991 # missing, and this pref alone will have limited effect. 3992 # 3993 # Expected behavior for various combinations of the two prefs: 3994 # 3995 # update: false, load: false 3996 # -> No L2 cache write or read. Full scan is always used. 3997 # 3998 # update: true, load: false 3999 # -> Metadata is updated, but not used. Sets up infrastructure without 4000 # activating the performance optimization. 4001 # 4002 # update: false, load: true 4003 # -> Cache read is enabled, but metadata files are not continuously 4004 # updated, reducing cache effectiveness. Useful only for incremental 4005 # rollout and testing purposes. 4006 # 4007 # update: true, load: true 4008 # -> Full L2 quota info cache functionality is active. Metadata is 4009 # maintained and used for optimized quota initialization. 4010 # 4011 # See bug 1953860 for background and additional details. 4012 - name: dom.quotaManager.loadQuotaFromSecondaryCache 4013 type: RelaxedAtomicBool 4014 value: true 4015 mirror: always 4016 4017 # Should we check build ID as part of the cache validation? 4018 # When enabled, the cache is invalidated on any upgrade (or downgrade), 4019 # ensuring that changes in how quota usage is calculated can't cause 4020 # inconsistencies at the cost of a slower initialization. Currently, this 4021 # should only be set to false in tests using a packaged profile that inherently 4022 # includes a build id different from the building running the tests. In the 4023 # future this may be set to false if we are confident that we have sufficiently 4024 # thorough schema versioning. 4025 - name: dom.quotaManager.caching.checkBuildId 4026 type: RelaxedAtomicBool 4027 value: true 4028 mirror: always 4029 4030 # Should we check quota info load time and eventually archive some unaccessed 4031 # origins if loading of quota info takes a long time ? 4032 - name: dom.quotaManager.checkQuotaInfoLoadTime 4033 type: RelaxedAtomicBool 4034 value: true 4035 mirror: always 4036 4037 # An upper limit for quota info load time, anything which takes longer than the 4038 # threshold is considered as long quota info load time. 4039 - name: dom.quotaManager.longQuotaInfoLoadTimeThresholdMs 4040 type: RelaxedAtomicUint32 4041 value: 21000 # 21 seconds 4042 mirror: always 4043 4044 # Preference that users can set to override temporary storage smart limit 4045 # calculation. 4046 - name: dom.quotaManager.temporaryStorage.fixedLimit 4047 type: RelaxedAtomicInt32 4048 value: -1 4049 mirror: always 4050 4051 # Controls the time offset (in seconds) applied when initializing the access 4052 # time for a newly created origin in temporary storage. When set to a positive 4053 # value, the stored access time is artificially adjusted by subtracting the 4054 # specified number of seconds from the current time. This can be used to 4055 # simulate older origins for testing eviction and recency-based cleanup 4056 # behavior. 4057 # 4058 # If the offset value is too large and would cause integer underflow, the 4059 # current time is used as it would have been used normally. 4060 # 4061 # A value of 0 disables this behavior (default). 4062 # 4063 # This setting is for testing only and must not be enabled in production. 4064 - name: dom.quotaManager.temporaryStorage.initialOriginAccessTimeOffsetSec 4065 type: RelaxedAtomicUint32 4066 value: 0 4067 mirror: always 4068 4069 # Controls whether the quota manager updates the last access time for origins 4070 # in temporary storage. When enabled, the access time is updated only when an 4071 # origin is accessed by a quota client for the first time during a session or 4072 # when the last quota client stops accessing the origin. This allows eviction 4073 # based on the LRU policy. When disabled, the access time is stored only once 4074 # when the corresponding origin directory is created for the first time. 4075 # 4076 # This pref must remain set to true in production, setting it to false is 4077 # intended for testing only. 4078 - name: dom.quotaManager.temporaryStorage.updateOriginAccessTime 4079 type: RelaxedAtomicBool 4080 value: true 4081 mirror: always 4082 4083 # Should we do lazy initialization of origins ? 4084 # When enabled, origins for temporary storage are not initialized during 4085 # temporary storage initialization, they are initialized lazily instead. 4086 # If there are other origins in the group, they are initialized all together. 4087 # This feature is currently still in development and experimental, not 4088 # recommended for normal use yet. 4089 # 4090 # Note: If dom.quotaManager.temporaryStorage.incrementalOriginInitialization 4091 # is set to true, this preference will be overridden, and the individual 4092 # setting will no longer take effect, regardless of its value. 4093 - name: dom.quotaManager.temporaryStorage.lazyOriginInitialization 4094 type: RelaxedAtomicBool 4095 value: false 4096 mirror: always 4097 do_not_use_directly: true 4098 4099 # Should we trigger initialization of all temporary origins in the background? 4100 # When enabled, temporary origins collected during temporary storage 4101 # initialization are initialized in the background. The background 4102 # initialization of temporary origins is always done for entire groups of 4103 # origins to preserve consistency of quota checks related to the group limit. 4104 # This feature is currently still in development and experimental, not 4105 # recommended for normal use yet. 4106 # 4107 # Note: If dom.quotaManager.temporaryStorage.incrementalOriginInitialization 4108 # is set to true, this preference will be overridden, and the individual 4109 # setting will no longer take effect, regardless of its value. 4110 - name: dom.quotaManager.temporaryStorage.triggerOriginInitializationInBackground 4111 type: RelaxedAtomicBool 4112 value: false 4113 mirror: always 4114 do_not_use_directly: true 4115 4116 # Should we enable incremental initialization of origins? (also known as 4117 # asynchronous temporary storage initialization) 4118 # When enabled, this preference acts as an override for the following 4119 # preferences: 4120 # - dom.quotaManager.temporaryStorage.lazyOriginInitialization 4121 # - dom.quotaManager.temporaryStorage.triggerOriginInitializationInBackground 4122 # 4123 # Enabling this preference ensures that: 4124 # 1. Origins for temporary storage are not initialized during temporary storage 4125 # initialization but are instead initialized incrementally, either lazily or 4126 # in the background, depending on which occurs first. 4127 # 2. Background initialization of temporary origins is triggered after the 4128 # temporary storage initialization. The process is carried out in steps, 4129 # with each step being responsible for initializing a group of origins. 4130 # 4131 # See also the documentation for those two preferences for more details on 4132 # their individual behaviors. 4133 # 4134 # This feature is currently in development and experimental, not recommended 4135 # for normal use yet. 4136 - name: dom.quotaManager.temporaryStorage.incrementalOriginInitialization 4137 type: RelaxedAtomicBool 4138 value: false 4139 mirror: always 4140 do_not_use_directly: true 4141 4142 # Should we clear non-persisted origins with zero usage during final steps of 4143 # temporary storage initialization? 4144 # When enabled, the QuotaManager will automatically clear non-persisted 4145 # origins that have zero quota-charged usage during final steps of temporary 4146 # storage initialization. Recently used origins (within the last week) are 4147 # excluded, and clearing is performed in batches to avoid large I/O spikes 4148 # when many origins need to be removed. This removes directories and files 4149 # belonging to origins that do not store any real data but still consume 4150 # resources through bookkeeping structures on disk. The feature helps reduce 4151 # storage bloat and improve initialization performance, especially on 4152 # long-lived profiles with a large number of unused origins. 4153 - name: dom.quotaManager.temporaryStorage.clearNonPersistedZeroUsageOrigins 4154 type: RelaxedAtomicBool 4155 value: false 4156 mirror: always 4157 4158 # Controls the maximum number of origins cleared in a single batch during 4159 # final steps of temporary storage initialization. The value defaults to 50 on 4160 # Android and 150 on other platforms. Smaller values can be useful for testing 4161 # and experimentation to exercise multi-batch clearing behavior without 4162 # requiring hundreds of origins. Larger values may reduce the number of 4163 # batches but can increase I/O spikes. 4164 # 4165 # Currently this pref is only applied when clearing non-persisted zero-usage 4166 # origins, but it is intended to serve as a general batch limit for other 4167 # clearing strategies that may be introduced in the future (for example, to 4168 # remove very old origins). 4169 - name: dom.quotaManager.temporaryStorage.maxOriginsToClearDuringCleanup 4170 type: RelaxedAtomicUint32 4171 #if defined(MOZ_WIDGET_ANDROID) 4172 value: 50 4173 #else 4174 value: 150 4175 #endif 4176 mirror: always 4177 4178 # A pref that is used to slow down origin operations for testing purposes. 4179 - name: dom.quotaManager.originOperations.pauseOnIOThreadMs 4180 type: RelaxedAtomicUint32 4181 value: 0 4182 mirror: always 4183 4184 # A pref that is used to slow down storage initialization for testing purposes. 4185 - name: dom.quotaManager.storageInitialization.pauseOnIOThreadMs 4186 type: RelaxedAtomicUint32 4187 value: 0 4188 mirror: always 4189 4190 # A pref that is used to slow down group initialization for testing purposes. 4191 - name: dom.quotaManager.groupInitialization.pauseOnIOThreadMs 4192 type: RelaxedAtomicUint32 4193 value: 0 4194 mirror: always 4195 4196 # Should we update the origin metadata file after full origin initialization? 4197 # When enabled, the origin metadata file will be updated after origin 4198 # initialization to ensure it reflects the most recent state. 4199 # This feature is essential for the functionality of the L2 quota info cache. 4200 # The preference may be later removed after a successful full rollout of the 4201 # L2 cache to all users on all platforms in the release channel. 4202 - name: dom.quotaManager.originInitialization.updateOriginMetadata 4203 type: RelaxedAtomicBool 4204 value: true 4205 mirror: always 4206 4207 # A pref that is used to slow down origin initialization for testing purposes. 4208 - name: dom.quotaManager.originInitialization.pauseOnIOThreadMs 4209 type: RelaxedAtomicUint32 4210 value: 0 4211 mirror: always 4212 4213 # A pref that is used to enable testing features. 4214 - name: dom.quotaManager.testing 4215 type: SequentiallyConsistentAtomicBool 4216 value: false 4217 mirror: always 4218 4219 #if defined(XP_WIN) 4220 # Preference that is used to set nsILocalFileWin::useDOSDevicePathSyntax 4221 # attribute for all local file instances created by QuotaManager and its 4222 # clients. The value of this preference is cached so changing the preference 4223 # during runtime has no effect. 4224 # See bug 1626846 for setting this to false by default. 4225 - name: dom.quotaManager.useDOSDevicePathSyntax 4226 type: RelaxedAtomicBool 4227 value: true 4228 mirror: always 4229 do_not_use_directly: true 4230 4231 # Preference that is used to enable the hack for overrriding xFullPathname in 4232 # QuotaVFS. 4233 - name: dom.quotaManager.overrideXFullPathname 4234 type: RelaxedAtomicBool 4235 value: true 4236 mirror: always 4237 #elif defined(XP_UNIX) 4238 # Preference that is used to enable the overriding of Unix xFullPathname 4239 # implementation in QuotaVFS. 4240 - name: dom.quotaManager.overrideXFullPathnameUnix 4241 type: RelaxedAtomicBool 4242 value: true 4243 mirror: always 4244 #endif 4245 4246 # How many times we should retry directory removal or renaming if access was 4247 # denied? 4248 - name: dom.quotaManager.directoryRemovalOrRenaming.maxRetries 4249 type: RelaxedAtomicUint32 4250 #ifdef XP_WIN 4251 value: 10 4252 #else 4253 value: 0 4254 #endif 4255 mirror: always 4256 4257 # How long we should wait between retries (in milliseconds)? 4258 - name: dom.quotaManager.directoryRemovalOrRenaming.delayMs 4259 type: RelaxedAtomicUint32 4260 value: 200 4261 mirror: always 4262 4263 #ifdef MOZ_BACKGROUNDTASKS 4264 # Use a Background Task to delete files at shutdown. 4265 - name: dom.quotaManager.backgroundTask.enabled 4266 type: bool 4267 #ifdef XP_MACOSX 4268 # Needs to figure out how to prevent bug 1827486. 4269 value: false 4270 #else 4271 value: true 4272 #endif 4273 mirror: never 4274 #endif 4275 4276 # A pref that specifies one or more failure categories to trigger artificial 4277 # failures for testing purposes. Multiple categories can be combined using 4278 # bitwise OR to represent various failure points within the code. 4279 - name: dom.quotaManager.artificialFailure.categories 4280 type: RelaxedAtomicUint32 4281 value: 0 4282 mirror: always 4283 4284 # A probability (0-100) used to determine the likelihood of triggering an 4285 # artificial failure for testing purposes. This value is applied when the 4286 # specified failure categories match to decide if the failure should occur. 4287 - name: dom.quotaManager.artificialFailure.probability 4288 type: RelaxedAtomicUint32 4289 value: 0 4290 mirror: always 4291 4292 # An error code used to trigger an artificial failure for testing purposes. 4293 # This code is returned when the specified failure categories match and the 4294 # failure is triggered based on the configured probability. 4295 - name: dom.quotaManager.artificialFailure.errorCode 4296 type: RelaxedAtomicUint32 4297 value: 0 4298 mirror: always 4299 4300 # Use to control to dump CheckedUnsafePtr creation stack and assignment stacks. 4301 - name: dom.checkedUnsafePtr.dumpStacks.enabled 4302 type: RelaxedAtomicBool 4303 value: false 4304 mirror: always 4305 4306 # A pref that is used to slow down database initialization for testing purposes. 4307 - name: dom.simpledb.databaseInitialization.pauseOnIOThreadMs 4308 type: RelaxedAtomicUint32 4309 value: 0 4310 mirror: always 4311 4312 # Determines within what distance of a tick mark, in pixels, dragging an input 4313 # range range will snap the range's value to that tick mark. By default, this is 4314 # half the default width of the range thumb. 4315 - name: dom.range_element.magnet_effect_threshold 4316 type: float 4317 value: 10.0f 4318 mirror: always 4319 4320 # Reporting API. 4321 - name: dom.reporting.enabled 4322 type: RelaxedAtomicBool 4323 value: false 4324 mirror: always 4325 4326 - name: dom.reporting.testing.enabled 4327 type: RelaxedAtomicBool 4328 value: false 4329 mirror: always 4330 4331 - name: dom.reporting.featurePolicy.enabled 4332 type: RelaxedAtomicBool 4333 value: false 4334 mirror: always 4335 4336 - name: dom.reporting.crash.enabled 4337 type: RelaxedAtomicBool 4338 value: false 4339 mirror: always 4340 4341 - name: dom.reporting.header.enabled 4342 type: RelaxedAtomicBool 4343 value: false 4344 mirror: always 4345 4346 # In seconds. The timeout to remove not-active report-to endpoints. 4347 - name: dom.reporting.cleanup.timeout 4348 type: uint32_t 4349 value: 3600 4350 mirror: always 4351 4352 # Any X seconds the reports are dispatched to endpoints. 4353 - name: dom.reporting.delivering.timeout 4354 type: uint32_t 4355 value: 5 4356 mirror: always 4357 4358 # How many times the delivering of a report should be tried. 4359 - name: dom.reporting.delivering.maxFailures 4360 type: uint32_t 4361 value: 3 4362 mirror: always 4363 4364 # How many reports should be stored in the report queue before being delivered. 4365 - name: dom.reporting.delivering.maxReports 4366 type: RelaxedAtomicUint32 4367 value: 100 4368 mirror: always 4369 4370 # Enable Screen Orientation lock 4371 - name: dom.screenorientation.allow-lock 4372 type: bool 4373 value: true 4374 mirror: always 4375 4376 # Enable Screen Wake Lock API 4377 - name: dom.screenwakelock.enabled 4378 type: bool 4379 value: true 4380 mirror: always 4381 4382 # Whether to enable the JavaScript start-up cache. This causes one of the first 4383 # execution to record the bytecode of the JavaScript function used, and save it 4384 # in the existing cache entry. On the following loads of the same script, the 4385 # bytecode would be loaded from the cache instead of being generated once more. 4386 - name: dom.script_loader.bytecode_cache.enabled 4387 type: bool 4388 value: true 4389 mirror: always 4390 4391 # Ignore the heuristics of the bytecode cache, and always record on the first 4392 # visit. (used for testing purposes). 4393 4394 # Choose one strategy to use to decide when the bytecode should be encoded and 4395 # saved. The following strategies are available right now: 4396 # * -2 : (reader mode) The bytecode cache would be read, but it would never 4397 # be saved. 4398 # * -1 : (eager mode) The bytecode would be saved as soon as the script is 4399 # seen for the first time, independently of the size or last access 4400 # time. 4401 # * 0 : (default) The bytecode would be saved in order to minimize the 4402 # page-load time. Cached after 4 reloads. 4403 # * 1 : (performance) The bytecode would be saved in order to minimize the 4404 # page-load time. Cached after 2 reloads. 4405 # 4406 # Other values might lead to experimental strategies. For more details, have a 4407 # look at: ScriptLoader::ShouldCacheBytecode function. 4408 - name: dom.script_loader.bytecode_cache.strategy 4409 type: int32_t 4410 value: 0 4411 mirror: always 4412 4413 # Select which parse/delazification strategy should be used while parsing 4414 # scripts off-main-thread. (see CompileOptions.h, DelazificationOption enum) 4415 # 4416 # 0: On-demand only. Delazification will be triggered only on the main thread 4417 # before the execution of the function. 4418 # 4419 # 1: Compare on-demand delazification (= 0) with concurrent depth-first 4420 # delazification (= 2). 4421 # 4422 # 2: Depth-first. Delazify all functions off-thread in the order of appearance 4423 # in the source. 4424 # 4425 # 3: Large-first. Delazify all functions off-thread starting with the largest 4426 # functions first, and the smallest as the last one to be delazified, where 4427 # the size of function is measured in bytes between the start to the end of 4428 # the function. 4429 # 4430 # 255: Parse everything eagerly, from the first parse. All functions are parsed 4431 # at the same time as the top-level of a file. 4432 - name: dom.script_loader.delazification.strategy 4433 type: uint32_t 4434 value: 255 4435 mirror: always 4436 4437 # Maximum total size after which the delazification strategy, specified by 4438 # `dom.script_loader.delazification.strategy`, is no longer applied, and the 4439 # on-demand strategy is used by default. 4440 # 4441 # -1 disable the threshold, and delazification strategy is applied to all 4442 # scripts. 4443 # 4444 # Default value is 10MB for utf8 scripts. 4445 - name: dom.script_loader.delazification.max_size 4446 type: int32_t 4447 value: 10485760 4448 mirror: always 4449 4450 # Minimum memory, in GB, required to enable delazification strategy, specified 4451 # by `dom.script_loader.delazification.strategy`. Otherwise, the on-demand 4452 # delazification strategy is used. 4453 - name: dom.script_loader.delazification.min_mem 4454 type: int32_t 4455 value: 2 4456 mirror: always 4457 4458 # Enable speculative off main thread parsing of external scripts as 4459 # soon as they are fetched. 4460 - name: dom.script_loader.external_scripts.speculative_omt_parse.enabled 4461 type: bool 4462 value: true 4463 mirror: always 4464 4465 # Speculatively compile non parser inserted scripts 4466 - name: dom.script_loader.external_scripts.speculate_non_parser_inserted.enabled 4467 type: bool 4468 value: false 4469 mirror: always 4470 4471 # Speculatively compile async scripts 4472 - name: dom.script_loader.external_scripts.speculate_async.enabled 4473 type: bool 4474 value: false 4475 mirror: always 4476 4477 # Speculatively compile link preload scripts 4478 - name: dom.script_loader.external_scripts.speculate_link_preload.enabled 4479 type: bool 4480 value: false 4481 mirror: always 4482 4483 # For testing purposes only: Cache stencil across navigation 4484 - name: dom.script_loader.experimental.navigation_cache 4485 type: bool 4486 value: false 4487 mirror: always 4488 4489 - name: dom.securecontext.allowlist_onions 4490 type: bool 4491 value: false 4492 mirror: always 4493 4494 # This pref enables the featurePolicy header support. 4495 - name: dom.security.featurePolicy.header.enabled 4496 type: bool 4497 value: false 4498 mirror: always 4499 4500 - name: dom.security.featurePolicy.experimental.enabled 4501 type: bool 4502 value: false 4503 mirror: always 4504 4505 # Expose the 'featurePolicy' attribute in document and HTMLIFrameElement 4506 - name: dom.security.featurePolicy.webidl.enabled 4507 type: bool 4508 value: false 4509 mirror: always 4510 4511 # For testing purposes only: Flipping this pref to true allows 4512 # to skip the allowlist for about: pages and do not ship with a 4513 # CSP and NS_ASSERT right away. 4514 - name: dom.security.skip_about_page_csp_allowlist_and_assert 4515 type: RelaxedAtomicBool 4516 value: false 4517 mirror: always 4518 4519 # For testing purposes only: Flipping this pref to true allows 4520 # to skip the assertion that every about page ships with a CSP. 4521 - name: dom.security.skip_about_page_has_csp_assert 4522 type: RelaxedAtomicBool 4523 value: false 4524 mirror: always 4525 4526 # For testing purposes only: Flipping this pref to true allows 4527 # to skip the assertion that HTML fragments (e.g. innerHTML) can 4528 # not be used within chrome code or about: pages. 4529 - name: dom.security.skip_html_fragment_assertion 4530 type: RelaxedAtomicBool 4531 value: false 4532 mirror: always 4533 4534 4535 # Serialize < as < and > as > in attribute values for getHTML, innerHTML etc. 4536 - name: dom.security.html_serialization_escape_lt_gt 4537 type: RelaxedAtomicBool 4538 value: true 4539 mirror: always 4540 4541 # For testing purposes only; Flipping this pref to true allows 4542 # to skip the assertion that remote scripts can not be loaded 4543 # in system privileged contexts. 4544 - name: dom.security.skip_remote_script_assertion_in_system_priv_context 4545 type: RelaxedAtomicBool 4546 value: false 4547 mirror: always 4548 4549 # If and only if true, support for Trusted Types 4550 # (https://w3c.github.io/trusted-types/dist/spec/) is enabled. 4551 - name: dom.security.trusted_types.enabled 4552 type: RelaxedAtomicBool 4553 value: true 4554 mirror: always 4555 4556 # If true, all content requests will get upgraded to HTTPS:// 4557 # (some Firefox functionality requests, like OCSP will not be affected) 4558 - name: dom.security.https_only_mode 4559 type: RelaxedAtomicBool 4560 value: false 4561 mirror: always 4562 4563 # If true, all content requests in Private Browsing Mode will get 4564 # upgraded to HTTPS://. (If dom.security.https_only_mode is set 4565 # to true then this pref has no effect) 4566 - name: dom.security.https_only_mode_pbm 4567 type: RelaxedAtomicBool 4568 value: false 4569 mirror: always 4570 4571 # If true, sends http background request for top-level sites to 4572 # counter long timeouts. 4573 - name: dom.security.https_only_mode_send_http_background_request 4574 type: RelaxedAtomicBool 4575 value: true 4576 mirror: always 4577 4578 # Time limit, in milliseconds, before sending the http background 4579 # request for HTTPS-Only and HTTPS-First 4580 - name: dom.security.https_only_fire_http_request_background_timer_ms 4581 type: RelaxedAtomicUint32 4582 value: 2200 4583 mirror: always 4584 4585 # If true, tries to break upgrade downgrade cycles where https-only tries 4586 # to upgrad ethe connection, but the website tries to downgrade again. 4587 - name: dom.security.https_only_mode_break_upgrade_downgrade_endless_loop 4588 type: RelaxedAtomicBool 4589 value: true 4590 mirror: always 4591 4592 # If true and HTTPS-only mode is enabled, requests 4593 # to local IP addresses are also upgraded 4594 - name: dom.security.https_only_mode.upgrade_local 4595 type: RelaxedAtomicBool 4596 value: false 4597 mirror: always 4598 4599 # If true and HTTPS-only mode is enabled, requests 4600 # to .onion hosts are also upgraded 4601 - name: dom.security.https_only_mode.upgrade_onion 4602 type: RelaxedAtomicBool 4603 value: false 4604 mirror: always 4605 4606 # WARNING: Don't ever update that pref manually! It is only used 4607 # for telemetry purposes and allows to reason about retention of 4608 # the pref dom.security.https_only_mode from above. 4609 - name: dom.security.https_only_mode_ever_enabled 4610 type: RelaxedAtomicBool 4611 value: false 4612 mirror: always 4613 4614 # WARNING: Don't ever update that pref manually! It is only used 4615 # for telemetry purposes and allows to reason about retention of 4616 # the pref dom.security.https_only_mode_pbm from above. 4617 - name: dom.security.https_only_mode_ever_enabled_pbm 4618 type: RelaxedAtomicBool 4619 value: false 4620 mirror: always 4621 4622 # If true checks for secure www connections when https fails 4623 # and gives the user suggestions on the error page 4624 - name: dom.security.https_only_mode_error_page_user_suggestions 4625 type: RelaxedAtomicBool 4626 value: false 4627 mirror: always 4628 4629 # If true, top-level request will get upgraded to HTTPS and 4630 # downgraded again if the request failed. 4631 - name: dom.security.https_first 4632 type: RelaxedAtomicBool 4633 value: true 4634 mirror: always 4635 4636 # If true, HTTPS-First will upgrade non-default ports 4637 - name: dom.security.https_first_for_custom_ports 4638 type: RelaxedAtomicBool 4639 value: false 4640 mirror: always 4641 4642 # If true, HTTPS-First will upgrade local addresses 4643 - name: dom.security.https_first_for_local_addresses 4644 type: RelaxedAtomicBool 4645 value: false 4646 mirror: always 4647 4648 # If true, HTTPS-First will upgrade unknown suffixes 4649 - name: dom.security.https_first_for_unknown_suffixes 4650 type: RelaxedAtomicBool 4651 value: false 4652 mirror: always 4653 4654 # If true, top-level requests in Private Browsing Mode will get 4655 # upgraded to HTTPS. (If dom.security.https_first 4656 # is set to true then this pref has no effect) 4657 - name: dom.security.https_first_pbm 4658 type: RelaxedAtomicBool 4659 value: true 4660 mirror: always 4661 4662 # If true, top-level requests that are initiated from the address 4663 # bar and with an empty scheme get upgraded to HTTPS 4664 # with a fallback 4665 - name: dom.security.https_first_schemeless 4666 type: RelaxedAtomicBool 4667 value: true 4668 mirror: always 4669 4670 # If true, will add a special temporary HTTPS-First exception for a site when a 4671 # HTTPS-First upgrade fails. 4672 - name: dom.security.https_first_add_exception_on_failure 4673 type: RelaxedAtomicBool 4674 value: true 4675 mirror: always 4676 4677 - name: dom.security.https_first_exception_lifetime 4678 type: uint32_t 4679 value: 7*24*60*60*1000 # 7 days in milliseconds 4680 mirror: always 4681 4682 - name: dom.security.unexpected_system_load_telemetry_enabled 4683 type: bool 4684 value: @IS_EARLY_BETA_OR_EARLIER@ 4685 mirror: always 4686 4687 # pref controls `Sanitizer` API being exposed 4688 # https://wicg.github.io/sanitizer-api/ 4689 - name: dom.security.sanitizer.enabled 4690 type: bool 4691 value: true 4692 mirror: always 4693 4694 # pref controls credential chooser UI for testing. When true, UI is not shown and 4695 # either a credential with ID `wpt-pick-me` is selected, or none. 4696 - name: dom.security.credentialmanagement.chooser.testing.enabled 4697 type: bool 4698 value: false 4699 mirror: always 4700 4701 # pref controls `identity` credentials being exposed 4702 - name: dom.security.credentialmanagement.identity.enabled 4703 type: bool 4704 value: false 4705 mirror: always 4706 4707 # pref controls `identity` credential UI for testing. When true, UI is not shown and 4708 # the first option in the account and provider lists are chosen 4709 - name: dom.security.credentialmanagement.identity.select_first_in_ui_lists 4710 type: bool 4711 value: false 4712 mirror: always 4713 4714 # pref controls `identity` credential platform behavior for testing. When true, 4715 # the .well-known file check is not performed. 4716 - name: dom.security.credentialmanagement.identity.test_ignore_well_known 4717 type: bool 4718 value: false 4719 mirror: always 4720 4721 # pref controls whether we should delay identity credential rejections at all 4722 - name: dom.security.credentialmanagement.identity.reject_delay.enabled 4723 type: bool 4724 value: true 4725 mirror: always 4726 4727 # pref controls how long we should delay identity credential rejections if enabled 4728 - name: dom.security.credentialmanagement.identity.reject_delay.duration_ms 4729 type: uint32_t 4730 value: 120000 4731 mirror: always 4732 4733 # Restrict top-level navigations from cross-origin frames. 4734 - name: dom.security.framebusting_intervention.enabled 4735 type: bool 4736 value: true 4737 mirror: always 4738 4739 # Whether or not selection events on text controls are enabled. 4740 - name: dom.select_events.textcontrols.selectionchange.enabled 4741 type: bool 4742 value: true 4743 mirror: always 4744 4745 - name: dom.select_events.textcontrols.selectstart.enabled 4746 type: bool 4747 value: false 4748 mirror: always 4749 4750 - name: dom.select.showPicker.enabled 4751 type: bool 4752 value: true 4753 mirror: always 4754 4755 - name: dom.send_after_paint_to_content 4756 type: bool 4757 value: false 4758 mirror: always 4759 4760 - name: dom.separate_event_queue_for_post_message.enabled 4761 type: bool 4762 value: true 4763 mirror: always 4764 4765 - name: dom.arena_allocator.enabled 4766 type: bool 4767 value: true 4768 mirror: once 4769 4770 - name: dom.serviceworkers.loadingCachedScriptOnWorkerThread.enabled 4771 type: RelaxedAtomicBool 4772 value: false 4773 mirror: always 4774 4775 - name: dom.serviceWorkers.enabled 4776 type: RelaxedAtomicBool 4777 value: true 4778 mirror: always 4779 4780 - name: dom.serviceWorkers.navigationPreload.enabled 4781 type: RelaxedAtomicBool 4782 value: true 4783 mirror: always 4784 4785 # Mitigates ServiceWorker navigation faults by bypassing the ServiceWorker on 4786 # navigation faults. This is more extensive than just resetting interception 4787 # because we also mark the page as uncontrolled so that subresources will not 4788 # go to the ServiceWorker either. 4789 - name: dom.serviceWorkers.mitigations.bypass_on_fault 4790 type: bool 4791 value: true 4792 mirror: always 4793 4794 # Additional ServiceWorker navigation mitigation control to unregister the 4795 # ServiceWorker after multiple faults are encountered. The mitigation is 4796 # disabled when this is set to zero, otherwise this is the number of faults that 4797 # need to occur for a specific ServiceWorker before it will be unregistered. 4798 - name: dom.serviceWorkers.mitigations.navigation_fault_threshold 4799 type: uint32_t 4800 value: 3 4801 mirror: always 4802 4803 # This is the group usage head room for service workers. 4804 # The quota usage mitigation algorithm uses this preference to determine if the 4805 # origin or also group data should be cleared or not. 4806 # The default value is 400 MiB. 4807 - name: dom.serviceWorkers.mitigations.group_usage_headroom_kb 4808 type: uint32_t 4809 value: 400 * 1024 4810 mirror: always 4811 4812 # Enable ServiceWorkers in Private Browsing Mode (PBM). This requires 4813 # dom.cache.privateBrowsing.enabled to be enabled as well. Registrations are 4814 # not persisted to disk; installed scripts are stored in Cache API storage which 4815 # is encrypted in PBM. 4816 - name: dom.serviceWorkers.privateBrowsing.enabled 4817 type: RelaxedAtomicBool 4818 value: true 4819 mirror: always 4820 4821 - name: dom.serviceWorkers.testing.enabled 4822 type: RelaxedAtomicBool 4823 value: false 4824 mirror: always 4825 4826 # Whether ServiceWorkerManager should persist the service worker 4827 # registered by temporary installed extension (only meant to be used 4828 # for testing purpose, to make it easier to test some particular scenario 4829 # with a temporary installed addon, which doesn't need to be signed to be 4830 # installed on release channel builds). 4831 - name: dom.serviceWorkers.testing.persistTemporarilyInstalledAddons 4832 type: RelaxedAtomicBool 4833 value: false 4834 mirror: always 4835 4836 - name: dom.storage.enabled 4837 type: RelaxedAtomicBool 4838 value: true 4839 mirror: always 4840 4841 - name: dom.urlpattern.enabled 4842 type: RelaxedAtomicBool 4843 value: true 4844 mirror: always 4845 4846 - name: dom.workers.pFetch.enabled 4847 type: RelaxedAtomicBool 4848 value: true 4849 mirror: always 4850 4851 - name: dom.workers.throttling.enabled 4852 type: bool 4853 value: @IS_EARLY_BETA_OR_EARLIER@ 4854 mirror: once 4855 4856 - name: dom.workers.serialized-sab-access 4857 type: RelaxedAtomicBool 4858 value: false 4859 mirror: always 4860 4861 # Enable stronger diagnostics on worker shutdown. 4862 # If this is true, we will potentially run an extra GCCC when a worker should 4863 # exit its DoRunLoop but holds any WorkerRef and we will MOZ_DIAGNOSTIC_ASSERT 4864 # when during that extra GCCC such a WorkerRef is freed. 4865 - name: dom.workers.GCCC_on_potentially_last_event 4866 type: RelaxedAtomicBool 4867 #if defined(FUZZING) || defined(DEBUG) 4868 value: true 4869 #else 4870 value: false 4871 #endif 4872 mirror: always 4873 4874 - name: dom.sitepermsaddon-provider.enabled 4875 type: bool 4876 value: @IS_NOT_ANDROID@ 4877 mirror: always 4878 4879 # Server-Sent Events 4880 # Equal to the DEFAULT_RECONNECTION_TIME_VALUE value in nsEventSource.cpp 4881 - name: dom.serverEvents.defaultReconnectionTime 4882 type: RelaxedAtomicUint32 4883 value: 5000 # in milliseconds 4884 mirror: always 4885 4886 # Whether automatic storage access granting heuristics should be turned on. 4887 - name: dom.storage_access.auto_grants 4888 type: bool 4889 value: true 4890 mirror: always 4891 4892 - name: dom.storage_access.auto_grants.delayed 4893 type: bool 4894 value: true 4895 mirror: always 4896 4897 # Whether to exclude third-party trackers from Storage Access API auto grants. 4898 - name: dom.storage_access.auto_grants.exclude_third_party_trackers 4899 type: bool 4900 value: true 4901 mirror: always 4902 4903 # Storage-access API. 4904 - name: dom.storage_access.enabled 4905 type: bool 4906 value: true 4907 mirror: always 4908 4909 # Enable Storage-Access-Headers 4910 - name: dom.storage_access.headers.enabled 4911 type: bool 4912 value: true 4913 mirror: always 4914 4915 # Forward-Declared Storage-access API. 4916 - name: dom.storage_access.forward_declared.enabled 4917 type: bool 4918 value: false 4919 mirror: always 4920 4921 # How long the Forward-Declared Storage-access API allows between pair requests 4922 # in seconds 4923 - name: dom.storage_access.forward_declared.lifetime 4924 type: uint32_t 4925 value: 15 * 60 4926 mirror: always 4927 4928 # The maximum number of origins that a given third-party tracker is allowed 4929 # to have concurrent access to before the user is presented with a storage 4930 # access prompt. Only effective when the auto_grants pref is turned on. 4931 - name: dom.storage_access.max_concurrent_auto_grants 4932 type: int32_t 4933 value: 5 4934 mirror: always 4935 4936 - name: dom.storage_access.frame_only 4937 type: bool 4938 value: true 4939 mirror: always 4940 4941 # Only grant storage access to secure contexts. 4942 - name: dom.storage_access.dont_grant_insecure_contexts 4943 type: RelaxedAtomicBool 4944 value: true 4945 mirror: always 4946 4947 # Whether the File System API is enabled 4948 - name: dom.fs.enabled 4949 type: RelaxedAtomicBool 4950 value: true 4951 mirror: always 4952 4953 # Whether the WritableFileStream is enabled or disabled. 4954 - name: dom.fs.writable_file_stream.enabled 4955 type: RelaxedAtomicBool 4956 value: true 4957 mirror: always 4958 4959 # A pref that is used to enable testing features. 4960 - name: dom.fs.testing 4961 type: SequentiallyConsistentAtomicBool 4962 value: false 4963 mirror: always 4964 4965 # A pref that is used to slow down database initialization for testing purposes. 4966 - name: dom.fs.databaseInitialization.pauseOnIOThreadMs 4967 type: RelaxedAtomicUint32 4968 value: 0 4969 mirror: always 4970 4971 # LocalStorage data limit as determined by summing up the lengths of all string 4972 # keys and values. This is consistent with the legacy implementation and other 4973 # browser engines. This value should really only ever change in unit testing 4974 # where being able to lower it makes it easier for us to test certain edge 4975 # cases. Measured in KiBs. 4976 - name: dom.storage.default_quota 4977 type: RelaxedAtomicUint32 4978 # Only allow relatively small amounts of data since performance of the 4979 # synchronous IO is very bad. We are enforcing simple per-origin quota only. 4980 value: 5 * 1024 4981 mirror: always 4982 4983 # Per-site quota for legacy LocalStorage implementation. 4984 - name: dom.storage.default_site_quota 4985 type: RelaxedAtomicUint32 4986 value: 25 * 1024 4987 mirror: always 4988 4989 # Whether or not the unsupported legacy implemenation should be enabled. Please 4990 # don't advertise this pref as a way for disabling LSNG. This pref is intended 4991 # for internal testing only and will be removed in near future. Accidental 4992 # disabling of LSNG can lead to a data loss in a combination with disabled 4993 # shadow writes. Disabling of shadow writes is the initial step towards 4994 # removing legacy implementation and will be done soon. 4995 - name: dom.storage.enable_unsupported_legacy_implementation 4996 type: RelaxedAtomicBool 4997 value: false 4998 mirror: always 4999 do_not_use_directly: true 5000 5001 # Whether the migration from unsupported legacy implementation is enabled. 5002 - name: dom.storage.enable_migration_from_unsupported_legacy_implementation 5003 type: RelaxedAtomicBool 5004 value: false 5005 mirror: always 5006 5007 # The amount of snapshot peak usage which is attempted to be pre-incremented 5008 # during snapshot creation. 5009 - name: dom.storage.snapshot_peak_usage.initial_preincrement 5010 type: RelaxedAtomicUint32 5011 value: 16384 5012 mirror: always 5013 5014 # The amount of snapshot peak usage which is attempted to be pre-incremented 5015 # during snapshot creation if the LocalStorage usage was already close to the 5016 # limit (a fallback for dom.storage.snapshot_peak_usage.initial_preincrement). 5017 - name: dom.storage.snapshot_peak_usage.reduced_initial_preincrement 5018 type: RelaxedAtomicUint32 5019 value: 4096 5020 mirror: always 5021 5022 # The amount of snapshot peak usage which is attempted to be pre-incremented 5023 # beyond the specific values which are subsequently requested after snapshot 5024 # creation. 5025 - name: dom.storage.snapshot_peak_usage.gradual_preincrement 5026 type: RelaxedAtomicUint32 5027 value: 4096 5028 mirror: always 5029 5030 # The amount of snapshot peak usage which is attempted to be pre-incremented 5031 # beyond the specific values which are subsequently requested after snapshot 5032 # creation if the LocalStorage total usage was already close to the limit 5033 # (a fallback for dom.storage.snapshot_peak_usage.gradual_preincrement). 5034 - name: dom.storage.snapshot_peak_usage.reduced_gradual_preincrement 5035 type: RelaxedAtomicUint32 5036 value: 1024 5037 mirror: always 5038 5039 # How long between a snapshot becomes idle and when we actually finish the 5040 # snapshot. This preference is only used when "dom.storage.snapshot_reusing" 5041 # is true. 5042 - name: dom.storage.snapshot_idle_timeout_ms 5043 type: uint32_t 5044 value: 5000 5045 mirror: always 5046 5047 # Is support for Storage test APIs enabled? 5048 - name: dom.storage.testing 5049 type: SequentiallyConsistentAtomicBool 5050 value: false 5051 mirror: always 5052 5053 # A pref that is used to slow down database initialization for testing purposes. 5054 - name: dom.storage.databaseInitialization.pauseOnIOThreadMs 5055 type: RelaxedAtomicUint32 5056 value: 0 5057 mirror: always 5058 5059 # A pref that is used to slow down request finalization for testing purposes. 5060 - name: dom.storage.requestFinalization.pauseOnDOMFileThreadMs 5061 type: RelaxedAtomicUint32 5062 value: 0 5063 mirror: always 5064 5065 # For area and anchor elements with target=_blank and no rel set to 5066 # opener/noopener. 5067 - name: dom.targetBlankNoOpener.enabled 5068 type: bool 5069 value: true 5070 mirror: always 5071 5072 # Is support for Selection.GetRangesForInterval enabled? 5073 - name: dom.testing.selection.GetRangesForInterval 5074 type: bool 5075 value: false 5076 mirror: always 5077 5078 - name: dom.testing.structuredclonetester.enabled 5079 type: RelaxedAtomicBool 5080 value: false 5081 mirror: always 5082 5083 # To enable TestUtils interface on WPT 5084 - name: dom.testing.testutils.enabled 5085 type: RelaxedAtomicBool 5086 value: false 5087 mirror: always 5088 5089 - name: dom.hidden_until_found.enabled 5090 type: bool 5091 value: true 5092 mirror: always 5093 5094 - name: dom.text_fragments.enabled 5095 type: RelaxedAtomicBool 5096 value: true 5097 mirror: always 5098 rust: true 5099 5100 - name: dom.text_fragments.create_text_fragment.timeout_seconds 5101 type: uint32_t 5102 value: 5 5103 mirror: always 5104 5105 - name: dom.text_fragments.create_text_fragment.exact_match_max_length 5106 type: uint32_t 5107 value: 200 5108 mirror: always 5109 5110 - name: dom.textMetrics.actualBoundingBox.enabled 5111 type: RelaxedAtomicBool 5112 value: true 5113 mirror: always 5114 5115 - name: dom.textMetrics.baselines.enabled 5116 type: RelaxedAtomicBool 5117 value: true 5118 mirror: always 5119 5120 - name: dom.textMetrics.emHeight.enabled 5121 type: RelaxedAtomicBool 5122 value: true 5123 mirror: always 5124 5125 - name: dom.textMetrics.fontBoundingBox.enabled 5126 type: RelaxedAtomicBool 5127 value: true 5128 mirror: always 5129 5130 # Time (in ms) that it takes to regenerate 1ms. 5131 - name: dom.timeout.background_budget_regeneration_rate 5132 type: RelaxedAtomicInt32 5133 value: 100 5134 mirror: always 5135 5136 # Time (in ms) that it takes to regenerate 1ms. 5137 - name: dom.timeout.foreground_budget_regeneration_rate 5138 type: RelaxedAtomicInt32 5139 value: 1 5140 mirror: always 5141 5142 # Maximum value (in ms) for the background budget. Only valid for 5143 # values greater than 0. 5144 - name: dom.timeout.background_throttling_max_budget 5145 type: RelaxedAtomicInt32 5146 value: 50 5147 mirror: always 5148 5149 # Maximum value (in ms) for the foreground budget. Only valid for 5150 # values greater than 0. 5151 - name: dom.timeout.foreground_throttling_max_budget 5152 type: RelaxedAtomicInt32 5153 value: -1 5154 mirror: always 5155 5156 # The maximum amount a timeout can be delayed by budget throttling. 5157 - name: dom.timeout.budget_throttling_max_delay 5158 type: RelaxedAtomicInt32 5159 value: 15000 5160 mirror: always 5161 5162 # Turn on budget throttling by default. 5163 - name: dom.timeout.enable_budget_timer_throttling 5164 type: RelaxedAtomicBool 5165 value: true 5166 mirror: always 5167 5168 # Should we defer timeouts and intervals while loading a page. Released 5169 # on Idle or when the page is loaded. 5170 # A URI list in dom.timeout.defer_during_load.force-disable can override this 5171 # and disable this optimization for a site. 5172 - name: dom.timeout.defer_during_load 5173 type: bool 5174 value: true 5175 mirror: always 5176 5177 # Sites we shouldn't defer timeouts and intervals while loading a page. 5178 # comma-separated list, see IsURIInPrefList() for format details 5179 - name: dom.timeout.defer_during_load.force-disable 5180 type: String 5181 value: >- 5182 *.usps.com, 5183 *.nvidia.com, 5184 *.fedex.com, 5185 *.msci.com, 5186 *.the-saleroom.com 5187 mirror: never 5188 5189 # Maximum amount of time in milliseconds consecutive setTimeout()/setInterval() 5190 # callback are allowed to run before yielding the event loop. 5191 - name: dom.timeout.max_consecutive_callbacks_ms 5192 type: RelaxedAtomicUint32 5193 value: 4 5194 mirror: always 5195 5196 # Maximum deferral time for setTimeout/Interval in milliseconds 5197 - name: dom.timeout.max_idle_defer_ms 5198 type: uint32_t 5199 value: 10*1000 5200 mirror: always 5201 5202 # Delay in ms from document load until we start throttling background timeouts. 5203 - name: dom.timeout.throttling_delay 5204 type: RelaxedAtomicInt32 5205 value: 30000 5206 mirror: always 5207 5208 # UDPSocket API 5209 - name: dom.udpsocket.enabled 5210 type: bool 5211 value: false 5212 mirror: always 5213 5214 # Whether to dump worker use counters 5215 - name: dom.use_counters.dump.worker 5216 type: RelaxedAtomicBool 5217 value: false 5218 mirror: always 5219 5220 # Whether to dump document use counters 5221 - name: dom.use_counters.dump.document 5222 type: bool 5223 value: false 5224 mirror: always 5225 5226 # Whether to dump page use counters 5227 - name: dom.use_counters.dump.page 5228 type: bool 5229 value: false 5230 mirror: always 5231 5232 # Time limit, in milliseconds, for user gesture transient activation. 5233 - name: dom.user_activation.transient.timeout 5234 type: uint32_t 5235 value: 5000 5236 mirror: always 5237 5238 # Whether to treat the clicks on scrollbars as user interaction with web content. 5239 - name: dom.user_activation.ignore_scrollbars 5240 type: bool 5241 value: true 5242 mirror: always 5243 5244 # Whether to shim a Components object on untrusted windows. 5245 - name: dom.use_components_shim 5246 type: bool 5247 value: @IS_NOT_NIGHTLY_BUILD@ 5248 mirror: always 5249 5250 - name: dom.vibrator.enabled 5251 type: bool 5252 value: false 5253 mirror: always 5254 5255 - name: dom.vibrator.max_vibrate_ms 5256 type: RelaxedAtomicUint32 5257 value: 10000 5258 mirror: always 5259 5260 - name: dom.vibrator.max_vibrate_list_len 5261 type: RelaxedAtomicUint32 5262 value: 128 5263 mirror: always 5264 5265 # Is support for View Transitions Level 1 enabled? 5266 - name: dom.viewTransitions.enabled 5267 type: RelaxedAtomicBool 5268 value: true 5269 mirror: always 5270 rust: true 5271 5272 - name: dom.viewTransitions.cross-document.enabled 5273 type: RelaxedAtomicBool 5274 value: false 5275 mirror: always 5276 rust: true 5277 5278 # Timeout for view transitions. 5279 # TODO(emilio): Figure out the right time-out, Blink uses between 4 and 15 5280 # seconds. 5281 - name: dom.viewTransitions.timeout-ms 5282 type: uint32_t 5283 value: 10000 5284 mirror: always 5285 5286 # Whether view transitions remain active indefinitely. Useful for debugging. 5287 - name: dom.viewTransitions.remain-active 5288 type: bool 5289 value: false 5290 mirror: always 5291 5292 # Is support for WebVR APIs enabled? 5293 # Disabled everywhere, but not removed. 5294 - name: dom.vr.enabled 5295 type: RelaxedAtomicBool 5296 value: false 5297 mirror: always 5298 5299 # Should VR sessions always be reported as supported, without first 5300 # checking for VR runtimes? This will prevent permission prompts 5301 # from being suppressed on machines without VR runtimes and cause 5302 # navigator.xr.isSessionSupported to always report that immersive-vr 5303 # is supported. 5304 - name: dom.vr.always_support_vr 5305 type: RelaxedAtomicBool 5306 value: false 5307 mirror: always 5308 5309 # Should AR sessions always be reported as supported, without first 5310 # checking for AR runtimes? This will prevent permission prompts 5311 # from being suppressed on machines without AR runtimes and cause 5312 # navigator.xr.isSessionSupported to always report that immersive-ar 5313 # is supported. 5314 - name: dom.vr.always_support_ar 5315 type: RelaxedAtomicBool 5316 value: false 5317 mirror: always 5318 5319 # It is often desirable to automatically start vr presentation when 5320 # a user puts on the VR headset. This is done by emitting the 5321 # Window.vrdisplayactivate event when the headset's sensors detect it 5322 # being worn. This can result in WebVR content taking over the headset 5323 # when the user is using it outside the browser or inadvertent start of 5324 # presentation due to the high sensitivity of the proximity sensor in some 5325 # headsets, so it is off by default. 5326 - name: dom.vr.autoactivate.enabled 5327 type: RelaxedAtomicBool 5328 value: false 5329 mirror: always 5330 5331 # Minimum number of milliseconds that the browser will wait before 5332 # attempting to poll again for connected VR controllers. The browser 5333 # will not attempt to poll for VR controllers until it needs to use them. 5334 - name: dom.vr.controller.enumerate.interval 5335 type: RelaxedAtomicInt32 5336 value: 1000 5337 mirror: always 5338 5339 # The threshold value of trigger inputs for VR controllers. 5340 - name: dom.vr.controller_trigger_threshold 5341 type: AtomicFloat 5342 value: 0.1f 5343 mirror: always 5344 5345 # Minimum number of milliseconds that the browser will wait before 5346 # attempting to poll again for connected VR displays. The browser 5347 # will not attempt to poll for VR displays until it needs to use 5348 # them, such as when detecting a WebVR site. 5349 - name: dom.vr.display.enumerate.interval 5350 type: RelaxedAtomicInt32 5351 value: 5000 5352 mirror: always 5353 5354 # The number of milliseconds since last frame start before triggering a new 5355 # frame. When content is failing to submit frames on time or the lower level 5356 # VR platform APIs are rejecting frames, it determines the rate at which RAF 5357 # callbacks will be called. 5358 - name: dom.vr.display.rafMaxDuration 5359 type: RelaxedAtomicUint32 5360 value: 50 5361 mirror: always 5362 5363 # Minimum number of milliseconds the browser will wait before attempting 5364 # to re-start the VR service after an enumeration returned no devices. 5365 - name: dom.vr.external.notdetected.timeout 5366 type: RelaxedAtomicInt32 5367 value: 60000 5368 mirror: always 5369 5370 # Minimum number of milliseconds the browser will wait before attempting 5371 # to re-start the VR service after a VR API (eg, OpenVR or Oculus) 5372 # requests that we shutdown and unload its libraries. 5373 # To ensure that we don't interfere with VR runtime software auto-updates, 5374 # we will not attempt to re-load the service until this timeout has elapsed. 5375 - name: dom.vr.external.quit.timeout 5376 type: RelaxedAtomicInt32 5377 value: 10000 5378 mirror: always 5379 5380 # Minimum number of milliseconds that the VR session will be kept 5381 # alive after the browser and content no longer are using the 5382 # hardware. If a VR multitasking environment, this should be set 5383 # very low or set to 0. 5384 - name: dom.vr.inactive.timeout 5385 type: RelaxedAtomicInt32 5386 value: 5000 5387 mirror: always 5388 5389 # Maximum number of milliseconds the browser will wait for content to call 5390 # VRDisplay.requestPresent after emitting vrdisplayactivate during VR 5391 # link traversal. This prevents a long running event handler for 5392 # vrdisplayactivate from later calling VRDisplay.requestPresent, which would 5393 # result in a non-responsive browser in the VR headset. 5394 - name: dom.vr.navigation.timeout 5395 type: RelaxedAtomicInt32 5396 value: 5000 5397 mirror: always 5398 5399 # Oculus device 5400 - name: dom.vr.oculus.enabled 5401 type: RelaxedAtomicBool 5402 #if defined(HAVE_64BIT_BUILD) && !defined(ANDROID) 5403 # We are only enabling WebVR by default on 64-bit builds (Bug 1384459). 5404 value: true 5405 #else 5406 # On Android, this pref is irrelevant. 5407 value: false 5408 #endif 5409 mirror: always 5410 5411 # When enabled, Oculus sessions may be created with the ovrInit_Invisible 5412 # flag if a page is using tracking but not presenting. When a page 5413 # begins presenting VR frames, the session will be re-initialized without 5414 # the flag. This eliminates the "Firefox not responding" warnings in 5415 # the headset, but might not be compatible with all versions of the Oculus 5416 # runtime. 5417 - name: dom.vr.oculus.invisible.enabled 5418 type: RelaxedAtomicBool 5419 value: true 5420 mirror: always 5421 5422 # Minimum number of milliseconds after content has stopped VR presentation 5423 # before the Oculus session is re-initialized to an invisible / tracking 5424 # only mode. If this value is too high, users will need to wait longer 5425 # after stopping WebVR presentation before automatically returning to the 5426 # Oculus home interface. (They can immediately return to the Oculus Home 5427 # interface through the Oculus HUD without waiting this duration) 5428 # If this value is too low, the Oculus Home interface may be visible 5429 # momentarily during VR link navigation. 5430 - name: dom.vr.oculus.present.timeout 5431 type: RelaxedAtomicInt32 5432 value: 500 5433 mirror: always 5434 5435 # OpenVR device 5436 - name: dom.vr.openvr.enabled 5437 type: RelaxedAtomicBool 5438 #if !defined(HAVE_64BIT_BUILD) && !defined(ANDROID) 5439 # We are only enabling WebVR by default on 64-bit builds (Bug 1384459). 5440 value: false 5441 #elif defined(XP_WIN) || defined(XP_MACOSX) 5442 # We enable OpenVR by default for Windows and macOS. 5443 value: true 5444 #else 5445 # See Bug 1310663 (Linux). On Android, this pref is irrelevant. 5446 value: false 5447 #endif 5448 mirror: always 5449 5450 # OSVR device 5451 - name: dom.vr.osvr.enabled 5452 type: RelaxedAtomicBool 5453 value: false 5454 mirror: always 5455 5456 # Pose prediction reduces latency effects by returning future predicted HMD 5457 # poses to callers of the WebVR API. This currently only has an effect for 5458 # Oculus Rift on SDK 0.8 or greater. 5459 - name: dom.vr.poseprediction.enabled 5460 type: RelaxedAtomicBool 5461 value: true 5462 mirror: always 5463 5464 # Enable a separate process for VR module. 5465 - name: dom.vr.process.enabled 5466 type: bool 5467 #if defined(XP_WIN) 5468 value: true 5469 #else 5470 value: false 5471 #endif 5472 mirror: once 5473 5474 - name: dom.vr.process.startup_timeout_ms 5475 type: int32_t 5476 value: 5000 5477 mirror: once 5478 5479 # Puppet device, used for simulating VR hardware within tests and dev tools. 5480 - name: dom.vr.puppet.enabled 5481 type: RelaxedAtomicBool 5482 value: false 5483 mirror: always 5484 5485 # Starting VR presentation is only allowed within a user gesture or event such 5486 # as VRDisplayActivate triggered by the system. dom.vr.require-gesture allows 5487 # this requirement to be disabled for special cases such as during automated 5488 # tests or in a headless kiosk system. 5489 - name: dom.vr.require-gesture 5490 type: RelaxedAtomicBool 5491 value: true 5492 mirror: always 5493 5494 # Is support for WebXR APIs enabled? 5495 - name: dom.vr.webxr.enabled 5496 type: RelaxedAtomicBool 5497 value: false 5498 mirror: always 5499 5500 # Points in the native bounds geometry are required to be quantized 5501 # sufficiently to prevent fingerprinting. The WebXR spec suggests 5502 # quantizing to the nearest 5 centimeters. 5503 - name: dom.vr.webxr.quantization 5504 type: AtomicFloat 5505 value: 0.05f 5506 mirror: always 5507 5508 #ifdef XP_WIN 5509 # Control firing WidgetMouseEvent by handling Windows pointer messages or 5510 # mouse messages. 5511 - name: dom.w3c_pointer_events.dispatch_by_pointer_messages 5512 type: bool 5513 value: true 5514 mirror: always 5515 5516 # Control consuming WM_POINTER for touch pointers instead of WM_TOUCH 5517 - name: dom.w3c_pointer_events.dispatch_by_pointer_messages.touch 5518 type: bool 5519 value: false 5520 mirror: always 5521 5522 # Control whether to fire WidgetTouchEvent from pen pointers for APZ to handle scrolling. 5523 - name: dom.w3c_pointer_events.scroll_by_pen.enabled 5524 type: bool 5525 value: true 5526 mirror: always 5527 #endif 5528 5529 # If the value is >= 0, it will be used for max touch points in child processes. 5530 - name: dom.maxtouchpoints.testing.value 5531 type: int32_t 5532 value: -1 5533 mirror: always 5534 5535 # Maximum value of navigator.hardwareConcurrency. 5536 - name: dom.maxHardwareConcurrency 5537 type: RelaxedAtomicUint32 5538 value: 128 5539 mirror: always 5540 5541 # W3C pointer events draft. 5542 - name: dom.w3c_pointer_events.implicit_capture 5543 type: bool 5544 value: true 5545 mirror: always 5546 5547 - name: dom.w3c_pointer_events.getcoalescedevents_only_in_securecontext 5548 type: bool 5549 value: true 5550 mirror: always 5551 5552 # `click` event target is defined as overridden by pointer capture target in 5553 # Pointer Events. Set this to true if we should conform to it. Otherwise, 5554 # consider the target from the pointer position, set this to false. 5555 - name: dom.w3c_pointer_events.dispatch_click_on_pointer_capturing_element 5556 type: bool 5557 value: true 5558 mirror: always 5559 5560 # If `click` event is caused by a tap, the target should not be the target of 5561 # the preceding `pointerup`. This is compatible with Chrome 136. 5562 - name: dom.w3c_pointer_events.dispatch_click_on_pointer_capturing_element.except_touch 5563 type: bool 5564 value: true 5565 mirror: always 5566 5567 # In case Touch API is enabled, this pref controls whether to support 5568 # ontouch* event handlers, document.createTouch, document.createTouchList and 5569 # document.createEvent("TouchEvent"). 5570 - name: dom.w3c_touch_events.legacy_apis.enabled 5571 type: bool 5572 value: @IS_ANDROID@ 5573 mirror: always 5574 5575 # W3C touch events 5576 # 0 - disabled, 1 - enabled, 2 - autodetect 5577 # Autodetection is currently only supported on Windows and GTK3 (and assumed on 5578 # Android). 5579 - name: dom.w3c_touch_events.enabled 5580 type: int32_t 5581 #if defined(XP_MACOSX) 5582 value: 0 5583 #else 5584 value: 2 5585 #endif 5586 mirror: always 5587 5588 # Is support for the Web Audio API enabled? 5589 - name: dom.webaudio.enabled 5590 type: bool 5591 value: true 5592 mirror: always 5593 5594 - name: dom.webkitBlink.dirPicker.enabled 5595 type: RelaxedAtomicBool 5596 value: true 5597 mirror: always 5598 5599 # Whether allowing selection across the boundary 5600 # between shadow DOM and light DOM. 5601 # This is based on https://github.com/mfreed7/shadow-dom-selection 5602 - name: dom.shadowdom.selection_across_boundary.enabled 5603 type: bool 5604 value: true 5605 mirror: always 5606 5607 # If true, when user selects a range, `Selection` will split the range to 5608 # exclude unselectable content from the range. 5609 - name: dom.selection.exclude_non_selectable_nodes 5610 type: bool 5611 value: false 5612 mirror: always 5613 5614 # Mimic Chrome's window.getSelection().toString() behaviour 5615 - name: dom.selection.mimic_chrome_tostring.enabled 5616 type: bool 5617 value: true 5618 mirror: always 5619 5620 # When this pref is enabled: 5621 # - Shadow DOM is not pierced by default anymore 5622 # - The method accepts optional CaretPositionFromPointOptions to allow piercing 5623 # certain ShadowRoots 5624 # 5625 # https://drafts.csswg.org/cssom-view/#dom-document-caretpositionfrompoint 5626 - name: dom.shadowdom.new_caretPositionFromPoint_behavior.enabled 5627 type: bool 5628 value: @IS_NIGHTLY_BUILD@ 5629 mirror: always 5630 5631 - name: dom.shadowdom.referenceTarget.enabled 5632 type: bool 5633 value: false 5634 mirror: always 5635 5636 # NOTE: This preference is used in unit tests. If it is removed or its default 5637 # value changes, please update test_sharedMap_static_prefs.js accordingly. 5638 - name: dom.webcomponents.shadowdom.report_usage 5639 type: bool 5640 value: false 5641 mirror: always 5642 5643 # Is the constructed flag error check disabled during adoptedStyleSheets setter? 5644 # https://github.com/w3c/csswg-drafts/issues/10013 5645 - name: dom.webcomponents.lift-adoptedstylesheets-restriction.enabled 5646 type: RelaxedAtomicBool 5647 value: false 5648 mirror: always 5649 5650 # Is support for the WebGPU API enabled? 5651 # 5652 # When this condition changes, be sure to update the `run-if` / `skip-if` 5653 # conditions in `dom/webgpu/tests/mochitest/*.toml` accordingly. 5654 # 5655 # preprocessor.py doesn't understand parentheses, but && is higher precedence 5656 # than ||, meaning this pref defaults to true on any Windows architecture, or 5657 # on aarch64 (Apple Silicon) MacOS. 5658 - name: dom.webgpu.enabled 5659 type: RelaxedAtomicBool 5660 #if defined(XP_WIN) || defined(XP_MACOSX) && defined(MOZ_AARCH64) 5661 value: true 5662 #else 5663 value: @IS_EARLY_BETA_OR_EARLIER@ 5664 #endif 5665 mirror: always 5666 5667 # Is WebGPU allowed to run in the parent process? This should be false if 5668 # on a platform that supports the GPU process, else true. 5669 - name: dom.webgpu.allow-in-parent 5670 type: bool 5671 #if defined(XP_WIN) || defined(ANDROID) 5672 value: false 5673 #else 5674 value: true 5675 #endif 5676 mirror: once 5677 5678 # Is support for the Web GPU API enabled on service workers? 5679 - name: dom.webgpu.service-workers.enabled 5680 type: RelaxedAtomicBool 5681 #if defined(XP_WIN) || defined(XP_MACOSX) && defined(MOZ_AARCH64) 5682 value: true 5683 #else 5684 value: @IS_EARLY_BETA_OR_EARLIER@ 5685 #endif 5686 mirror: always 5687 5688 # Comma-separated list of wgpu backend names to permit in WebGPU adapters. 5689 # 5690 # If non-empty, this is parsed by `wgpu_core::instance::parse_backends_from_comma_list` to 5691 # produce a `wgpu_types::Backends` bitset used to create a `wgpu_core::hub::Global`. As of 5692 # 2023-3-22, recognized names are: 5693 # 5694 # "vulkan" | "vk" => Backends::VULKAN, 5695 # "dx12" | "d3d12" => Backends::DX12, 5696 # "dx11" | "d3d11" => Backends::DX11, 5697 # "metal" | "mtl" => Backends::METAL, 5698 # "opengl" | "gles" | "gl" => Backends::GL, 5699 # "webgpu" => Backends::BROWSER_WEBGPU, 5700 - name: dom.webgpu.wgpu-backend 5701 type: DataMutexString 5702 value: "" 5703 mirror: always 5704 rust: true 5705 5706 - name: dom.webgpu.allow-present-without-readback 5707 type: RelaxedAtomicBool 5708 #if defined(XP_WIN) || defined(XP_MACOSX) || defined(XP_LINUX) && !defined(ANDROID) 5709 value: true 5710 #else 5711 value: false 5712 #endif 5713 mirror: always 5714 5715 # Whether WebGPU's GPUExternalTexture API is enabled. 5716 - name: dom.webgpu.external-texture.enabled 5717 type: bool 5718 #if defined(XP_WIN) || defined(XP_MACOSX) 5719 value: true 5720 #else 5721 value: false 5722 #endif 5723 mirror: once 5724 5725 # For testing purposes, crash if we don't get a hardware adapter. 5726 - name: dom.webgpu.testing.assert-hardware-adapter 5727 type: RelaxedAtomicBool 5728 value: false 5729 mirror: always 5730 rust: true 5731 5732 # Whether to pass labels to the hardware abstraction layer. This is only useful when 5733 # inspecting a WebGPU workload in a GPU debugging tool like renderdoc. Enabling it 5734 # exposes poorly tested driver API surfaces so it should not be enabled by default. 5735 - name: dom.webgpu.hal-labels 5736 type: bool 5737 value: false 5738 mirror: once 5739 rust: true 5740 5741 # Domains for which WebGPU is disabled. 5742 # 5743 # If `nsIGlobalObject::GetBaseURI` returns a base URI in this list, 5744 # then `GPU::requestAdapter` always rejects. 5745 # 5746 # This is a comma-separated list of domains to block. An entry of the 5747 # form `*.DOMAIN` blocks all subdomains of `DOMAIN`. It is interpreted 5748 # by `nsContentUtils::IsURIInList`. 5749 # 5750 # Bugs for the current default contents: 5751 # 5752 # easyeda.com: 1980392 5753 - name: dom.webgpu.blocked-domains 5754 type: DataMutexString 5755 value: "easyeda.com,*.easyeda.com" 5756 mirror: always 5757 5758 # Is support for HTMLInputElement.webkitEntries enabled? 5759 - name: dom.webkitBlink.filesystem.enabled 5760 type: bool 5761 value: true 5762 mirror: always 5763 5764 # Whether the WebMIDI API is enabled 5765 - name: dom.webmidi.enabled 5766 type: bool 5767 value: @IS_NOT_MOBILE@ 5768 mirror: always 5769 5770 # midi permission is addon-gated 5771 - name: dom.webmidi.gated 5772 type: bool 5773 value: true 5774 mirror: always 5775 5776 - name: dom.webnotifications.allowcrossoriginiframe 5777 type: RelaxedAtomicBool 5778 value: false 5779 mirror: always 5780 5781 - name: dom.webnotifications.forbid_nested_first_party.enabled 5782 type: RelaxedAtomicBool 5783 value: true 5784 mirror: always 5785 5786 - name: dom.webnotifications.enabled 5787 type: RelaxedAtomicBool 5788 value: true 5789 mirror: always 5790 5791 - name: dom.webnotifications.privateBrowsing.enabled 5792 type: RelaxedAtomicBool 5793 value: true 5794 mirror: always 5795 5796 - name: dom.webnotifications.requireuserinteraction 5797 type: RelaxedAtomicBool 5798 value: true 5799 mirror: always 5800 5801 - name: dom.webnotifications.requireinteraction.enabled 5802 type: RelaxedAtomicBool 5803 #if defined(XP_WIN) || defined(XP_LINUX) 5804 value: true 5805 #else 5806 value: @IS_NIGHTLY_BUILD@ 5807 #endif 5808 mirror: always 5809 5810 - name: dom.webnotifications.silent.enabled 5811 type: RelaxedAtomicBool 5812 value: true 5813 mirror: always 5814 5815 - name: dom.webnotifications.vibrate.enabled 5816 type: RelaxedAtomicBool 5817 value: false 5818 mirror: always 5819 5820 - name: dom.webnotifications.actions.enabled 5821 type: RelaxedAtomicBool 5822 value: @IS_NIGHTLY_BUILD@ 5823 mirror: always 5824 5825 # Setting log level for notification modules. 5826 # The value follows the enum ConsoleLogLevel in ConsoleInstance.webidl. 5827 - name: dom.webnotifications.loglevel 5828 type: String 5829 value: Error 5830 mirror: never 5831 5832 # Allow notificationclick to open window only during the limited timeframe. 5833 - name: dom.webnotifications.disable_open_click_delay 5834 type: RelaxedAtomicUint32 5835 #if defined(ANDROID) 5836 # Allow service workers to open windows for a longer period after a notification 5837 # click on mobile. This is to account for some devices being quite slow (bug 1409761) 5838 value: 5000 5839 #else 5840 value: 1000 5841 #endif 5842 mirror: always 5843 5844 # Forcing all notification requests do storage cleanup. 5845 - name: dom.webnotifications.testing.force_storage_cleanup.enabled 5846 type: bool 5847 value: false 5848 mirror: always 5849 5850 - name: dom.worker.canceling.timeoutMilliseconds 5851 type: RelaxedAtomicUint32 5852 value: 30000 # 30 seconds 5853 mirror: always 5854 5855 # Enables the dispatching of console log events from worker threads to the 5856 # main-thread. 5857 - name: dom.worker.console.dispatch_events_to_main_thread 5858 type: RelaxedAtomicBool 5859 value: true 5860 mirror: always 5861 5862 - name: dom.workers.testing.enabled 5863 type: RelaxedAtomicBool 5864 value: false 5865 mirror: always 5866 5867 # WebIDL test prefs. 5868 - name: dom.webidl.test1 5869 type: bool 5870 value: true 5871 mirror: always 5872 - name: dom.webidl.test2 5873 type: bool 5874 value: true 5875 mirror: always 5876 5877 # WebShare API - exposes navigator.share() 5878 - name: dom.webshare.enabled 5879 type: bool 5880 #ifdef XP_WIN 5881 value: @IS_EARLY_BETA_OR_EARLIER@ 5882 #else 5883 value: false 5884 #endif 5885 mirror: always 5886 5887 # WebShare API - allows WebShare without user interaction (for tests only). 5888 - name: dom.webshare.requireinteraction 5889 type: bool 5890 value: true 5891 mirror: always 5892 5893 # Hide the confirm dialog when a POST request is reloaded. 5894 - name: dom.confirm_repost.testing.always_accept 5895 type: bool 5896 value: false 5897 mirror: always 5898 5899 # Whether we should suspend inactive tabs or not 5900 - name: dom.suspend_inactive.enabled 5901 type: bool 5902 value: @IS_ANDROID@ 5903 mirror: always 5904 5905 # The following three prefs control the maximum script run time before slow 5906 # script warning. 5907 5908 # Controls the time that a content script can run before showing a 5909 # notification. 5910 - name: dom.max_script_run_time 5911 type: int32_t 5912 value: 10 5913 mirror: always 5914 5915 # Controls whether we want to wait for user input before surfacing notifying 5916 # the parent process about a long-running script. 5917 - name: dom.max_script_run_time.require_critical_input 5918 type: bool 5919 # On desktop, we don't want to annoy the user with a notification if they're 5920 # not interacting with the browser. On Android however, we automatically 5921 # terminate long-running scripts, so we want to make sure we don't get in the 5922 # way of that by waiting for input. 5923 #if defined(MOZ_WIDGET_ANDROID) 5924 value: false 5925 #else 5926 value: true 5927 #endif 5928 mirror: always 5929 5930 # Controls if a content script will be aborted on child process shutdown. 5931 - name: dom.abort_script_on_child_shutdown 5932 type: bool 5933 value: true 5934 mirror: always 5935 5936 - name: dom.max_chrome_script_run_time 5937 type: int32_t 5938 value: 0 5939 mirror: always 5940 5941 - name: dom.max_ext_content_script_run_time 5942 type: int32_t 5943 value: 5 5944 mirror: always 5945 5946 # Let Resize Observer report the size of all fragments, and not just the 5947 # first one, as per CSSWG resolution: 5948 # https://github.com/w3c/csswg-drafts/issues/3673#issuecomment-467221565 5949 - name: dom.resize_observer.support_fragments 5950 type: bool 5951 value: false 5952 mirror: always 5953 5954 # Whether or not the `Origin-Agent-Cluster` HTTP header is enabled. 5955 - name: dom.origin_agent_cluster.enabled 5956 type: bool 5957 value: true 5958 mirror: always 5959 5960 # Whether or not agent clusters are origin-keyed by default, blocking the use of 5961 # `document.domain`. 5962 - name: dom.origin_agent_cluster.default 5963 type: bool 5964 value: false 5965 mirror: always 5966 5967 # Whether to make the document name getter follow the spec. 5968 - name: dom.document.name_getter_follow_spec.enabled 5969 type: bool 5970 value: true 5971 mirror: always 5972 5973 # Whether to block the shadowing of known document properties. 5974 - name: dom.document.name_getter_prevent_shadowing.enabled 5975 type: bool 5976 value: @IS_NIGHTLY_BUILD@ 5977 mirror: always 5978 5979 # Whether to enable about:blank async-load workaround for ckeditor. 5980 - name: dom.about-blank-ckeditor-hack.enabled 5981 type: bool 5982 value: true 5983 mirror: always 5984 5985 # Per-domain blocklist for the previous hack. 5986 - name: dom.about-blank-ckeditor-hack.disabled-domains 5987 type: String 5988 value: "" 5989 mirror: never 5990 5991 # Whether to include common ancestor when serializing HTML data for clipboard copy. 5992 - name: dom.serializer.includeCommonAncestor.enabled 5993 type: bool 5994 value: false 5995 mirror: always 5996 5997 #--------------------------------------------------------------------------- 5998 # Prefs starting with "editor" 5999 #--------------------------------------------------------------------------- 6000 6001 # Default background color of HTML editor. This is referred only when 6002 # "editor.use_custom_colors" is set to `true`. 6003 - name: editor.background_color 6004 type: String 6005 value: "#FFFFFF" 6006 mirror: never 6007 6008 # Delay to mask last input character in password fields. 6009 # If negative value, to use platform's default behavior. 6010 # If 0, no delay to mask password. 6011 # Otherwise, password fields unmask last input character(s) during specified 6012 # time (in milliseconds). 6013 - name: editor.password.mask_delay 6014 type: int32_t 6015 value: -1 6016 mirror: always 6017 6018 # Set to true when you test mask_delay of password editor. If this is set 6019 # to true, "MozLastInputMasked" is fired when last input characters are 6020 # masked by timeout. 6021 - name: editor.password.testing.mask_delay 6022 type: bool 6023 value: false 6024 mirror: always 6025 6026 # How line breakers are treated in single line editor: 6027 # * 0: Only remove the leading and trailing newlines. 6028 # * 1: Remove the first newline and all characters following it. 6029 # * 2: Replace newlines with spaces (default of Firefox). 6030 # * 3: Remove newlines from the string. 6031 # * 4: Replace newlines with commas (default of Thunderbird). 6032 # * 5: Collapse newlines and surrounding white space characters and 6033 # remove them from the string. 6034 # Other values are treated as 1. 6035 - name: editor.singleLine.pasteNewlines 6036 type: int32_t 6037 value: 2 6038 mirror: always 6039 6040 # Whether user pastes should be truncated. 6041 - name: editor.truncate_user_pastes 6042 type: bool 6043 value: true 6044 mirror: always 6045 6046 # When this is set to `true`, "editor.background_color" must be set, then, 6047 # the value is treated as default background color of the HTML editor. 6048 # If `false` and "browser.display.use_system_colors" is set to `true`, 6049 # "browser.display.background_color" is used instead. 6050 # Otherwise, no color is used as default background color. 6051 # This pref is for Thunderbird and SeaMonkey. 6052 - name: editor.use_custom_colors 6053 type: bool 6054 value: false 6055 mirror: always 6056 6057 # If this is set to `true`, CSS mode of style editor is enabled by default 6058 # unless it's a mail editor. 6059 # This pref is for Thunderbird and SeaMonkey. 6060 - name: editor.use_css 6061 type: bool 6062 value: false 6063 mirror: always 6064 6065 # General prefs for editor, indicating whether Gecko-specific editing UI is 6066 # enabled by default. Those UIs are not implemented by any other browsers. So, 6067 # only Firefox users can change some styles with them. This means that Firefox 6068 # users may get unexpected result of some web apps if they assume that users 6069 # cannot change such styles. 6070 - name: editor.resizing.enabled_by_default 6071 type: bool 6072 value: false 6073 mirror: always 6074 - name: editor.inline_table_editing.enabled_by_default 6075 type: bool 6076 value: false 6077 mirror: always 6078 - name: editor.positioning.enabled_by_default 6079 type: bool 6080 value: false 6081 mirror: always 6082 6083 # Controls if a double click word selection also deletes one adjacent whitespace 6084 # (if feasible). This mimics native behaviour on MacOS. 6085 - name: editor.word_select.delete_space_after_doubleclick_selection 6086 type: bool 6087 #ifdef XP_MACOSX 6088 value: true 6089 #else 6090 value: false 6091 #endif 6092 mirror: always 6093 6094 #--------------------------------------------------------------------------- 6095 # Prefs starting with "extensions." 6096 #--------------------------------------------------------------------------- 6097 6098 # Pref that enforces the use of web_accessible_resources for content loads. 6099 # This behavior is default for MV3. The pref controls this for MV2. 6100 - name: extensions.content_web_accessible.enabled 6101 type: bool 6102 value: false 6103 mirror: always 6104 6105 # Whether the InstallTrigger global should be enabled (kept for compatibility, 6106 # as it is still used in the wild as an improper UA detection method) 6107 - name: extensions.InstallTrigger.enabled 6108 type: bool 6109 value: true 6110 mirror: always 6111 6112 # Whether the background.service_worker in the extension manifest.json file 6113 # is enabled. 6114 # all.js locks the pref to false when MOZ_WEBEXT_WEBIDL_ENABLED is false. 6115 - name: extensions.backgroundServiceWorker.enabled 6116 type: bool 6117 value: false 6118 mirror: once 6119 6120 # Maximum number of misspelled words in a text. 6121 - name: extensions.spellcheck.inline.max-misspellings 6122 type: int32_t 6123 value: 500 6124 mirror: always 6125 6126 # Whether the extensions can register a service worker on its own. 6127 # NOTE: WebExtensions Framework ability to register a background service worker 6128 # is not controlled by this pref, only the extension code ability to use 6129 # navigator.serviceWorker.register is locked behind this pref. 6130 - name: extensions.serviceWorkerRegister.allowed 6131 type: RelaxedAtomicBool 6132 value: false 6133 mirror: always 6134 6135 # When true, content scripts of MV2 extensions can run in blob:-documents without 6136 # requiring match_origin_as_fallback to be set, to revert bug 1897113. 6137 # TODO bug 1899134: Remove this pref. 6138 - name: extensions.script_blob_without_match_origin_as_fallback 6139 type: bool 6140 value: false 6141 mirror: always 6142 6143 # Legacy behavior on filterResponse calls on intercepted sw script requests. 6144 - name: extensions.filterResponseServiceWorkerScript.disabled 6145 type: bool 6146 value: false 6147 mirror: always 6148 6149 # This pref governs whether we run webextensions in a separate process (true) 6150 # or the parent/main process (false) 6151 - name: extensions.webextensions.remote 6152 type: RelaxedAtomicBool 6153 value: false 6154 mirror: always 6155 6156 # Whether to expose the MockExtensionAPI test interface in tests. 6157 # The interface MockExtensionAPI doesn't represent a real extension API, 6158 # it is only available in test and does include a series of cases useful 6159 # to test the API request handling without tying the unit test to a 6160 # specific WebExtensions API. 6161 - name: extensions.webidl-api.expose_mock_interface 6162 type: RelaxedAtomicBool 6163 value: false 6164 mirror: always 6165 6166 # Whether to allow acccess to AddonManager to developer sites for testing 6167 # NOTE: We'd like this to be a "hidden" pref once StaticPrefs supports it. 6168 - name: extensions.webapi.testing 6169 type: RelaxedAtomicBool 6170 value: false 6171 mirror: always 6172 6173 # Automation-only pref to allow AddonManager over insecure protocols. 6174 # NOTE: We'd like this to be a "hidden" pref once StaticPrefs supports it. 6175 - name: extensions.webapi.testing.http 6176 type: RelaxedAtomicBool 6177 value: false 6178 mirror: always 6179 6180 # Whether to expose the AddonManager web API. 6181 - name: extensions.webapi.enabled 6182 type: RelaxedAtomicBool 6183 value: @IS_NOT_ANDROID@ 6184 mirror: always 6185 6186 #--------------------------------------------------------------------------- 6187 # Prefs starting with "fission." 6188 #--------------------------------------------------------------------------- 6189 6190 # Whether to enable Fission in new windows by default. 6191 # IMPORTANT: This preference should *never* be checked directly, since any 6192 # session can contain a mix of Fission and non-Fission windows. Instead, 6193 # callers should check whether the relevant nsILoadContext has the 6194 # `useRemoteSubframes` flag set. 6195 # Callers which cannot use `useRemoteSubframes` must use 6196 # `Services.appinfo.fissionAutostart` or `mozilla::FissionAutostart()` to check 6197 # whether fission is enabled by default. 6198 - name: fission.autostart 6199 type: bool 6200 value: true 6201 mirror: never 6202 6203 # Disable storing the session history in the parent process, and accessing it 6204 # over IPC from the child processes. 6205 # WARNING: Until the test harness can understand ship-pref default values, this pref’s 6206 # default must be synchronized with the values set in testing/mochitest/runtests.py and in 6207 # testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/firefox_android.py. 6208 # Changing the default here without updating the test harnesses will cause mismatches 6209 # in automation. 6210 - name: fission.disableSessionHistoryInParent 6211 type: bool 6212 value: false 6213 mirror: once 6214 do_not_use_directly: true 6215 6216 # If session history is stored in the parent process, enable bfcache for it. 6217 - name: fission.bfcacheInParent 6218 type: bool 6219 value: true 6220 mirror: always 6221 do_not_use_directly: true 6222 6223 # Allow renaming of processes from Private Windows to the eTLD+1 on nightly 6224 # Setting this pref creates a privacy leak, but helps greatly with 6225 # debugging. 6226 - name: fission.processPrivateWindowSiteNames 6227 type: bool 6228 value: false 6229 mirror: always 6230 6231 # Allow renaming of process names to the eTLD+1 on all versions, NOT 6232 # including processes from Private Windows 6233 # Setting this pref creates a privacy leak, but helps greatly with 6234 # debugging 6235 - name: fission.processSiteNames 6236 type: bool 6237 value: false 6238 mirror: always 6239 6240 # Allow showing of current profile along with process names, NOT 6241 # including processes from Private Windows 6242 # Setting this pref creates a privacy leak, but helps greatly with 6243 # debugging 6244 - name: fission.processProfileName 6245 type: bool 6246 value: false 6247 mirror: always 6248 6249 # The strategy used to control how sites are isolated into separate processes 6250 # when Fisison is enabled. This pref has no effect if Fission is disabled. 6251 # See the `WebContentIsolationStrategy` enum in `ProcessIsolation.cpp`. 6252 # On Android, this is currently overridden: for Fenix - via nimbus.fml.yml, 6253 # and for other Andoid Components consumers value 2 is hardcoded 6254 # in the default settings in mozilla.components.concept.engine.Settings 6255 - name: fission.webContentIsolationStrategy 6256 type: uint32_t 6257 value: 1 6258 mirror: always 6259 6260 # Time in seconds before a site loaded with the Cross-Origin-Opener-Policy 6261 # header is no longer considered high-value and isolated in the "highValueCOOP" 6262 # configuration. 6263 - name: fission.highValue.coop.expiration 6264 type: uint32_t 6265 value: 2592000 # 30 days (in seconds) 6266 mirror: always 6267 6268 # Time in seconds before a site are considered high-value by the login detection 6269 # service is no longer considered high-value and isolated in the "highValueHasSavedLogin" 6270 # or "highValueIsLoggedIn" configuration. 6271 - name: fission.highValue.login.expiration 6272 type: uint32_t 6273 value: 2592000 # 30 days (in seconds) 6274 mirror: always 6275 6276 # If true, capture login attemp, and add "highValueIsLoggedIn" permission to 6277 # the permission manager no matter whether fission is enabled and 6278 # WebContentIsolationStrateg is set to IsolateHighvalue. 6279 - name: fission.highValue.login.monitor 6280 type: bool 6281 value: @IS_ANDROID@ 6282 mirror: always 6283 6284 # If true, do not send blocklisted preference values to the subprocess 6285 - name: fission.omitBlocklistedPrefsInSubprocesses 6286 type: RelaxedAtomicBool 6287 value: true 6288 mirror: always 6289 6290 # If true, crash when a blocklisted preference is accessed in a subprocess 6291 - name: fission.enforceBlocklistedPrefsInSubprocesses 6292 type: RelaxedAtomicBool 6293 #ifdef DEBUG 6294 value: true 6295 #else 6296 value: false 6297 #endif 6298 mirror: always 6299 6300 #--------------------------------------------------------------------------- 6301 # Prefs starting with "font." 6302 #--------------------------------------------------------------------------- 6303 6304 # A value greater than zero enables font size inflation for 6305 # pan-and-zoom UIs, so that the fonts in a block are at least the size 6306 # that, if a block's width is scaled to match the device's width, the 6307 # fonts in the block are big enough that at most the pref value ems of 6308 # text fit in *the width of the device*. 6309 # 6310 # When both this pref and the next are set, the larger inflation is used. 6311 - name: font.size.inflation.emPerLine 6312 type: uint32_t 6313 value: 0 6314 mirror: always 6315 6316 # A value greater than zero enables font size inflation for 6317 # pan-and-zoom UIs, so that if a block's width is scaled to match the 6318 # device's width, the fonts in a block are at least the given font size. 6319 # The value given is in twips, i.e., 1/20 of a point, or 1/1440 of an inch. 6320 # 6321 # When both this pref and the previous are set, the larger inflation is used. 6322 - name: font.size.inflation.minTwips 6323 type: uint32_t 6324 value: 0 6325 mirror: always 6326 6327 # In products with multi-mode pan-and-zoom and non-pan-and-zoom UIs, 6328 # this pref forces font inflation to always be enabled in all modes. 6329 # That is, any heuristics used to detect pan-and-zoom 6330 # vs. non-pan-and-zoom modes are disabled and all content is treated 6331 # as pan-and-zoom mode wrt font inflation. 6332 # 6333 # This pref has no effect if font inflation is not enabled through 6334 # either of the prefs above. It has no meaning in single-mode UIs. 6335 - name: font.size.inflation.forceEnabled 6336 type: bool 6337 value: false 6338 mirror: always 6339 6340 # Defines the font size inflation mapping intercept parameter. 6341 # 6342 # Font size inflation computes a minimum font size, m, based on 6343 # other preferences (see font.size.inflation.minTwips and 6344 # font.size.inflation.emPerLine, above) and the width of the 6345 # frame in which the text resides. Using this minimum, a specified 6346 # font size, s, is mapped to an inflated font size, i, using an 6347 # equation that varies depending on the value of the font size 6348 # inflation mapping intercept parameter, P. 6349 # 6350 # If the intercept parameter is negative, then the following mapping 6351 # function is used: 6352 # 6353 # i = m + s 6354 # 6355 # If the intercept parameter is non-negative, then the mapping function 6356 # is a function such that its graph meets the graph of i = s at the 6357 # point where both i and s are (1 + P/2) * m for values of s that are 6358 # large enough. This means that when s=0, i is always equal to m. 6359 - name: font.size.inflation.mappingIntercept 6360 type: int32_t 6361 value: 1 6362 mirror: always 6363 6364 # Since the goal of font size inflation is to avoid having to 6365 # repeatedly scroll side to side to read a block of text, and there are 6366 # a number of page layouts where a relatively small chunk of text is 6367 # better off not being inflated according to the same algorithm we use 6368 # for larger chunks of text, we want a threshold for an amount of text 6369 # that triggers font size inflation. This preference controls that 6370 # threshold. 6371 # 6372 # It controls the threshold used within an *approximation* of the 6373 # number of lines of text we use. In particular, if we assume that 6374 # each character (collapsing collapsible whitespace) has a width the 6375 # same as the em-size of the font (when, normally, it's actually quite 6376 # a bit smaller on average), this preference gives the percentage of a 6377 # number of lines of text we'd need to trigger inflation. This means 6378 # that a percentage of 100 means that we'd need a number of characters 6379 # (we know the font size and the width) equivalent to one line of 6380 # square text (which is actually a lot less than a real line of text). 6381 # 6382 # A value of 0 means there's no character length threshold. 6383 - name: font.size.inflation.lineThreshold 6384 type: uint32_t 6385 value: 400 6386 mirror: always 6387 6388 # This controls the percentage that fonts will be inflated, if font 6389 # size inflation is enabled. Essentially, if we have a specified font 6390 # size, s, and an inflated font size, i, this specifies that the ratio 6391 # i/s * 100 should never exceed the value of this preference. In order 6392 # for this preference to have any effect, its value must be greater 6393 # than 100, since font inflation can never decrease the ratio i/s. 6394 - name: font.size.inflation.maxRatio 6395 type: uint32_t 6396 value: 0 6397 mirror: always 6398 6399 #--------------------------------------------------------------------------- 6400 # Prefs starting with "full-screen-api." 6401 #--------------------------------------------------------------------------- 6402 6403 - name: full-screen-api.enabled 6404 type: bool 6405 value: true 6406 mirror: always 6407 6408 - name: full-screen-api.allow-trusted-requests-only 6409 type: bool 6410 value: true 6411 mirror: always 6412 6413 - name: full-screen-api.mouse-event-allow-left-button-only 6414 type: bool 6415 value: true 6416 mirror: always 6417 6418 - name: full-screen-api.exit-on.windowOpen 6419 type: bool 6420 value: true 6421 mirror: always 6422 6423 - name: full-screen-api.exit-on.windowRaise 6424 type: bool 6425 value: true 6426 mirror: always 6427 6428 - name: full-screen-api.pointer-lock.enabled 6429 type: bool 6430 value: true 6431 mirror: always 6432 6433 # whether to prevent the top level widget from going fullscreen 6434 - name: full-screen-api.ignore-widgets 6435 type: bool 6436 value: false 6437 mirror: always 6438 6439 #--------------------------------------------------------------------------- 6440 # Prefs starting with "fuzzing.". It's important that these can only be 6441 # checked in fuzzing builds (when FUZZING is defined), otherwise you could 6442 # enable the fuzzing stuff on your regular build which would be bad :) 6443 #--------------------------------------------------------------------------- 6444 6445 #ifdef FUZZING 6446 - name: fuzzing.enabled 6447 type: bool 6448 #ifdef FUZZING_SNAPSHOT 6449 value: true 6450 #else 6451 value: false 6452 #endif 6453 mirror: always 6454 6455 - name: fuzzing.necko.enabled 6456 type: RelaxedAtomicBool 6457 value: false 6458 mirror: always 6459 6460 - name: fuzzing.necko.http3 6461 type: RelaxedAtomicBool 6462 value: false 6463 mirror: always 6464 rust: true 6465 6466 #ifdef FUZZING_SNAPSHOT 6467 - name: fuzzing.snapshot.enabled 6468 type: RelaxedAtomicBool 6469 value: true 6470 mirror: always 6471 #endif 6472 6473 # This configures a virtual authenticator for WebAuthn. The value encodes the 6474 # arguments to the WebDriver "Add Virtual Authenticator" extension command. 6475 # Bits 0, 1, 2, and 3 encode "is_user_verified", "is_user_consenting", 6476 # "has_user_verification", and "has_resident_key" in that order. Bit 5 encodes 6477 # the transport, either "usb" (0) or "internal" (1). Bits 6 and 7 encode the 6478 # protocol, either "ctap1/u2f" (1), "ctap2" (2), or "ctap2_1" (3). Note that 6479 # the valid protocol values are non-zero---an authenticator will not be 6480 # configured if this pref is set to zero. Changing this pref requires 6481 # a restart. 6482 - name: fuzzing.webauthn.authenticator_config 6483 type: RelaxedAtomicUint32 6484 value: 0 6485 mirror: always 6486 rust: true 6487 #endif 6488 6489 #--------------------------------------------------------------------------- 6490 # Prefs starting with "general." 6491 #--------------------------------------------------------------------------- 6492 6493 - name: general.aboutConfig.enable 6494 type: bool 6495 value: true 6496 mirror: always 6497 6498 # Limits the depth of recursive conversion of data when opening 6499 # a content to view. This is mostly intended to prevent infinite 6500 # loops with faulty converters involved. 6501 - name: general.document_open_conversion_depth_limit 6502 type: uint32_t 6503 value: 20 6504 mirror: always 6505 6506 - name: general.smoothScroll 6507 type: RelaxedAtomicBool 6508 value: true 6509 mirror: always 6510 6511 # This pref and general.smoothScroll.stopDecelerationWeighting determine 6512 # the timing function. 6513 - name: general.smoothScroll.currentVelocityWeighting 6514 type: AtomicFloat 6515 value: 0.25 6516 mirror: always 6517 6518 # To connect consecutive scroll events into a continuous flow, the animation's 6519 # duration should be longer than scroll events intervals (or else the scroll 6520 # will stop before the next event arrives - we're guessing the next interval 6521 # by averaging recent intervals). 6522 # This defines how much longer the duration is compared to the events 6523 # interval (percentage). 6524 - name: general.smoothScroll.durationToIntervalRatio 6525 type: RelaxedAtomicInt32 6526 value: 200 6527 mirror: always 6528 6529 - name: general.smoothScroll.lines 6530 type: RelaxedAtomicBool 6531 value: true 6532 mirror: always 6533 6534 - name: general.smoothScroll.lines.durationMaxMS 6535 type: RelaxedAtomicInt32 6536 value: 150 6537 mirror: always 6538 6539 - name: general.smoothScroll.lines.durationMinMS 6540 type: RelaxedAtomicInt32 6541 value: 150 6542 mirror: always 6543 6544 - name: general.smoothScroll.mouseWheel 6545 type: RelaxedAtomicBool 6546 value: true 6547 mirror: always 6548 6549 - name: general.smoothScroll.mouseWheel.durationMaxMS 6550 type: RelaxedAtomicInt32 6551 value: 200 6552 mirror: always 6553 6554 - name: general.smoothScroll.mouseWheel.durationMinMS 6555 type: RelaxedAtomicInt32 6556 value: 50 6557 mirror: always 6558 6559 - name: general.smoothScroll.other 6560 type: RelaxedAtomicBool 6561 value: true 6562 mirror: always 6563 6564 - name: general.smoothScroll.other.durationMaxMS 6565 type: RelaxedAtomicInt32 6566 value: 150 6567 mirror: always 6568 6569 - name: general.smoothScroll.other.durationMinMS 6570 type: RelaxedAtomicInt32 6571 value: 150 6572 mirror: always 6573 6574 - name: general.smoothScroll.pages 6575 type: RelaxedAtomicBool 6576 value: true 6577 mirror: always 6578 6579 - name: general.smoothScroll.pages.durationMaxMS 6580 type: RelaxedAtomicInt32 6581 value: 150 6582 mirror: always 6583 6584 - name: general.smoothScroll.pages.durationMinMS 6585 type: RelaxedAtomicInt32 6586 value: 150 6587 mirror: always 6588 6589 - name: general.smoothScroll.scrollbars 6590 type: RelaxedAtomicBool 6591 value: true 6592 mirror: always 6593 6594 - name: general.smoothScroll.scrollbars.durationMaxMS 6595 type: RelaxedAtomicInt32 6596 value: 150 6597 mirror: always 6598 6599 - name: general.smoothScroll.scrollbars.durationMinMS 6600 type: RelaxedAtomicInt32 6601 value: 150 6602 mirror: always 6603 6604 - name: general.smoothScroll.pixels 6605 type: RelaxedAtomicBool 6606 value: true 6607 mirror: always 6608 6609 - name: general.smoothScroll.pixels.durationMaxMS 6610 type: RelaxedAtomicInt32 6611 value: 150 6612 mirror: always 6613 6614 - name: general.smoothScroll.pixels.durationMinMS 6615 type: RelaxedAtomicInt32 6616 value: 150 6617 mirror: always 6618 6619 # This pref and general.smoothScroll.currentVelocityWeighting determine 6620 # the timing function. 6621 - name: general.smoothScroll.stopDecelerationWeighting 6622 type: AtomicFloat 6623 value: 0.4f 6624 mirror: always 6625 6626 # Alternative smooth scroll physics. ("MSD" = Mass-Spring-Damper) 6627 - name: general.smoothScroll.msdPhysics.enabled 6628 type: RelaxedAtomicBool 6629 value: @IS_NIGHTLY_BUILD@ 6630 mirror: always 6631 6632 - name: general.smoothScroll.msdPhysics.continuousMotionMaxDeltaMS 6633 type: RelaxedAtomicInt32 6634 value: 120 6635 mirror: always 6636 6637 - name: general.smoothScroll.msdPhysics.motionBeginSpringConstant 6638 type: RelaxedAtomicInt32 6639 value: 1250 6640 mirror: always 6641 6642 - name: general.smoothScroll.msdPhysics.slowdownMinDeltaMS 6643 type: RelaxedAtomicInt32 6644 value: 12 6645 mirror: always 6646 6647 - name: general.smoothScroll.msdPhysics.slowdownMinDeltaRatio 6648 type: AtomicFloat 6649 value: 1.3f 6650 mirror: always 6651 6652 - name: general.smoothScroll.msdPhysics.slowdownSpringConstant 6653 type: RelaxedAtomicInt32 6654 value: 2000 6655 mirror: always 6656 6657 - name: general.smoothScroll.msdPhysics.regularSpringConstant 6658 type: RelaxedAtomicInt32 6659 value: 1000 6660 mirror: always 6661 6662 #--------------------------------------------------------------------------- 6663 # Prefs starting with "geo." 6664 #--------------------------------------------------------------------------- 6665 6666 # Is support for Navigator.geolocation enabled? 6667 - name: geo.enabled 6668 type: bool 6669 value: true 6670 mirror: always 6671 6672 # Time, in milliseconds, to wait for the location provider to spin up. 6673 - name: geo.timeout 6674 type: int32_t 6675 value: 6000 6676 mirror: always 6677 6678 #ifdef MOZ_ENABLE_DBUS 6679 # Whether to use Geoclue location provider (if available on the system). 6680 - name: geo.provider.use_geoclue 6681 type: bool 6682 value: true 6683 mirror: always 6684 6685 # Whether to always provide high location accuracy, even if site 6686 # doesn't actually request this level of accuracy. 6687 # Almost no site correctly requests high accuracy so force it by default 6688 # for compatibility with other geolocation providers. 6689 - name: geo.provider.geoclue.always_high_accuracy 6690 type: bool 6691 value: true 6692 mirror: always 6693 6694 # Time in milliseconds after which geoclue will try to fallback to MLS if no 6695 # location is received after successful start. 6696 - name: geo.provider.geoclue.mls_fallback_timeout_ms 6697 type: uint32_t 6698 value: 5000 6699 mirror: always 6700 #endif 6701 6702 # If true, open system preferences for the user when geolocation is requested 6703 # by the user but OS geolocation permission is not available. 6704 - name: geo.prompt.open_system_prefs 6705 type: bool 6706 value: true 6707 mirror: always 6708 6709 #--------------------------------------------------------------------------- 6710 # Prefs starting with "gfx." 6711 #--------------------------------------------------------------------------- 6712 6713 - name: gfx.apitrace.enabled 6714 type: bool 6715 value: false 6716 mirror: once 6717 6718 - name: gfx.blithelper.precision 6719 type: RelaxedAtomicUint32 6720 value: 2 # { 0: lowp, 1: mediump, 2: highp } 6721 mirror: always 6722 6723 - name: gfx.blithelper.lut-size.rgb.b 6724 type: RelaxedAtomicUint32 6725 value: 15 6726 mirror: always 6727 - name: gfx.blithelper.lut-size.rgb.g 6728 type: RelaxedAtomicUint32 6729 value: 31 6730 mirror: always 6731 - name: gfx.blithelper.lut-size.rgb.r 6732 type: RelaxedAtomicUint32 6733 value: 31 6734 mirror: always 6735 6736 - name: gfx.blithelper.lut-size.ycbcr.cb 6737 type: RelaxedAtomicUint32 6738 value: 15 6739 mirror: always 6740 - name: gfx.blithelper.lut-size.ycbcr.cr 6741 type: RelaxedAtomicUint32 6742 value: 31 6743 mirror: always 6744 - name: gfx.blithelper.lut-size.ycbcr.y 6745 type: RelaxedAtomicUint32 6746 value: 31 6747 mirror: always 6748 6749 # Nb: we ignore this pref on release and beta. 6750 - name: gfx.blocklist.all 6751 type: int32_t 6752 value: 0 6753 mirror: once 6754 6755 #if defined(XP_DARWIN) 6756 - name: gfx.cairo_quartz_cg_layer.enabled 6757 type: bool 6758 value: true 6759 mirror: always 6760 #endif 6761 6762 - name: gfx.canvas.accelerated 6763 type: bool 6764 #if defined(XP_MACOSX) || defined(XP_LINUX) && !defined(ANDROID) 6765 value: true 6766 #elif defined(MOZ_WIDGET_ANDROID) 6767 value: true 6768 #elif defined(XP_WIN) 6769 value: true 6770 #else 6771 value: false 6772 #endif 6773 mirror: always 6774 6775 - name: gfx.canvas.accelerated.allow-in-parent 6776 type: bool 6777 #if defined(XP_WIN) || defined(ANDROID) 6778 value: false 6779 #else 6780 value: true 6781 #endif 6782 mirror: once 6783 6784 # Whether to attempt to enable Accelerated Canvas2D regardless of blocklisting. 6785 - name: gfx.canvas.accelerated.force-enabled 6786 type: bool 6787 value: false 6788 mirror: always 6789 6790 - name: gfx.canvas.accelerated.async-present 6791 type: RelaxedAtomicBool 6792 value: true 6793 mirror: always 6794 6795 - name: gfx.canvas.accelerated.cache-items 6796 type: RelaxedAtomicUint32 6797 value: 8192 6798 mirror: always 6799 6800 - name: gfx.canvas.accelerated.cache-size 6801 type: RelaxedAtomicUint32 6802 value: 256 6803 mirror: always 6804 6805 - name: gfx.canvas.accelerated.reserve-empty-cache 6806 type: RelaxedAtomicUint32 6807 value: 36 6808 mirror: always 6809 6810 - name: gfx.canvas.accelerated.max-draw-target-count 6811 type: RelaxedAtomicUint32 6812 value: 200 6813 mirror: always 6814 6815 - name: gfx.canvas.accelerated.max-size 6816 type: RelaxedAtomicInt32 6817 value: 8192 6818 mirror: always 6819 6820 - name: gfx.canvas.accelerated.min-size 6821 type: RelaxedAtomicInt32 6822 value: 128 6823 mirror: always 6824 6825 - name: gfx.canvas.accelerated.max-data-shmems 6826 type: RelaxedAtomicUint32 6827 value: 400 6828 mirror: always 6829 6830 - name: gfx.canvas.accelerated.max-export-surfaces 6831 type: RelaxedAtomicUint32 6832 value: 100 6833 mirror: always 6834 6835 - name: gfx.canvas.accelerated.max-export-surface-memory 6836 type: RelaxedAtomicUint32 6837 value: 512 * 1024 * 1024 6838 mirror: always 6839 6840 - name: gfx.canvas.accelerated.max-snapshot-pbo-memory 6841 type: RelaxedAtomicUint32 6842 value: 64 * 1024 * 1024 6843 mirror: always 6844 6845 - name: gfx.canvas.accelerated.max-surface-size 6846 type: RelaxedAtomicUint32 6847 value: 5280 6848 mirror: always 6849 6850 - name: gfx.canvas.accelerated.shared-page-size 6851 type: RelaxedAtomicUint32 6852 value: 1024 6853 mirror: always 6854 6855 # The minimum number of frames before acting on performance profile info 6856 - name: gfx.canvas.accelerated.profile-frames 6857 type: RelaxedAtomicUint32 6858 value: 10 6859 mirror: always 6860 6861 # The ratio of failed frames to total frames when to fall back from acceleration 6862 - name: gfx.canvas.accelerated.profile-fallback-ratio 6863 type: AtomicFloat 6864 value: 0.3 6865 mirror: always 6866 6867 # The ratio of cache misses at which to fail a profile frame 6868 - name: gfx.canvas.accelerated.profile-cache-miss-ratio 6869 type: AtomicFloat 6870 value: 0.66 6871 mirror: always 6872 6873 # The maximum size of the GPU path cache in MB. 6874 - name: gfx.canvas.accelerated.gpu-path-size 6875 type: RelaxedAtomicUint32 6876 value: 4 6877 mirror: always 6878 6879 # The maximum allowed complexity of a GPU path. 6880 - name: gfx.canvas.accelerated.gpu-path-complexity 6881 type: RelaxedAtomicUint32 6882 value: 4000 6883 mirror: always 6884 6885 # Whether to accelerate stroked paths by converting them to fill paths. 6886 - name: gfx.canvas.accelerated.stroke-to-fill-path 6887 type: RelaxedAtomicBool 6888 value: false 6889 mirror: always 6890 6891 # Whether to use aa-stroke to accelerate stroked paths. 6892 - name: gfx.canvas.accelerated.aa-stroke.enabled 6893 type: RelaxedAtomicBool 6894 value: true 6895 mirror: always 6896 6897 # Draws an indicator if acceleration is used. 6898 - name: gfx.canvas.accelerated.debug 6899 type: RelaxedAtomicBool 6900 value: false 6901 mirror: always 6902 6903 # 0x7fff is the maximum supported xlib surface size and is more than enough for canvases. 6904 - name: gfx.canvas.max-size 6905 type: RelaxedAtomicInt32 6906 value: 0x7fff 6907 mirror: always 6908 6909 # Whether OffscreenCanvas can use remote canvas 6910 - name: gfx.canvas.remote.allow-offscreen 6911 type: RelaxedAtomicBool 6912 value: true 6913 mirror: always 6914 6915 # Default size of the shmem buffers used for recording 6916 - name: gfx.canvas.remote.default-buffer-size 6917 type: RelaxedAtomicUint32 6918 value: 32 * 1024 6919 mirror: always 6920 6921 # Maximum number of Default size shmem buffers to use 6922 - name: gfx.canvas.remote.max_default_buffers 6923 type: RelaxedAtomicUint32 6924 value: 256 6925 mirror: always 6926 6927 # How many times to spin before waiting in remote canvas 6928 - name: gfx.canvas.remote.max-spin-count 6929 type: RelaxedAtomicUint32 6930 value: 500 6931 mirror: always 6932 6933 # How long to wait in milliseconds for the next event while in a transaction 6934 - name: gfx.canvas.remote.event-timeout-ms 6935 type: RelaxedAtomicUint32 6936 value: 2 6937 mirror: always 6938 6939 # How many times we have a spare buffer before we drop one 6940 - name: gfx.canvas.remote.drop-buffer-limit 6941 type: RelaxedAtomicUint32 6942 value: 100 6943 mirror: always 6944 6945 # Delay in milliseconds to drop buffers when there have been no non-empty transactions 6946 - name: gfx.canvas.remote.drop-buffer-milliseconds 6947 type: RelaxedAtomicUint32 6948 value: 10000 6949 mirror: always 6950 6951 - name: gfx.canvas.remote.use-draw-image-fast-path 6952 type: RelaxedAtomicBool 6953 value: true 6954 mirror: always 6955 6956 #ifdef XP_WIN 6957 - name: gfx.canvas.remote.use-draw-image-fast-path-d3d 6958 type: RelaxedAtomicBool 6959 value: true 6960 mirror: always 6961 #endif 6962 6963 - name: gfx.canvas.remote.recycle-used-data-surface 6964 type: RelaxedAtomicBool 6965 value: true 6966 mirror: always 6967 6968 - name: gfx.canvas.remote.use-canvas-translator-event 6969 type: bool 6970 value: true 6971 mirror: once 6972 6973 - name: gfx.color_management.display_profile 6974 type: DataMutexString 6975 value: "" 6976 mirror: always # But be warned: We cache the result. 6977 6978 - name: gfx.color_management.force_srgb 6979 type: RelaxedAtomicBool 6980 value: false 6981 mirror: always 6982 6983 - name: gfx.color_management.native_srgb 6984 type: RelaxedAtomicBool 6985 #if defined(XP_MACOSX) 6986 value: true 6987 #else 6988 value: false 6989 #endif 6990 mirror: always 6991 6992 - name: gfx.color_management.enablev4 6993 type: RelaxedAtomicBool 6994 value: true 6995 mirror: always 6996 6997 # 0 = Off, 1 = Full, 2 = Tagged Images Only. 6998 # See CMSMode in gfx/thebes/gfxPlatform.h. 6999 - name: gfx.color_management.mode 7000 type: RelaxedAtomicInt32 7001 value: 2 7002 mirror: always 7003 7004 # The zero default here should match QCMS_INTENT_DEFAULT from qcms.h 7005 - name: gfx.color_management.rendering_intent 7006 type: RelaxedAtomicInt32 7007 value: 0 7008 mirror: always 7009 7010 - name: gfx.color_management.rec709_gamma_as_srgb 7011 type: RelaxedAtomicBool 7012 value: true # Tragic backwards compat. 7013 mirror: always 7014 7015 - name: gfx.color_management.rec2020_gamma_as_rec709 7016 type: RelaxedAtomicBool 7017 value: true # Match naive behavior, but hopefully we can stop soon! 7018 mirror: always 7019 7020 # Enable HDR video support. 7021 - name: gfx.color_management.hdr_video 7022 type: RelaxedAtomicBool 7023 #if defined(XP_MACOSX) || defined(MOZ_WAYLAND) 7024 value: true 7025 #elif defined(XP_WIN) 7026 value: @IS_EARLY_BETA_OR_EARLIER@ 7027 #else 7028 value: false 7029 #endif 7030 mirror: always 7031 7032 # Pending a better refactor we assume BT2020 colorspace is used with PQ transfer 7033 # function (HDR) rather than assuming it is BT709/BT1886 transfer function, 7034 # we've been making this assumption for a while on macOS HDR videos and it seems 7035 # to be the norm. We should refactor to get mTransferFunction to compositor code 7036 # instead... 7037 - name: gfx.color_management.hdr_video_assume_rec2020_uses_pq 7038 type: RelaxedAtomicBool 7039 value: true 7040 mirror: always 7041 7042 #ifdef XP_MACOSX 7043 # Whether GL contexts can be migrated to a different GPU (to match the one the 7044 # OS is using for composition). 7045 - name: gfx.compositor.gpu-migration 7046 type: RelaxedAtomicBool 7047 value: true 7048 mirror: always 7049 #endif 7050 7051 #ifdef XP_DARWIN 7052 - name: gfx.core-animation.tint-opaque 7053 type: RelaxedAtomicBool 7054 value: false 7055 mirror: always 7056 7057 # Create specialized video-only layers for video content in 7058 # fullscreen windows. Consistently works well on Apple Silicon, 7059 # some issues remain on Intel hardware. 7060 - name: gfx.core-animation.specialize-video 7061 type: RelaxedAtomicBool 7062 #if defined(MOZ_AARCH64) && defined(XP_MACOSX) 7063 value: true 7064 #else 7065 value: false 7066 #endif 7067 mirror: always 7068 #endif 7069 7070 #if defined(XP_DARWIN) && defined(NIGHTLY_BUILD) 7071 # Spoof the timing of the video sample instead of marking the untimed 7072 # sample to be displayed immediately. 7073 - name: gfx.core-animation.specialize-video.spoof-timing 7074 type: RelaxedAtomicBool 7075 value: false 7076 mirror: always 7077 7078 # Check that the sample has a color space and if it doesn't, log that 7079 # and supply the default color space from the main display. 7080 - name: gfx.core-animation.specialize-video.check-color-space 7081 type: RelaxedAtomicBool 7082 value: false 7083 mirror: always 7084 7085 # Log properties of the video surface, buffer, and format. 7086 - name: gfx.core-animation.specialize-video.log 7087 type: RelaxedAtomicBool 7088 value: false 7089 mirror: always 7090 #endif 7091 7092 #ifdef XP_DARWIN 7093 - name: gfx.core-animation.low-power-telemetry-frames 7094 type: int32_t 7095 value: 600 7096 mirror: once 7097 #endif 7098 7099 #if defined(MOZ_WIDGET_ANDROID) 7100 # Overrides the glClear color used when the surface origin is not (0, 0) 7101 # Used for drawing a border around the content. 7102 - name: gfx.compositor.override.clear-color.r 7103 type: AtomicFloat 7104 value: 0.0f 7105 mirror: always 7106 7107 - name: gfx.compositor.override.clear-color.g 7108 type: AtomicFloat 7109 value: 0.0f 7110 mirror: always 7111 7112 - name: gfx.compositor.override.clear-color.b 7113 type: AtomicFloat 7114 value: 0.0f 7115 mirror: always 7116 7117 - name: gfx.compositor.override.clear-color.a 7118 type: AtomicFloat 7119 value: 0.0f 7120 mirror: always 7121 #endif # defined(MOZ_WIDGET_ANDROID) 7122 7123 - name: gfx.content.always-paint 7124 type: RelaxedAtomicBool 7125 value: false 7126 mirror: always 7127 7128 # Size in megabytes 7129 - name: gfx.content.skia-font-cache-size 7130 type: int32_t 7131 value: 5 7132 mirror: once 7133 7134 - name: gfx.device-reset.limit 7135 type: int32_t 7136 value: 10 7137 mirror: once 7138 7139 - name: gfx.device-reset.threshold-ms 7140 type: int32_t 7141 value: -1 7142 mirror: once 7143 7144 #ifdef XP_WIN 7145 - name: gfx.direct3d11.reuse-decoder-device 7146 type: bool 7147 value: true 7148 mirror: once 7149 # Enable reuse decoder device even when it is blocked. 7150 - name: gfx.direct3d11.reuse-decoder-device-force-enabled 7151 type: bool 7152 value: false 7153 mirror: once 7154 7155 - name: gfx.direct3d11.allow-keyed-mutex 7156 type: RelaxedAtomicBool 7157 value: true 7158 mirror: always 7159 7160 - name: gfx.direct3d11.use-double-buffering 7161 type: RelaxedAtomicBool 7162 value: false 7163 mirror: always 7164 7165 - name: gfx.direct3d11.enable-debug-layer 7166 type: bool 7167 value: false 7168 mirror: once 7169 7170 - name: gfx.direct3d11.break-on-error 7171 type: bool 7172 value: false 7173 mirror: once 7174 7175 - name: gfx.direct3d11.sleep-on-create-device 7176 type: int32_t 7177 value: 0 7178 mirror: once 7179 #endif 7180 7181 # Rate by which the frame rate is divided. I.e. at a number higher than 1 we 7182 # will only refresh every <x> frames. 7183 - name: gfx.display.frame-rate-divisor 7184 type: RelaxedAtomicInt32 7185 value: 1 7186 mirror: always 7187 7188 - name: gfx.display.max-frame-rate 7189 type: RelaxedAtomicInt32 7190 value: 0 7191 mirror: always 7192 7193 # Whether to disable downloadable font cache so that behavior is consistently 7194 # the uncached load behavior across pages (useful for testing reflow problems) 7195 - name: gfx.downloadable_fonts.disable_cache 7196 type: RelaxedAtomicBool 7197 value: false 7198 mirror: always 7199 7200 # Whether to preserve color bitmap tables in fonts (bypassing OTS). 7201 # Currently these are supported only on platforms where we use Freetype 7202 # to render fonts (Linux/Gtk and Android). 7203 - name: gfx.downloadable_fonts.keep_color_bitmaps 7204 type: RelaxedAtomicBool 7205 value: false 7206 mirror: always 7207 7208 # Whether to validate OpenType variation tables in fonts. 7209 - name: gfx.downloadable_fonts.validate_variation_tables 7210 type: RelaxedAtomicBool 7211 value: true 7212 mirror: always 7213 7214 # Whether OTS validation should be applied to OpenType Layout (OTL) tables. 7215 # 0 - no validation 7216 # 1 - validate (logging errors to console) but drop table without rejecting 7217 # font resource if errors are found 7218 # 2 (or other) - validate, and reject font if errors are found 7219 - name: gfx.downloadable_fonts.otl_validation 7220 type: RelaxedAtomicUint32 7221 #if defined(RELEASE_OR_BETA) 7222 value: 0 7223 #else 7224 value: 1 7225 #endif 7226 mirror: always 7227 7228 - name: gfx.e10s.font-list.shared 7229 type: bool 7230 value: true 7231 mirror: once 7232 7233 # Do we fire a notification about missing fonts, so the front-end can decide 7234 # whether to try and do something about it (e.g. download additional fonts)? 7235 - name: gfx.missing_fonts.notify 7236 type: RelaxedAtomicBool 7237 value: false 7238 mirror: always 7239 7240 #if !defined(MOZ_WIDGET_ANDROID) 7241 - name: gfx.egl.prefer-gles.enabled 7242 type: bool 7243 #if defined(MOZ_WIDGET_GTK) && defined(MOZ_AARCH64) 7244 value: true 7245 #else 7246 value: false 7247 #endif 7248 mirror: once 7249 #endif 7250 7251 # [Windows] Whether registry FontSubstitutes entries are used unconditionally, 7252 # or only if the original font is not available. 7253 #if defined(XP_WIN) 7254 - name: gfx.windows-font-substitutes.always 7255 type: bool 7256 value: false 7257 mirror: once 7258 #endif 7259 7260 - name: gfx.font-list-omt.enabled 7261 type: bool 7262 #if defined(XP_MACOSX) 7263 value: true 7264 #else 7265 value: false 7266 #endif 7267 mirror: once 7268 7269 # [Android] OPPO, realme and OnePlus device seem to crash when using Font 7270 # Match API. We turn off this feature on these devices. Set true if you want to 7271 # turn on it at force. 7272 #if defined(MOZ_WIDGET_ANDROID) 7273 - name: gfx.font-list.use_font_match_api.force-enabled 7274 type: bool 7275 value: false 7276 mirror: once 7277 #endif 7278 7279 # Whether to load fonts (e.g. Twemoji Mozilla) bundled with the application: 7280 # -1 - Auto behavior based on OS version (currently, disables loading on 7281 # "low-memory" Android devices) 7282 # 0 - Skip loading any bundled fonts 7283 # 1 - Always load bundled fonts 7284 - name: gfx.bundled-fonts.activate 7285 type: int32_t 7286 value: -1 7287 mirror: once 7288 7289 - name: gfx.font_loader.delay 7290 type: RelaxedAtomicUint32 7291 #if defined(XP_WIN) 7292 value: 60000 7293 #else 7294 value: 8000 7295 #endif 7296 mirror: always 7297 7298 # Disable antialiasing of Ahem, for use in tests. 7299 - name: gfx.font_rendering.ahem_antialias_none 7300 type: RelaxedAtomicBool 7301 value: false 7302 mirror: always 7303 7304 #if defined(XP_DARWIN) 7305 # Set to true to revert from HarfBuzz AAT shaping to the old Core Text 7306 # backend. 7307 - name: gfx.font_rendering.coretext.enabled 7308 type: RelaxedAtomicBool 7309 value: false 7310 mirror: always 7311 #endif 7312 7313 - name: gfx.font_rendering.colr_v1.enabled 7314 type: RelaxedAtomicBool 7315 value: true 7316 mirror: always 7317 7318 - name: gfx.font_rendering.opentype_svg.enabled 7319 type: RelaxedAtomicBool 7320 value: true 7321 mirror: always 7322 rust: true 7323 7324 - name: gfx.font_rendering.fallback.async 7325 type: RelaxedAtomicBool 7326 value: true 7327 mirror: always 7328 7329 # whether to always search all font cmaps during system font fallback 7330 - name: gfx.font_rendering.fallback.always_use_cmaps 7331 type: RelaxedAtomicBool 7332 value: false 7333 mirror: always 7334 7335 # whether to do font fallback for codepoints with General Category = Unassigned 7336 - name: gfx.font_rendering.fallback.unassigned_chars 7337 type: RelaxedAtomicBool 7338 value: false 7339 mirror: always 7340 7341 #ifdef MOZ_WIDGET_GTK 7342 - name: gfx.font_rendering.fontconfig.max_generic_substitutions 7343 type: RelaxedAtomicUint32 7344 value: 3 7345 mirror: always 7346 #endif 7347 7348 #if defined(XP_WIN) 7349 # Whether the DirectWrite bold simulation should be used when a bold font-weight 7350 # is requested but no bold face available in the family. This renders poorly with 7351 # some third-party fonts, so by default we disable it for webfonts and allow it 7352 # only with locally-installed fonts. 7353 # Values: 7354 # 0 - never use DWrite bold simulation; always multi-strike instead 7355 # 1 - use DWrite bold for installed fonts, multi-strike for webfont resources 7356 # 2 - use DWrite bold for all fonts 7357 - name: gfx.font_rendering.directwrite.bold_simulation 7358 type: RelaxedAtomicUint32 7359 value: 1 7360 mirror: always 7361 #endif 7362 7363 - name: gfx.font_rendering.graphite.enabled 7364 type: RelaxedAtomicBool 7365 value: true 7366 mirror: always 7367 7368 # Cache shaped word results 7369 - name: gfx.font_rendering.wordcache.charlimit 7370 type: RelaxedAtomicUint32 7371 value: 32 7372 mirror: always 7373 7374 # Cache shaped word results 7375 - name: gfx.font_rendering.wordcache.maxentries 7376 type: RelaxedAtomicUint32 7377 value: 10000 7378 mirror: always 7379 7380 # The level of logging: 7381 # - 0: no logging; 7382 # - 1: adds errors; 7383 # - 2: adds warnings; 7384 # - 3 or 4: adds debug logging. 7385 # If you set the value to 4, you will also need to set the environment 7386 # variable MOZ_LOG to gfx:4. See mozilla/Logging.h for details. 7387 - name: gfx.logging.level 7388 type: RelaxedAtomicInt32 7389 value: mozilla::gfx::LOG_DEFAULT 7390 mirror: always 7391 include: mozilla/gfx/LoggingConstants.h 7392 7393 - name: gfx.logging.crash.length 7394 type: uint32_t 7395 value: 16 7396 mirror: once 7397 7398 # The maximums here are quite conservative, we can tighten them if problems show up. 7399 - name: gfx.logging.texture-usage.enabled 7400 type: bool 7401 value: false 7402 mirror: once 7403 7404 - name: gfx.logging.peak-texture-usage.enabled 7405 type: bool 7406 value: false 7407 mirror: once 7408 7409 - name: gfx.logging.slow-frames.enabled 7410 type: bool 7411 value: false 7412 mirror: once 7413 7414 # Use gfxPlatform::MaxAllocSize instead of the pref directly. 7415 - name: gfx.max-alloc-size 7416 type: int32_t 7417 value: (int32_t)0x7FFFFFFF 7418 mirror: once 7419 do_not_use_directly: true 7420 7421 # Use gfxPlatform::MaxTextureSize instead of the pref directly. 7422 - name: gfx.max-texture-size 7423 type: int32_t 7424 value: (int32_t)32767 7425 mirror: once 7426 do_not_use_directly: true 7427 7428 - name: gfx.offscreencanvas.shared-provider 7429 type: RelaxedAtomicBool 7430 value: true 7431 mirror: always 7432 7433 - name: gfx.offscreencanvas.snapshot-timeout-ms 7434 type: int32_t 7435 value: 10000 7436 mirror: always 7437 7438 - name: gfx.omta.background-color 7439 type: bool 7440 value: true 7441 mirror: always 7442 7443 - name: gfx.partialpresent.force 7444 type: RelaxedAtomicInt32 7445 value: 0 7446 mirror: always 7447 7448 # SwapInterval 7449 - name: gfx.swap-interval.glx 7450 type: RelaxedAtomicBool 7451 value: true 7452 mirror: always 7453 7454 - name: gfx.swap-interval.egl 7455 type: RelaxedAtomicBool 7456 mirror: always 7457 #ifdef MOZ_WIDGET_ANDROID 7458 value: true 7459 #else 7460 value: false 7461 #endif 7462 7463 # Enable dithering in DrawTargetSkia 7464 - name: gfx.skia.dithering 7465 type: bool 7466 value: false 7467 mirror: once 7468 7469 # Log severe performance warnings to the error console and profiles. 7470 # This should be use to quickly find which slow paths are used by test cases. 7471 - name: gfx.perf-warnings.enabled 7472 type: RelaxedAtomicBool 7473 value: false 7474 mirror: always 7475 7476 #ifdef MOZ_X11 7477 # Whether to force using GLX over EGL. 7478 - name: gfx.x11-egl.force-disabled 7479 type: bool 7480 value: false 7481 mirror: once 7482 7483 # Whether to force using EGL over GLX. 7484 - name: gfx.x11-egl.force-enabled 7485 type: bool 7486 value: false 7487 mirror: once 7488 7489 - name: gfx.x11.glx_sgi_video_sync 7490 type: bool 7491 value: false 7492 mirror: once 7493 #endif 7494 7495 - name: gfx.testing.device-fail 7496 type: RelaxedAtomicBool 7497 value: false 7498 mirror: always 7499 7500 - name: gfx.testing.device-reset 7501 type: RelaxedAtomicInt32 7502 value: 0 7503 mirror: always 7504 7505 # Meant to be used for tests only. If greater than 0 then we assert that the 7506 # number of active render textures increases by this amount or less. 7507 #ifdef DEBUG 7508 - name: gfx.testing.assert-render-textures-increase 7509 type: RelaxedAtomicInt32 7510 value: 0 7511 mirror: always 7512 #endif 7513 7514 - name: gfx.text.disable-aa 7515 type: bool 7516 value: false 7517 mirror: once 7518 7519 - name: gfx.text.subpixel-position.force-enabled 7520 type: bool 7521 value: false 7522 mirror: once 7523 7524 - name: gfx.text.subpixel-position.force-disabled 7525 type: bool 7526 value: false 7527 mirror: once 7528 7529 #ifdef XP_MACOSX 7530 - name: gfx.use-iosurface-textures 7531 type: bool 7532 value: false 7533 mirror: once 7534 #endif 7535 7536 #ifdef XP_WIN 7537 - name: gfx.use-mutex-on-present 7538 type: bool 7539 value: false 7540 mirror: once 7541 #endif 7542 7543 #ifdef MOZ_WIDGET_ANDROID 7544 # Use SurfaceTextures as preferred backend for TextureClient/Host. 7545 - name: gfx.use-surfacetexture-textures 7546 type: bool 7547 value: false 7548 mirror: once 7549 #endif 7550 7551 - name: gfx.vsync.compositor.unobserve-count 7552 type: int32_t 7553 value: 10 7554 mirror: once 7555 7556 - name: gfx.vsync.force-disable-waitforvblank 7557 type: RelaxedAtomicBool 7558 value: false 7559 mirror: always 7560 7561 - name: gfx.will-change.ignore-opacity 7562 type: RelaxedAtomicBool 7563 value: true 7564 mirror: always 7565 7566 # Should we override the blocklist to enable WebGPU? 7567 - name: gfx.webgpu.ignore-blocklist 7568 type: bool 7569 value: false 7570 mirror: once 7571 7572 # Whether to use the WebRender hardware backend 7573 - name: gfx.webrender.all 7574 type: bool 7575 value: false 7576 mirror: once 7577 7578 #ifdef XP_WIN 7579 - name: gfx.webrender.force-angle 7580 type: bool 7581 value: true 7582 mirror: once 7583 #endif 7584 7585 # WebRender is not enabled when there is no GPU process on window when 7586 # WebRender uses ANGLE. It is for avoiding that WebGL and WebRender use ANGLE 7587 # at once. But there is a case that we want to enable WebRender for testing. 7588 #ifdef XP_WIN 7589 - name: gfx.webrender.enabled-no-gpu-process-with-angle-win 7590 type: bool 7591 value: true 7592 mirror: once 7593 #endif 7594 7595 - name: gfx.webrender.svg-filter-effects 7596 type: RelaxedAtomicBool 7597 value: true 7598 mirror: always 7599 7600 - name: gfx.webrender.svg-filter-effects.also-convert-css-filters 7601 type: RelaxedAtomicBool 7602 value: false 7603 mirror: always 7604 7605 - name: gfx.webrender.svg-filter-effects.also-use-for-docshell-fecolormatrix 7606 type: RelaxedAtomicBool 7607 value: false 7608 mirror: always 7609 7610 - name: gfx.webrender.svg-filter-effects.opacity 7611 type: RelaxedAtomicBool 7612 value: true 7613 mirror: always 7614 7615 - name: gfx.webrender.svg-filter-effects.toalpha 7616 type: RelaxedAtomicBool 7617 value: true 7618 mirror: always 7619 7620 - name: gfx.webrender.svg-filter-effects.feblend 7621 type: RelaxedAtomicBool 7622 value: true 7623 mirror: always 7624 7625 - name: gfx.webrender.svg-filter-effects.fecolormatrix 7626 type: RelaxedAtomicBool 7627 value: true 7628 mirror: always 7629 7630 - name: gfx.webrender.svg-filter-effects.fecomponenttransfer 7631 type: RelaxedAtomicBool 7632 value: true 7633 mirror: always 7634 7635 - name: gfx.webrender.svg-filter-effects.fecomposite 7636 type: RelaxedAtomicBool 7637 value: true 7638 mirror: always 7639 7640 - name: gfx.webrender.svg-filter-effects.feconvolvematrix 7641 type: RelaxedAtomicBool 7642 value: false 7643 mirror: always 7644 7645 - name: gfx.webrender.svg-filter-effects.fediffuselighting 7646 type: RelaxedAtomicBool 7647 value: false 7648 mirror: always 7649 7650 - name: gfx.webrender.svg-filter-effects.fedisplacementmap 7651 type: RelaxedAtomicBool 7652 value: false 7653 mirror: always 7654 7655 - name: gfx.webrender.svg-filter-effects.fedropshadow 7656 type: RelaxedAtomicBool 7657 value: true 7658 mirror: always 7659 7660 - name: gfx.webrender.svg-filter-effects.feflood 7661 type: RelaxedAtomicBool 7662 value: true 7663 mirror: always 7664 7665 - name: gfx.webrender.svg-filter-effects.fegaussianblur 7666 type: RelaxedAtomicBool 7667 value: true 7668 mirror: always 7669 7670 - name: gfx.webrender.svg-filter-effects.feimage 7671 type: RelaxedAtomicBool 7672 value: false 7673 mirror: always 7674 7675 - name: gfx.webrender.svg-filter-effects.femerge 7676 type: RelaxedAtomicBool 7677 value: true 7678 mirror: always 7679 7680 - name: gfx.webrender.svg-filter-effects.femorphology 7681 type: RelaxedAtomicBool 7682 value: false 7683 mirror: always 7684 7685 - name: gfx.webrender.svg-filter-effects.feoffset 7686 type: RelaxedAtomicBool 7687 value: true 7688 mirror: always 7689 7690 - name: gfx.webrender.svg-filter-effects.fespecularlighting 7691 type: RelaxedAtomicBool 7692 value: false 7693 mirror: always 7694 7695 - name: gfx.webrender.svg-filter-effects.fetile 7696 type: RelaxedAtomicBool 7697 value: false 7698 mirror: always 7699 7700 - name: gfx.webrender.svg-filter-effects.feturbulence 7701 type: RelaxedAtomicBool 7702 value: false 7703 mirror: always 7704 7705 - name: gfx.webrender.svg-images 7706 type: RelaxedAtomicBool 7707 value: true 7708 mirror: always 7709 7710 - name: gfx.webrender.svg-shapes 7711 type: RelaxedAtomicBool 7712 value: true 7713 mirror: always 7714 7715 - name: gfx.webrender.debug.blob.paint-flashing 7716 type: RelaxedAtomicBool 7717 value: false 7718 mirror: always 7719 7720 - name: gfx.webrender.debug.enable-capture 7721 type: bool 7722 #ifdef MOZ_WEBRENDER_DEBUGGER 7723 value: true 7724 #else 7725 value: false 7726 #endif 7727 mirror: once 7728 7729 - name: gfx.webrender.debug.dl.dump-parent 7730 type: RelaxedAtomicBool 7731 value: false 7732 mirror: always 7733 7734 - name: gfx.webrender.debug.dl.dump-content 7735 type: RelaxedAtomicBool 7736 value: false 7737 mirror: always 7738 7739 - name: gfx.webrender.debug.dl.dump-content-serialized 7740 type: RelaxedAtomicBool 7741 value: false 7742 mirror: always 7743 7744 - name: gfx.webrender.debug.highlight-backdrop-filters 7745 type: RelaxedAtomicBool 7746 value: false 7747 mirror: always 7748 7749 # When true, we output warning messages when rejecting surface promotion 7750 # when it has been requested. This is important for color correctness of 7751 # wide color videos, as well as for GPU performance for all videos. 7752 - name: gfx.webrender.debug.surface-promotion-logging 7753 type: RelaxedAtomicBool 7754 value: false 7755 mirror: always 7756 7757 # When true, missing stacking context snapshots will crash the GPU or Parent 7758 # process. 7759 - name: gfx.webrender.debug.missing-snapshot-panic 7760 type: RelaxedAtomicBool 7761 value: false 7762 mirror: always 7763 7764 # When true, missing stacking context snapshots will render as an opaque 7765 # pink image. 7766 - name: gfx.webrender.debug.missing-snapshot-pink 7767 type: RelaxedAtomicBool 7768 value: false 7769 mirror: always 7770 7771 #ifdef MOZ_WIDGET_GTK 7772 - name: gfx.webrender.reject-software-driver 7773 type: bool 7774 value: true 7775 mirror: once 7776 #endif 7777 7778 - name: gfx.webrender.debug.highlight-painted-layers 7779 type: RelaxedAtomicBool 7780 value: false 7781 mirror: always 7782 7783 - name: gfx.webrender.debug.slow-cpu-frame-threshold 7784 type: AtomicFloat 7785 value: 10.0 7786 mirror: always 7787 7788 - name: gfx.webrender.late-scenebuild-threshold 7789 type: RelaxedAtomicInt32 7790 value: 4 7791 mirror: always 7792 7793 - name: gfx.webrender.max-filter-ops-per-chain 7794 type: RelaxedAtomicUint32 7795 value: 64 7796 mirror: always 7797 7798 - name: gfx.webrender.batching.lookback 7799 type: uint32_t 7800 value: 10 7801 mirror: always 7802 7803 - name: gfx.webrender.blob-tile-size 7804 type: uint32_t 7805 value: 256 7806 mirror: always 7807 7808 - name: gfx.webrender.batched-upload-threshold 7809 type: int32_t 7810 #if defined(MOZ_WIDGET_ANDROID) 7811 value: 262144 7812 #else 7813 value: 65536 7814 #endif 7815 mirror: always 7816 7817 - name: gfx.webrender.compositor 7818 type: bool 7819 #if defined(XP_WIN) || defined(XP_DARWIN) 7820 value: true 7821 #else 7822 value: false 7823 #endif 7824 mirror: once 7825 7826 - name: gfx.webrender.layer-compositor 7827 type: bool 7828 #if defined(XP_WIN) 7829 value: @IS_NIGHTLY_BUILD@ 7830 #else 7831 value: false 7832 #endif 7833 mirror: once 7834 7835 #ifdef XP_WIN 7836 - name: gfx.webrender.layer-compositor-force-composition-surface 7837 type: bool 7838 value: false 7839 mirror: once 7840 7841 - name: gfx.webrender.layer-compositor-use-dcomp-texture 7842 type: bool 7843 value: false 7844 mirror: once 7845 #endif 7846 7847 - name: gfx.webrender.dcomp-texture-overlay-win 7848 type: bool 7849 value: false 7850 mirror: once 7851 7852 - name: gfx.webrender.scissored-cache-clears.enabled 7853 type: bool 7854 value: true 7855 mirror: once 7856 7857 - name: gfx.webrender.scissored-cache-clears.force-enabled 7858 type: bool 7859 value: false 7860 mirror: once 7861 7862 - name: gfx.webrender.compositor.force-enabled 7863 type: bool 7864 value: false 7865 mirror: once 7866 7867 - name: gfx.webrender.compositor.max_update_rects 7868 type: uint32_t 7869 value: 1 7870 mirror: once 7871 7872 - name: gfx.webrender.compositor.surface-pool-size 7873 type: uint32_t 7874 value: 25 7875 mirror: once 7876 7877 # Number of damage rects we can give to the compositor for a new frame with 7878 # partial present. This controls whether partial present is used or not. 7879 - name: gfx.webrender.max-partial-present-rects 7880 type: uint32_t 7881 #if defined(XP_WIN) || defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GTK) 7882 value: 1 7883 #else 7884 value: 0 7885 #endif 7886 mirror: once 7887 7888 # Whether or not we can reuse the buffer contents using the GL buffer age 7889 # extension, if supported by the platform. This requires partial present 7890 # to be used. 7891 - name: gfx.webrender.allow-partial-present-buffer-age 7892 type: bool 7893 value: true 7894 mirror: once 7895 7896 # Whether or not we should force partial present on. 7897 - name: gfx.webrender.force-partial-present 7898 type: bool 7899 value: false 7900 mirror: once 7901 7902 - name: gfx.webrender.enable-gpu-markers 7903 type: bool 7904 #ifdef DEBUG 7905 value: true 7906 #else 7907 value: false 7908 #endif 7909 mirror: once 7910 7911 - name: gfx.webrender.enable-item-cache 7912 type: bool 7913 value: true 7914 mirror: once 7915 7916 # Whether or not to fallback from WebRender to Software WebRender. 7917 - name: gfx.webrender.fallback.software 7918 type: bool 7919 value: true 7920 mirror: once 7921 7922 #ifdef XP_WIN 7923 # Use IDCompositionFilterEffect to color manage dcomp surfaces. 7924 - name: gfx.webrender.dcomp.color-manage-with-filters 7925 type: RelaxedAtomicBool 7926 value: false 7927 mirror: always 7928 # Whether to use an overlay of hardware decoded video with DirectComposition 7929 - name: gfx.webrender.dcomp-video-hw-overlay-win 7930 type: bool 7931 value: true 7932 mirror: once 7933 # Enable hardware decoded video overlay even when it is blocked. 7934 - name: gfx.webrender.dcomp-video-hw-overlay-win-force-enabled 7935 type: bool 7936 value: false 7937 mirror: once 7938 # Whether to use a yuv video overlay layers with DirectComposition 7939 - name: gfx.webrender.dcomp-video-yuv-overlay-win 7940 type: bool 7941 value: false 7942 mirror: once 7943 - name: gfx.webrender.dcomp-video-vp-scaling-win 7944 type: bool 7945 value: true 7946 mirror: once 7947 # Whether to use virtual surfaces, as opposed to each tile owning a surface. 7948 - name: gfx.webrender.dcomp-use-virtual-surfaces 7949 type: bool 7950 value: true 7951 mirror: once 7952 # Whether to use an overlay of software decoded video with DirectComposition 7953 - name: gfx.webrender.dcomp-video-sw-overlay-win 7954 type: bool 7955 value: true 7956 mirror: once 7957 # Enable software decoded video overlay even when it is blocked. 7958 - name: gfx.webrender.dcomp-video-sw-overlay-win-force-enabled 7959 type: bool 7960 value: false 7961 mirror: once 7962 - name: gfx.webrender.dcomp-video-check-slow-present 7963 type: RelaxedAtomicBool 7964 value: true 7965 mirror: always 7966 # Force triple buffering in overlay's video swap chain 7967 - name: gfx.webrender.dcomp-video-force-triple-buffering 7968 type: RelaxedAtomicBool 7969 value: false 7970 mirror: always 7971 - name: gfx.webrender.dcomp-video-swap-chain-present-interval-0 7972 type: RelaxedAtomicBool 7973 value: false 7974 mirror: always 7975 - name: gfx.video.convert-yuv-to-nv12.image-host-win 7976 type: RelaxedAtomicBool 7977 value: true 7978 mirror: always 7979 - name: gfx.webrender.swap-chain-allow-tearing 7980 type: bool 7981 value: false 7982 mirror: once 7983 #endif 7984 7985 # Whether or not fallback to Software WebRender requires the GPU process. 7986 - name: gfx.webrender.fallback.software.requires-gpu-process 7987 type: bool 7988 value: false 7989 mirror: once 7990 7991 - name: gfx.webrender.program-binary-disk 7992 type: bool 7993 #if defined(XP_WIN) || defined(ANDROID) 7994 value: true 7995 #else 7996 value: false 7997 #endif 7998 mirror: once 7999 8000 - name: gfx.webrender.use-optimized-shaders 8001 type: bool 8002 value: true 8003 mirror: once 8004 8005 - name: gfx.webrender.precache-shaders 8006 type: bool 8007 value: false 8008 mirror: once 8009 8010 # When gl debug message is a high severity message, forwward it to gfx critical 8011 # note. 8012 - name: gfx.webrender.gl-debug-message-critical-note 8013 type: bool 8014 #if defined(XP_WIN) && defined(NIGHTLY_BUILD) 8015 value: true 8016 #else 8017 value: false 8018 #endif 8019 mirror: once 8020 8021 # Enable printing gl debug messages 8022 - name: gfx.webrender.gl-debug-message-print 8023 type: bool 8024 value: false 8025 mirror: once 8026 8027 #ifdef NIGHTLY_BUILD 8028 # Keep this pref hidden on non-nightly builds to avoid people accidentally 8029 # turning it on. 8030 - name: gfx.webrender.panic-on-gl-error 8031 type: bool 8032 value: false 8033 mirror: once 8034 #endif 8035 8036 #ifdef XP_WIN 8037 # Enables display of performance debugging counters when DirectComposition 8038 # is used. 8039 # Performance counters are displayed on the top-right corner of the screen. 8040 - name: gfx.webrender.debug.dcomp-counter 8041 type: RelaxedAtomicBool 8042 value: false 8043 mirror: always 8044 # Enables highlighting redraw regions of DCompositionVisual 8045 - name: gfx.webrender.debug.dcomp-redraw-regions 8046 type: RelaxedAtomicBool 8047 value: false 8048 mirror: always 8049 #endif 8050 8051 #ifdef XP_DARWIN 8052 # Files show up in $HOME/Desktop/nativelayerdumps-PID/frame-123.html 8053 - name: gfx.webrender.debug.dump-native-layer-tree-to-file 8054 type: RelaxedAtomicBool 8055 value: false 8056 mirror: always 8057 #endif 8058 8059 - name: gfx.webrender.enable-low-priority-pool 8060 type: RelaxedAtomicBool 8061 #if defined(ANDROID) 8062 value: false 8063 #else 8064 value: true 8065 #endif 8066 mirror: always 8067 8068 # Force subpixel anti-aliasing as much as possible, despite performance cost. 8069 - name: gfx.webrender.quality.force-subpixel-aa-where-possible 8070 type: bool 8071 value: false 8072 mirror: always 8073 8074 - name: gfx.webrender.enable-subpixel-aa 8075 type: bool 8076 mirror: once 8077 #ifdef MOZ_WIDGET_ANDROID 8078 value: false 8079 #else 8080 value: true 8081 #endif 8082 8083 #ifdef XP_MACOSX 8084 - name: gfx.webrender.enable-client-storage 8085 type: bool 8086 value: true 8087 mirror: once 8088 #endif 8089 8090 # Width of WebRender tile size 8091 - name: gfx.webrender.picture-tile-width 8092 type: RelaxedAtomicInt32 8093 #if defined(XP_WIN) 8094 value: 512 8095 #else 8096 value: 1024 8097 #endif 8098 mirror: always 8099 8100 # Width of WebRender tile size 8101 - name: gfx.webrender.picture-tile-height 8102 type: RelaxedAtomicInt32 8103 value: 512 8104 mirror: always 8105 8106 # WebRender upper bound for shared surface size 8107 # According to apitrace, textures larger than 2048 break fast clear 8108 # optimizations on some intel drivers. We sometimes need to go larger, but 8109 # we try to avoid it. 8110 - name: gfx.webrender.max-shared-surface-size 8111 type: int32_t 8112 value: 2048 8113 mirror: once 8114 8115 # Whether to use EGL robustness or not. 8116 - name: gfx.webrender.prefer-robustness 8117 type: bool 8118 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK) 8119 value: true 8120 #else 8121 value: false 8122 #endif 8123 mirror: once 8124 8125 # Whether to use the WebRender software backend 8126 - name: gfx.webrender.software 8127 type: bool 8128 value: false 8129 mirror: once 8130 8131 #ifdef XP_WIN 8132 # Whether to use the D3D11 RenderCompositor when using WebRender software backend 8133 - name: gfx.webrender.software.d3d11 8134 type: bool 8135 value: true 8136 mirror: once 8137 8138 - name: gfx.webrender.software.d3d11.upload-mode 8139 type: RelaxedAtomicInt32 8140 value: 4 8141 mirror: always 8142 #endif 8143 8144 #if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GTK) 8145 - name: gfx.webrender.software.opengl 8146 type: bool 8147 #if defined(MOZ_WIDGET_ANDROID) 8148 value: true 8149 #else 8150 value: false 8151 #endif 8152 mirror: once 8153 #endif 8154 8155 # Whether to force widgets to don't support acceleration to use WebRender 8156 # despite that 8157 - name: gfx.webrender.unaccelerated-widget.force 8158 type: RelaxedAtomicBool 8159 value: false 8160 mirror: always 8161 8162 # Enable a lower quality, but higher performance pinch-zoom mode. Primarily 8163 # for devices with weak GPUs, or when running SWGL. 8164 - name: gfx.webrender.low-quality-pinch-zoom 8165 type: bool 8166 #if defined(MOZ_WIDGET_ANDROID) && defined(NIGHTLY_BUILD) 8167 value: true 8168 #else 8169 value: false 8170 #endif 8171 mirror: once 8172 8173 # Disable wait of GPU execution completion 8174 - name: gfx.webrender.wait-gpu-finished.disabled 8175 type: bool 8176 value: false 8177 mirror: once 8178 8179 # Enable VideoProcessor Super Resolution for video overlay 8180 - name: gfx.webrender.overlay-vp-super-resolution 8181 type: bool 8182 #if defined(XP_WIN) 8183 value: true 8184 #else 8185 value: false 8186 #endif 8187 mirror: once 8188 8189 # Enable VideoProcessor-HDR on SDR content for video overlay 8190 - name: gfx.webrender.overlay-vp-auto-hdr 8191 type: bool 8192 #if defined(XP_WIN) 8193 value: true 8194 #else 8195 value: false 8196 #endif 8197 mirror: once 8198 8199 # Enable overlays for HDR content 8200 - name: gfx.webrender.overlay-hdr 8201 type: bool 8202 value: true 8203 mirror: once 8204 8205 # Enable a dedicated arena on frame builder threads. 8206 - name: gfx.webrender.frame-builder-thread-local-arena 8207 type: bool 8208 rust: true 8209 value: false 8210 mirror: once 8211 8212 # Enable a dedicated arena on scene builder threads. 8213 - name: gfx.webrender.scene-builder-thread-local-arena 8214 type: bool 8215 rust: true 8216 value: false 8217 mirror: once 8218 8219 # Enable a dedicated arena on WebRender worker threads. 8220 - name: gfx.webrender.worker-thread-local-arena 8221 type: bool 8222 rust: true 8223 value: true 8224 mirror: once 8225 8226 # Enable dithering in hardware WebRender 8227 - name: gfx.webrender.dithering 8228 type: bool 8229 rust: true 8230 value: true 8231 mirror: once 8232 8233 # Use a more precise method for sampling gradients when *not* using SWGL . 8234 - name: gfx.webrender.precise-linear-gradients 8235 type: bool 8236 rust: true 8237 value: false 8238 mirror: once 8239 8240 # Use a more precise method for sampling gradients when using SWGL. 8241 - name: gfx.webrender.precise-linear-gradients-swgl 8242 type: bool 8243 rust: true 8244 value: true 8245 mirror: once 8246 8247 # Use a more precise method for sampling gradients when *not* using SWGL . 8248 - name: gfx.webrender.precise-radial-gradients 8249 type: bool 8250 rust: true 8251 value: true 8252 mirror: once 8253 8254 # Use a more precise method for sampling gradients when using SWGL. 8255 - name: gfx.webrender.precise-radial-gradients-swgl 8256 type: bool 8257 rust: true 8258 value: true 8259 mirror: once 8260 8261 # Use a more precise method for sampling gradients when *not* using SWGL . 8262 - name: gfx.webrender.precise-conic-gradients 8263 type: bool 8264 rust: true 8265 value: true 8266 mirror: once 8267 8268 # Use a more precise method for sampling gradients when using SWGL. 8269 - name: gfx.webrender.precise-conic-gradients-swgl 8270 type: bool 8271 rust: true 8272 value: true 8273 mirror: once 8274 8275 # Use vsync events generated by hardware 8276 - name: gfx.work-around-driver-bugs 8277 type: bool 8278 value: true 8279 mirror: once 8280 8281 - name: gfx.ycbcr.accurate-conversion 8282 type: RelaxedAtomicBool 8283 value: false 8284 mirror: always 8285 8286 - name: gfx.remote-texture.recycle.disabled 8287 type: RelaxedAtomicBool 8288 value: false 8289 mirror: always 8290 8291 - name: gfx.remote-texture.wait-owner-at-image-host 8292 type: RelaxedAtomicBool 8293 value: false 8294 mirror: always 8295 8296 #if defined(MOZ_WAYLAND) 8297 - name: gfx.wayland.hdr 8298 type: bool 8299 value: false 8300 mirror: once 8301 8302 - name: gfx.wayland.hdr.force-enabled 8303 type: bool 8304 value: false 8305 mirror: once 8306 #endif 8307 8308 #--------------------------------------------------------------------------- 8309 # Prefs starting with "gl." (OpenGL) 8310 #--------------------------------------------------------------------------- 8311 8312 #ifdef XP_MACOSX 8313 - name: gl.allow-high-power 8314 type: RelaxedAtomicBool 8315 value: true 8316 mirror: always 8317 #endif 8318 8319 #ifdef XP_WIN 8320 - name: gl.ignore-dx-interop2-blacklist 8321 type: RelaxedAtomicBool 8322 value: false 8323 mirror: always 8324 #endif 8325 8326 - name: gl.use-tls-is-current 8327 type: RelaxedAtomicInt32 8328 value: 0 8329 mirror: always 8330 8331 #--------------------------------------------------------------------------- 8332 # Prefs starting with "html5." 8333 #--------------------------------------------------------------------------- 8334 8335 # Time in milliseconds between the time a network buffer is seen and the timer 8336 # firing when the timer hasn't fired previously in this parse in the 8337 # off-the-main-thread HTML5 parser. 8338 - name: html5.flushtimer.initialdelay 8339 type: RelaxedAtomicInt32 8340 value: 16 8341 mirror: always 8342 8343 # Time in milliseconds between the time a network buffer is seen and the timer 8344 # firing when the timer has already fired previously in this parse. 8345 - name: html5.flushtimer.subsequentdelay 8346 type: RelaxedAtomicInt32 8347 value: 16 8348 mirror: always 8349 8350 #--------------------------------------------------------------------------- 8351 # Prefs starting with "idle_period." 8352 #--------------------------------------------------------------------------- 8353 8354 - name: idle_period.min 8355 type: uint32_t 8356 value: 3 8357 mirror: always 8358 8359 - name: idle_period.during_page_load.min 8360 type: uint32_t 8361 value: 12 8362 mirror: always 8363 8364 - name: idle_period.cross_process_scheduling 8365 type: RelaxedAtomicBool 8366 value: true 8367 mirror: always 8368 8369 #--------------------------------------------------------------------------- 8370 # Prefs starting with "image." 8371 #--------------------------------------------------------------------------- 8372 8373 # The maximum size (in kB) that the aggregate frames of an animation can use 8374 # before it starts to discard already displayed frames and redecode them as 8375 # necessary. 8376 - name: image.animated.decode-on-demand.threshold-kb 8377 type: RelaxedAtomicUint32 8378 value: 20*1024 8379 mirror: always 8380 8381 # The minimum number of frames we want to have buffered ahead of an 8382 # animation's currently displayed frame. 8383 - name: image.animated.decode-on-demand.batch-size 8384 type: RelaxedAtomicUint32 8385 value: 6 8386 mirror: always 8387 8388 # Whether we should recycle already displayed frames instead of discarding 8389 # them. This saves on the allocation itself, and may be able to reuse the 8390 # contents as well. Only applies if generating full frames. 8391 - name: image.animated.decode-on-demand.recycle 8392 type: bool 8393 value: true 8394 mirror: once 8395 8396 # Resume an animated image from the last displayed frame rather than 8397 # advancing when out of view. 8398 - name: image.animated.resume-from-last-displayed 8399 type: RelaxedAtomicBool 8400 value: true 8401 mirror: always 8402 8403 # Maximum number of surfaces for an image before entering "factor of 2" mode. 8404 # This in addition to the number of "native" sizes of an image. A native size 8405 # is a size for which we can decode a frame without up or downscaling. Most 8406 # images only have 1, but some (i.e. ICOs) may have multiple frames for the 8407 # same data at different sizes. 8408 - name: image.cache.factor2.threshold-surfaces 8409 type: RelaxedAtomicInt32 8410 value: 4 8411 mirror: always 8412 8413 # Maximum size of a surface in KB we are willing to produce when rasterizing 8414 # an SVG. 8415 - name: image.cache.max-rasterized-svg-threshold-kb 8416 type: RelaxedAtomicInt32 8417 value: 200*1024 8418 mirror: always 8419 8420 # The maximum size, in bytes, of the decoded images we cache. 8421 - name: image.cache.size 8422 type: int32_t 8423 value: 5*1024*1024 8424 mirror: once 8425 8426 # A weight, from 0-1000, to place on time when comparing to size. 8427 # Size is given a weight of 1000 - timeweight. 8428 - name: image.cache.timeweight 8429 type: int32_t 8430 value: 500 8431 mirror: once 8432 8433 # Decode all images automatically on load, ignoring our normal heuristics. 8434 - name: image.decode-immediately.enabled 8435 type: RelaxedAtomicBool 8436 value: false 8437 mirror: always 8438 8439 # Decode all images synchronously, intended to be used for reftests. 8440 - name: image.testing.decode-sync.enabled 8441 type: bool 8442 value: false 8443 mirror: always 8444 8445 # Whether we attempt to downscale images during decoding. 8446 - name: image.downscale-during-decode.enabled 8447 type: RelaxedAtomicBool 8448 value: true 8449 mirror: always 8450 8451 # Whether EXIF density metadata is sanity checked against PixelXDimension and PixelYDimension 8452 - name: image.exif-density-correction.sanity-check.enabled 8453 type: RelaxedAtomicBool 8454 value: true 8455 mirror: always 8456 8457 # The threshold for inferring that changes to an <img> element's |src| 8458 # attribute by JavaScript represent an animation, in milliseconds. If the |src| 8459 # attribute is changing more frequently than this value, then we enter a 8460 # special "animation mode" which is designed to eliminate flicker. Set to 0 to 8461 # disable. 8462 - name: image.infer-src-animation.threshold-ms 8463 type: RelaxedAtomicUint32 8464 value: 2000 8465 mirror: always 8466 8467 # Whether the network request priority should be adjusted according 8468 # the layout and view frame position of each particular image. 8469 - name: image.layout_network_priority 8470 type: RelaxedAtomicBool 8471 value: true 8472 mirror: always 8473 8474 # Chunk size for calls to the image decoders. 8475 - name: image.mem.decode_bytes_at_a_time 8476 type: uint32_t 8477 value: 16384 8478 mirror: once 8479 8480 # Discards inactive image frames and re-decodes them on demand from 8481 # compressed data. 8482 - name: image.mem.discardable 8483 type: RelaxedAtomicBool 8484 value: true 8485 mirror: always 8486 8487 # Discards inactive image frames of _animated_ images and re-decodes them on 8488 # demand from compressed data. Has no effect if image.mem.discardable is false. 8489 - name: image.mem.animated.discardable 8490 type: bool 8491 value: true 8492 mirror: once 8493 8494 # Enable extra information for debugging in the image memory reports. 8495 - name: image.mem.debug-reporting 8496 type: RelaxedAtomicBool 8497 value: false 8498 mirror: always 8499 8500 # Force unmapping of unused shared surfaces after a timeout period or when we 8501 # encounter virtual memory pressure. By default this is only enabled on 32-bit 8502 # Firefox. 8503 - name: image.mem.shared.unmap.force-enabled 8504 type: bool 8505 value: false 8506 mirror: once 8507 8508 # Minimum timeout to unmap shared surfaces since they have been last used, 8509 # in milliseconds. 8510 - name: image.mem.shared.unmap.min_expiration_ms 8511 type: uint32_t 8512 value: 60*1000 8513 mirror: once 8514 8515 # Mininum size for shared surfaces to consider unmapping, in kilobytes. 8516 - name: image.mem.shared.unmap.min_threshold_kb 8517 type: uint32_t 8518 value: 100 8519 mirror: once 8520 8521 # How much of the data in the surface cache is discarded when we get a memory 8522 # pressure notification, as a fraction. The discard factor is interpreted as a 8523 # reciprocal, so a discard factor of 1 means to discard everything in the 8524 # surface cache on memory pressure, a discard factor of 2 means to discard half 8525 # of the data, and so forth. The default should be a good balance for desktop 8526 # and laptop systems, where we never discard visible images. 8527 - name: image.mem.surfacecache.discard_factor 8528 type: uint32_t 8529 value: 1 8530 mirror: once 8531 8532 # Maximum size for the surface cache, in kilobytes. 8533 - name: image.mem.surfacecache.max_size_kb 8534 type: uint32_t 8535 value: 2024 * 1024 8536 mirror: once 8537 8538 # Minimum timeout for expiring unused images from the surface cache, in 8539 # milliseconds. This controls how long we store cached temporary surfaces. 8540 - name: image.mem.surfacecache.min_expiration_ms 8541 type: uint32_t 8542 value: 60*1000 8543 mirror: once 8544 8545 # The surface cache's size, within the constraints of the maximum size set 8546 # above, is determined as a fraction of main memory size. The size factor is 8547 # interpreted as a reciprocal, so a size factor of 4 means to use no more than 8548 # 1/4 of main memory. The default should be a good balance for most systems. 8549 - name: image.mem.surfacecache.size_factor 8550 type: uint32_t 8551 value: 4 8552 mirror: once 8553 8554 # Maximum size in kilobytes that we allow to allocate an imgFrame, meant for 8555 # testing/fuzzing purposes. -1 disables this limit (there are other limits in 8556 # place). 8557 - name: image.mem.max_legal_imgframe_size_kb 8558 type: RelaxedAtomicInt32 8559 value: -1 8560 mirror: always 8561 8562 # If true, then the HTMLImageElement naturalWidth and naturalHeight APIs will 8563 # fall back to the default concrete object size (300x150) for images that lack 8564 # a natural width and/or height. 8565 - name: image.natural-size-fallback.enabled 8566 type: RelaxedAtomicBool 8567 value: true 8568 mirror: always 8569 8570 # Whether we record SVG images as blobs or not. 8571 - name: image.svg.blob-image 8572 type: RelaxedAtomicBool 8573 value: false 8574 mirror: always 8575 8576 # Whether to set the incremental attribute in the Priority header for images 8577 - name: image.priority.incremental 8578 type: RelaxedAtomicBool 8579 value: true 8580 mirror: always 8581 8582 # How strict we are in accepting/rejecting AVIF inputs according to whether they 8583 # conform to the specification 8584 # 0 = Permissive: accept whatever we can simply, unambiguously interpret 8585 # 1 = Normal: reject violations of "shall" specification directives 8586 # 2 = Strict: reject violations of "should" specification directives 8587 - name: image.avif.compliance_strictness 8588 type: RelaxedAtomicInt32 8589 value: 1 8590 mirror: always 8591 8592 # Whether we apply container-level transforms like mirroring and rotation 8593 - name: image.avif.apply_transforms 8594 type: RelaxedAtomicBool 8595 value: true 8596 mirror: always 8597 8598 # Whether we use dav1d (true) or libaom (false) to decode AVIF image 8599 - name: image.avif.use-dav1d 8600 type: RelaxedAtomicBool 8601 value: true 8602 mirror: always 8603 8604 # Whether to allow decoding of animated AVIF sequences. 8605 - name: image.avif.sequence.enabled 8606 type: RelaxedAtomicBool 8607 value: true 8608 mirror: always 8609 8610 # Whether AVIF files containing sequences should be animated even when the 8611 # major brand is set to 'avif'. 8612 - name: image.avif.sequence.animate_avif_major_branded_images 8613 type: RelaxedAtomicBool 8614 value: false 8615 mirror: always 8616 8617 # Whether we attempt to decode JXL images or not. 8618 - name: image.jxl.enabled 8619 type: RelaxedAtomicBool 8620 value: false 8621 mirror: always 8622 8623 #--------------------------------------------------------------------------- 8624 # Prefs starting with "intl." 8625 #--------------------------------------------------------------------------- 8626 8627 #ifdef XP_WIN 8628 # Whether Gecko creates or does not create native caret for legacy ATOK 8629 # (2011 - 2015). 8630 - name: intl.tsf.hack.atok.create_native_caret 8631 type: bool 8632 value: true 8633 mirror: always 8634 8635 # Whether Gecko returns available composition string rect or TS_E_NOLAYOUT 8636 # from ITextStoreACP::GetTextExt() when the specified range is same as the 8637 # range of composition string but some character rects in it are still 8638 # dirty if and only if ATOK is active TIP. 8639 # Note that this is ignored if active ATOK is or older than 2016 and 8640 # create_native_caret is true. 8641 - name: intl.tsf.hack.atok.do_not_return_no_layout_error_of_composition_string 8642 type: bool 8643 value: true 8644 mirror: always 8645 8646 # Whether Gecko sets input scope of ATOK to "search" or never does it. 8647 # When "search" is set to the input scope, ATOK may stop their suggestions. 8648 # To avoid it, turn this pref on, or changing the settings in ATOK. 8649 # Note that if you enable this pref and you use the touch keyboard for touch 8650 # screens, you cannot access some specific features for a "search" input 8651 # field. 8652 - name: intl.tsf.hack.atok.search_input_scope_disabled 8653 type: bool 8654 value: false 8655 mirror: always 8656 8657 # Whether Gecko returns caret rect before composition string or TS_E_NOLAYOUT 8658 # from ITextStoreACP::GetTextExt() when the specified range is larger than 8659 # composition start offset if and only if Free ChangJie is active TIP. 8660 - name: intl.tsf.hack.free_chang_jie.do_not_return_no_layout_error 8661 type: bool 8662 value: true 8663 mirror: always 8664 8665 # Whether Gecko returns available composition string rect or TS_E_NOLAYOUT 8666 # from ITextStoreACP::GetTextExt() when the specified range is same as the 8667 # range of composition string but some character rects in it are still 8668 # dirty if and only if Japanist 10 is active TIP. 8669 - name: intl.tsf.hack.japanist10.do_not_return_no_layout_error_of_composition_string 8670 type: bool 8671 value: true 8672 mirror: always 8673 8674 # Whether Gecko returns previous character rect or TS_E_NOLAYOUT from 8675 # ITfContextView::GetTextExt() when the specified range is the first 8676 # character of selected clause of composition string if and only if Japanese TIP 8677 # of Microsoft is active. 8678 - name: intl.tsf.hack.ms_japanese_ime.do_not_return_no_layout_error_at_first_char 8679 type: bool 8680 value: true 8681 mirror: always 8682 8683 # Whether Gecko returns previous character rect or TS_E_NOLAYOUT from 8684 # ITfContextView::GetTextExt() when the specified range is the caret of 8685 # composition string if and only if Japanese TIP of Microsoft is active. 8686 - name: intl.tsf.hack.ms_japanese_ime.do_not_return_no_layout_error_at_caret 8687 type: bool 8688 value: true 8689 mirror: always 8690 8691 # Whether Gecko returns caret rect before composition string or TS_E_NOLAYOUT 8692 # from ITfContextView::GetTextExt() when the specified range is larger than 8693 # composition start offset if and only Simplified Chinese TIP of Microsoft 8694 # is active. 8695 - name: intl.tsf.hack.ms_simplified_chinese.do_not_return_no_layout_error 8696 type: bool 8697 value: true 8698 mirror: always 8699 8700 # Whether Geckos hacks ITextStoreACP::QueryInsert() or not. The method should 8701 # return new selection after specified length text is inserted at specified 8702 # range. However, Microsoft Pinyin and Microsoft Wubi expect that the result 8703 # is same as specified range. If following prefs are true, 8704 # ITextStoreACP::QueryInsert() returns specified range only when one of the 8705 # TIPs is active. 8706 - name: intl.tsf.hack.ms_simplified_chinese.query_insert_result 8707 type: bool 8708 value: true 8709 mirror: always 8710 8711 # Whether Gecko returns caret rect before composition string or TS_E_NOLAYOUT 8712 # from ITfContextView::GetTextExt() when the specified range is larger than 8713 # composition start offset if and only Traditional Chinese TIP of Microsoft 8714 # is active. 8715 - name: intl.tsf.hack.ms_traditional_chinese.do_not_return_no_layout_error 8716 type: bool 8717 value: true 8718 mirror: always 8719 8720 # Whether Geckos hacks ITextStoreACP::QueryInsert() or not. The method should 8721 # return new selection after specified length text is inserted at specified 8722 # range. However, Microsoft ChangJie and Microsoft Quick expect that the 8723 # result is same as specified range. If following prefs are true, 8724 # ITextStoreACP::QueryInsert() returns specified range only when one of the 8725 # TIPs is active. 8726 - name: intl.tsf.hack.ms_traditional_chinese.query_insert_result 8727 type: bool 8728 value: true 8729 mirror: always 8730 8731 # Whether Gecko sets input scope of the URL bar to IS_DEFAULT when black 8732 # listed IMEs are active or does not. If you use tablet mode mainly and you 8733 # want to use touch keyboard for URL when you set focus to the URL bar, you 8734 # can set this to false. Then, you'll see, e.g., ".com" key on the keyboard. 8735 # However, if you set this to false, such IMEs set its open state to "closed" 8736 # when you set focus to the URL bar. I.e., input mode is automatically 8737 # changed to English input mode. 8738 # Known buggy IME list: 8739 # - Microsoft IME for Japanese 8740 # - Google Japanese Input 8741 # - Microsoft Bopomofo 8742 # - Microsoft ChangJie 8743 # - Microsoft Phonetic 8744 # - Microsoft Quick 8745 # - Microsoft New ChangJie 8746 # - Microsoft New Phonetic 8747 # - Microsoft New Quick 8748 # - Microsoft Pinyin 8749 # - Microsoft Pinyin New Experience Input Style 8750 # - Microsoft Wubi 8751 # - Microsoft IME for Korean (except on Win7) 8752 # - Microsoft Old Hangul 8753 - name: intl.ime.hack.set_input_scope_of_url_bar_to_default 8754 type: bool 8755 value: true 8756 mirror: always 8757 8758 # On Windows 10 Build 17643 (an Insider Preview build of RS5), Microsoft 8759 # have fixed the caller of ITextACPStore::GetTextExt() to return 8760 # TS_E_NOLAYOUT to TIP as-is, rather than converting to E_FAIL. 8761 # Therefore, if TIP supports asynchronous layout computation perfectly, we 8762 # can return TS_E_NOLAYOUT and TIP waits next OnLayoutChange() 8763 # notification. However, some TIPs still have some bugs of asynchronous 8764 # layout support. We keep hacking the result of GetTextExt() like running 8765 # on Windows 10, however, there could be unknown TIP bugs if we stop 8766 # hacking the result. So, user can stop checking build ID to make Gecko 8767 # hack the result forcibly. 8768 - name: intl.tsf.hack.allow_to_stop_hacking_on_build_17643_or_later 8769 type: bool 8770 value: @IS_EARLY_BETA_OR_EARLIER@ 8771 mirror: always 8772 8773 # If true, automatically extend selection to cluster boundaries when 8774 # TSF/TIP requests to select from/by middle of a cluster. 8775 - name: intl.tsf.hack.extend_setting_selection_range_to_cluster_boundaries 8776 type: bool 8777 value: false 8778 mirror: always 8779 8780 # Whether Gecko supports IMM even if TSF is enabled. This pref exists 8781 # only for check TSF behavior of new versions. Therefore, users should 8782 # not set this to false for daily use. 8783 - name: intl.tsf.support_imm 8784 type: bool 8785 value: true 8786 mirror: once 8787 8788 # If true, TSF and TIP (IME) can retrieve URL of the document containing 8789 # the focused element. When this is set to true, Gecko exposes the spec 8790 # of the URL. 8791 # And Gecko exposes only "http" and "https" URLs. E.g., "data", "blob", 8792 # "file" URLs are never exposed. 8793 - name: intl.tsf.expose_url.allowed 8794 type: bool 8795 value: true 8796 mirror: always 8797 8798 # If true, TSF and TIP (IME) can retrieve URL of the document containing 8799 # the focused element in the private browsing mode too. 8800 - name: intl.tsf.expose_url_in_private_browsing.allowed 8801 type: bool 8802 value: false 8803 mirror: always 8804 8805 #if defined(ENABLE_TESTS) 8806 # If true, NS_GetComplexLineBreaks compares the line breaks produced in the 8807 # content process using the Uniscribe line breaker, with those from a 8808 # brokered call to the parent. 8809 - name: intl.compare_against_brokered_complex_line_breaks 8810 type: bool 8811 value: false 8812 mirror: always 8813 #endif 8814 #endif 8815 8816 # If you use legacy Chinese IME which puts an ideographic space to composition 8817 # string as placeholder, this pref might be useful. If this is true and when 8818 # web contents forcibly commits composition (e.g., moving focus), the 8819 # ideographic space will be ignored (i.e., commits with empty string). 8820 - name: intl.ime.remove_placeholder_character_at_commit 8821 type: bool 8822 value: false 8823 mirror: always 8824 8825 8826 #if defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK) || defined(ANDROID) 8827 # Whether text input without keyboard press nor IME composition should cause a 8828 # set of composition events or not. E.g., when you use Emoji picker on macOS, 8829 # it inserts an Emoji character directly. If set to true, `compositionstart`, 8830 # `compositionupdate` and `compositionend` events will be fired, and the 8831 # correspnding `beforeinput` events are not cancelable. Otherwise, if set to 8832 # false, any user input events are not exposed to web apps but only 8833 # `beforeinput` event is fired as "insert text" as a cancelable event. 8834 - name: intl.ime.use_composition_events_for_insert_text 8835 type: bool 8836 value: false 8837 mirror: always 8838 #endif 8839 8840 # If true, we use UAX14/29 compatible segmenter rules using ICU4X 8841 - name: intl.icu4x.segmenter.enabled 8842 type: RelaxedAtomicBool 8843 value: true 8844 mirror: always 8845 8846 #--------------------------------------------------------------------------- 8847 # Prefs starting with "javascript." 8848 # 8849 # NOTE: SpiderMonkey starts up before `mirror: once` preferences are sealed and 8850 # we cannot use them (Bug 1698311). Instead, we use `mirror: always` 8851 # prefs but mark as `do_not_use_directly` and `LoadStartupJSPrefs` will 8852 # mirror them into SpiderMonkey. 8853 #--------------------------------------------------------------------------- 8854 8855 # The JavaScript JIT compilers. These are read once on startup so a browser may 8856 # need to be restarted if toggling them. In general each subsequent JIT depends 8857 # on the ones before it being enabled. 8858 - name: javascript.options.blinterp 8859 type: bool 8860 value: true 8861 mirror: always # LoadStartupJSPrefs 8862 do_not_use_directly: true 8863 8864 - name: javascript.options.baselinejit 8865 type: bool 8866 value: true 8867 mirror: always # LoadStartupJSPrefs 8868 do_not_use_directly: true 8869 8870 - name: javascript.options.ion 8871 type: bool 8872 value: true 8873 mirror: always # LoadStartupJSPrefs 8874 do_not_use_directly: true 8875 8876 # The irregexp JIT for regex evaluation. 8877 - name: javascript.options.native_regexp 8878 type: bool 8879 value: true 8880 mirror: always # LoadStartupJSPrefs 8881 do_not_use_directly: true 8882 8883 # Jit Hints Cache - An in-process cache for the 8884 # content process to accelerate repeated baseline 8885 # compilations 8886 - name: javascript.options.jithints 8887 type: bool 8888 value: true 8889 mirror: always # LoadStartupJSPrefs 8890 do_not_use_directly: true 8891 8892 # "Warm-up" thresholds at which we attempt to compile a script/function with 8893 # the next JIT tier. 8894 # 8895 # NOTE: These must match JitOptions defaults. 8896 - name: javascript.options.blinterp.threshold 8897 type: int32_t 8898 value: 10 8899 mirror: always # LoadStartupJSPrefs 8900 do_not_use_directly: true 8901 8902 - name: javascript.options.baselinejit.threshold 8903 type: int32_t 8904 value: 100 8905 mirror: always # LoadStartupJSPrefs 8906 do_not_use_directly: true 8907 8908 - name: javascript.options.ion.threshold 8909 type: int32_t 8910 value: 1500 8911 mirror: always # LoadStartupJSPrefs 8912 do_not_use_directly: true 8913 8914 # Select which OMT baseline compilation strategy to use: 8915 # 0: None. Disables OMT baseline compilation entirely. 8916 # 8917 # 1: On-demand only. Only perform OMT baseline compilation 8918 # when needed during execution. 8919 # 8920 # 2: Eager compilation only. This will perform OMT baseline 8921 # compilation eagerly when JitHints and bytecode is available. 8922 # 8923 # 3: Eager and on-demand. Perform eager compilation when 8924 # JitHints and bytecode is available whenever possible, 8925 # and also perform on-demand OMT baseline compilation. 8926 # 8927 # 4: Aggressive eager compilation. This is aggressively 8928 # compiling all functions eagerly when bytecode is available, 8929 # regardless of JitHints. Not recommended for normal use. 8930 # 8931 - name: javascript.options.baselinejit.offthread_compilation_strategy 8932 type: uint32_t 8933 value: 2 8934 mirror: always # LoadStartupJSPrefs 8935 8936 # Enable off-main-thread Warp compilation. 8937 - name: javascript.options.ion.offthread_compilation 8938 type: bool 8939 value: true 8940 mirror: always # LoadStartupJSPrefs 8941 do_not_use_directly: true 8942 8943 #ifdef DEBUG 8944 # Enable extra correctness checks in the JITs that are slow and only available 8945 # in debug builds. 8946 - name: javascript.options.jit.full_debug_checks 8947 type: bool 8948 value: false 8949 mirror: always # LoadStartupJSPrefs 8950 do_not_use_directly: true 8951 #endif 8952 8953 # Heuristic threshold for Warp/Ion to decide that too many bailouts are 8954 # happening and an IonScript should be discarded. 8955 # 8956 # NOTE: This must match JitOptions defaults. 8957 - name: javascript.options.ion.frequent_bailout_threshold 8958 type: int32_t 8959 value: 10 8960 mirror: always # LoadStartupJSPrefs 8961 do_not_use_directly: true 8962 8963 # A threshold for Warp to decide whether a function can be inlined. 8964 # If the size of a function is smaller than this threshold, then it 8965 # may be inlined. 8966 # 8967 # NOTE: These must match JitOptions defaults. 8968 - name: javascript.options.inlining_bytecode_max_length 8969 type: uint32_t 8970 value: 140 8971 mirror: always 8972 do_not_use_directly: true 8973 8974 # Whether object fuses are used to optimize constant properties on the global 8975 # object and its lexical environment object. 8976 - name: javascript.options.objectfuse_for_global 8977 type: bool 8978 value: true 8979 mirror: always 8980 set_spidermonkey_pref: startup 8981 8982 # Whether object fuses are used to optimize constant properties on builtin JS 8983 # constructors and prototypes. 8984 - name: javascript.options.objectfuse_for_js_builtin_ctors_protos 8985 type: bool 8986 value: true 8987 mirror: always 8988 set_spidermonkey_pref: startup 8989 8990 - name: javascript.options.compact_on_user_inactive 8991 type: bool 8992 value: true 8993 mirror: always 8994 8995 # Determines which register allocator will be used by the Ion backend for JS and 8996 # Wasm code. Possible values: 8997 # 8998 # 0: default register allocator (currently always the Backtracking allocator) 8999 # 1: always use the Backtracking allocator 9000 # 2: always use the Simple allocator 9001 # other values: same as 0 9002 - name: javascript.options.ion.regalloc 9003 type: uint32_t 9004 value: 0 9005 mirror: always 9006 set_spidermonkey_pref: startup 9007 9008 # No-op pref for testing the SpiderMonkey pref system. 9009 - name: javascript.options.tests.uint32-pref 9010 type: uint32_t 9011 value: 1 9012 mirror: always 9013 set_spidermonkey_pref: always 9014 9015 # The default amount of time to wait from the user being idle to starting a 9016 # shrinking GC. Measured in milliseconds. 9017 - name: javascript.options.compact_on_user_inactive_delay 9018 type: uint32_t 9019 #ifdef NIGHTLY_BUILD 9020 value: 15000 9021 #else 9022 value: 300000 9023 #endif 9024 mirror: always 9025 9026 # Use the realm local dom alloc site. 9027 - name: javascript.options.dom_alloc_site 9028 type: bool 9029 value: true 9030 mirror: always 9031 set_spidermonkey_pref: always 9032 9033 # Use better error message when accessing property of null or undefined. 9034 - name: javascript.options.property_error_message_fix 9035 type: bool 9036 value: true 9037 mirror: always 9038 set_spidermonkey_pref: startup 9039 9040 # Whether to expose the FinalizationRegistry.prototype.cleanupSome method. 9041 - name: javascript.options.experimental.weakrefs.expose_cleanupSome 9042 type: bool 9043 value: false 9044 mirror: always 9045 set_spidermonkey_pref: startup 9046 9047 # ShadowRealms: https://github.com/tc39/proposal-shadowrealm 9048 - name: javascript.options.experimental.shadow_realms 9049 # Atomic, as we assert the preference, and that assertion may happen 9050 # in a worker. 9051 type: RelaxedAtomicBool 9052 value: false 9053 mirror: always 9054 # Non-startup pref because the WPT test harness sets prefs after startup. 9055 set_spidermonkey_pref: always 9056 9057 # Experimental support for Uint8Array base64/hex in JavaScript. 9058 - name: javascript.options.experimental.uint8array_base64 9059 type: bool 9060 value: true 9061 mirror: always 9062 set_spidermonkey_pref: startup 9063 9064 # Experimental support for Math.sumPrecise in JavaScript. 9065 - name: javascript.options.experimental.math_sumprecise 9066 type: bool 9067 value: true 9068 mirror: always 9069 set_spidermonkey_pref: startup 9070 9071 # Experimental support for Atomics.pause in JavaScript. 9072 - name: javascript.options.experimental.atomics_pause 9073 type: bool 9074 value: true 9075 mirror: always 9076 set_spidermonkey_pref: startup 9077 9078 # Experimental support for Error.isError in JavaScript. 9079 - name: javascript.options.experimental.error_iserror 9080 type: bool 9081 value: true 9082 mirror: always 9083 set_spidermonkey_pref: always 9084 9085 # Support for Atomics.waitAsync in JavaScript. 9086 - name: javascript.options.atomics_wait_async 9087 type: bool 9088 value: true 9089 mirror: always 9090 set_spidermonkey_pref: startup 9091 9092 # Experimental support for upsert in JavaScript. 9093 - name: javascript.options.experimental.upsert 9094 type: bool 9095 value: true 9096 mirror: always 9097 set_spidermonkey_pref: startup 9098 9099 # Experimental support for Symbols as WeakMap keys in JavaScript. 9100 - name: javascript.options.experimental.symbols_as_weakmap_keys 9101 type: bool 9102 value: true 9103 mirror: always 9104 set_spidermonkey_pref: startup 9105 9106 # Experimental support for Iterator Sequencing in JavaScript. 9107 - name: javascript.options.experimental.iterator_sequencing 9108 type: bool 9109 value: true 9110 mirror: always 9111 set_spidermonkey_pref: startup 9112 9113 # Experimental support for Joint Iteration in JavaScript. 9114 - name: javascript.options.experimental.joint_iteration 9115 type: bool 9116 value: true 9117 mirror: always 9118 set_spidermonkey_pref: startup 9119 9120 # Experimental support for Legacy RegExp in JavaScript. 9121 - name: javascript.options.experimental.legacy_regexp 9122 type: bool 9123 value: @IS_NIGHTLY_BUILD@ 9124 mirror: always 9125 set_spidermonkey_pref: always 9126 9127 #ifdef NIGHTLY_BUILD 9128 # Experimental support for Async Iterator Helpers in JavaScript. 9129 - name: javascript.options.experimental.async_iterator_helpers 9130 type: bool 9131 value: false 9132 mirror: always 9133 set_spidermonkey_pref: startup 9134 9135 # Experimental support for Iterator.range in JavaScript. 9136 - name: javascript.options.experimental.iterator_range 9137 type: bool 9138 value: false 9139 mirror: always 9140 set_spidermonkey_pref: startup 9141 9142 # Experimental support for immutable ArrayBuffers in JavaScript. 9143 - name: javascript.options.experimental.arraybuffer_immutable 9144 type: bool 9145 value: false 9146 mirror: always 9147 set_spidermonkey_pref: startup 9148 9149 # Experimental support for import bytes in JavaScript. 9150 - name: javascript.options.experimental.import_bytes 9151 type: bool 9152 value: false 9153 mirror: always 9154 set_spidermonkey_pref: startup 9155 9156 # Experimental support for Promise.allKeyed in JavaScript. 9157 - name: javascript.options.experimental.promise_allkeyed 9158 type: bool 9159 value: false 9160 mirror: always 9161 set_spidermonkey_pref: startup 9162 9163 # Experimental support for Iterator Chunking in JavaScript. 9164 - name: javascript.options.experimental.iterator_chunking 9165 type: bool 9166 value: false 9167 mirror: always 9168 set_spidermonkey_pref: startup 9169 9170 # Experimental support for Iterator.join in JavaScript. 9171 - name: javascript.options.experimental.iterator_join 9172 type: bool 9173 value: false 9174 mirror: always 9175 set_spidermonkey_pref: startup 9176 9177 # Experimental support for WASM/EcmaScript module integration in JavaScript. 9178 - name: javascript.options.experimental.wasm_esm_integration 9179 type: RelaxedAtomicBool 9180 value: false 9181 mirror: always 9182 set_spidermonkey_pref: startup 9183 #endif // NIGHTLY_BUILD 9184 9185 # Capture stack traces for OOM 9186 - name: javascript.options.experimental.capture_oom_stack_trace 9187 type: bool 9188 value: @IS_NIGHTLY_BUILD@ 9189 mirror: always 9190 set_spidermonkey_pref: startup 9191 9192 # Whether to Baseline-compile self-hosted functions the first time they are 9193 # used and cache the result. 9194 - name: javascript.options.experimental.self_hosted_cache 9195 type: bool 9196 value: false 9197 mirror: always 9198 set_spidermonkey_pref: startup 9199 9200 # Experimental support for Temporal in JavaScript. 9201 - name: javascript.options.experimental.temporal 9202 type: bool 9203 value: true 9204 mirror: always 9205 set_spidermonkey_pref: startup 9206 9207 #ifdef ENABLE_EXPLICIT_RESOURCE_MANAGEMENT 9208 # Experimental support for Explicit Resource Management in JavaScript. 9209 - name: javascript.options.experimental.explicit_resource_management 9210 type: bool 9211 value: true 9212 mirror: always 9213 set_spidermonkey_pref: always 9214 #endif // ENABLE_EXPLICIT_RESOURCE_MANAGEMENT 9215 9216 - name: javascript.options.experimental.error_capture_stack_trace 9217 type: bool 9218 value: true 9219 mirror: always 9220 set_spidermonkey_pref: always 9221 9222 # Dictionary Teleporting 9223 - name: javascript.options.experimental.dictionary_teleporting 9224 type: bool 9225 value: true 9226 mirror: always 9227 set_spidermonkey_pref: always 9228 9229 - name: javascript.options.wasm_caching 9230 type: bool 9231 value: true 9232 mirror: always 9233 9234 # The amount of time we wait between a request to GC (due to leaving a page) and doing the actual GC, in ms. 9235 - name: javascript.options.gc_delay 9236 type: uint32_t 9237 value: 4000 9238 mirror: always 9239 9240 # The amount of time we wait from the first request to GC to actually doing the first GC, in ms. 9241 - name: javascript.options.gc_delay.first 9242 type: uint32_t 9243 value: 10000 9244 mirror: always 9245 9246 # After doing a zonal GC, wait this much time (in ms) and then do a full GC, 9247 # unless one is already pending. 9248 - name: javascript.options.gc_delay.full 9249 type: uint32_t 9250 value: 60000 9251 mirror: always 9252 9253 # Maximum amount of time that should elapse between incremental GC slices, in ms. 9254 - name: javascript.options.gc_delay.interslice 9255 type: uint32_t 9256 value: 250 9257 mirror: always 9258 9259 # nsJSEnvironmentObserver observes the memory-pressure notifications and 9260 # forces a garbage collection and cycle collection when it happens, if the 9261 # appropriate pref is set. 9262 - name: javascript.options.gc_on_memory_pressure 9263 type: bool 9264 # Disable the JS engine's GC on memory pressure on Android for now to continue investigating its 9265 # performance impacts and then decide to enable it or not. 9266 # See bug 1450787. 9267 value: @IS_NOT_ANDROID@ 9268 mirror: always 9269 9270 # We allow at most MIN(max, MAX(NUM_CPUS / cpu_divisor, 1)) concurrent GCs 9271 # between processes 9272 - name: javascript.options.concurrent_multiprocess_gcs.cpu_divisor 9273 type: RelaxedAtomicUint32 9274 value: 4 9275 mirror: always 9276 9277 # See 'cpu_divisor' above, 0 means UINT_32_MAX. 9278 - name: javascript.options.concurrent_multiprocess_gcs.max 9279 type: RelaxedAtomicUint32 9280 value: 0 9281 mirror: always 9282 9283 - name: javascript.options.mem.log 9284 type: bool 9285 value: false 9286 mirror: always 9287 9288 - name: javascript.options.mem.notify 9289 type: bool 9290 value: false 9291 mirror: always 9292 9293 # Whether the Parent process allocates and shares memory with all content 9294 # processes. This is mirrored once, as the parent process will do this 9295 # allocation early on. 9296 - name: javascript.options.self_hosted.use_shared_memory 9297 type: bool 9298 value: true 9299 mirror: always # LoadStartupJSPrefs 9300 do_not_use_directly: true 9301 9302 - name: javascript.options.main_thread_stack_quota_cap 9303 type: uint32_t 9304 #if defined(MOZ_ASAN) 9305 value: 6 * 1024 * 1024 9306 #else 9307 value: 2 * 1024 * 1024 9308 #endif 9309 mirror: always 9310 9311 - name: javascript.options.wasm_trace_api 9312 type: bool 9313 value: false 9314 mirror: always 9315 set_spidermonkey_pref: always 9316 9317 - name: javascript.options.wasm_exception_force_stack_trace 9318 type: bool 9319 value: false 9320 mirror: always 9321 set_spidermonkey_pref: always 9322 9323 - name: javascript.options.wasm_disable_huge_memory 9324 type: bool 9325 value: false 9326 mirror: always 9327 set_spidermonkey_pref: startup 9328 9329 - name: javascript.options.wasm_optimizingjit 9330 type: bool 9331 value: true 9332 mirror: always 9333 9334 - name: javascript.options.wasm_relaxed_simd 9335 type: bool 9336 #if defined(ENABLE_WASM_RELAXED_SIMD) 9337 value: true 9338 #else 9339 value: false 9340 #endif 9341 mirror: always 9342 set_spidermonkey_pref: always 9343 9344 - name: javascript.options.wasm_moz_intgemm 9345 type: bool 9346 #if defined(ENABLE_WASM_MOZ_INTGEMM) 9347 value: @IS_NIGHTLY_BUILD@ 9348 #else 9349 value: false 9350 #endif 9351 mirror: always 9352 set_spidermonkey_pref: startup 9353 9354 - name: javascript.options.wasm_memory_control 9355 type: bool 9356 value: false 9357 mirror: always 9358 set_spidermonkey_pref: always 9359 9360 - name: javascript.options.wasm_branch_hinting 9361 type: bool 9362 #if defined(ENABLE_WASM_BRANCH_HINTING) 9363 value: true 9364 #else 9365 value: false 9366 #endif 9367 mirror: always 9368 set_spidermonkey_pref: always 9369 9370 - name: javascript.options.wasm_custom_page_sizes 9371 type: bool 9372 value: false 9373 mirror: always 9374 set_spidermonkey_pref: startup 9375 9376 #if defined(ENABLE_WASM_SIMD) 9377 #if defined(JS_CODEGEN_X64) || defined(JS_CODEGEN_X86) 9378 # Enables AVX instructions support on X86/X64 platforms. 9379 # Changing these prefs requires a restart. 9380 - name: javascript.options.wasm_simd_avx 9381 type: bool 9382 value: true 9383 mirror: always 9384 set_spidermonkey_pref: startup 9385 #endif 9386 #endif 9387 9388 - name: javascript.options.wasm_js_promise_integration 9389 type: bool 9390 value: false 9391 mirror: always 9392 set_spidermonkey_pref: always 9393 9394 - name: javascript.options.wasm_test_serialization 9395 type: bool 9396 value: false 9397 mirror: always 9398 set_spidermonkey_pref: always 9399 9400 # Enables lazy tiering for wasm modules that have a GC type defined in them. 9401 # Use wasm_lazy_tiering to enable it for any module. 9402 - name: javascript.options.wasm_lazy_tiering_for_gc 9403 type: bool 9404 value: true 9405 mirror: always 9406 set_spidermonkey_pref: always 9407 9408 # Enables lazy tiering for all modules. Use wasm_lazy_tiering_for_gc to only 9409 # enable this for GC modules. 9410 - name: javascript.options.wasm_lazy_tiering 9411 type: bool 9412 value: true 9413 mirror: always 9414 set_spidermonkey_pref: always 9415 9416 # Aggressiveness of lazy tiering, allowable: 1 .. 9 9417 # 1 = min (almost never, set tiering threshold to max possible, == 2^31-1) 9418 # 9 = max (request tier up at first call, set tiering threshold to zero) 9419 - name: javascript.options.wasm_lazy_tiering_level 9420 type: uint32_t 9421 value: 5 9422 mirror: always 9423 set_spidermonkey_pref: always 9424 9425 # Forces lazy tiering to synchronously compile instead of using a background 9426 # thread. 9427 - name: javascript.options.wasm_lazy_tiering_synchronous 9428 type: bool 9429 value: false 9430 mirror: always 9431 set_spidermonkey_pref: always 9432 9433 # Aggressiveness of inlining (regardless of call kind), allowable: 1 .. 9 9434 - name: javascript.options.wasm_inlining_level 9435 type: uint32_t 9436 value: 5 9437 mirror: always 9438 set_spidermonkey_pref: always 9439 9440 # Are wasm direct calls (within same Instance) candidates for inlining? 9441 - name: javascript.options.wasm_direct_inlining 9442 type: bool 9443 value: true 9444 mirror: always 9445 set_spidermonkey_pref: always 9446 9447 # Are wasm call_ref calls (within same Instance) candidates for inlining? 9448 - name: javascript.options.wasm_call_ref_inlining 9449 type: bool 9450 value: true 9451 mirror: always 9452 set_spidermonkey_pref: always 9453 9454 # When selecting call_ref targets for speculative inlining, this is the minimum 9455 # percentage of the total number of calls from the call site that a candidate 9456 # set of targets must collectively have in order to be elegible for inlining. 9457 # Allowable: 10 .. 100 (%). Setting it (eg) 75 means the targets must collectively 9458 # be 75% of all observed calls to be considered for inlining. Probably unwise to 9459 # let this be much below 40. 9460 - name: javascript.options.wasm_call_ref_inlining_percent 9461 type: uint32_t 9462 value: 40 9463 mirror: always 9464 set_spidermonkey_pref: always 9465 9466 # Support for wasm loop unrolling and peeling in wasm-via-Ion. This enables 9467 # both unrolling and peeling. 9468 - name: javascript.options.wasm_unroll_loops 9469 type: bool 9470 value: true 9471 mirror: always 9472 set_spidermonkey_pref: always 9473 9474 # The number of times a loop is unrolled, not counting the peeled iteration. 9475 # Minimum is 2 -- otherwise we're not unrolling at all. From testing with 9476 # JetStream3 (wasm tests), it's hard to get consistently better performance 9477 # than simply by unrolling by 3, regardless of loop size. 9478 - name: javascript.options.wasm_unroll_factor 9479 type: uint32_t 9480 value: 3 9481 mirror: always 9482 set_spidermonkey_pref: always 9483 9484 # Support for pretenuring allocations based on their allocation site. 9485 - name: javascript.options.site_based_pretenuring 9486 type: bool 9487 value: true 9488 mirror: always 9489 do_not_use_directly: true 9490 set_spidermonkey_pref: startup 9491 9492 #if defined(DEBUG) || defined(NIGHTLY_BUILD) || defined(JS_GC_ZEAL) 9493 # Enable extra poisoning of GC memory. 9494 - name: javascript.options.extra_gc_poisoning 9495 type: bool 9496 #ifdef DEBUG 9497 value: true 9498 #else 9499 value: false 9500 #endif 9501 mirror: always 9502 set_spidermonkey_pref: startup 9503 #endif 9504 9505 #if !defined(JS_CODEGEN_MIPS64) && !defined(JS_CODEGEN_LOONG64) 9506 # Spectre security vulnerability mitigations for the JS JITs. 9507 # 9508 # NOTE: The MIPS and LoongArch backends do not support these mitigations (and generally 9509 # do not need them). In that case, leave the pref unlisted with its 9510 # default value of false. 9511 - name: javascript.options.spectre.index_masking 9512 type: bool 9513 value: true 9514 mirror: always # LoadStartupJSPrefs 9515 do_not_use_directly: true 9516 9517 - name: javascript.options.spectre.object_mitigations 9518 type: bool 9519 value: true 9520 mirror: always # LoadStartupJSPrefs 9521 do_not_use_directly: true 9522 9523 - name: javascript.options.spectre.string_mitigations 9524 type: bool 9525 value: true 9526 mirror: always # LoadStartupJSPrefs 9527 do_not_use_directly: true 9528 9529 - name: javascript.options.spectre.value_masking 9530 type: bool 9531 value: true 9532 mirror: always # LoadStartupJSPrefs 9533 do_not_use_directly: true 9534 9535 - name: javascript.options.spectre.jit_to_cxx_calls 9536 type: bool 9537 value: false 9538 mirror: always # LoadStartupJSPrefs 9539 do_not_use_directly: true 9540 #endif // !defined(JS_CODEGEN_MIPSXX) && !defined(JS_CODEGEN_LOONG64) 9541 9542 # Separate pref to override the values of the Spectre-related prefs above for 9543 # isolated web content processes, where we don't need these mitigations. 9544 - name: javascript.options.spectre.disable_for_isolated_content 9545 type: bool 9546 value: true 9547 mirror: always 9548 9549 # Whether the W^X policy is enforced to mark JIT code pages as either writable 9550 # or executable but never both at the same time. OpenBSD defaults to W^X. 9551 - name: javascript.options.content_process_write_protect_code 9552 type: bool 9553 #if defined(XP_OPENBSD) 9554 value: true 9555 #else 9556 value: false 9557 #endif 9558 mirror: always 9559 9560 # Whether to use the XPCOM thread pool for JS helper tasks. 9561 - name: javascript.options.external_thread_pool 9562 type: bool 9563 value: true 9564 mirror: always 9565 do_not_use_directly: true 9566 9567 # Use the JS microtask queue for Promise jobs and other microtasks. 9568 - name: javascript.options.use_js_microtask_queue 9569 type: RelaxedAtomicBool 9570 value: true 9571 # Changing this mid process will break invariants and crash, however 9572 # making this mirror: once, and set_spidermonkey_pref: startup is 9573 # broken: See Bug 1989094 9574 mirror: always 9575 set_spidermonkey_pref: always 9576 9577 # Whether to use the off-thread script compilation and decoding. 9578 - name: javascript.options.parallel_parsing 9579 type: bool 9580 value: true 9581 mirror: always 9582 9583 # Whether to use fdlibm for Math.sin, Math.cos, and Math.tan. When 9584 # privacy.resistFingerprinting is true, this pref is ignored and fdlibm is used 9585 # anyway. 9586 - name: javascript.options.use_fdlibm_for_sin_cos_tan 9587 type: bool 9588 #if defined(XP_WIN) 9589 value: false 9590 #else 9591 value: true 9592 #endif 9593 mirror: always 9594 set_spidermonkey_pref: always 9595 9596 9597 # Whether to treat "ducktyped" error objects like `{message: "<message>", fileName: "foo", lineNumber: 1}` 9598 # as real Error objects during exception handling. 9599 - name: javascript.options.ducktyped_errors 9600 type: bool 9601 value: false 9602 mirror: always 9603 set_spidermonkey_pref: always 9604 9605 # Whether to support parsing '//(#@) source(Mapping)?URL=' pragmas. 9606 - name: javascript.options.source_pragmas 9607 type: bool 9608 value: true 9609 mirror: always 9610 9611 # asm.js 9612 - name: javascript.options.asmjs 9613 type: bool 9614 value: false 9615 mirror: always 9616 9617 # Whether to throw a TypeError if asm.js code hits validation failure. 9618 - name: javascript.options.throw_on_asmjs_validation_failure 9619 type: bool 9620 value: false 9621 mirror: always 9622 9623 # Whether to show a warning if asm.js is used. 9624 - name: javascript.options.warn_asmjs_deprecation 9625 type: bool 9626 value: true 9627 mirror: always 9628 set_spidermonkey_pref: always 9629 9630 # Whether to disable the jit within the main process 9631 - name: javascript.options.main_process_disable_jit 9632 type: bool 9633 #ifdef XP_IOS 9634 value: true 9635 #else 9636 value: false 9637 #endif 9638 mirror: always 9639 9640 #--------------------------------------------------------------------------- 9641 # Prefs starting with "layers." 9642 #--------------------------------------------------------------------------- 9643 9644 # Whether to disable acceleration for all widgets. 9645 - name: layers.acceleration.disabled 9646 type: bool 9647 value: false 9648 mirror: once 9649 do_not_use_directly: true 9650 # Instead, use gfxConfig::IsEnabled(Feature::HW_COMPOSITING). 9651 9652 # Whether to force acceleration on, ignoring blacklists. 9653 - name: layers.acceleration.force-enabled 9654 type: bool 9655 value: false 9656 mirror: once 9657 do_not_use_directly: true 9658 9659 # Whether we allow AMD switchable graphics. 9660 - name: layers.amd-switchable-gfx.enabled 9661 type: bool 9662 value: true 9663 mirror: once 9664 9665 # Whether to use async panning and zooming. 9666 - name: layers.async-pan-zoom.enabled 9667 type: bool 9668 value: true 9669 mirror: once 9670 do_not_use_directly: true 9671 9672 #ifdef XP_WIN 9673 - name: layers.d3d11.force-warp 9674 type: bool 9675 value: false 9676 mirror: once 9677 9678 - name: layers.d3d11.enable-blacklist 9679 type: bool 9680 value: true 9681 mirror: once 9682 #endif 9683 9684 # Enable DEAA antialiasing for transformed layers in the compositor. 9685 - name: layers.deaa.enabled 9686 type: RelaxedAtomicBool 9687 #if defined(MOZ_WIDGET_ANDROID) 9688 value: false 9689 #else 9690 value: true 9691 #endif 9692 mirror: always 9693 9694 # Force all possible layers to be always active layers. 9695 - name: layers.force-active 9696 type: bool 9697 value: false 9698 mirror: always 9699 9700 - name: layers.draw-mask-debug 9701 type: RelaxedAtomicBool 9702 value: false 9703 mirror: always 9704 9705 - name: layers.force-synchronous-resize 9706 type: RelaxedAtomicBool 9707 #ifdef MOZ_WAYLAND 9708 # We want to control it by nsWindow::SynchronouslyRepaintOnResize() on Linux/Wayland. 9709 value: false 9710 #else 9711 value: true 9712 #endif 9713 mirror: always 9714 9715 # If true, allow the parent process as a fallback for compositing due to an 9716 # unstable GPU process, otherwise simply crash the parent process. 9717 - name: layers.gpu-process.allow-fallback-to-parent 9718 type: bool 9719 value: @IS_NOT_NIGHTLY_BUILD@ 9720 mirror: once 9721 9722 - name: layers.gpu-process.enabled 9723 type: bool 9724 #if defined(XP_WIN) || defined(MOZ_WIDGET_ANDROID) || defined(XP_MACOSX) 9725 value: true 9726 #elif defined(MOZ_X11) 9727 value: false # we'd like this to be @IS_NIGHTLY_BUILD@, see Bug 1927058 9728 #else 9729 value: false 9730 #endif 9731 mirror: once 9732 9733 # If true, when the process is in the background, we refuse to launch the GPU 9734 # process and instead fail with a temporary error that we can recover from when 9735 # we enter the foreground and the GPU process launches. 9736 - name: layers.gpu-process.launch-in-background 9737 type: bool 9738 value: @IS_NOT_ANDROID@ 9739 mirror: always 9740 9741 # On Mac, enables using the `<Brand> GPU Helper` executable as the 9742 # GPU child process instead of the plugin-container executable. This does 9743 # not control if a GPU process is used. It controls which executable the GPU 9744 # process runs in on macOS when it is enabled. 9745 #if defined(XP_MACOSX) 9746 - name: layers.gpu-process-executable.enabled 9747 type: RelaxedAtomicBool 9748 value: true 9749 mirror: always 9750 #endif 9751 9752 - name: layers.gpu-process.force-enabled 9753 type: bool 9754 value: false 9755 mirror: once 9756 9757 - name: layers.gpu-process.ipc_reply_timeout_ms 9758 type: int32_t 9759 value: 10000 9760 mirror: once 9761 9762 - name: layers.gpu-process.extend_ipc_reply_timeout_ms 9763 type: int32_t 9764 value: 20000 9765 mirror: once 9766 9767 # How many additional attempts to launch the GPU process we try if we fail 9768 # during process launch, before any configuration is attempted. 9769 - name: layers.gpu-process.max_launch_attempts 9770 type: RelaxedAtomicInt32 9771 value: 2 9772 mirror: always 9773 9774 # How many unstable GPU process restarts we allow for a given configuration. 9775 - name: layers.gpu-process.max_restarts 9776 type: RelaxedAtomicInt32 9777 value: 6 9778 mirror: always 9779 9780 # How many frames we must render before declaring the GPU process stable, and 9781 # allow restarts without it counting against our maximum restarts. 9782 - name: layers.gpu-process.stable.frame-threshold 9783 type: RelaxedAtomicUint32 9784 value: 10 9785 mirror: always 9786 9787 # How many milliseconds the GPU process must have lived before we accept that 9788 # it is stable, and allow restarts without it counting against our maximum 9789 # restarts. 9790 - name: layers.gpu-process.stable.min-uptime-ms 9791 type: RelaxedAtomicInt32 9792 value: 30000 9793 mirror: always 9794 9795 # Note: This pref will only be used if it is less than layers.gpu-process.max_restarts. 9796 - name: layers.gpu-process.max_restarts_with_decoder 9797 type: RelaxedAtomicInt32 9798 value: 0 9799 mirror: always 9800 9801 - name: layers.gpu-process.startup_timeout_ms 9802 type: int32_t 9803 value: 10000 9804 mirror: once 9805 9806 - name: layers.gpu-process.crash-also-crashes-browser 9807 type: bool 9808 value: false 9809 mirror: always 9810 9811 # Whether to animate simple opacity and transforms on the compositor. 9812 - name: layers.offmainthreadcomposition.async-animations 9813 type: bool 9814 value: true 9815 mirror: always 9816 9817 # Whether to log information about off main thread animations to stderr. 9818 - name: layers.offmainthreadcomposition.log-animations 9819 type: bool 9820 value: false 9821 mirror: always 9822 9823 - name: layers.offmainthreadcomposition.force-disabled 9824 type: bool 9825 value: false 9826 mirror: once 9827 9828 # Compositor target frame rate. NOTE: If vsync is enabled the compositor 9829 # frame rate will still be capped. 9830 # -1 -> default (match layout.frame_rate or 60 FPS) 9831 # 0 -> full-tilt mode: Recomposite even if not transaction occured. 9832 - name: layers.offmainthreadcomposition.frame-rate 9833 type: RelaxedAtomicInt32 9834 value: -1 9835 mirror: always 9836 9837 #ifdef XP_WIN 9838 - name: layers.prefer-opengl 9839 type: bool 9840 value: false 9841 mirror: once 9842 #endif 9843 9844 # Copy-on-write canvas. 9845 - name: layers.shared-buffer-provider.enabled 9846 type: RelaxedAtomicBool 9847 value: true 9848 mirror: always 9849 9850 - name: layers.recycle-allocator-rdd 9851 type: bool 9852 value: true 9853 mirror: once 9854 9855 #ifdef XP_DARWIN 9856 - name: layers.iosurfaceimage.recycle-limit 9857 type: RelaxedAtomicUint32 9858 value: 15 9859 mirror: always 9860 #endif 9861 9862 #--------------------------------------------------------------------------- 9863 # Prefs starting with "layout." 9864 #--------------------------------------------------------------------------- 9865 9866 # Debug-only pref to force enable the AccessibleCaret. If you want to 9867 # control AccessibleCaret by mouse, you'll need to set 9868 # "layout.accessiblecaret.hide_carets_for_mouse_input" to false. 9869 - name: layout.accessiblecaret.enabled 9870 type: bool 9871 value: false 9872 mirror: always 9873 9874 # Enable the accessible caret on platforms/devices 9875 # that we detect have touch support. Note that this pref is an 9876 # additional way to enable the accessible carets, rather than 9877 # overriding the layout.accessiblecaret.enabled pref. 9878 - name: layout.accessiblecaret.enabled_on_touch 9879 type: bool 9880 value: true 9881 mirror: always 9882 9883 # By default, carets become tilt only when they are overlapping. 9884 - name: layout.accessiblecaret.always_tilt 9885 type: bool 9886 value: false 9887 mirror: always 9888 9889 # Show caret in cursor mode when long tapping on an empty content. This 9890 # also changes the default update behavior in cursor mode, which is based 9891 # on the emptiness of the content, into something more heuristic. See 9892 # AccessibleCaretManager::UpdateCaretsForCursorMode() for the details. 9893 - name: layout.accessiblecaret.caret_shown_when_long_tapping_on_empty_content 9894 type: bool 9895 value: false 9896 mirror: always 9897 9898 # 0 = by default, always hide carets for selection changes due to JS calls. 9899 # 1 = update any visible carets for selection changes due to JS calls, 9900 # but don't show carets if carets are hidden. 9901 # 2 = always show carets for selection changes due to JS calls. 9902 - name: layout.accessiblecaret.script_change_update_mode 9903 type: int32_t 9904 value: 0 9905 mirror: always 9906 9907 # Allow one caret to be dragged across the other caret without any limitation. 9908 # This matches the built-in convention for all desktop platforms. 9909 - name: layout.accessiblecaret.allow_dragging_across_other_caret 9910 type: bool 9911 value: true 9912 mirror: always 9913 9914 # Optionally provide haptic feedback on long-press selection events. 9915 - name: layout.accessiblecaret.hapticfeedback 9916 type: bool 9917 value: false 9918 mirror: always 9919 9920 # Smart phone-number selection on long-press is not enabled by default. 9921 - name: layout.accessiblecaret.extend_selection_for_phone_number 9922 type: bool 9923 value: false 9924 mirror: always 9925 9926 # Keep the accessible carets hidden when the user is using mouse input (as 9927 # opposed to touch/pen/etc.). 9928 - name: layout.accessiblecaret.hide_carets_for_mouse_input 9929 type: bool 9930 value: true 9931 mirror: always 9932 9933 # CSS attributes (width, height, margin-left) of the AccessibleCaret in CSS 9934 # pixels. 9935 - name: layout.accessiblecaret.width 9936 type: float 9937 value: 34.0f 9938 mirror: always 9939 9940 - name: layout.accessiblecaret.height 9941 type: float 9942 value: 36.0f 9943 mirror: always 9944 9945 - name: layout.accessiblecaret.margin-left 9946 type: float 9947 value: -18.5f 9948 mirror: always 9949 9950 - name: layout.accessiblecaret.transition-duration 9951 type: float 9952 value: 250.0f 9953 mirror: always 9954 9955 # Simulate long tap events to select words. Mainly used in manual testing 9956 # with mouse. 9957 - name: layout.accessiblecaret.use_long_tap_injector 9958 type: bool 9959 value: false 9960 mirror: always 9961 9962 # To support magnify glass, whether we dispatch additional chrome event such as 9963 # dragcaret. 9964 - name: layout.accessiblecaret.magnifier.enabled 9965 type: bool 9966 value: @IS_ANDROID@ 9967 mirror: always 9968 9969 # One of several prefs affecting the maximum area to pre-render when animating 9970 # a large element on the compositor. 9971 # This pref enables transform (and transform like properties) animations on a 9972 # large element run on the compositor with rendering partial area of the 9973 # element on the main thread instead of rendering the whole area. Once the 9974 # animation tried to composite out of the partial rendered area, the animation 9975 # is rendered again with the latest visible partial area. 9976 - name: layout.animation.prerender.partial 9977 type: RelaxedAtomicBool 9978 value: false 9979 mirror: always 9980 9981 # One of several prefs affecting the maximum area to pre-render when animating 9982 # a large element on the compositor. 9983 # This value is applied to both x and y axes and a perfect square contructed 9984 # by the greater axis value which will be capped by the absolute limits is used 9985 # for the partial pre-render area. 9986 - name: layout.animation.prerender.viewport-ratio-limit 9987 type: AtomicFloat 9988 value: 1.125f 9989 mirror: always 9990 9991 # One of several prefs affecting the maximum area to pre-render when animating 9992 # a large element on the compositor. 9993 - name: layout.animation.prerender.absolute-limit-x 9994 type: RelaxedAtomicUint32 9995 value: 4096 9996 mirror: always 9997 9998 # One of several prefs affecting the maximum area to pre-render when animating 9999 # a large element on the compositor. 10000 - name: layout.animation.prerender.absolute-limit-y 10001 type: RelaxedAtomicUint32 10002 value: 4096 10003 mirror: always 10004 10005 # Test-only pref, if this is true, partial pre-rendered transform animations 10006 # get stuck when it reaches to the pre-rendered boundaries and the pre-render 10007 # region is never updated. 10008 - name: layout.animation.prerender.partial.jank 10009 type: RelaxedAtomicBool 10010 value: false 10011 mirror: always 10012 10013 # Whether to enable CSS Anchor Positioning support. 10014 # https://drafts.csswg.org/css-anchor-position-1/ 10015 - name: layout.css.anchor-positioning.enabled 10016 type: RelaxedAtomicBool 10017 value: true 10018 mirror: always 10019 rust: true 10020 10021 # Whether to enable position-try-order 10022 - name: layout.css.anchor-positioning.position-try-order.enabled 10023 type: RelaxedAtomicBool 10024 value: true 10025 mirror: always 10026 rust: true 10027 10028 # Whether to enable generalized CSS Attr Support. If this pref is set to false 10029 # we treat attr as a regular function with support only for the `content` css 10030 # property. If it is set to true, attr is parsed as a subtitution function. 10031 # https://drafts.csswg.org/css-values-5/#attr-notation 10032 - name: layout.css.attr.enabled 10033 type: RelaxedAtomicBool 10034 value: false 10035 mirror: always 10036 rust: true 10037 10038 # Whether to enable CSS @custom-media 10039 # https://drafts.csswg.org/mediaqueries-5/ 10040 # TODO(emilio): Needs more tests before enabling. 10041 - name: layout.css.custom-media.enabled 10042 type: RelaxedAtomicBool 10043 value: false 10044 mirror: always 10045 rust: true 10046 10047 # Whether to enable CSS Module Scripts support. 10048 # https://html.spec.whatwg.org/#creating-a-css-module-script 10049 - name: layout.css.module-scripts.enabled 10050 type: RelaxedAtomicBool 10051 value: true 10052 mirror: always 10053 10054 # Override DPI. A value of -1 means use the maximum of 96 and the system DPI. 10055 # A value of 0 means use the system DPI. A positive value is used as the DPI. 10056 # This sets the physical size of a device pixel and thus controls the 10057 # interpretation of physical units such as "pt". 10058 - name: layout.css.dpi 10059 type: int32_t 10060 value: -1 10061 mirror: always 10062 10063 # Whether to always underline links. 10064 - name: layout.css.always_underline_links 10065 type: RelaxedAtomicBool 10066 value: false 10067 mirror: always 10068 rust: true 10069 10070 # Whether @starting-style is enabled? 10071 - name: layout.css.starting-style-at-rules.enabled 10072 type: RelaxedAtomicBool 10073 value: true 10074 mirror: always 10075 rust: true 10076 10077 # Whether style() container queries are enabled 10078 - name: layout.css.style-queries.enabled 10079 type: RelaxedAtomicBool 10080 value: false 10081 mirror: always 10082 rust: true 10083 10084 # Should we look for counter ancestor scopes first? 10085 - name: layout.css.counter-ancestor-scope.enabled 10086 type: bool 10087 value: true 10088 mirror: always 10089 10090 # Whether the `-moz-control-character-visibility` property is exposed to 10091 # content. 10092 # 10093 # Only for testing purposes. 10094 - name: layout.css.moz-control-character-visibility.enabled 10095 type: RelaxedAtomicBool 10096 value: false 10097 mirror: always 10098 rust: true 10099 10100 # Whether the `-moz-appearance` property is exposed to content. 10101 - name: layout.css.moz-appearance.enabled 10102 type: RelaxedAtomicBool 10103 value: true 10104 mirror: always 10105 rust: true 10106 10107 # Whether the `-moz-appearance` property is exposed to CSSStyleProperties. 10108 - name: layout.css.moz-appearance.webidl.enabled 10109 type: RelaxedAtomicBool 10110 value: false 10111 mirror: always 10112 10113 # Controls the transparency of the initial about:blank document. Generally you 10114 # don't ever want a white flash in dark mode, but due to backwards compat we 10115 # have some extra control over this, for now at least. 10116 # 10117 # See https://github.com/w3c/csswg-drafts/issues/9624 for iframes. 10118 # 10119 # Values: 10120 # 1: content-inaccessible top-level only. 10121 # 2: frames and content-inaccessible top-level only. 10122 # 3: always 10123 # Others: don't treat this document specially. 10124 - name: layout.css.initial-document-transparency 10125 type: RelaxedAtomicInt32 10126 value: 3 10127 mirror: always 10128 10129 # The minimum contrast ratio between the accent color background and white. 10130 # 10131 # We don't use this for text, so we need a contrast of at least AA (for user 10132 # interface components and graphical objects), which per WCAG is 3:1. 10133 # 10134 # However that causes some colors that are realistically fine to get darkened, 10135 # so we lower it a little bit. Eventually we should maybe use something like 10136 # APCA or so perhaps, see: 10137 # 10138 # * https://ruitina.com/apca-accessible-colour-contrast/ 10139 # * https://github.com/w3c/csswg-drafts/issues/7937 10140 # 10141 # See also: 10142 # 10143 # * https://accent-color.glitch.me/ 10144 # 10145 # For testing this. 10146 - name: layout.css.accent-color.min-contrast-ratio 10147 type: AtomicFloat 10148 value: 2.4 10149 mirror: always 10150 10151 # The target contrast ratio between the accent color foreground and background 10152 # colors when darkening. 10153 # 10154 # We aim a bit further than the minimum contrast ratio, which seems to provide 10155 # nice results in practice. 10156 - name: layout.css.accent-color.darkening-target-contrast-ratio 10157 type: AtomicFloat 10158 value: 6.0 10159 mirror: always 10160 10161 # Is the codepath for using cached scrollbar styles enabled? 10162 - name: layout.css.cached-scrollbar-styles.enabled 10163 type: bool 10164 value: true 10165 mirror: always 10166 10167 # Are implicit tracks in computed grid templates serialized? 10168 - name: layout.css.serialize-grid-implicit-tracks 10169 type: RelaxedAtomicBool 10170 value: true 10171 mirror: always 10172 10173 # Whether the system-ui generic family is enabled. 10174 - name: layout.css.system-ui.enabled 10175 type: RelaxedAtomicBool 10176 value: true 10177 mirror: always 10178 rust: true 10179 10180 # Set the number of device pixels per CSS pixel. A value <= 0 means choose 10181 # automatically based on user settings for the platform (e.g., "UI scale factor" 10182 # on Mac). If browser.display.os-zoom-behavior == 1, then a positive value 10183 # will be multiplied by the text scale factor; otherwise a positive value is 10184 # used as-is. This controls the size of a CSS "px" at 100% full-zoom. 10185 # The size of system fonts is also changed in proportion with the change in 10186 # "px" sizes. Use "ui.textScaleFactor" instead to only change the size of "px". 10187 # This is only used for windows on the screen, not for printing. 10188 - name: layout.css.devPixelsPerPx 10189 type: AtomicFloat 10190 value: -1.0f 10191 mirror: always 10192 10193 # Is support for CSS backdrop-filter enabled? 10194 - name: layout.css.backdrop-filter.enabled 10195 type: bool 10196 value: true 10197 mirror: always 10198 10199 # Do we override the blocklist for CSS backdrop-filter? 10200 - name: layout.css.backdrop-filter.force-enabled 10201 type: bool 10202 value: false 10203 mirror: always 10204 10205 # Is support for shape() enabled? 10206 - name: layout.css.basic-shape-shape.enabled 10207 type: RelaxedAtomicBool 10208 value: true 10209 mirror: always 10210 rust: true 10211 10212 # Is support for the contrast-color() function enabled? 10213 - name: layout.css.contrast-color.enabled 10214 type: RelaxedAtomicBool 10215 value: true 10216 mirror: always 10217 rust: true 10218 10219 # Whether alt text in content is enabled. 10220 - name: layout.css.content.alt-text.enabled 10221 type: RelaxedAtomicBool 10222 value: true 10223 mirror: always 10224 rust: true 10225 10226 # Should stray control characters be rendered visibly? 10227 - name: layout.css.control-characters.visible 10228 type: RelaxedAtomicBool 10229 value: @IS_NOT_RELEASE_OR_BETA@ 10230 mirror: always 10231 rust: true 10232 10233 # Is support for GeometryUtils.convert*FromNode enabled? 10234 - name: layout.css.convertFromNode.enabled 10235 type: bool 10236 value: @IS_NOT_RELEASE_OR_BETA@ 10237 mirror: always 10238 10239 - name: layout.css.cross-fade.enabled 10240 type: RelaxedAtomicBool 10241 value: false 10242 mirror: always 10243 rust: true 10244 10245 # Is support for light-dark() on images in content enabled? 10246 - name: layout.css.light-dark.images.enabled 10247 type: RelaxedAtomicBool 10248 value: false 10249 mirror: always 10250 rust: true 10251 10252 # Is support for fit-content() enabled? 10253 - name: layout.css.fit-content-function.enabled 10254 type: RelaxedAtomicBool 10255 value: false 10256 mirror: always 10257 rust: true 10258 10259 # Whether to use tight bounds for floating ::first-letter (legacy Gecko behavior) 10260 # or loose bounds based on overall font metrics (WebKit/Blink-like behavior)? 10261 # Values mean: 10262 # 1 legacy Gecko behavior (tight bounds) 10263 # 0 loose typographic bounds (similar to webkit/blink) 10264 # -1 auto behavior: use loose bounds if reduced line-height (<1em) or negative 10265 # block-start margin is present; otherwise use tight bounds. 10266 - name: layout.css.floating-first-letter.tight-glyph-bounds 10267 type: int32_t 10268 #ifdef NIGHTLY_BUILD 10269 value: -1 10270 #else 10271 value: 1 10272 #endif 10273 mirror: always 10274 10275 # Is support for the @font-palette-values rule and font-palette property enabled? 10276 - name: layout.css.font-palette.enabled 10277 type: RelaxedAtomicBool 10278 value: true 10279 mirror: always 10280 rust: true 10281 10282 # Is support for variation fonts enabled? 10283 - name: layout.css.font-variations.enabled 10284 type: RelaxedAtomicBool 10285 value: true 10286 mirror: always 10287 rust: true 10288 10289 # Is support for the tech() function in the @font-face src descriptor enabled? 10290 - name: layout.css.font-tech.enabled 10291 type: RelaxedAtomicBool 10292 value: true 10293 mirror: always 10294 rust: true 10295 10296 # Is support for font-variant-emoji enabled? 10297 - name: layout.css.font-variant-emoji.enabled 10298 type: RelaxedAtomicBool 10299 value: true 10300 mirror: always 10301 rust: true 10302 10303 # Visibility level of font families available to CSS font-matching: 10304 # 1 - only base system fonts 10305 # 2 - also fonts from optional language packs 10306 # 3 - also user-installed fonts 10307 - name: layout.css.font-visibility 10308 type: RelaxedAtomicInt32 10309 value: 3 10310 mirror: always 10311 10312 # Is support for GeometryUtils.getBoxQuads enabled? 10313 - name: layout.css.getBoxQuads.enabled 10314 type: bool 10315 value: @IS_NOT_RELEASE_OR_BETA@ 10316 mirror: always 10317 10318 # Is support for (linear|radial|conic)-gradient color interpolation methods enabled? 10319 - name: layout.css.gradient-color-interpolation-method.enabled 10320 type: RelaxedAtomicBool 10321 value: true 10322 mirror: always 10323 rust: true 10324 10325 # Should we propagate baseline alignment information from a parent grid into 10326 # its subgrids? 10327 - name: layout.css.grid-subgrid-baselines.enabled 10328 type: RelaxedAtomicBool 10329 value: @IS_NIGHTLY_BUILD@ 10330 mirror: always 10331 10332 # Is support for CSS masonry layout enabled? 10333 - name: layout.css.grid-template-masonry-value.enabled 10334 type: RelaxedAtomicBool 10335 #if defined(NIGHTLY_BUILD) || defined(MOZ_THUNDERBIRD) 10336 value: true 10337 #else 10338 value: false 10339 #endif 10340 mirror: always 10341 rust: true 10342 10343 # Is support for :heading and :heading() pseudo classes enabled? 10344 - name: layout.css.heading-selector.enabled 10345 type: RelaxedAtomicBool 10346 value: false 10347 mirror: always 10348 rust: true 10349 10350 # Is support for CSS initial-letter property enabled? 10351 - name: layout.css.initial-letter.enabled 10352 type: bool 10353 value: false 10354 mirror: always 10355 10356 # Is eager first-letter processing during intrinsic size computation enabled? 10357 - name: layout.css.intrinsic-size-first-letter.enabled 10358 type: bool 10359 value: true 10360 mirror: always 10361 10362 # Which model to use for CSS letter-spacing: 10363 # 0 - Gecko legacy model, spacing added to trailing side of letter 10364 # 1 - WebKit/Blink-compatible, spacing always added to right-hand side 10365 # 2 - Symmetrical spacing, half added to each side 10366 - name: layout.css.letter-spacing.model 10367 type: int32_t 10368 #if defined(MOZ_DEV_EDITION) || defined(EARLY_BETA_OR_EARLIER) 10369 value: 2 10370 #else 10371 value: 0 10372 #endif 10373 mirror: always 10374 10375 # Is support for motion-path url enabled? 10376 - name: layout.css.motion-path-url.enabled 10377 type: RelaxedAtomicBool 10378 value: true 10379 mirror: always 10380 rust: true 10381 10382 # Pref to control whether the ::marker property restrictions defined in [1] 10383 # apply. 10384 # 10385 # [1]: https://drafts.csswg.org/css-pseudo-4/#selectordef-marker 10386 - name: layout.css.marker.restricted 10387 type: RelaxedAtomicBool 10388 value: true 10389 mirror: always 10390 rust: true 10391 10392 # Is -moz-osx-font-smoothing enabled? (Only supported in OSX builds) 10393 - name: layout.css.osx-font-smoothing.enabled 10394 type: bool 10395 #if defined(XP_MACOSX) 10396 value: true 10397 #else 10398 value: false 10399 #endif 10400 mirror: always 10401 10402 # Is support for CSS overflow: -moz-hidden-unscrollable enabled 10403 - name: layout.css.overflow-moz-hidden-unscrollable.enabled 10404 type: RelaxedAtomicBool 10405 value: false 10406 mirror: always 10407 rust: true 10408 10409 # Enables support for @margin rules. 10410 - name: layout.css.margin-rules.enabled 10411 type: RelaxedAtomicBool 10412 value: false 10413 mirror: always 10414 rust: true 10415 10416 # Whether Properties and Values is enabled 10417 - name: layout.css.properties-and-values.enabled 10418 type: RelaxedAtomicBool 10419 value: true 10420 mirror: always 10421 rust: true 10422 10423 # Whether @scope rule is enabled 10424 - name: layout.css.at-scope.enabled 10425 type: RelaxedAtomicBool 10426 value: true 10427 mirror: always 10428 rust: true 10429 10430 # An override for prefers-color-scheme for content documents. 10431 # 0: Dark 10432 # 1: Light 10433 # 2: Auto (system color scheme unless overridden by browser theme) 10434 - name: layout.css.prefers-color-scheme.content-override 10435 type: RelaxedAtomicInt32 10436 value: 2 10437 mirror: always 10438 10439 # Dictates whether or not the prefers-reduced-transparency media query is enabled. 10440 - name: layout.css.prefers-reduced-transparency.enabled 10441 type: RelaxedAtomicBool 10442 value: false 10443 mirror: always 10444 rust: true 10445 10446 # Dictates whether or not the inverted-colors media query is enabled. 10447 - name: layout.css.inverted-colors.enabled 10448 type: RelaxedAtomicBool 10449 value: false 10450 mirror: always 10451 rust: true 10452 10453 # Is support for -moz-prefixed animation properties enabled? 10454 - name: layout.css.prefixes.animations 10455 type: bool 10456 value: true 10457 mirror: always 10458 10459 # Is support for -moz-border-image enabled? 10460 - name: layout.css.prefixes.border-image 10461 type: bool 10462 value: true 10463 mirror: always 10464 10465 # Is support for -moz-box-sizing enabled? 10466 - name: layout.css.prefixes.box-sizing 10467 type: bool 10468 value: true 10469 mirror: always 10470 10471 # Is support for -moz-prefixed font feature properties enabled? 10472 - name: layout.css.prefixes.font-features 10473 type: bool 10474 value: true 10475 mirror: always 10476 10477 # Is support for -moz-prefixed transform properties enabled? 10478 - name: layout.css.prefixes.transforms 10479 type: bool 10480 value: true 10481 mirror: always 10482 10483 # Is support for -moz-prefixed transition properties enabled? 10484 - name: layout.css.prefixes.transitions 10485 type: bool 10486 value: true 10487 mirror: always 10488 10489 # Enable relative color syntax: https://drafts.csswg.org/css-color-5/#relative-colors 10490 - name: layout.css.relative-color-syntax.enabled 10491 type: RelaxedAtomicBool 10492 value: true 10493 mirror: always 10494 rust: true 10495 10496 # Is CSS error reporting enabled? 10497 - name: layout.css.report_errors 10498 type: bool 10499 value: true 10500 mirror: always 10501 10502 # Are inter-character ruby annotations enabled? 10503 - name: layout.css.ruby.intercharacter.enabled 10504 type: bool 10505 value: false 10506 mirror: always 10507 10508 # Em-height scaling percentage used for ruby positioning: 10509 # 0 means use legacy behavior (based on line-box height); 10510 # 100 to use ascent/descent normalized to a total of 1em; 10511 # larger values will scale the em height accordingly. 10512 # The used value (if non-zero) is clamped to [100, 200] to 10513 # avoid sending annotations hugely far away from the base. 10514 - name: layout.css.ruby.normalize-metrics-factor 10515 type: uint32_t 10516 #ifdef NIGHTLY_BUILD 10517 value: 100 10518 #else 10519 value: 0 10520 #endif 10521 mirror: always 10522 10523 - name: layout.css.scroll-snap.damping-ratio 10524 type: AtomicFloat 10525 value: 1.0f 10526 mirror: always 10527 10528 # Tuning of the smooth scroll motion used by CSSOM-View scroll-behavior. 10529 # Spring-constant controls the strength of the simulated MSD 10530 # (Mass-Spring-Damper). 10531 - name: layout.css.scroll-snap.spring-constant 10532 type: AtomicFloat 10533 value: 250.0f 10534 mirror: always 10535 10536 # If enabled, CSSOM-View scroll-behavior uses the same physics as 10537 # scroll animations for user input (mousewheel or keyboard), rather 10538 # than the snappier-feeling scroll snap physics. 10539 - name: layout.css.scroll-behavior.same-physics-as-user-input 10540 type: bool 10541 value: false 10542 mirror: always 10543 10544 # Whether the scroll-driven animations generated by CSS is enabled. This 10545 # also include animation-timeline property. 10546 - name: layout.css.scroll-driven-animations.enabled 10547 type: RelaxedAtomicBool 10548 value: @IS_NIGHTLY_BUILD@ 10549 mirror: always 10550 rust: true 10551 10552 # When selecting the snap point for CSS scroll snapping, the velocity of the 10553 # scroll frame is clamped to this speed, in CSS pixels / s. 10554 - name: layout.css.scroll-snap.prediction-max-velocity 10555 type: RelaxedAtomicInt32 10556 value: 2000 10557 mirror: always 10558 10559 # When selecting the snap point for CSS scroll snapping, the velocity of the 10560 # scroll frame is integrated over this duration, in seconds. The snap point 10561 # best suited for this position is selected, enabling the user to perform fling 10562 # gestures. 10563 - name: layout.css.scroll-snap.prediction-sensitivity 10564 type: AtomicFloat 10565 value: 0.750f 10566 mirror: always 10567 10568 # Whether container scroll-state queries are enabled. 10569 - name: layout.css.scroll-state.enabled 10570 type: RelaxedAtomicBool 10571 value: false 10572 mirror: always 10573 rust: true 10574 10575 # Stylo thread-pool size. 10576 # Negative means auto, 0 disables the thread-pool (main-thread styling), other 10577 # numbers override as specified. 10578 # Note that 1 still creates a thread-pool of one thread! 10579 - name: layout.css.stylo-threads 10580 type: RelaxedAtomicInt32 10581 value: -1 10582 mirror: always 10583 rust: true 10584 10585 # Stylo work unit size. This is the amount of nodes we'll process in a single 10586 # unit of work of the thread-pool. 10587 # 10588 # Larger values will increase style sharing cache hits and general DOM locality 10589 # at the expense of decreased opportunities for parallelism. There are some 10590 # measurements in bug 1385982 comments 11, 12, 13 that investigate some 10591 # slightly different values for the work unit size. 10592 # 10593 # If the size is significantly increased, make sure to also review 10594 # stylo-local-work-queue prefs, since we might end up doing too much work 10595 # sequentially. 10596 # 10597 # A value of 0 disables parallelism altogether. 10598 - name: layout.css.stylo-work-unit-size 10599 type: RelaxedAtomicUint32 10600 value: 16 10601 mirror: always 10602 rust: true 10603 10604 # The minimum amount of work that a thread doing styling will try to keep 10605 # locally before sending work to other threads, in a worker. 10606 - name: layout.css.stylo-local-work-queue.in-worker 10607 type: RelaxedAtomicUint32 10608 value: 0 10609 mirror: always 10610 rust: true 10611 10612 # As above but for the main thread. The main thread can't really steal from 10613 # other threads so it might want a bigger min queue size before giving work to 10614 # other threads. 10615 - name: layout.css.stylo-local-work-queue.in-main-thread 10616 type: RelaxedAtomicUint32 10617 value: 32 10618 mirror: always 10619 rust: true 10620 10621 # Are counters for implemented CSS properties enabled? 10622 - name: layout.css.use-counters.enabled 10623 type: bool 10624 value: true 10625 mirror: always 10626 10627 # Are counters for unimplemented CSS properties enabled? 10628 - name: layout.css.use-counters-unimplemented.enabled 10629 type: RelaxedAtomicBool 10630 value: true 10631 mirror: always 10632 rust: true 10633 10634 # Should the :visited selector ever match (otherwise :link matches instead)? 10635 - name: layout.css.visited_links_enabled 10636 type: bool 10637 value: true 10638 mirror: always 10639 10640 # The margin used for detecting relevancy for `content-visibility: auto`. 10641 - name: layout.css.content-visibility-relevant-content-margin 10642 type: float 10643 value: 50 # 50% 10644 mirror: always 10645 10646 # Whether the "modern" uppercase mapping of ß to ẞ (rather than SS) is used. 10647 - name: layout.css.text-transform.uppercase-eszett.enabled 10648 type: bool 10649 value: false 10650 mirror: always 10651 10652 # Is support for CSS text-autospace property enabled? 10653 # https://drafts.csswg.org/css-text-4/#text-autospace-property 10654 - name: layout.css.text-autospace.enabled 10655 type: bool 10656 value: true 10657 mirror: always 10658 10659 # Maximum number of lines to try balancing. 10660 - name: layout.css.text-wrap-balance.limit 10661 type: int32_t 10662 value: 10 10663 mirror: always 10664 10665 - name: layout.css.text-wrap-balance-after-clamp.enabled 10666 type: bool 10667 value: true 10668 mirror: always 10669 10670 - name: layout.css.text-align.justify-only-after-last-tab 10671 type: bool 10672 value: true 10673 mirror: always 10674 10675 - name: layout.css.text-decoration-inset.enabled 10676 type: RelaxedAtomicBool 10677 value: true 10678 mirror: always 10679 rust: true 10680 10681 # Support for the css Zoom property. 10682 - name: layout.css.zoom.enabled 10683 type: RelaxedAtomicBool 10684 value: true 10685 mirror: always 10686 rust: true 10687 10688 # CSS for android picture-in-picture. See bug 1940052. 10689 - name: layout.css.android-pip.enabled 10690 type: RelaxedAtomicBool 10691 value: true 10692 mirror: always 10693 10694 # The maximum width or height of the cursor we should allow when intersecting 10695 # the UI, in CSS pixels. 10696 - name: layout.cursor.block.max-size 10697 type: uint32_t 10698 value: 32 10699 mirror: always 10700 10701 - name: layout.cursor.disable-for-popups 10702 type: bool 10703 value: true 10704 mirror: always 10705 10706 - name: layout.display-list.build-twice 10707 type: RelaxedAtomicBool 10708 value: false 10709 mirror: always 10710 10711 # Toggle retaining display lists between paints. 10712 - name: layout.display-list.retain 10713 type: RelaxedAtomicBool 10714 value: true 10715 mirror: always 10716 10717 # Toggle retaining display lists between paints. 10718 - name: layout.display-list.retain.chrome 10719 type: RelaxedAtomicBool 10720 value: true 10721 mirror: always 10722 10723 - name: layout.display-list.retain.sc 10724 type: RelaxedAtomicBool 10725 value: false 10726 mirror: always 10727 10728 # Set the maximum number of modified frames allowed before doing a full 10729 # display list rebuild. 10730 - name: layout.display-list.rebuild-frame-limit 10731 type: RelaxedAtomicUint32 10732 value: 500 10733 mirror: always 10734 10735 # Pref to dump the display list to the log. Useful for debugging drawing. 10736 - name: layout.display-list.dump 10737 type: RelaxedAtomicBool 10738 value: false 10739 mirror: always 10740 10741 # Pref to dump the display list to the log. Useful for debugging drawing. 10742 - name: layout.display-list.dump-content 10743 type: RelaxedAtomicBool 10744 value: false 10745 mirror: always 10746 10747 # Pref to dump the display list to the log. Useful for debugging drawing. 10748 - name: layout.display-list.dump-parent 10749 type: RelaxedAtomicBool 10750 value: false 10751 mirror: always 10752 10753 - name: layout.display-list.show-rebuild-area 10754 type: RelaxedAtomicBool 10755 value: false 10756 mirror: always 10757 10758 - name: layout.display-list.improve-fragmentation 10759 type: RelaxedAtomicBool 10760 value: true 10761 mirror: always 10762 10763 # Are dynamic reflow roots enabled? 10764 - name: layout.dynamic-reflow-roots.enabled 10765 type: bool 10766 value: @IS_EARLY_BETA_OR_EARLIER@ 10767 mirror: always 10768 10769 # Enables the mechanism to optimize away flex item's final reflow. 10770 # Warning: Disabling the pref will impact the performance. This is useful only for 10771 # debugging flexbox issues. 10772 - name: layout.flexbox.item-final-reflow-optimization.enabled 10773 type: bool 10774 value: true 10775 mirror: always 10776 10777 # Enables the <input type=search> custom layout frame with a clear icon. 10778 # Still needs tests and a web-exposed way to remove that icon, see bug 1654288. 10779 - name: layout.forms.input-type-search.enabled 10780 type: bool 10781 value: false 10782 mirror: always 10783 10784 # Enables the Reveal Password button inside a <input type=password>. 10785 - name: layout.forms.reveal-password-button.enabled 10786 type: bool 10787 value: false 10788 mirror: always 10789 10790 # If enabled, textareas won't include 'overflow:auto' scrollbars in their 10791 # block-axis size (usually height). 10792 - name: layout.forms.textarea-sizing-excludes-auto-scrollbar.enabled 10793 type: bool 10794 value: true 10795 mirror: always 10796 10797 # Pref to control browser frame rate, in Hz. A value <= 0 means choose 10798 # automatically based on knowledge of the platform (or 60Hz if no platform- 10799 # specific information is available). 10800 - name: layout.frame_rate 10801 type: RelaxedAtomicInt32 10802 value: -1 10803 mirror: always 10804 10805 # If it has been this many frame periods since a refresh, assume that painting 10806 # is quiescent (will not happen again soon). 10807 - name: layout.idle_period.required_quiescent_frames 10808 type: uint32_t 10809 value: 2 10810 mirror: always 10811 10812 # The amount of time (milliseconds) needed between an idle period's 10813 # end and the start of the next tick to avoid jank. 10814 - name: layout.idle_period.time_limit 10815 type: uint32_t 10816 value: 1 10817 mirror: always 10818 10819 # The minimum amount of time (milliseconds) required to be remaining 10820 # in the current vsync interval for us to attempt an extra tick, or 10821 # <0 to disable extra ticks entirely. 10822 - name: layout.extra-tick.minimum-ms 10823 type: int32_t 10824 value: 4 10825 mirror: always 10826 10827 # Whether to load the broken image icon eagerly. This is mostly needed for 10828 # reftests, since the broken image icon doesn't block the load event and thus 10829 # there's no easy way to guarantee it's loaded. 10830 - name: layout.image.eager_broken_image_icon 10831 type: bool 10832 value: false 10833 mirror: always 10834 10835 # Enable/disable interruptible reflow, which allows reflows to stop 10836 # before completion (and display the partial results) when user events 10837 # are pending. 10838 - name: layout.interruptible-reflow.enabled 10839 type: bool 10840 value: true 10841 mirror: always 10842 10843 # Whether synthesize eMouseMove for dispatching mouse boundary events after 10844 # a layout change or a scroll. 10845 - name: layout.reflow.synthMouseMove 10846 type: bool 10847 value: true 10848 mirror: always 10849 10850 # This pref determines which side vertical scrollbars should be on. 10851 # 0 = end-side in UI direction 10852 # 1 = end-side in document/content direction 10853 # 2 = right 10854 # 3 = left 10855 - name: layout.scrollbar.side 10856 type: int32_t 10857 value: 0 10858 mirror: always 10859 10860 # This pref is to be set by test code only. 10861 - name: layout.scrollbars.always-layerize-track 10862 type: RelaxedAtomicBool 10863 value: false 10864 mirror: always 10865 10866 - name: layout.scrollbars.click_and_hold_track.continue_to_end 10867 type: bool 10868 # On Linux, click-and-hold on the scrollbar track should continue scrolling 10869 # until the mouse is released. On the other platforms we want to stop 10870 # scrolling as soon as the scrollbar thumb has reached the current mouse 10871 # position. 10872 #ifdef MOZ_WIDGET_GTK 10873 value: true 10874 #else 10875 value: false 10876 #endif 10877 mirror: always 10878 10879 # Whether anchor is kept selected. 10880 - name: layout.selectanchor 10881 type: bool 10882 value: false 10883 mirror: always 10884 10885 # Controls caret style and word-delete during text selection. 10886 # 0: Use platform default 10887 # 1: Caret moves and blinks as when there is no selection; word 10888 # delete deselects the selection and then deletes word. 10889 # 2: Caret moves to selection edge and is not visible during selection; 10890 # word delete deletes the selection (Mac and Linux default). 10891 # 3: Caret moves and blinks as when there is no selection; word delete 10892 # deletes the selection. 10893 # Windows default is 1 for word delete behavior, the rest as for 2. 10894 - name: layout.selection.caret_style 10895 type: int32_t 10896 value: 0 10897 mirror: always 10898 10899 # If layout.show_previous_page is true then during loading of a new page we 10900 # will draw the previous page if the new page has painting suppressed. 10901 - name: layout.show_previous_page 10902 type: bool 10903 value: true 10904 mirror: always 10905 10906 # This will automatically enable inline spellchecking (if it is available) for 10907 # editable elements in HTML. 10908 # 0 = spellcheck nothing 10909 # 1 = check multi-line controls [default] 10910 # 2 = check multi/single line controls 10911 - name: layout.spellcheckDefault 10912 type: int32_t 10913 value: 1 10914 mirror: always 10915 10916 # Treat top level pages as always-active for the purpose of refresh driver 10917 # throttling and such. 10918 # 10919 # Intended for testing automation and so forth. 10920 - name: layout.testing.top-level-always-active 10921 type: bool 10922 value: false 10923 mirror: always 10924 10925 # Pref to stop overlay scrollbars from fading out, for testing purposes. 10926 - name: layout.testing.overlay-scrollbars.always-visible 10927 type: bool 10928 value: false 10929 mirror: always 10930 10931 # Whether we always hide the scrollbars, to avoid them affecting the visual 10932 # metrics of some performance tests. 10933 - name: layout.testing.scrollbars.always-hidden 10934 type: RelaxedAtomicBool 10935 value: false 10936 mirror: always 10937 10938 # Throttled frame rate, in frames per second. 10939 - name: layout.throttled_frame_rate 10940 type: uint32_t 10941 value: 1 10942 mirror: always 10943 10944 # Whether we should throttle in-process iframes in the active tab. 10945 - name: layout.throttle_in_process_iframes 10946 type: bool 10947 value: true 10948 mirror: always 10949 10950 - name: layout.lower_priority_refresh_driver_during_load 10951 type: bool 10952 value: true 10953 mirror: always 10954 10955 # If > 0, nsRefreshDriver will keep ticking this amount of milliseconds after 10956 # top level page load. 10957 - name: layout.keep_ticking_after_load_ms 10958 type: uint32_t 10959 value: 1000 10960 mirror: always 10961 10962 # Pref to control enabling scroll anchoring. 10963 - name: layout.css.scroll-anchoring.enabled 10964 type: bool 10965 value: true 10966 mirror: always 10967 10968 # Pref to control how many consecutive scroll-anchoring adjustments (since the 10969 # most recent user scroll or timeout) we'll average, before we consider whether 10970 # to automatically turn off scroll anchoring. When we hit this threshold, the 10971 # actual decision to disable also depends on the 10972 # min-average-adjustment-threshold pref, see below for more details. 10973 # 10974 # Zero disables the heuristic. 10975 - name: layout.css.scroll-anchoring.max-consecutive-adjustments 10976 type: uint32_t 10977 value: 10 10978 mirror: always 10979 10980 # Whether to reset counting the consecutive scroll-anchoring adjustments during 10981 # running async scrolling by APZ. 10982 - name: layout.css.scroll-anchoring.reset-heuristic-during-animation 10983 type: bool 10984 value: false 10985 mirror: always 10986 10987 # The time after which we reset the max-consecutive-adjustments period, in 10988 # milliseconds. 10989 # 10990 # This prevents sporadic back-and-forth scroll anchoring to trigger the 10991 # max-consecutive-adjustments heuristic. 10992 - name: layout.css.scroll-anchoring.max-consecutive-adjustments-timeout-ms 10993 type: uint32_t 10994 value: 500 10995 mirror: always 10996 10997 # Pref to control whether we should disable scroll anchoring on a scroller 10998 # where at least max-consecutive-adjustments have happened, and which the 10999 # average adjustment ends up being less than this number, in CSS pixels. 11000 # 11001 # So, for example, given max-consecutive-adjustments=10 and 11002 # min-average-adjustment-treshold=3, we'll block scroll anchoring if there have 11003 # been 10 consecutive adjustments without a user scroll or more, and the 11004 # average offset difference between them amount to less than 3 CSS pixels. 11005 - name: layout.css.scroll-anchoring.min-average-adjustment-threshold 11006 type: uint32_t 11007 value: 2 11008 mirror: always 11009 11010 # Pref to control disabling scroll anchoring suppression triggers, see 11011 # 11012 # https://drafts.csswg.org/css-scroll-anchoring/#suppression-triggers 11013 # 11014 # Those triggers should be unnecessary after bug 1561450. 11015 - name: layout.css.scroll-anchoring.suppressions.enabled 11016 type: bool 11017 value: true 11018 mirror: always 11019 11020 - name: layout.css.scroll-anchoring.highlight 11021 type: bool 11022 value: false 11023 mirror: always 11024 11025 # Pref to control whether we reselect scroll anchors if sub-optimal 11026 # 11027 # See https://github.com/w3c/csswg-drafts/issues/6787 11028 - name: layout.css.scroll-anchoring.reselect-if-suboptimal 11029 type: bool 11030 value: true 11031 mirror: always 11032 11033 # Are shared memory User Agent style sheets enabled? 11034 - name: layout.css.shared-memory-ua-sheets.enabled 11035 type: bool 11036 value: true 11037 mirror: always 11038 11039 # Is the CSS 'stretch' keyword enabled, for size-valued properties like 'width' 11040 # and 'height'? (Note: this is unrelated to the 'stretch' value for the 11041 # various alignment properties like 'align-self'; this pref has has 11042 # no influence on the 'stretch' keyword for those alignment properties.) 11043 - name: layout.css.stretch-size-keyword.enabled 11044 type: RelaxedAtomicBool 11045 value: false 11046 mirror: always 11047 rust: true 11048 11049 # Is the '-webkit-fill-available' keyword enabled, as an alias for 'stretch'? 11050 # NOTE: This pref being 'true' is sufficient to enable this keyword in the 11051 # 'width' and 'height' properties (and their logical aliases). To enable 11052 # the keyword for other properties, see the "all-size-properties" variant 11053 # below. 11054 - name: layout.css.webkit-fill-available.enabled 11055 type: RelaxedAtomicBool 11056 value: true 11057 mirror: always 11058 rust: true 11059 11060 # This pref is an additional gate on whether the '-webkit-fill-available' 11061 # keyword is enabled for other size-valued CSS properties (beyond 'width' and 11062 # 'height'). In such properties, -webkit-fill-available will not be accepted 11063 # unless this pref *and* layout.css.webkit-fill-available.enabled are both 11064 # set to 'true'. 11065 - name: layout.css.webkit-fill-available.all-size-properties.enabled 11066 type: RelaxedAtomicBool 11067 value: false 11068 mirror: always 11069 rust: true 11070 11071 # Is support for -webkit-line-clamp on regular blocks enabled? 11072 - name: layout.css.webkit-line-clamp.block.enabled 11073 type: bool 11074 value: false 11075 mirror: always 11076 11077 # Does webkit-line-clamp skip painting clamped lines? 11078 # See bug 1934547. 11079 - name: layout.css.webkit-line-clamp.skip-paint 11080 type: bool 11081 value: false 11082 mirror: always 11083 11084 # Is support for the ::details-content pseudo-element enabled? 11085 - name: layout.css.details-content.enabled 11086 type: RelaxedAtomicBool 11087 value: true 11088 mirror: always 11089 rust: true 11090 11091 # Whether we want scrollbar-width: thin to behave as scrollbar-width: auto. 11092 - name: layout.css.scrollbar-width-thin.disabled 11093 type: RelaxedAtomicBool 11094 value: false 11095 mirror: always 11096 11097 # field-sizing CSS property 11098 - name: layout.css.field-sizing.enabled 11099 type: RelaxedAtomicBool 11100 value: false 11101 mirror: always 11102 11103 # Whether :-moz-broken is supported in content. 11104 - name: layout.css.moz-broken.content.enabled 11105 type: RelaxedAtomicBool 11106 value: false 11107 mirror: always 11108 rust: true 11109 11110 # Whether the modern ::slider-* pseudos are enabled. 11111 - name: layout.css.modern-range-pseudos.enabled 11112 type: RelaxedAtomicBool 11113 value: false 11114 mirror: always 11115 rust: true 11116 11117 # Is matching video-dynamic-range: high allowed? 11118 - name: layout.css.video-dynamic-range.allows-high 11119 type: RelaxedAtomicBool 11120 #if defined(XP_MACOSX) || defined(MOZ_WAYLAND) 11121 value: true 11122 #elif defined(XP_WIN) 11123 value: @IS_EARLY_BETA_OR_EARLIER@ 11124 #else 11125 value: false 11126 #endif 11127 mirror: always 11128 11129 # Is support for CSS Typed Object Model API enabled? 11130 # 11131 # Note that this feature is experimental and under active development. 11132 # Enabling this pref will only expose some interfaces that are already 11133 # implemented and is intended solely to enable WPT coverage during 11134 # incremental development. 11135 - name: layout.css.typed-om.enabled 11136 type: RelaxedAtomicBool 11137 value: false 11138 mirror: always 11139 rust: true 11140 11141 # Whether frame visibility tracking is enabled globally. 11142 - name: layout.framevisibility.enabled 11143 type: bool 11144 value: true 11145 mirror: always 11146 11147 # The fraction of the scrollport we allow to horizontally scroll by before we 11148 # schedule an update of frame visibility. 11149 - name: layout.framevisibility.amountscrollbeforeupdatehorizontal 11150 type: int32_t 11151 value: 2 11152 mirror: always 11153 11154 # The fraction of the scrollport we allow to vertically scroll by before we 11155 # schedule an update of frame visibility. 11156 - name: layout.framevisibility.amountscrollbeforeupdatevertical 11157 type: int32_t 11158 value: 2 11159 mirror: always 11160 11161 # The number of scrollports wide to expand when tracking frame visibility. 11162 - name: layout.framevisibility.numscrollportwidths 11163 type: uint32_t 11164 #ifdef ANDROID 11165 value: 1 11166 #else 11167 value: 0 11168 #endif 11169 mirror: always 11170 11171 # The number of scrollports high to expand when tracking frame visibility. 11172 - name: layout.framevisibility.numscrollportheights 11173 type: uint32_t 11174 value: 1 11175 mirror: always 11176 11177 # Test only. 11178 - name: layout.dynamic-toolbar-max-height 11179 type: RelaxedAtomicInt32 11180 value: 0 11181 mirror: always 11182 11183 # Whether outlines should include all overflowing descendants, or just the 11184 # border-box of a given element. 11185 # 11186 # Historically we have included descendants but other browsers have not. 11187 - name: layout.outline.include-overflow 11188 type: bool 11189 value: false 11190 mirror: always 11191 11192 # Determines how we snap css outline-offset: 11193 # 0: No snapping (historical behavior) 11194 # 1: Always snap as border-width (proposed behavior in 11195 # https://github.com/w3c/csswg-drafts/issues/12906) 11196 # 2: The above, but only on chrome code, for now. 11197 - name: layout.css.outline-offset.snapping 11198 type: RelaxedAtomicInt32 11199 #ifdef NIGHTLY_BUILD 11200 value: 1 11201 #else 11202 value: 2 11203 #endif 11204 mirror: always 11205 rust: true 11206 11207 - name: layout.visibility.min-recompute-interval-ms 11208 type: uint32_t 11209 value: 1000 11210 mirror: always 11211 11212 # Controls double click and Alt+Arrow word selection behavior. 11213 - name: layout.word_select.eat_space_to_next_word 11214 type: bool 11215 #ifdef XP_WIN 11216 value: true 11217 #else 11218 value: false 11219 #endif 11220 mirror: always 11221 11222 - name: layout.word_select.stop_at_punctuation 11223 type: RelaxedAtomicBool 11224 value: true 11225 mirror: always 11226 11227 # Whether underscore should be treated as a word-breaking character for 11228 # word selection/arrow-key movement purposes. 11229 - name: layout.word_select.stop_at_underscore 11230 type: bool 11231 value: false 11232 mirror: always 11233 11234 # Controls whether nsRefreshDriver::IsInHighRateMode() may ever return true. 11235 - name: layout.expose_high_rate_mode_from_refreshdriver 11236 type: bool 11237 value: true 11238 mirror: always 11239 11240 # Whether <details> is forced to be a block, see bug 1856374 11241 # The legacy behavior is 'true', i.e. forcing it to be a block. 11242 # The modern behavior is 'false', i.e. not forcing it to be a block. 11243 - name: layout.details.force-block-layout 11244 type: bool 11245 value: false 11246 mirror: always 11247 11248 # Whether table cells can generate scroll boxes. 11249 - name: layout.tables.scrollable-cells 11250 type: bool 11251 value: false 11252 mirror: always 11253 11254 # Whether to disable layer pixel alignment in layout stuff. 11255 - name: layout.disable-pixel-alignment 11256 type: RelaxedAtomicBool 11257 value: false 11258 mirror: always 11259 11260 # Whether scrollIntoView scrolls to `position: fixed` frames visually. 11261 - name: layout.scroll_fixed_content_into_view_visually 11262 type: bool 11263 #if defined(ANDROID) 11264 value: true 11265 #else 11266 value: false 11267 #endif 11268 mirror: always 11269 11270 # Enable the support to position absoluetly positioned frames properly across 11271 # fragmentainers (Bug 1994316). 11272 # 11273 # Note: Layout code should use 11274 # nsPresContext::FragmentainerAwarePositioningEnabled() rather than checking 11275 # this pref directly. This ensures a given frame tree handles abspos 11276 # fragmentation consistently even if the actual pref value changes. 11277 - name: layout.abspos.fragmentainer-aware-positioning.enabled 11278 type: bool 11279 value: false 11280 mirror: always 11281 11282 #--------------------------------------------------------------------------- 11283 # Prefs starting with "logging." 11284 #--------------------------------------------------------------------------- 11285 11286 # If this pref is true, prefs in the logging.config branch will be cleared on 11287 # startup. This prevents unadvertedly creating huge log files that fill the disk 11288 # when forgetting to remove the logging preferences. 11289 - name: logging.config.clear_on_startup 11290 type: bool 11291 value: true 11292 mirror: never 11293 11294 #--------------------------------------------------------------------------- 11295 # Prefs starting with "mathml." 11296 #--------------------------------------------------------------------------- 11297 11298 # Whether to disable legacy names "thickmathspace", "mediummathspace", 11299 # "thickmathspace" etc for length attributes. 11300 - name: mathml.mathspace_names.disabled 11301 type: bool 11302 value: @IS_EARLY_BETA_OR_EARLIER@ 11303 mirror: always 11304 11305 # Whether to enable character and glyph level mirroring for operators when 11306 # the writing mode is right to left. 11307 - name: mathml.rtl_operator_mirroring.enabled 11308 type: bool 11309 value: true 11310 mirror: always 11311 11312 # Whether to disable fallback for mathvariant=italic/bold/bold-italic via 11313 # styling when lacking proper fonts for Mathematical Alphanumeric Symbols. 11314 # We expect all OSes to have relevant fonts, except Android, see bug 1789083. 11315 - name: mathml.mathvariant_styling_fallback.disabled 11316 type: bool 11317 #if defined(ANDROID) 11318 value: false 11319 #else 11320 value: true 11321 #endif 11322 mirror: always 11323 11324 # Whether to enable support for the math-shift CSS property. 11325 - name: mathml.math_shift.enabled 11326 type: RelaxedAtomicBool 11327 value: true 11328 mirror: always 11329 11330 # Whether to remove the accent property from the operator dictionary. 11331 - name: mathml.operator_dictionary_accent.disabled 11332 type: bool 11333 value: false 11334 mirror: always 11335 11336 # Whether to disable the MathML3 support for the mathvariant attribute. For 11337 # MathML Core, support is restricted to the <mi> element and to value "normal". 11338 # Corresponding automatic italicization on single-char <mi> element is also 11339 # implemented via text-transform: auto when that flag is enabled. 11340 - name: mathml.legacy_mathvariant_attribute.disabled 11341 type: bool 11342 value: @IS_EARLY_BETA_OR_EARLIER@ 11343 mirror: always 11344 rust: true 11345 11346 # Whether to enable font-family: math in mathml instead of using the 11347 # internal language x-math. 11348 - name: mathml.font_family_math.enabled 11349 type: RelaxedAtomicBool 11350 value: @IS_NIGHTLY_BUILD@ 11351 mirror: always 11352 rust: true 11353 11354 #--------------------------------------------------------------------------- 11355 # Prefs starting with "media." 11356 #--------------------------------------------------------------------------- 11357 11358 11359 # This pref defines what the blocking policy would be used in blocking autoplay. 11360 # 0 : use sticky activation (default) 11361 # https://html.spec.whatwg.org/multipage/interaction.html#sticky-activation 11362 # 1 : use transient activation (the transient activation duration can be 11363 # adjusted by the pref `dom.user_activation.transient.timeout`) 11364 # https://html.spec.whatwg.org/multipage/interaction.html#transient-activation 11365 # 2 : user input depth (allow autoplay when the play is trigged by user input 11366 # which is determined by the user input depth) 11367 - name: media.autoplay.blocking_policy 11368 type: uint32_t 11369 value: 0 11370 mirror: always 11371 11372 # Whether to allow autoplay on extension background pages. 11373 - name: media.autoplay.allow-extension-background-pages 11374 type: bool 11375 value: true 11376 mirror: always 11377 11378 # Block autoplay, asking for permission by default. 11379 # 0=Allowed, 1=Blocked, 5=All Blocked 11380 - name: media.autoplay.default 11381 type: int32_t 11382 value: 1 11383 mirror: always 11384 11385 # File-backed MediaCache size. 11386 - name: media.cache_size 11387 type: RelaxedAtomicUint32 11388 value: 512000 # Measured in KiB 11389 mirror: always 11390 11391 # Size of file backed MediaCache while on a connection which is cellular (3G, 11392 # etc), and thus assumed to be "expensive". 11393 - name: media.cache_size.cellular 11394 type: RelaxedAtomicUint32 11395 value: 32768 # Measured in KiB 11396 mirror: always 11397 11398 # Multiplier to change the sample rate at which input-only streams run, so as 11399 # to similate clock drift. 11400 - name: media.cubeb.input_drift_factor 11401 type: AtomicFloat 11402 mirror: always 11403 value: 1.f 11404 11405 # Multiplier to change the sample rate at which output-only streams run, so as 11406 # to similate clock drift. 11407 - name: media.cubeb.output_drift_factor 11408 type: AtomicFloat 11409 mirror: always 11410 value: 1.f 11411 11412 # Whether cubeb is sandboxed (AudioIPC) 11413 - name: media.cubeb.sandbox 11414 type: bool 11415 mirror: always 11416 #if defined(XP_LINUX) || defined(XP_WIN) || defined(XP_MACOSX) 11417 value: true 11418 #else 11419 value: false 11420 #endif 11421 11422 # Whether or not to pass AUDCLNT_STREAMOPTIONS_RAW when initializing audio 11423 # streams when using WASAPI. 11424 # 0 - don't use RAW streams 11425 # 1 - use RAW streams for input streams only 11426 # 2 - use RAW streams for output streams only 11427 # 3 - use RAW streams for input and output streams 11428 #if defined (XP_WIN) 11429 - name: media.cubeb.wasapi-raw 11430 type: RelaxedAtomicUint32 11431 mirror: always 11432 value: 0 11433 #endif // XP_WIN 11434 11435 # Whether to make the start of cubeb stream slower, and by how many 11436 # milliseconds. 11437 - name: media.cubeb.slow_stream_init_ms 11438 type: RelaxedAtomicUint32 11439 mirror: always 11440 value: 0 11441 11442 # If a resource is known to be smaller than this size (in kilobytes), a 11443 # memory-backed MediaCache may be used; otherwise the (single shared global) 11444 # file-backed MediaCache is used. 11445 - name: media.memory_cache_max_size 11446 type: uint32_t 11447 value: 8192 # Measured in KiB 11448 mirror: always 11449 11450 # Don't create more memory-backed MediaCaches if their combined size would go 11451 # above this absolute size limit. 11452 - name: media.memory_caches_combined_limit_kb 11453 type: uint32_t 11454 value: 524288 11455 mirror: always 11456 11457 # Don't create more memory-backed MediaCaches if their combined size would go 11458 # above this relative size limit (a percentage of physical memory). 11459 - name: media.memory_caches_combined_limit_pc_sysmem 11460 type: uint32_t 11461 value: 5 # A percentage 11462 mirror: always 11463 11464 # When a network connection is suspended, don't resume it until the amount of 11465 # buffered data falls below this threshold (in seconds). 11466 - name: media.cache_resume_threshold 11467 type: RelaxedAtomicUint32 11468 value: 30 11469 mirror: always 11470 - name: media.cache_resume_threshold.cellular 11471 type: RelaxedAtomicUint32 11472 value: 10 11473 mirror: always 11474 11475 # Stop reading ahead when our buffered data is this many seconds ahead of the 11476 # current playback position. This limit can stop us from using arbitrary 11477 # amounts of network bandwidth prefetching huge videos. 11478 - name: media.cache_readahead_limit 11479 type: RelaxedAtomicUint32 11480 value: 60 11481 mirror: always 11482 - name: media.cache_readahead_limit.cellular 11483 type: RelaxedAtomicUint32 11484 value: 30 11485 mirror: always 11486 11487 # MediaCapabilities 11488 - name: media.mediacapabilities.drop-threshold 11489 type: RelaxedAtomicInt32 11490 value: 95 11491 mirror: always 11492 11493 - name: media.mediacapabilities.from-database 11494 type: RelaxedAtomicBool 11495 value: @IS_NIGHTLY_BUILD@ 11496 mirror: always 11497 11498 # AudioSink 11499 - name: media.resampling.enabled 11500 type: RelaxedAtomicBool 11501 value: false 11502 mirror: always 11503 11504 # libcubeb backend implements .get_preferred_channel_layout 11505 - name: media.forcestereo.enabled 11506 type: RelaxedAtomicBool 11507 #if defined(XP_WIN) || defined(XP_DARWIN) || defined(MOZ_PULSEAUDIO) 11508 value: false 11509 #else 11510 value: true 11511 #endif 11512 mirror: always 11513 11514 # MediaSource 11515 11516 # Whether to enable MediaSource support. 11517 - name: media.mediasource.enabled 11518 type: RelaxedAtomicBool 11519 value: true 11520 mirror: always 11521 11522 - name: media.mediasource.mp4.enabled 11523 type: RelaxedAtomicBool 11524 value: true 11525 mirror: always 11526 11527 - name: media.mediasource.webm.enabled 11528 type: RelaxedAtomicBool 11529 value: true 11530 mirror: always 11531 11532 # Check if vp9 is enabled by default in mediasource. False on Android. 11533 # If disabled, vp9 will only be enabled under some conditions: 11534 # - h264 HW decoding is not supported 11535 # - mp4 is not enabled 11536 # - Device was deemed fast enough to decode VP9 via the VP9Benchmark utility 11537 # - A VP9 HW decoder is present. 11538 - name: media.mediasource.vp9.enabled 11539 type: RelaxedAtomicBool 11540 value: @IS_NOT_MOBILE@ 11541 mirror: always 11542 11543 # Whether to enable MediaSource v2 support. 11544 - name: media.mediasource.experimental.enabled 11545 type: RelaxedAtomicBool 11546 value: false 11547 mirror: always 11548 11549 # Whether to enable experimental requestVideoFrameCallback support 11550 - name: media.rvfc.enabled 11551 type: bool 11552 value: true 11553 mirror: always 11554 11555 # true for talos tests so that VideoSink passes on the most recently decoded 11556 # frame to exercise the compositor even when the frame is out of date because 11557 # the decoder is stressed. 11558 # If this were true for normal playback, then presentation of such late decoded 11559 # video frames would be out of sync with audio, and VideoPlaybackQuality 11560 # metrics would provide no indication of the poor playback. [1] 11561 # For normal playback, this is false, which does not restore A/V sync in this 11562 # situation, but some out-of-date frames are dropped. The dropped frame count 11563 # is reported to content in VideoPlaybackQuality metrics. 11564 # [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1258870#c6 11565 - name: media.ruin-av-sync.enabled 11566 type: RelaxedAtomicBool 11567 value: false 11568 mirror: always 11569 11570 # Encrypted Media Extensions 11571 - name: media.eme.enabled 11572 type: bool 11573 #if defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID) 11574 # On Linux EME is visible but disabled by default. This is so that the "Play 11575 # DRM content" checkbox in the Firefox UI is unchecked by default. DRM 11576 # requires downloading and installing proprietary binaries, which users on an 11577 # open source operating systems didn't opt into. The first time a site using 11578 # EME is encountered, the user will be prompted to enable DRM, whereupon the 11579 # EME plugin binaries will be downloaded if permission is granted. 11580 value: false 11581 #else 11582 value: true 11583 #endif 11584 mirror: always 11585 11586 # Whether we expose the functionality proposed in 11587 # https://w3c.github.io/encrypted-media/#ref-for-dom-mediakeysystemmediacapability-encryptionscheme-2 11588 # I.e. if true, apps calling navigator.requestMediaKeySystemAccess() can pass 11589 # an optional encryption scheme as part of MediaKeySystemMediaCapability 11590 # objects. If a scheme is present when we check for support, we must ensure we 11591 # support that scheme in order to provide key system access. 11592 - name: media.eme.encrypted-media-encryption-scheme.enabled 11593 type: bool 11594 value: true 11595 mirror: always 11596 11597 # Do we need explicit approval from the application to allow access to EME? 11598 # If true, Gecko will ask for permission before allowing MediaKeySystemAccess. 11599 # At time of writing this is aimed at GeckoView, and setting this to true 11600 # outside of GeckoView or test environments will likely break EME. 11601 - name: media.eme.require-app-approval 11602 type: bool 11603 value: false 11604 mirror: always 11605 11606 - name: media.eme.audio.blank 11607 type: RelaxedAtomicBool 11608 value: false 11609 mirror: always 11610 11611 - name: media.eme.video.blank 11612 type: RelaxedAtomicBool 11613 value: false 11614 mirror: always 11615 11616 - name: media.eme.chromium-api.video-shmems 11617 type: RelaxedAtomicUint32 11618 value: 6 11619 mirror: always 11620 11621 # Is support for MediaKeys.getStatusForPolicy enabled? 11622 - name: media.eme.hdcp-policy-check.enabled 11623 type: bool 11624 value: true 11625 mirror: always 11626 11627 - name: media.eme.max-throughput-ms 11628 type: RelaxedAtomicUint32 11629 value: 500 11630 mirror: always 11631 11632 - name: media.clearkey.persistent-license.enabled 11633 type: bool 11634 value: false 11635 mirror: always 11636 11637 # Are test specific clearkey key systems enabled and exposed? 11638 - name: media.clearkey.test-key-systems.enabled 11639 type: RelaxedAtomicBool 11640 value: false 11641 mirror: always 11642 11643 - name: media.cloneElementVisually.testing 11644 type: bool 11645 value: false 11646 mirror: always 11647 11648 # Does the GMPlugin process initialize minimal XPCOM 11649 - name: media.gmp.use-minimal-xpcom 11650 type: RelaxedAtomicBool 11651 value: true 11652 mirror: always 11653 11654 # Does the GMPlugin process use native event processing 11655 - name: media.gmp.use-native-event-processing 11656 type: RelaxedAtomicBool 11657 value: @IS_NOT_XP_MACOSX@ 11658 mirror: always 11659 11660 # How long in milliseconds before timing out to destroy en/decoders gracefully 11661 - name: media.gmp.coder-shutdown-timeout-ms 11662 type: RelaxedAtomicUint32 11663 value: 1000 11664 mirror: always 11665 11666 #if defined(XP_LINUX) && defined(MOZ_SANDBOX) 11667 # Whether to allow, on a Linux system that doesn't support the necessary 11668 # sandboxing features, loading Gecko Media Plugins unsandboxed. However, EME 11669 # CDMs will not be loaded without sandboxing even if this pref is changed. 11670 - name: media.gmp.insecure.allow 11671 type: RelaxedAtomicBool 11672 value: false 11673 mirror: always 11674 #endif 11675 11676 # (When reading the next line, know that preprocessor.py doesn't 11677 # understand parentheses, but && is higher precedence than ||.) 11678 #if defined(XP_WIN) && defined(_ARM64_) || defined(XP_MACOSX) 11679 # These prefs control whether or not we will allow x86/x64 plugins 11680 # to run on Windows ARM or Apple Silicon machines. This requires 11681 # launching the GMP child process executable in x86/x64 mode. We 11682 # expect to allow this for Widevine until an arm64 version of 11683 # Widevine and Clearkey is made available. We don't expect to need 11684 # to allow this for OpenH264. 11685 # 11686 # For Apple Silicon and OSX, it will be for universal builds and 11687 # whether or not it can use the x64 Widevine plugin. 11688 # 11689 # For Windows ARM, it will be for ARM builds and whether or not it 11690 # can use x86 Widevine or Clearkey plugins. 11691 11692 # May a Widevine GMP x64 process be executed on ARM builds. 11693 - name: media.gmp-widevinecdm.allow-x64-plugin-on-arm64 11694 type: RelaxedAtomicBool 11695 value: true 11696 mirror: always 11697 11698 # May an OpenH264 GMP x64 process be executed on ARM builds. 11699 - name: media.gmp-gmpopenh264.allow-x64-plugin-on-arm64 11700 type: RelaxedAtomicBool 11701 value: false 11702 mirror: always 11703 11704 # May a Clearkey GMP x64 process be executed on ARM builds. 11705 - name: media.gmp-gmpclearkey.allow-x64-plugin-on-arm64 11706 type: RelaxedAtomicBool 11707 value: false 11708 mirror: always 11709 #endif 11710 11711 # Specifies whether the PDMFactory can create a test decoder that just outputs 11712 # blank frames/audio instead of actually decoding. The blank decoder works on 11713 # all platforms. 11714 - name: media.use-blank-decoder 11715 type: RelaxedAtomicBool 11716 value: false 11717 mirror: always 11718 11719 # Specifies whether the PEMFactory can create PEMs for remote audio encoding 11720 # in the RDD or utility processes. 11721 - name: media.use-remote-encoder.audio 11722 type: RelaxedAtomicBool 11723 value: false 11724 mirror: always 11725 11726 # Specifies whether the PEMFactory can create PEMs for remote video encoding 11727 # in the RDD or GPU process. 11728 - name: media.use-remote-encoder.video 11729 type: RelaxedAtomicBool 11730 value: false 11731 mirror: always 11732 11733 - name: media.gpu-process-decoder 11734 type: RelaxedAtomicBool 11735 #if defined(XP_WIN) 11736 value: true 11737 #else 11738 value: false 11739 #endif 11740 mirror: always 11741 11742 - name: media.gpu-process-encoder 11743 type: RelaxedAtomicBool 11744 value: false 11745 mirror: always 11746 11747 - name: media.ffvpx-hw.enabled 11748 type: RelaxedAtomicBool 11749 #if defined(MOZ_WIDGET_GTK) 11750 value: true 11751 #elif defined(XP_WIN) 11752 value: @IS_NIGHTLY_BUILD@ 11753 #else 11754 value: false 11755 #endif 11756 mirror: always 11757 11758 # The codecs in the vendored ffmpeg copy are usually prefered to the other 11759 # codecs. This allows changing this policy for testing purposes. 11760 - name: media.prefer-non-ffvpx 11761 type: RelaxedAtomicBool 11762 value: false 11763 mirror: always 11764 11765 - name: media.rdd-process.enabled 11766 type: RelaxedAtomicBool 11767 #if defined(XP_WIN) 11768 value: true 11769 #elif defined(XP_MACOSX) 11770 value: true 11771 #elif defined(XP_LINUX) && !defined(ANDROID) 11772 value: true 11773 #elif defined(XP_FREEBSD) 11774 value: true 11775 #elif defined(XP_OPENBSD) 11776 value: true 11777 #elif defined(XP_SOLARIS) 11778 value: true 11779 #else 11780 value: false 11781 #endif 11782 mirror: always 11783 11784 - name: media.rdd-retryonfailure.enabled 11785 type: RelaxedAtomicBool 11786 value: true 11787 mirror: always 11788 11789 - name: media.rdd-process.startup_timeout_ms 11790 type: RelaxedAtomicInt32 11791 value: 5000 11792 mirror: always 11793 11794 # Specifies how many times we restart RDD process after crash till we give up. 11795 # After first RDD restart we disable HW acceleration on Linux. 11796 - name: media.rdd-process.max-crashes 11797 type: RelaxedAtomicInt32 11798 value: 2 11799 mirror: always 11800 11801 #ifdef MOZ_FFMPEG 11802 - name: media.rdd-ffmpeg.enabled 11803 type: RelaxedAtomicBool 11804 value: true 11805 mirror: always 11806 #endif 11807 11808 11809 - name: media.rdd-ffvpx.enabled 11810 type: RelaxedAtomicBool 11811 #if defined(XP_WIN) 11812 value: true 11813 #elif defined(XP_MACOSX) 11814 value: true 11815 #elif defined(XP_LINUX) && !defined(ANDROID) 11816 value: true 11817 #elif defined(XP_FREEBSD) 11818 value: true 11819 #elif defined(XP_OPENBSD) 11820 value: true 11821 #elif defined(XP_SOLARIS) 11822 value: true 11823 #else 11824 value: false 11825 #endif 11826 mirror: always 11827 11828 #ifdef MOZ_WMF 11829 - name: media.rdd-wmf.enabled 11830 type: RelaxedAtomicBool 11831 value: true 11832 mirror: always 11833 #endif 11834 11835 #ifdef MOZ_APPLEMEDIA 11836 - name: media.rdd-applemedia.enabled 11837 type: RelaxedAtomicBool 11838 value: true 11839 mirror: always 11840 #endif 11841 11842 - name: media.rdd-vorbis.enabled 11843 type: RelaxedAtomicBool 11844 #if defined(XP_WIN) 11845 value: true 11846 #elif defined(XP_MACOSX) 11847 value: true 11848 #elif defined(XP_LINUX) && !defined(ANDROID) 11849 value: true 11850 #elif defined(XP_FREEBSD) 11851 value: true 11852 #elif defined(XP_OPENBSD) 11853 value: true 11854 #elif defined(XP_SOLARIS) 11855 value: true 11856 #else 11857 value: false 11858 #endif 11859 mirror: always 11860 11861 - name: media.rdd-vpx.enabled 11862 type: RelaxedAtomicBool 11863 #if defined(XP_WIN) 11864 value: true 11865 #elif defined(XP_MACOSX) 11866 value: true 11867 #elif defined(XP_LINUX) && !defined(ANDROID) 11868 value: true 11869 #elif defined(XP_FREEBSD) 11870 value: true 11871 #elif defined(XP_OPENBSD) 11872 value: true 11873 #elif defined(XP_SOLARIS) 11874 value: true 11875 #else 11876 value: false 11877 #endif 11878 mirror: always 11879 11880 - name: media.rdd-wav.enabled 11881 type: RelaxedAtomicBool 11882 #if defined(XP_WIN) 11883 value: true 11884 #elif defined(XP_MACOSX) 11885 value: true 11886 #elif defined(XP_LINUX) && !defined(ANDROID) 11887 value: true 11888 #elif defined(XP_FREEBSD) 11889 value: true 11890 #elif defined(XP_OPENBSD) 11891 value: true 11892 #elif defined(XP_SOLARIS) 11893 value: true 11894 #else 11895 value: false 11896 #endif 11897 mirror: always 11898 11899 - name: media.rdd-opus.enabled 11900 type: RelaxedAtomicBool 11901 #if defined(XP_WIN) 11902 value: true 11903 #elif defined(XP_MACOSX) 11904 value: true 11905 #elif defined(XP_LINUX) && !defined(ANDROID) 11906 value: true 11907 #elif defined(XP_FREEBSD) 11908 value: true 11909 #elif defined(XP_OPENBSD) 11910 value: true 11911 #elif defined(XP_SOLARIS) 11912 value: true 11913 #else 11914 value: false 11915 #endif 11916 mirror: always 11917 11918 - name: media.rdd-webaudio.batch.size 11919 type: RelaxedAtomicInt32 11920 value: 100 11921 mirror: always 11922 11923 # This pref is here to control whether we want to perform audio decoding by 11924 # using the IPC actor within the Utility process rather than the RDD process. 11925 # When it is set to true, then the utility process will take precedence over RDD 11926 # to perform audio decoding. 11927 - name: media.utility-process.enabled 11928 type: RelaxedAtomicBool 11929 #if defined(XP_WIN) 11930 value: true 11931 #elif defined(XP_MACOSX) 11932 value: true 11933 #elif defined(XP_LINUX) || defined(ANDROID) 11934 value: true 11935 #elif defined(XP_FREEBSD) 11936 value: true 11937 #elif defined(XP_OPENBSD) 11938 value: true 11939 #elif defined(XP_SOLARIS) 11940 value: true 11941 #else 11942 value: false 11943 #endif 11944 mirror: always 11945 11946 # Specifies how many times we restart Utility process after crash till we give 11947 # up. 11948 - name: media.utility-process.max-crashes 11949 type: RelaxedAtomicInt32 11950 value: 2 11951 mirror: always 11952 11953 #ifdef ANDROID 11954 # Enable the MediaCodec PlatformDecoderModule by default. 11955 - name: media.android-media-codec.enabled 11956 type: RelaxedAtomicBool 11957 value: true 11958 mirror: always 11959 11960 # Bug 1771196 11961 # Dont yet enable AndroidDecoderModule on Utility 11962 - name: media.utility-android-media-codec.enabled 11963 type: RelaxedAtomicBool 11964 value: false 11965 mirror: always 11966 11967 - name: media.android-media-codec.preferred 11968 type: RelaxedAtomicBool 11969 value: true 11970 mirror: always 11971 #endif # ANDROID 11972 11973 # Now we will completely disable the ability to perform audio decoding outside 11974 # of Utility. 11975 - name: media.allow-audio-non-utility 11976 type: RelaxedAtomicBool 11977 value: @IS_IOS@ 11978 mirror: always 11979 11980 #ifdef MOZ_OMX 11981 - name: media.omx.enabled 11982 type: bool 11983 value: false 11984 mirror: always 11985 #endif 11986 11987 # Allow ffmpeg decoder to decode directly onto shmem buffer 11988 - name: media.ffmpeg.customized-buffer-allocation 11989 type: RelaxedAtomicBool 11990 value: true 11991 mirror: always 11992 11993 # Disable falling back to software decoders in case of frame drop 11994 - name: media.ffmpeg.disable-software-fallback 11995 type: RelaxedAtomicBool 11996 value: false 11997 mirror: always 11998 11999 #ifdef MOZ_FFMPEG 12000 - name: media.ffmpeg.enabled 12001 type: RelaxedAtomicBool 12002 #if defined(XP_MACOSX) 12003 value: false 12004 #else 12005 value: true 12006 #endif 12007 mirror: always 12008 12009 - name: media.libavcodec.allow-obsolete 12010 type: bool 12011 value: false 12012 mirror: always 12013 #endif # MOZ_FFMPEG 12014 12015 # Allow using ffmpeg encoder 12016 - name: media.ffmpeg.encoder.enabled 12017 type: RelaxedAtomicBool 12018 #if !defined(MOZ_WIDGET_ANDROID) 12019 value: true 12020 #else 12021 value: false 12022 #endif 12023 mirror: always 12024 12025 # A high quantizer value allows the encoder to use higher compression, but 12026 # resulting in lower quality for parts of the video. Using a lower value 12027 # restricts excessive compression, improving video quality but potentially 12028 # increasing file size. The quantizer's value range is controlled by the min 12029 # and max values below. The lower the value is, the finer the quantizer will be 12030 # Set AVCodecContext's qmin value to ffmpeg encoder 12031 - name: media.ffmpeg.encoder.quantizer-min 12032 type: RelaxedAtomicInt32 12033 value: 10 # An empirical value for better performance 12034 mirror: always 12035 12036 # Set AVCodecContext's qmax value to ffmpeg encoder 12037 - name: media.ffmpeg.encoder.quantizer-max 12038 type: RelaxedAtomicInt32 12039 value: 35 # An empirical value for better quality of the video output 12040 mirror: always 12041 12042 # Set the FFmpeg encoder's cpu-used option, only for the AV1 encoder in quality 12043 # mode currently. While values from 6 to 9 are generally used for real-time 12044 # encoding in libaom, we opt to prioritize speed over quality in this case. 12045 - name: media.ffmpeg.encoder.cpu-used 12046 type: RelaxedAtomicInt32 12047 value: 7 12048 mirror: always 12049 12050 # Allow using openh264 decoding with ffmpeg 12051 - name: media.ffmpeg.allow-openh264 12052 type: RelaxedAtomicBool 12053 value: @IS_NOT_NIGHTLY_BUILD@ 12054 mirror: always 12055 12056 #ifdef MOZ_WIDGET_GTK 12057 # Force to copy dmabuf video frames 12058 # Used for debugging/troubleshooting only 12059 # 0 - force disable 12060 # 1 - force enable 12061 # 2 - default 12062 - name: media.ffmpeg.vaapi.force-surface-zero-copy 12063 type: uint32_t 12064 value: 2 12065 mirror: once 12066 #endif # MOZ_WIDGET_GTK 12067 12068 # Set to true in marionette tests to disable the sanity test 12069 # which would lead to unnecessary start of the RDD process. 12070 - name: media.sanity-test.disabled 12071 type: RelaxedAtomicBool 12072 value: false 12073 mirror: always 12074 12075 #ifdef MOZ_WMF 12076 12077 - name: media.wmf.enabled 12078 type: RelaxedAtomicBool 12079 value: true 12080 mirror: always 12081 12082 # Whether DD should consider WMF-disabled a WMF failure, useful for testing. 12083 - name: media.decoder-doctor.wmf-disabled-is-failure 12084 type: RelaxedAtomicBool 12085 value: false 12086 mirror: always 12087 12088 - name: media.wmf.dxva.d3d11.enabled 12089 type: RelaxedAtomicBool 12090 value: true 12091 mirror: always 12092 12093 - name: media.wmf.dxva.max-videos 12094 type: RelaxedAtomicUint32 12095 value: 8 12096 mirror: always 12097 12098 - name: media.wmf.use-nv12-format 12099 type: RelaxedAtomicBool 12100 value: true 12101 mirror: always 12102 12103 - name: media.wmf.zero-copy-nv12-textures 12104 type: bool 12105 value: true 12106 mirror: once 12107 # Enable hardware decoded video no copy even when it is blocked. 12108 - name: media.wmf.zero-copy-nv12-textures-force-enabled 12109 type: bool 12110 value: false 12111 mirror: once 12112 12113 - name: media.wmf.force.allow-p010-format 12114 type: RelaxedAtomicBool 12115 value: false 12116 mirror: always 12117 12118 - name: media.wmf.use-sync-texture 12119 type: bool 12120 value: true 12121 mirror: once 12122 12123 - name: media.wmf.low-latency.enabled 12124 type: RelaxedAtomicBool 12125 value: true 12126 mirror: always 12127 12128 - name: media.wmf.skip-blacklist 12129 type: RelaxedAtomicBool 12130 value: false 12131 mirror: always 12132 12133 - name: media.wmf.amd.highres.enabled 12134 type: RelaxedAtomicBool 12135 value: true 12136 mirror: always 12137 12138 - name: media.wmf.allow-unsupported-resolutions 12139 type: RelaxedAtomicBool 12140 value: true 12141 mirror: always 12142 12143 - name: media.wmf.vp9.enabled 12144 type: RelaxedAtomicBool 12145 value: true 12146 mirror: always 12147 12148 - name: media.wmf.av1.enabled 12149 type: RelaxedAtomicBool 12150 value: true 12151 mirror: always 12152 12153 - name: media.wmf.encoder.realtime.wait-for-output 12154 type: RelaxedAtomicBool 12155 value: @IS_NIGHTLY_BUILD@ 12156 mirror: always 12157 12158 # Using Windows Media Foundation Media Engine for encrypted playback 12159 # 0 : disable, 1 : enable for encrypted and clear, 12160 # 2 : enable for encrypted only, 3 : enable for clear only 12161 - name: media.wmf.media-engine.enabled 12162 type: RelaxedAtomicUint32 12163 value: 2 12164 mirror: always 12165 12166 # Testing purpose, enable media engine on channel decoder as well. 12167 - name: media.wmf.media-engine.channel-decoder.enabled 12168 type: RelaxedAtomicBool 12169 value: false 12170 mirror: always 12171 12172 # The amount of video raw data the engine stream will queue 12173 - name: media.wmf.media-engine.raw-data-threshold.video 12174 type: RelaxedAtomicInt32 12175 value: 500000 12176 mirror: always 12177 12178 # The amount of audio raw data the engine stream will queue 12179 - name: media.wmf.media-engine.raw-data-threshold.audio 12180 type: RelaxedAtomicInt32 12181 value: 2000000 12182 mirror: always 12183 12184 # Specifies how many times we restart MFCDM process after crash till we give up. 12185 - name: media.wmf.media-engine.max-crashes 12186 type: RelaxedAtomicInt32 12187 value: 2 12188 mirror: always 12189 12190 # Bypass the gfx block list check for the media engine playback. 12191 - name: media.wmf.media-engine.bypass-gfx-blocklist 12192 type: RelaxedAtomicBool 12193 value: false 12194 mirror: always 12195 12196 # [TEST-ONLY] Use Media Foundation Clearkey CDM for EME related testing. 12197 - name: media.eme.wmf.clearkey.enabled 12198 type: RelaxedAtomicBool 12199 value: false 12200 mirror: always 12201 12202 # [TEST-ONLY] use Media Foundation clearkey CDM dll to mock as an external CDM, 12203 # external CDM like Widevine and PlayReady so that we won't be interfered by 12204 # unexpected behaviors caused by the external library. 12205 - name: media.eme.wmf.use-mock-cdm-for-external-cdms 12206 type: RelaxedAtomicBool 12207 value: false 12208 mirror: always 12209 12210 # Enable PlayReady DRM for EME 12211 - name: media.eme.playready.enabled 12212 type: RelaxedAtomicBool 12213 value: true 12214 mirror: always 12215 12216 # Enable Widevine experiment DRM for EME 12217 - name: media.eme.widevine.experiment.enabled 12218 type: RelaxedAtomicBool 12219 value: false 12220 mirror: always 12221 12222 # Enable origin filter for MFCDM support 12223 # 0 : disabled, 1 : enabled allowed list, 2 : enabled blocked list, 12224 # 3 : enabled allowed by default via Remote Settings 12225 # 4 : enabled blocked by default via Remote Settings 12226 - name: media.eme.mfcdm.origin-filter.enabled 12227 type: RelaxedAtomicUint32 12228 #ifdef NIGHTLY_BUILD 12229 value: 3 12230 #else 12231 value: 4 12232 #endif 12233 mirror: always 12234 12235 #endif # MOZ_WMF 12236 12237 - name: media.hevc.enabled 12238 type: RelaxedAtomicBool 12239 value: true 12240 mirror: always 12241 12242 - name: media.decoder-doctor.testing 12243 type: bool 12244 value: false 12245 mirror: always 12246 12247 - name: media.hardware-video-decoding.enabled 12248 type: bool 12249 value: true 12250 mirror: once 12251 12252 - name: media.hardware-video-decoding.force-enabled 12253 type: bool 12254 value: false 12255 mirror: once 12256 12257 - name: media.hardware-video-encoding.enabled 12258 type: bool 12259 value: true 12260 mirror: once 12261 12262 - name: media.hardware-video-encoding.force-enabled 12263 type: bool 12264 value: false 12265 mirror: once 12266 12267 # Whether to check the decoder supports recycling. 12268 - name: media.decoder.recycle.enabled 12269 type: RelaxedAtomicBool 12270 value: @IS_ANDROID@ 12271 mirror: always 12272 12273 # Should MFR try to skip to the next key frame? 12274 - name: media.decoder.skip-to-next-key-frame.enabled 12275 type: RelaxedAtomicBool 12276 value: true 12277 mirror: always 12278 12279 # The delay time (ms) before releasing an audio wakelock. 12280 - name: media.wakelock.audio.delay-releasing.ms 12281 type: RelaxedAtomicUint32 12282 value: 10000 12283 mirror: always 12284 12285 # When video continues later than the current media time for this period of 12286 # time, then it will trigger skip-to-next-keyframe mechanism. As this aims to 12287 # solve the drop frames issue where video decoding too slow for high 12288 # resolution videos. eg. 4k+. Therefore, the value is is determined by the 12289 # telemetry probe `video_inter_keyframe_max_ms` in the key of `AV,h>2160` which 12290 # shows that 95% video's key frame interval are less than ~5000. We use its 12291 # half value as a threashold to decide whether we should keep decoding in the 12292 # current video position or jump to the next keyframe in order to decode future 12293 # frames in advance. 12294 - name: media.decoder.skip_when_video_too_slow_ms 12295 type: RelaxedAtomicInt32 12296 value: 2500 12297 mirror: always 12298 12299 # True if we want to decode in batches. 12300 - name: media.gmp.decoder.decode_batch 12301 type: RelaxedAtomicBool 12302 value: false 12303 mirror: always 12304 12305 # True if we allow use of any decoders found in GMP plugins. 12306 - name: media.gmp.decoder.enabled 12307 type: RelaxedAtomicBool 12308 value: true 12309 mirror: always 12310 12311 # True if we want to request the multithreaded GMP decoder. 12312 - name: media.gmp.decoder.multithreaded 12313 type: RelaxedAtomicBool 12314 value: false 12315 mirror: always 12316 12317 # True if we want to try using the GMP plugin decoders first. 12318 - name: media.gmp.decoder.preferred 12319 type: RelaxedAtomicBool 12320 value: false 12321 mirror: always 12322 12323 # True if we want to reorder frames from the decoder based on the timestamp. 12324 - name: media.gmp.decoder.reorder_frames 12325 type: RelaxedAtomicBool 12326 value: true 12327 mirror: always 12328 12329 # True if we allow use of any encoders found in GMP plugins. 12330 - name: media.gmp.encoder.enabled 12331 type: RelaxedAtomicBool 12332 value: false 12333 mirror: always 12334 12335 # True if we want to request the multithreaded GMP encoder. 12336 - name: media.gmp.encoder.multithreaded 12337 type: RelaxedAtomicBool 12338 value: false 12339 mirror: always 12340 12341 # True if we want to try using the GMP plugin encoders first. 12342 - name: media.gmp.encoder.preferred 12343 type: RelaxedAtomicBool 12344 value: false 12345 mirror: always 12346 12347 # Whether to suspend decoding of videos in background tabs. 12348 - name: media.suspend-background-video.enabled 12349 type: RelaxedAtomicBool 12350 value: true 12351 mirror: always 12352 12353 # Delay, in ms, from time window goes to background to suspending 12354 # video decoders. Defaults to 10 seconds. 12355 - name: media.suspend-background-video.delay-ms 12356 type: RelaxedAtomicUint32 12357 value: 10000 12358 mirror: always 12359 12360 - name: media.dormant-on-pause-timeout-ms 12361 type: RelaxedAtomicInt32 12362 value: 5000 12363 mirror: always 12364 12365 # AudioTrack and VideoTrack support 12366 - name: media.track.enabled 12367 type: bool 12368 value: false 12369 mirror: always 12370 12371 12372 # This pref disables the reception of RTCP. It is used for testing. 12373 - name: media.webrtc.net.force_disable_rtcp_reception 12374 type: ReleaseAcquireAtomicBool 12375 value: false 12376 mirror: always 12377 12378 # This pref disables using PQ crypto for WebRTC DTLS code. 12379 - name: media.webrtc.enable_pq_hybrid_kex 12380 type: RelaxedAtomicBool 12381 value: true 12382 mirror: always 12383 12384 # This pref enabled sending ssl_grp_kem_mlkem768x25519 Key Share for WebRTC DTLS code. 12385 # When modifying this pref, please update the test_peerConnection_glean.html tests as well. 12386 - name: media.webrtc.send_mlkem_keyshare 12387 type: RelaxedAtomicBool 12388 value: true 12389 mirror: always 12390 12391 # This pref controls whether dispatch testing-only events. 12392 - name: media.webvtt.testing.events 12393 type: bool 12394 value: false 12395 mirror: always 12396 12397 #ifdef MOZ_WEBSPEECH 12398 - name: media.webspeech.synth.force_global_queue 12399 type: bool 12400 value: false 12401 mirror: always 12402 12403 - name: media.webspeech.test.enable 12404 type: bool 12405 value: false 12406 mirror: always 12407 12408 - name: media.webspeech.test.fake_fsm_events 12409 type: bool 12410 value: false 12411 mirror: always 12412 12413 - name: media.webspeech.test.fake_recognition_service 12414 type: bool 12415 value: false 12416 mirror: always 12417 12418 - name: media.webspeech.recognition.enable 12419 type: bool 12420 value: false 12421 mirror: always 12422 12423 - name: media.webspeech.synth.enabled 12424 type: bool 12425 value: true 12426 mirror: always 12427 #endif # MOZ_WEBSPEECH 12428 12429 - name: media.encoder.webm.enabled 12430 type: RelaxedAtomicBool 12431 value: true 12432 mirror: always 12433 12434 - name: media.audio-max-decode-error 12435 type: uint32_t 12436 #if defined(RELEASE_OR_BETA) 12437 value: 3 12438 #else 12439 # Zero tolerance in pre-release builds to detect any decoder regression. 12440 value: 0 12441 #endif 12442 mirror: always 12443 12444 - name: media.video-max-decode-error 12445 type: uint32_t 12446 #if defined(RELEASE_OR_BETA) 12447 value: 2 12448 #else 12449 # Zero tolerance in pre-release builds to detect any decoder regression. 12450 value: 0 12451 #endif 12452 mirror: always 12453 12454 # Are video stats enabled? (Disabling can help prevent fingerprinting.) 12455 - name: media.video_stats.enabled 12456 type: bool 12457 value: true 12458 mirror: always 12459 12460 # forces the number of dropped frames to 0 12461 - name: media.video.dropped_frame_stats.enabled 12462 type: bool 12463 value: true 12464 mirror: always 12465 12466 # The target number of decoded video frames to maintain in 12467 # MediaDecoderStateMachine's mVideoQueue for hardware video decoding. Hardware 12468 # decoding is fast, so a small queue size is used to lower frame latency. 12469 - name: media.video-queue.hw-accel-size 12470 type: RelaxedAtomicInt32 12471 value: 3 12472 mirror: always 12473 12474 # The target number of decoded video frames to maintain in 12475 # MediaDecoderStateMachine's mVideoQueue for software video decoding. Software 12476 # decoding is slower, so a larger queue is used to lower chances of 12477 # dropping late frames. 12478 - name: media.video-queue.default-size 12479 type: RelaxedAtomicInt32 12480 value: 10 12481 mirror: always 12482 12483 # The maximum number of queued frames to send to the compositor. 12484 - name: media.video-queue.send-to-compositor-size 12485 type: RelaxedAtomicInt32 12486 #ifdef ANDROID 12487 # On Android, it needs to be throttled because SurfaceTexture contains only one 12488 # (the most recent) image data. See bug 1299068. 12489 value: 1 12490 #else 12491 # Send all of them. 12492 value: 9999 12493 #endif 12494 mirror: always 12495 12496 # Opus 12497 - name: media.opus.enabled 12498 type: RelaxedAtomicBool 12499 value: true 12500 mirror: always 12501 12502 # Wave 12503 - name: media.wave.enabled 12504 type: RelaxedAtomicBool 12505 value: true 12506 mirror: always 12507 12508 # Ogg 12509 - name: media.ogg.enabled 12510 type: RelaxedAtomicBool 12511 value: true 12512 mirror: always 12513 12514 # WebM 12515 - name: media.webm.enabled 12516 type: RelaxedAtomicBool 12517 value: true 12518 mirror: always 12519 12520 # AV1 12521 - name: media.av1.enabled 12522 type: RelaxedAtomicBool 12523 value: true 12524 mirror: always 12525 12526 # Matroska 12527 - name: media.mkv.enabled 12528 type: RelaxedAtomicBool 12529 value: true 12530 mirror: always 12531 12532 - name: media.av1.use-dav1d 12533 type: RelaxedAtomicBool 12534 value: true 12535 mirror: always 12536 12537 - name: media.av1.new-thread-count-strategy 12538 type: RelaxedAtomicBool 12539 value: false 12540 mirror: always 12541 12542 - name: media.av1.force-thread-count 12543 type: RelaxedAtomicInt32 12544 value: 0 12545 mirror: always 12546 12547 - name: media.flac.enabled 12548 type: RelaxedAtomicBool 12549 value: true 12550 mirror: always 12551 12552 # Hls 12553 - name: media.hls.enabled 12554 type: RelaxedAtomicBool 12555 value: @IS_ANDROID@ 12556 mirror: always 12557 12558 # Max number of HLS players that can be created concurrently. Used only on 12559 # Android and when "media.hls.enabled" is true. 12560 #ifdef ANDROID 12561 - name: media.hls.max-allocations 12562 type: uint32_t 12563 value: 20 12564 mirror: always 12565 #endif 12566 12567 - name: media.mp4.enabled 12568 type: RelaxedAtomicBool 12569 value: true 12570 mirror: always 12571 12572 - name: media.mp4.sniff_iso_brand 12573 type: RelaxedAtomicBool 12574 value: true 12575 mirror: always 12576 12577 # Error/warning handling, Decoder Doctor. 12578 # 12579 # Set to true to force demux/decode warnings to be treated as errors. 12580 - name: media.playback.warnings-as-errors 12581 type: RelaxedAtomicBool 12582 value: false 12583 mirror: always 12584 12585 # Resume video decoding when the cursor is hovering on a background tab to 12586 # reduce the resume latency and improve the user experience. 12587 - name: media.resume-background-video-on-tabhover 12588 type: bool 12589 value: true 12590 mirror: always 12591 12592 # Media Seamless Looping 12593 - name: media.seamless-looping 12594 type: RelaxedAtomicBool 12595 value: true 12596 mirror: always 12597 12598 - name: media.seamless-looping-video 12599 type: RelaxedAtomicBool 12600 value: true 12601 mirror: always 12602 12603 - name: media.autoplay.block-event.enabled 12604 type: bool 12605 value: false 12606 mirror: always 12607 12608 - name: media.media-capabilities.screen.enabled 12609 type: RelaxedAtomicBool 12610 value: false 12611 mirror: always 12612 12613 - name: media.benchmark.vp9.fps 12614 type: RelaxedAtomicUint32 12615 value: 0 12616 mirror: always 12617 12618 - name: media.benchmark.vp9.threshold 12619 type: RelaxedAtomicUint32 12620 value: 150 12621 mirror: always 12622 12623 - name: media.benchmark.vp9.versioncheck 12624 type: RelaxedAtomicUint32 12625 value: 0 12626 mirror: always 12627 12628 - name: media.benchmark.frames 12629 type: RelaxedAtomicUint32 12630 value: 300 12631 mirror: always 12632 12633 - name: media.benchmark.timeout 12634 type: RelaxedAtomicUint32 12635 value: 1000 12636 mirror: always 12637 12638 - name: media.test.video-suspend 12639 type: RelaxedAtomicBool 12640 value: false 12641 mirror: always 12642 12643 - name: media.test.null.decoder.creation-failure 12644 type: RelaxedAtomicBool 12645 value: false 12646 mirror: always 12647 12648 # MediaCapture prefs follow 12649 12650 # Enables navigator.mediaDevices and getUserMedia() support. See also 12651 # media.peerconnection.enabled 12652 - name: media.navigator.enabled 12653 type: bool 12654 value: true 12655 mirror: always 12656 12657 # Expose the deprecated method navigator.mozGetUserMedia(). 12658 - name: media.navigator.mozgetusermedia.enabled 12659 type: bool 12660 value: true 12661 mirror: always 12662 12663 # This pref turns off window-focus checks on the navigator.mediaDevices methods, 12664 # for partner testing frameworks. 12665 # Prefer "focusmanager.testmode", which is already set by default for 12666 # web-platform tests. 12667 - name: media.devices.unfocused.enabled 12668 type: bool 12669 value: false 12670 mirror: always 12671 12672 # This pref turns off [SecureContext] on the navigator.mediaDevices object, for 12673 # more compatible legacy behavior. 12674 - name: media.devices.insecure.enabled 12675 type: bool 12676 value: false 12677 mirror: always 12678 12679 # If the above pref is also enabled, this pref enabled getUserMedia() support 12680 # in http, bypassing the instant NotAllowedError you get otherwise. 12681 - name: media.getusermedia.insecure.enabled 12682 type: bool 12683 value: false 12684 mirror: always 12685 12686 # Enable tab sharing 12687 - name: media.getusermedia.browser.enabled 12688 type: RelaxedAtomicBool 12689 value: @IS_NIGHTLY_BUILD@ 12690 mirror: always 12691 12692 # The getDisplayMedia method is always SecureContext regardless of the above two 12693 # prefs. But it is not implemented on android, and can be turned off elsewhere. 12694 - name: media.getdisplaymedia.enabled 12695 type: bool 12696 value: @IS_NOT_MOBILE@ 12697 mirror: always 12698 12699 # The getDisplayMedia prompt uses getDisplayMedia under the hood to show previews. 12700 # This can be turned off if, e.g. on systems with known issues like X11, or if 12701 # previews are not desired. 12702 - name: media.getdisplaymedia.previews.enabled 12703 type: bool 12704 value: @IS_NOT_ANDROID@ 12705 mirror: always 12706 12707 #if defined(MOZ_WEBRTC) && defined(XP_MACOSX) 12708 # Use the libwebrtc ScreenCaptureKit desktop capture backend on Mac by default. 12709 # When disabled, or on a host where not supported (< macOS 14), the older 12710 # CoreGraphics backend is used instead. 12711 - name: media.getdisplaymedia.screencapturekit.enabled 12712 type: bool 12713 value: true 12714 mirror: once 12715 12716 # Use SCContentSharingPicker for source picking when the libwebrtc 12717 # ScreenCaptureKit desktop capture backend is used. When this is true and the 12718 # backend supports SCContentSharingPicker, this takes precendence over the 12719 # enumeration pref below. 12720 - name: media.getdisplaymedia.screencapturekit.picker.enabled 12721 type: bool 12722 value: true 12723 mirror: once 12724 12725 # Use the libwebrtc ScreenCaptureKit desktop capture backend on Mac for screen 12726 # enumeration when enabled. 12727 # When this is false and the backend is used (see above), the older CoreGraphics 12728 # backend is used to enumerate CGDirectDisplayIDs, which the ScreenCaptureKit 12729 # backend understand as well. 12730 - name: media.getdisplaymedia.screencapturekit.enumeration.enabled 12731 type: bool 12732 value: false 12733 mirror: once 12734 #endif 12735 12736 # Turn off any cameras (but not mics) while in the background. This is desirable 12737 # on mobile. 12738 - name: media.getusermedia.camera.background.mute.enabled 12739 type: bool 12740 value: @IS_ANDROID@ 12741 mirror: always 12742 12743 # Use the libwebrtc AVFoundation camera backend on Mac by default. When 12744 # disabled, an older forked capture module is used. 12745 - name: media.getusermedia.camera.macavf.enabled 12746 type: bool 12747 value: true 12748 mirror: once 12749 12750 # When true enables capability enumeration and capture of a fake video capture 12751 # backend. Platform independent. Note, does not come into effect when the pref 12752 # `media.navigator.streams.fake` or the `fake` constraint is true. 12753 - name: media.getusermedia.camera.fake.force 12754 type: RelaxedAtomicBool 12755 value: false 12756 mirror: always 12757 12758 # Tell the audio backend to prefer a stream adapted for voice when processing is 12759 # enabled through constraints (possibly defaults). Whether it has any effect 12760 # depends on the backend. 12761 - name: media.getusermedia.microphone.prefer_voice_stream_with_processing.enabled 12762 type: RelaxedAtomicBool 12763 value: true 12764 mirror: always 12765 12766 # Tell the audio backend to create a voice stream for later re-use before asking 12767 # the user for microphone permissions, if approving those permissions would 12768 # result in a voice stream when created later on. 12769 - name: media.getusermedia.microphone.voice_stream_priming.enabled 12770 type: RelaxedAtomicBool 12771 value: @IS_XP_MACOSX@ 12772 mirror: always 12773 12774 # This pref turns on legacy (non-spec) exposure of camera and microphone 12775 # information from enumerateDevices and devicechange ahead of successful 12776 # getUserMedia calls. Should only be turned on to resolve web compat issues, 12777 # since doing so reveals more user fingerprinting information to trackers. 12778 # 12779 # In this mode, camera and microphone device labels are exposed if the site has a 12780 # persisted permission to either kind, as well as while actively capturing either 12781 # kind (temporary and tab-specific grace-period permissions do not count). 12782 - name: media.devices.enumerate.legacy.enabled 12783 type: bool 12784 value: false 12785 mirror: always 12786 12787 # Turns on legacy (non-spec) exposure of camera and microphone information 12788 # from enumerateDevices and devicechange ahead of successful getUserMedia 12789 # calls only for certain domains (ignored if above pref is true). 12790 - name: media.devices.enumerate.legacy.allowlist 12791 type: String 12792 value: "slack.com,*.slack.com,riverside.fm,*.riverside.fm" 12793 mirror: never 12794 12795 # WebRTC prefs follow 12796 12797 # Enables auto refresh of peerconnection stats by default 12798 - name: media.aboutwebrtc.auto_refresh.peerconnection_section 12799 type: bool 12800 value: @IS_NOT_NIGHTLY_BUILD@ 12801 mirror: always 12802 12803 # Enables auto refresh of the transport connection log by default 12804 - name: media.aboutwebrtc.auto_refresh.connection_log_section 12805 type: bool 12806 value: false 12807 mirror: always 12808 12809 # Enables auto refresh of user config by default 12810 - name: media.aboutwebrtc.auto_refresh.user_modified_config_section 12811 type: bool 12812 value: true 12813 mirror: always 12814 12815 # Enables auto refresh of media context by default 12816 - name: media.aboutwebrtc.auto_refresh.media_ctx_section 12817 type: bool 12818 value: false 12819 mirror: always 12820 12821 # Enables RTCPeerConnection support. Note that, when true, this pref enables 12822 # navigator.mediaDevices and getUserMedia() support as well. 12823 # See also media.navigator.enabled 12824 - name: media.peerconnection.enabled 12825 type: RelaxedAtomicBool 12826 value: true 12827 mirror: always 12828 12829 - name: media.peerconnection.scripttransform.enabled 12830 type: RelaxedAtomicBool 12831 value: true 12832 mirror: always 12833 12834 #ifdef MOZ_WEBRTC 12835 # Use MediaDataDecoder API for VP8/VP9 in WebRTC. This includes hardware 12836 # acceleration for decoding. 12837 - name: media.navigator.mediadatadecoder_vpx_enabled 12838 type: RelaxedAtomicBool 12839 #if defined(NIGHTLY_BUILD) || defined(MOZ_WIDGET_GTK) 12840 value: true 12841 #else 12842 value: false 12843 #endif 12844 mirror: always 12845 12846 # Use MediaDataDecoder API for H264 in WebRTC. This includes hardware 12847 # acceleration for decoding. 12848 - name: media.navigator.mediadatadecoder_h264_enabled 12849 type: RelaxedAtomicBool 12850 #if defined(_ARM64_) && defined(XP_WIN) 12851 value: false 12852 #else 12853 value: true 12854 #endif 12855 mirror: always 12856 12857 #if defined(MOZ_WIDGET_GTK) 12858 # Use hardware acceleration for VP8 decoding on Linux. 12859 - name: media.navigator.mediadatadecoder_vp8_hardware_enabled 12860 type: RelaxedAtomicBool 12861 value: false 12862 mirror: always 12863 #endif 12864 12865 # Interval in milliseconds at which to gather WebRTC stats for use in about:webrtc. 12866 - name: media.aboutwebrtc.hist.poll_interval_ms 12867 type: RelaxedAtomicUint32 12868 value: 250 12869 mirror: always 12870 12871 # History time depth in seconds to keep for webrtc:stats for use in about:webrtc. 12872 - name: media.aboutwebrtc.hist.storage_window_s 12873 type: RelaxedAtomicUint32 12874 value: 60 12875 mirror: always 12876 12877 # Time in minutes to retain peer connection stats after closing. 12878 - name: media.aboutwebrtc.hist.prune_after_m 12879 type: RelaxedAtomicUint32 12880 value: 60 * 24 * 2 12881 mirror: always 12882 12883 # Max number of closed PC stats histories to retain 12884 - name: media.aboutwebrtc.hist.closed_stats_to_retain 12885 type: RelaxedAtomicUint32 12886 value: 8 12887 mirror: always 12888 12889 # Gather PeerConnection stats history for display in about:webrtc. If 12890 # disabled history will only gather when about:webrtc is open. Additionally, 12891 # if disabled and when about:webrtc is not in the foreground history data 12892 # will become sparse. 12893 - name: media.aboutwebrtc.hist.enabled 12894 type: RelaxedAtomicBool 12895 #if defined(MOZ_WIDGET_ANDROID) 12896 value: false 12897 #else 12898 value: @IS_NIGHTLY_BUILD@ 12899 #endif 12900 mirror: always 12901 12902 #endif # MOZ_WEBRTC 12903 12904 # HTMLMediaElement.allowedToPlay should be exposed to web content when 12905 # block autoplay rides the trains to release. Until then, Nightly only. 12906 - name: media.allowed-to-play.enabled 12907 type: bool 12908 value: @IS_NIGHTLY_BUILD@ 12909 mirror: always 12910 12911 # Is support for HTMLMediaElement.seekToNextFrame enabled? 12912 - name: media.seekToNextFrame.enabled 12913 type: bool 12914 value: false 12915 mirror: always 12916 12917 # Is the Audio Output Devices API enabled? 12918 - name: media.setsinkid.enabled 12919 type: bool 12920 #if defined(MOZ_WIDGET_ANDROID) 12921 value: false # bug 1473346 12922 #else 12923 value: true 12924 #endif 12925 mirror: always 12926 12927 # Turn on this pref can enable test-only events for media element. 12928 - name: media.testing-only-events 12929 type: bool 12930 value: false 12931 mirror: always 12932 12933 - name: media.useAudioChannelService.testing 12934 type: bool 12935 value: false 12936 mirror: always 12937 12938 - name: media.audioFocus.management 12939 type: bool 12940 #if defined(MOZ_WIDGET_ANDROID) 12941 value: true 12942 #else 12943 value: false 12944 #endif 12945 mirror: always 12946 12947 - name: media.hardwaremediakeys.enabled 12948 type: bool 12949 value: true 12950 mirror: always 12951 12952 # If this pref is on, then `media.mediacontrol.stopcontrol.timer.ms` would take 12953 # effect and determine the timing to stop controlling media. 12954 - name: media.mediacontrol.stopcontrol.timer 12955 type: bool 12956 value: true 12957 mirror: always 12958 12959 # If media is being paused after a certain period, then we would think that 12960 # media doesn't need to be controlled anymore. Therefore, that media would stop 12961 # listening to the media control key events. The value of this pref is how long 12962 # media would stop listening to the event after it's paused. The default value 12963 # is set to 24 hrs (24*60*60*1000) 12964 - name: media.mediacontrol.stopcontrol.timer.ms 12965 type: RelaxedAtomicUint32 12966 value: 86400000 12967 mirror: always 12968 12969 # If this pref is on, we would stop controlling media after it reaches to the 12970 # end. 12971 - name: media.mediacontrol.stopcontrol.aftermediaends 12972 type: bool 12973 value: true 12974 mirror: always 12975 12976 # We would only use media control to control media which duration is longer 12977 # than this value. 12978 - name: media.mediacontrol.eligible.media.duration.s 12979 type: AtomicFloat 12980 value: 3.0f 12981 mirror: always 12982 12983 # Encoder creation strategy for WebRTC 12984 # 0: prefer builtin WebRTC encoder (including OpenH264 via GMP) 12985 # 1: prefer PlatformEncoderModule 12986 - name: media.webrtc.encoder_creation_strategy 12987 type: RelaxedAtomicUint32 12988 #ifdef ANDROID 12989 value: 1 12990 #else 12991 value: 0 12992 #endif 12993 mirror: always 12994 12995 #if defined(XP_MACOSX) 12996 - name: media.webrtc.capture.allow-iosurface 12997 type: RelaxedAtomicBool 12998 value: true 12999 mirror: always 13000 #endif 13001 13002 #if defined(XP_WIN) 13003 - name: media.webrtc.capture.allow-directx 13004 type: RelaxedAtomicBool 13005 value: true 13006 mirror: always 13007 13008 - name: media.webrtc.capture.screen.allow-wgc 13009 type: RelaxedAtomicBool 13010 value: false 13011 mirror: always 13012 13013 - name: media.webrtc.capture.window.allow-wgc 13014 type: RelaxedAtomicBool 13015 value: false 13016 mirror: always 13017 13018 - name: media.webrtc.capture.wgc.allow-zero-hertz 13019 type: RelaxedAtomicBool 13020 value: false 13021 mirror: always 13022 #endif 13023 13024 #if defined(MOZ_WIDGET_GTK) 13025 - name: media.webrtc.capture.allow-pipewire 13026 type: RelaxedAtomicBool 13027 value: true 13028 mirror: always 13029 13030 - name: media.webrtc.camera.allow-pipewire 13031 type: bool 13032 value: false 13033 mirror: once 13034 #endif 13035 13036 - name: media.block-autoplay-until-in-foreground 13037 type: bool 13038 #if !defined(MOZ_WIDGET_ANDROID) 13039 value: true 13040 #else 13041 value: false 13042 #endif 13043 mirror: always 13044 13045 - name: media.webrtc.hw.h264.enabled 13046 type: bool 13047 #if defined(MOZ_WIDGET_ANDROID) 13048 value: true 13049 #else 13050 value: false 13051 #endif 13052 mirror: always 13053 13054 - name: media.webrtc.codec.video.av1.enabled 13055 type: RelaxedAtomicBool 13056 #if defined(MOZ_AV1) 13057 value: true 13058 #endif 13059 mirror: always 13060 13061 # If true, then AV1 will be used as the preferred codec for WebRTC video. 13062 # After the AV1 codec is enabled by default, this pref will be renamed. 13063 - name: media.webrtc.codec.video.av1.experimental_preferred 13064 type: bool 13065 value: false 13066 mirror: always 13067 13068 - name: media.webrtc.simulcast.av1.enabled 13069 type: RelaxedAtomicBool 13070 value: true 13071 mirror: always 13072 13073 - name: media.webrtc.simulcast.h264.enabled 13074 type: RelaxedAtomicBool 13075 value: true 13076 mirror: always 13077 13078 - name: media.webrtc.simulcast.vp9.enabled 13079 type: RelaxedAtomicBool 13080 value: @IS_EARLY_BETA_OR_EARLIER@ 13081 mirror: always 13082 13083 - name: media.peerconnection.video.use_dd 13084 type: RelaxedAtomicBool 13085 value: true 13086 mirror: always 13087 13088 - name: media.webrtc.tls_tunnel_for_all_proxy 13089 type: bool 13090 value: true 13091 mirror: always 13092 13093 - name: media.webrtc.disallow_HTTPS_upgrade_for_TURN 13094 type: bool 13095 value: true 13096 mirror: always 13097 13098 # If true, then we require explicit approval from the embedding app (ex. Fenix) 13099 # on GeckoView to know if we can allow audible, inaudible media or both kinds 13100 # of media to autoplay. 13101 - name: media.geckoview.autoplay.request 13102 type: bool 13103 value: false 13104 mirror: always 13105 13106 # This is used in testing only, in order to skip the prompting process. This 13107 # pref works only when enabling the pref `media.geckoview.autoplay.request`. 13108 # 0=prompt as normal, 1=allow all, 2=deny all, 3=allow audible request, 13109 # 4=deny audible request, 5=allow inaudible request, 6=deny inaudible request. 13110 # 7=leave all requests pending, 8=asynchronous allow all 13111 - name: media.geckoview.autoplay.request.testing 13112 type: uint32_t 13113 value: 0 13114 mirror: always 13115 13116 - name: media.mediacontrol.testingevents.enabled 13117 type: bool 13118 value: false 13119 mirror: always 13120 13121 #if defined(XP_MACOSX) 13122 - name: media.macos.screenrecording.oscheck.enabled 13123 type: bool 13124 value: true 13125 mirror: always 13126 #endif 13127 13128 # When the playback rate of an HTMLMediaElement is greater than this value, or 13129 # lower than the inverse of this value, the audio is muted. 13130 - name: media.audio.playbackrate.muting_threshold 13131 type: uint32_t 13132 value: 8 13133 mirror: always 13134 13135 # The interval of time in milliseconds between attempts to reopen any 13136 # previously unavailable audio device. 13137 - name: media.audio.device.retry.ms 13138 type: RelaxedAtomicInt32 13139 value: 1000 13140 mirror: always 13141 13142 # Time-stretch algorithm single processing sequence length in milliseconds. 13143 # This determines to how long sequences the original sound is chopped in the 13144 # time-stretch algorithm. 13145 - name: media.audio.playbackrate.soundtouch_sequence_ms 13146 type: RelaxedAtomicInt32 13147 value: 10 13148 mirror: always 13149 13150 # Time-stretch algorithm seeking window length in milliseconds for algorithm 13151 # that finds the best possible overlapping location. This determines from how 13152 # wide window the algorithm may look for an optimal joining location when mixing 13153 # the sound sequences back together. 13154 - name: media.audio.playbackrate.soundtouch_seekwindow_ms 13155 type: RelaxedAtomicInt32 13156 value: 15 13157 mirror: always 13158 13159 # Time-stretch algorithm overlap length in milliseconds. When the chopped sound 13160 # sequences are mixed back together, to form a continuous sound stream, this 13161 # parameter defines over how long period the two consecutive sequences are let 13162 # to overlap each other. 13163 - name: media.audio.playbackrate.soundtouch_overlap_ms 13164 type: RelaxedAtomicInt32 13165 value: 8 13166 mirror: always 13167 13168 # The duration, in milliseconds, of decoded audio to keep around in the 13169 # AudioSink ring-buffer. New decoding operations are started when this limit is 13170 # reached. The total size of the ring-buffer is slightly bigger than this. 13171 - name: media.audio.audiosink.threshold_ms 13172 type: AtomicFloat 13173 #if defined(XP_MACOSX) && defined(MOZ_AARCH64) 13174 value: 1000.0 13175 #else 13176 value: 200.0 13177 #endif 13178 mirror: always 13179 13180 - name: media.video-wakelock 13181 type: RelaxedAtomicBool 13182 value: true 13183 mirror: always 13184 13185 # On Mac, enables using the `<Brand> Media Plugin Helper` executable as the 13186 # GMP child process instead of the plugin-container executable. 13187 #if defined(XP_MACOSX) 13188 - name: media.plugin_helper_process.enabled 13189 type: RelaxedAtomicBool 13190 value: true 13191 mirror: always 13192 #endif 13193 13194 # When this is true, the protection mask that Firefox replies to Widevine API 13195 # QueryOutputProtectionStatus is `kProtectionHDCP` when no potential capturing. 13196 - name: media.widevine.hdcp-protection-mask 13197 type: RelaxedAtomicBool 13198 value: true 13199 mirror: always 13200 13201 #--------------------------------------------------------------------------- 13202 # Prefs starting with "memory." 13203 #--------------------------------------------------------------------------- 13204 13205 - name: memory.phc.enabled 13206 type: bool 13207 value: true 13208 mirror: always 13209 13210 - name: memory.phc.min_ram_mb 13211 type: uint32_t 13212 value: 8000 13213 mirror: always 13214 13215 - name: memory.phc.avg_delay.first 13216 type: uint32_t 13217 value: 65536 13218 mirror: always 13219 13220 - name: memory.phc.avg_delay.normal 13221 type: uint32_t 13222 value: 16384 13223 mirror: always 13224 13225 - name: memory.phc.avg_delay.page_reuse 13226 type: uint32_t 13227 value: 262144 13228 mirror: always 13229 13230 - name: memory.phc.avg_delay.content.first 13231 type: uint32_t 13232 value: 16384 13233 mirror: always 13234 13235 - name: memory.phc.avg_delay.content.normal 13236 type: uint32_t 13237 value: 4096 13238 mirror: always 13239 13240 - name: memory.phc.avg_delay.content.page_reuse 13241 type: uint32_t 13242 value: 262144 13243 mirror: always 13244 13245 # The maximum desired size of PHC, This includes allocations and excludes 13246 # metadata. PHC allocations are "oversized" to the system page size. 13247 - name: memory.phc.size_kb 13248 type: uint32_t 13249 #ifdef EARLY_BETA_OR_EARLIER 13250 value: 16 * 1024 13251 #else 13252 # Before Bug 1867191 PHC used aproximately 1.1MB since it was set to a round 13253 # number of 256 pages. To keep the size the same we now specify this 13254 # strange total size, but will follow-up with a more sensible maximum in 13255 # the future. 13256 value: 1024 + 128 13257 #endif 13258 mirror: always 13259 13260 # Tell mozjemalloc and the TaskController to use lazy purge. 13261 - name: memory.lazypurge.enable 13262 type: bool 13263 value: true 13264 mirror: always 13265 13266 # If lazy purge is enabled, the maximum delay we wait for idle time in MS. 13267 - name: memory.lazypurge.maximum_delay 13268 type: uint32_t 13269 value: 5000 13270 mirror: always 13271 13272 # If lazy purge is enabled, the minimum idle budget we wait for in MS. 13273 - name: memory.lazypurge.minimum_idle_budget 13274 type: uint32_t 13275 value: 5 13276 mirror: always 13277 13278 # If lazy purge is enabled, the minimum time we wait with purge after some 13279 # memory was reused (tracked per arena). 13280 - name: memory.lazypurge.reuse_grace_period 13281 type: uint32_t 13282 value: 500 13283 mirror: always 13284 13285 #--------------------------------------------------------------------------- 13286 # Prefs starting with "middlemouse." 13287 #--------------------------------------------------------------------------- 13288 13289 # If set and browser.tabs.opentabfor.middleclick is not set, middle clicking on 13290 # a link opens the link in a new window. 13291 - name: middlemouse.openNewWindow 13292 type: bool 13293 #if defined(ANDROID) || !defined(XP_MACOSX) && defined(XP_UNIX) 13294 value: true 13295 #else 13296 value: false 13297 #endif 13298 mirror: always 13299 13300 #--------------------------------------------------------------------------- 13301 # Prefs starting with "midi." 13302 #--------------------------------------------------------------------------- 13303 13304 - name: midi.testing 13305 type: RelaxedAtomicBool 13306 value: false 13307 mirror: always 13308 13309 #--------------------------------------------------------------------------- 13310 # Prefs starting with "mousewheel." 13311 #--------------------------------------------------------------------------- 13312 13313 # This affects how line scrolls from wheel events will be accelerated. 13314 # Factor to be multiplied for constant acceleration. 13315 - name: mousewheel.acceleration.factor 13316 type: RelaxedAtomicInt32 13317 value: 10 13318 mirror: always 13319 13320 # This affects how line scrolls from wheel events will be accelerated. 13321 # Number of mousewheel clicks when acceleration starts. 13322 # Acceleration can be turned off if pref is set to -1. 13323 - name: mousewheel.acceleration.start 13324 type: RelaxedAtomicInt32 13325 value: -1 13326 mirror: always 13327 13328 # Auto-dir is a feature which treats any single-wheel scroll as a scroll in the 13329 # only one scrollable direction if the target has only one scrollable 13330 # direction. For example, if the user scrolls a vertical wheel inside a target 13331 # which is horizontally scrollable but vertical unscrollable, then the vertical 13332 # scroll is converted to a horizontal scroll for that target. 13333 # Note that auto-dir only takes effect for |mousewheel.*.action|s and 13334 # |mousewheel.*.action.override_x|s whose values are 1. 13335 - name: mousewheel.autodir.enabled 13336 type: bool 13337 value: false 13338 mirror: always 13339 13340 # When a wheel scroll is converted due to auto-dir, which side the converted 13341 # scroll goes towards is decided by one thing called "honoured target". If the 13342 # content of the honoured target horizontally starts from right to left, then 13343 # an upward scroll maps to a rightward scroll and a downward scroll maps to a 13344 # leftward scroll; otherwise, an upward scroll maps to a leftward scroll and a 13345 # downward scroll maps to a rightward scroll. 13346 # If this pref is set to false, then consider the scrolling target as the 13347 # honoured target. 13348 # If set to true, then consider the root element in the document where the 13349 # scrolling target is as the honoured target. But note that there's one 13350 # exception: for targets in an HTML document, the real root element(I.e. the 13351 # <html> element) is typically not considered as a root element, but the <body> 13352 # element is typically considered as a root element. If there is no <body> 13353 # element, then consider the <html> element instead. 13354 - name: mousewheel.autodir.honourroot 13355 type: bool 13356 value: false 13357 mirror: always 13358 13359 - name: mousewheel.system_scroll_override.enabled 13360 type: RelaxedAtomicBool 13361 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK) 13362 value: true 13363 #else 13364 value: false 13365 #endif 13366 mirror: always 13367 13368 # Prefs for overriding the system mouse wheel scrolling speed on 13369 # content of the web pages. When 13370 # "mousewheel.system_scroll_override.enabled" is true and the 13371 # system scrolling speed isn't customized by the user, the content scrolling 13372 # speed is multiplied by the following factors. The value will be used as 13373 # 1/100. E.g., 200 means 2.00. 13374 # NOTE: Even if "mousewheel.system_scroll_override.enabled" is 13375 # true, when Gecko detects the user customized the system scrolling speed 13376 # settings, the override isn't executed. 13377 - name: mousewheel.system_scroll_override.horizontal.factor 13378 type: RelaxedAtomicInt32 13379 value: 200 13380 mirror: always 13381 - name: mousewheel.system_scroll_override.vertical.factor 13382 type: RelaxedAtomicInt32 13383 value: 200 13384 mirror: always 13385 13386 # Mouse wheel scroll transaction is held even if the mouse cursor is moved. 13387 - name: mousewheel.transaction.ignoremovedelay 13388 type: RelaxedAtomicInt32 13389 value: 100 13390 mirror: always 13391 13392 # Mouse wheel scroll transaction period of time (in milliseconds). 13393 - name: mousewheel.transaction.timeout 13394 type: RelaxedAtomicInt32 13395 value: 1500 13396 mirror: always 13397 13398 # Mouse wheel scroll position is determined by GetMessagePos rather than 13399 # LPARAM msg value 13400 - name: mousewheel.ignore_cursor_position_in_lparam 13401 type: RelaxedAtomicBool 13402 value: false 13403 mirror: always 13404 13405 # If line-height is lower than this value (in device pixels), 1 line scroll 13406 # scrolls this height. 13407 - name: mousewheel.min_line_scroll_amount 13408 type: int32_t 13409 value: 5 13410 mirror: always 13411 13412 # Timeout period (in milliseconds) when the mouse wheel event is no longer 13413 # handled as the same series. 13414 - name: mousewheel.scroll_series_timeout 13415 type: RelaxedAtomicInt32 13416 value: 80 13417 mirror: always 13418 13419 #--------------------------------------------------------------------------- 13420 # Prefs starting with "mozilla." 13421 #--------------------------------------------------------------------------- 13422 13423 - name: mozilla.widget.raise-on-setfocus 13424 type: bool 13425 value: true 13426 mirror: once 13427 13428 #--------------------------------------------------------------------------- 13429 # Prefs starting with "network." 13430 #--------------------------------------------------------------------------- 13431 13432 # Force less-secure NTLMv1 when needed (NTLMv2 is the default). 13433 - name: network.auth.force-generic-ntlm-v1 13434 type: RelaxedAtomicBool 13435 value: false 13436 mirror: always 13437 13438 # Sub-resources HTTP-authentication: 13439 # 0 - don't allow sub-resources to open HTTP authentication credentials 13440 # dialogs 13441 # 1 - allow sub-resources to open HTTP authentication credentials dialogs, 13442 # but don't allow it for cross-origin sub-resources 13443 # 2 - allow the cross-origin authentication as well. 13444 - name: network.auth.subresource-http-auth-allow 13445 type: uint32_t 13446 value: 2 13447 mirror: always 13448 13449 # Sub-resources HTTP-authentication for cross-origin images: 13450 # - true: It is allowed to present http auth. dialog for cross-origin images. 13451 # - false: It is not allowed. 13452 # If network.auth.subresource-http-auth-allow has values 0 or 1 this pref does 13453 # not have any effect. 13454 - name: network.auth.subresource-img-cross-origin-http-auth-allow 13455 type: bool 13456 value: false 13457 mirror: always 13458 13459 # Resources that are triggered by some non-web-content: 13460 # - true: They are allow to present http auth. dialog 13461 # - false: They are not allow to present http auth. dialog. 13462 - name: network.auth.non-web-content-triggered-resources-http-auth-allow 13463 type: bool 13464 value: false 13465 mirror: always 13466 13467 # Whether to display auth prompts if X-Frame-Options header will block loading 13468 # page 13469 - name: network.auth.supress_auth_prompt_for_XFO_failures 13470 type: bool 13471 value: true 13472 mirror: always 13473 13474 # whether to redirect the channel for auth redirects. See Bug 1820807 13475 - name: network.auth.use_redirect_for_retries 13476 type: RelaxedAtomicBool 13477 value: @IS_EARLY_BETA_OR_EARLIER@ 13478 mirror: always 13479 13480 # When true, authentication challenges will be sorted even if 13481 # an authentication is already in progress. This may cause issues sometimes. 13482 - name: network.auth.sort_challenge_in_progress 13483 type: RelaxedAtomicBool 13484 value: false 13485 mirror: always 13486 13487 # When true, the hashing of the certificate will be done with the hashing 13488 # algorithm specified in the cert instead of SHA256. 13489 - name: network.auth.sspi_detect_hash 13490 type: RelaxedAtomicBool 13491 value: true 13492 mirror: always 13493 13494 # Default buffer size for buffered stream operations. The actual value used will 13495 # be floored to the nearest power of two. 13496 - name: network.buffer.default_size 13497 type: RelaxedAtomicUint32 13498 value: 65536 13499 mirror: always 13500 13501 # See the full list of values in nsICookieService.idl. 13502 - name: network.cookie.cookieBehavior 13503 type: RelaxedAtomicInt32 13504 value: 0 # accept all cookies 13505 mirror: always 13506 13507 # Maximum client-side cookie life-time cap. Measured in seconds, set to 0 to 13508 # disable. 13509 - name: network.cookie.maxageCap 13510 type: RelaxedAtomicUint32 13511 value: 34560000 13512 mirror: always 13513 13514 # The cookieBehavior to be used in Private Browsing mode. 13515 - name: network.cookie.cookieBehavior.pbmode 13516 type: RelaxedAtomicInt32 13517 value: 0 # accept all cookies 13518 mirror: always 13519 13520 # Changes cookieBehavior=5 to block third-party cookies by default 13521 - name: network.cookie.cookieBehavior.optInPartitioning 13522 type: bool 13523 value: false 13524 mirror: always 13525 13526 # Changes cookieBehavior=5 to block third-party cookies in the private browsing 13527 # mode. 13528 - name: network.cookie.cookieBehavior.optInPartitioning.pbmode 13529 type: bool 13530 value: false 13531 mirror: always 13532 13533 # Whether to block third-party tracker cookie and storage access when 13534 # cookieBehavior=5. 13535 - name: network.cookie.cookieBehavior.trackerCookieBlocking 13536 type: bool 13537 value: false 13538 mirror: always 13539 13540 # Whether to support CHIPS(Cookies Having Independent Partitioned State). 13541 - name: network.cookie.CHIPS.enabled 13542 type: RelaxedAtomicBool 13543 value: true 13544 mirror: always 13545 13546 # Updated to match the target count when we migrate the unpartitioned CHIPS 13547 # cookies to their first-party partition. 13548 - name: network.cookie.CHIPS.lastMigrateDatabase 13549 type: RelaxedAtomicUint32 13550 value: 0 13551 mirror: always 13552 13553 # Used to increase the number of times we want to have migrated the database. 13554 # This lets us remotely perform a database migration with Nimbus. 13555 - name: network.cookie.CHIPS.migrateDatabaseTarget 13556 type: RelaxedAtomicUint32 13557 value: 2 13558 mirror: always 13559 13560 # Stale threshold for cookies in seconds. 13561 - name: network.cookie.staleThreshold 13562 type: uint32_t 13563 value: 60 13564 mirror: always 13565 13566 # Enable CHIPS partition byte limit enforcement 13567 # This pref will only be consulted if CHIPS itself is enabled 13568 - name: network.cookie.chips.partitionLimitEnabled 13569 type: bool 13570 value: true 13571 mirror: always 13572 13573 # CHIPS partition limit DryRun mode disables purging/rejection 13574 # but still checks for capacity overflow and reports telemetry 13575 - name: network.cookie.chips.partitionLimitDryRun 13576 type: bool 13577 value: false 13578 mirror: always 13579 13580 # The actual CHIPS parition limit in bytes 13581 - name: network.cookie.chips.partitionLimitByteCapacity 13582 type: RelaxedAtomicInt32 13583 value: 10240 # 10KiB 13584 mirror: always 13585 13586 - name: network.cookie.sameSite.laxByDefault 13587 type: RelaxedAtomicBool 13588 value: false 13589 mirror: always 13590 13591 - name: network.cookie.sameSite.laxByDefaultWarningsForBeta 13592 type: RelaxedAtomicBool 13593 value: false 13594 mirror: always 13595 13596 # lax-by-default 2 minutes tollerance for unsafe methods. The value is in seconds. 13597 - name: network.cookie.sameSite.laxPlusPOST.timeout 13598 type: uint32_t 13599 value: 120 13600 mirror: always 13601 13602 # For lax-by-default cookies ignore cross-site redirects when the final 13603 # redirect is same-site again. 13604 # https://github.com/httpwg/http-extensions/issues/2104 13605 - name: network.cookie.sameSite.laxByDefault.allowBoomerangRedirect 13606 type: bool 13607 value: true 13608 mirror: always 13609 13610 - name: network.cookie.sameSite.noneRequiresSecure 13611 type: bool 13612 value: true 13613 mirror: always 13614 13615 - name: network.cookie.sameSite.schemeful 13616 type: bool 13617 value: @IS_NIGHTLY_BUILD@ 13618 mirror: always 13619 13620 - name: network.cookie.sameSite.crossSiteIframeSetCheck 13621 type: bool 13622 value: true 13623 mirror: always 13624 13625 # If we should not store "persistent" cookies at all, i.e., make the 13626 # "persistent" storage be like "private" storage. This value is only read when 13627 # instantiating persistent storage for the cookie service, which usually only 13628 # happens when the cookie service singleton is created. 13629 - name: network.cookie.noPersistentStorage 13630 type: bool 13631 value: false 13632 mirror: always 13633 13634 # If true then any cookies containing unicode will be rejected 13635 - name: network.cookie.blockUnicode 13636 type: RelaxedAtomicBool 13637 value: false 13638 mirror: always 13639 13640 # If true cookies loaded from the sqlite DB that have a creation or 13641 # last accessed time that is in the future will be fixed and the 13642 # timestamps will be set to the current time. 13643 - name: network.cookie.fixup_on_db_load 13644 type: RelaxedAtomicBool 13645 value: true 13646 mirror: always 13647 13648 # If true content types of multipart/x-mixed-replace cannot set a cookie 13649 - name: network.cookie.prevent_set_cookie_from_multipart 13650 type: RelaxedAtomicBool 13651 value: true 13652 mirror: always 13653 13654 # Use sever time (Date header) to adjust the expire cookie attribute 13655 - name: network.cookie.useServerTime 13656 type: RelaxedAtomicBool 13657 value: true 13658 mirror: always 13659 13660 # When true, Firefox will reject nameless cookies that contain `=` in value. 13661 - name: network.cookie.block_nameless_with_equal_char 13662 type: RelaxedAtomicBool 13663 value: true 13664 mirror: always 13665 13666 # A Enable a workaround for XPCShell tests to avoid setting the cookies via 13667 # HttpChannelParent actor 13668 - name: network.cookie.skip_browsing_context_check_in_parent_for_testing 13669 type: bool 13670 value: false 13671 mirror: always 13672 13673 # If we should attempt to race the cache with network. 13674 # See also race_with_non_ssd for auto-enable behavior on Windows non-SSD drives. 13675 - name: network.http.rcwn.enabled 13676 type: bool 13677 value: false 13678 mirror: always 13679 13680 # If we should attempt to race the cache with network for non-SSD drives (Windows only). 13681 - name: network.http.rcwn.race_with_non_ssd 13682 type: bool 13683 value: true 13684 mirror: always 13685 13686 - name: network.http.rcwn.cache_queue_normal_threshold 13687 type: uint32_t 13688 value: 8 13689 mirror: always 13690 13691 - name: network.http.rcwn.cache_queue_priority_threshold 13692 type: uint32_t 13693 value: 2 13694 mirror: always 13695 13696 # We might attempt to race the cache with the network only if a resource 13697 # is smaller than this size. 13698 - name: network.http.rcwn.small_resource_size_kb 13699 type: uint32_t 13700 value: 256 13701 mirror: always 13702 13703 - name: network.http.rcwn.min_wait_before_racing_ms 13704 type: uint32_t 13705 value: 0 13706 mirror: always 13707 13708 - name: network.http.rcwn.max_wait_before_racing_ms 13709 type: uint32_t 13710 value: 500 13711 mirror: always 13712 13713 # Whether to send the Referer header in response to a meta refresh, or 13714 # in response to a Refresh header. 13715 - name: network.http.referer.sendFromRefresh 13716 type: bool 13717 value: true 13718 mirror: always 13719 13720 # false=real referer, true=spoof referer (use target URI as referer). 13721 - name: network.http.referer.spoofSource 13722 type: bool 13723 value: false 13724 mirror: always 13725 13726 # Check whether we need to hide referrer when leaving a .onion domain. 13727 # false=allow onion referer, true=hide onion referer (use empty referer). 13728 - name: network.http.referer.hideOnionSource 13729 type: bool 13730 value: true 13731 mirror: always 13732 13733 # Include an origin header on non-GET and non-HEAD requests regardless of CORS. 13734 # 0=never send, 1=send when same-origin only, 2=always send. 13735 - name: network.http.sendOriginHeader 13736 type: uint32_t 13737 value: 2 13738 mirror: always 13739 13740 # Include an idempotency-key header for POST requests 13741 - name: network.http.idempotencyKey.enabled 13742 type: RelaxedAtomicBool 13743 value: @IS_NIGHTLY_BUILD@ 13744 mirror: always 13745 13746 # Whether to respect the redirected-tainted origin flag 13747 # https://fetch.spec.whatwg.org/#concept-request-tainted-origin 13748 - name: network.http.origin.redirectTainted 13749 type: bool 13750 value: true 13751 mirror: always 13752 13753 # If true, cross origin fetch (or XHR) requests would be keyed 13754 # with a different cache key. 13755 - name: network.fetch.cache_partition_cross_origin 13756 type: RelaxedAtomicBool 13757 value: true 13758 mirror: always 13759 13760 # If true, when browser code itself makes network requests, default to 13761 # omitting credentials. 13762 - name: network.fetch.systemDefaultsToOmittingCredentials 13763 type: RelaxedAtomicBool 13764 value: true 13765 mirror: always 13766 13767 # Prefs allowing granular control of referers. 13768 # 0=don't send any, 1=send only on clicks, 2=send on image requests as well 13769 - name: network.http.sendRefererHeader 13770 type: uint32_t 13771 value: 2 13772 mirror: always 13773 do_not_use_directly: true 13774 13775 # Whether to add urgency and incremental to request headers 13776 - name: network.http.priority_header.enabled 13777 type: RelaxedAtomicBool 13778 value: true 13779 mirror: always 13780 13781 # The maximum allowed length for a referrer header - 4096 default. 13782 # 0 means no limit. 13783 - name: network.http.referer.referrerLengthLimit 13784 type: uint32_t 13785 value: 4096 13786 mirror: always 13787 13788 # 0=always send, 1=send iff base domains match, 2=send iff hosts match. 13789 - name: network.http.referer.XOriginPolicy 13790 type: uint32_t 13791 value: 0 13792 mirror: always 13793 do_not_use_directly: true 13794 13795 # 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port. 13796 - name: network.http.referer.trimmingPolicy 13797 type: uint32_t 13798 value: 0 13799 mirror: always 13800 do_not_use_directly: true 13801 13802 # 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port. 13803 - name: network.http.referer.XOriginTrimmingPolicy 13804 type: uint32_t 13805 value: 0 13806 mirror: always 13807 do_not_use_directly: true 13808 13809 # Set the default Referrer Policy; to be used unless overriden by the site. 13810 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin, 13811 # 3=no-referrer-when-downgrade. 13812 - name: network.http.referer.defaultPolicy 13813 type: uint32_t 13814 value: 2 13815 mirror: always 13816 13817 # Set the default Referrer Policy applied to third-party trackers when the 13818 # default cookie policy is set to reject third-party trackers, to be used 13819 # unless overriden by the site. 13820 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin, 13821 # 3=no-referrer-when-downgrade. 13822 # Trim referrers from trackers to origins by default. 13823 - name: network.http.referer.defaultPolicy.trackers 13824 type: uint32_t 13825 value: 2 13826 mirror: always 13827 13828 # Set the Private Browsing Default Referrer Policy, to be used 13829 # unless overriden by the site. 13830 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin, 13831 # 3=no-referrer-when-downgrade. 13832 - name: network.http.referer.defaultPolicy.pbmode 13833 type: uint32_t 13834 value: 2 13835 mirror: always 13836 13837 # Set to ignore referrer policies which is less restricted than the default for 13838 # cross-site requests, including 'unsafe-url', 'no-referrer-when-downgrade' and 13839 # 'origin-when-cross-origin'. 13840 - name: network.http.referer.disallowCrossSiteRelaxingDefault 13841 type: bool 13842 value: true 13843 mirror: always 13844 13845 # Whether we ignore less restricted referrer policies for top navigations. 13846 - name: network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation 13847 type: bool 13848 value: false 13849 mirror: always 13850 13851 13852 # Set to ignore referrer policies which is less restricted than the default for 13853 # cross-site requests in the private browsing mode, including 'unsafe-url', 13854 # 'no-referrer-when-downgrade' and 'origin-when-cross-origin'. 13855 - name: network.http.referer.disallowCrossSiteRelaxingDefault.pbmode 13856 type: bool 13857 value: true 13858 mirror: always 13859 13860 # Whether we ignore less restricted referrer policies for top navigations in the 13861 # private browsing mode. 13862 - name: network.http.referer.disallowCrossSiteRelaxingDefault.pbmode.top_navigation 13863 type: bool 13864 value: true 13865 mirror: always 13866 13867 # Set the Private Browsing Default Referrer Policy applied to third-party 13868 # trackers when the default cookie policy is set to reject third-party 13869 # trackers, to be used unless overriden by the site. 13870 # 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin, 13871 # 3=no-referrer-when-downgrade. 13872 # No need to change this pref for trimming referrers from trackers since in 13873 # private windows we already trim all referrers to origin only. 13874 - name: network.http.referer.defaultPolicy.trackers.pbmode 13875 type: uint32_t 13876 value: 2 13877 mirror: always 13878 13879 # Whether certain http header values should be censored out in logs. 13880 # Specifically filters out "authorization" and "proxy-authorization". 13881 - name: network.http.sanitize-headers-in-logs 13882 type: RelaxedAtomicBool 13883 value: true 13884 mirror: always 13885 13886 # Whether network error logging is enabled. 13887 - name: network.http.network_error_logging.enabled 13888 type: RelaxedAtomicBool 13889 value: false 13890 mirror: always 13891 13892 # Whether or not we use Windows for SSO to Microsoft sites. 13893 - name: network.http.windows-sso.enabled 13894 type: RelaxedAtomicBool 13895 value: false 13896 mirror: always 13897 13898 # Whether windows-sso is enabled for the default (0) container. 13899 # To enable SSO for additional containers, add a new pref like 13900 # `network.http.windows-sso.container-enabled.${containerId}` = true 13901 - name: network.http.windows-sso.container-enabled.0 13902 type: bool 13903 value: true 13904 mirror: never 13905 13906 # Whether or not we use MS Entra SSO to network.microsoft-sso-authority-list sites. 13907 - name: network.http.microsoft-entra-sso.enabled 13908 type: RelaxedAtomicBool 13909 value: false 13910 mirror: always 13911 13912 # Whether microsoft-entra-sso is enabled for the default (0) container. 13913 # To enable SSO for additional containers, add a new pref like 13914 # `network.http.microsoft-entra-sso.container-enabled.${containerId}` = true 13915 - name: network.http.microsoft-entra-sso.container-enabled.0 13916 type: bool 13917 value: true 13918 mirror: never 13919 13920 # To specify the list of trusted Microsoft Single Sign-On (SSO) authority URLs 13921 # This is needed for macOS unlike Windows where we send every URL to SSO 13922 - name: network.microsoft-sso-authority-list 13923 type: String 13924 value: >- 13925 login.microsoft.com, 13926 login.microsoftonline.com, 13927 sts.windows.net, 13928 login.partner.microsoftonline.cn, 13929 login.chinacloudapi.cn, 13930 login.microsoftonline.us, 13931 login-us.microsoftonline.com 13932 mirror: never 13933 13934 # The factor by which to increase the keepalive timeout when the 13935 # NS_HTTP_LARGE_KEEPALIVE flag is used for a connection 13936 - name: network.http.largeKeepaliveFactor 13937 type: RelaxedAtomicUint32 13938 #if defined(ANDROID) 13939 value: 10 13940 #else 13941 value: 20 13942 #endif 13943 mirror: always 13944 13945 # Max size, in bytes, for received HTTP response header. 13946 - name: network.http.max_response_header_size 13947 type: RelaxedAtomicUint32 13948 value: 393216 13949 mirror: always 13950 13951 # Whether or not we give more priority to active tab. 13952 - name: network.http.active_tab_priority 13953 type: RelaxedAtomicBool 13954 #if defined(ANDROID) 13955 value: false 13956 #else 13957 value: true 13958 #endif 13959 mirror: always 13960 13961 # Treat all Unicode labels as confusable/unsafe so that they show up 13962 # as Punycode in the UI. 13963 - name: network.IDN_show_punycode 13964 type: RelaxedAtomicBool 13965 value: false 13966 mirror: always 13967 13968 # If set to true, IOService.offline depends on IOService.connectivity. 13969 - name: network.offline-mirrors-connectivity 13970 type: RelaxedAtomicBool 13971 value: false 13972 mirror: always 13973 13974 # If set to true, disallow localhost connections when offline. 13975 - name: network.disable-localhost-when-offline 13976 type: RelaxedAtomicBool 13977 value: false 13978 mirror: always 13979 13980 # If set to true, Firefox will use the file extension of a URL 13981 # to sniff its content type. When false, nsUnknownDecoder will 13982 # use the file extension only for file URLs 13983 - name: network.sniff.use_extension 13984 type: RelaxedAtomicBool 13985 value: false 13986 mirror: always 13987 13988 # Disable requests to 0.0.0.0 13989 # See Bug 1889130 13990 - name: network.socket.ip_addr_any.disabled 13991 type: RelaxedAtomicBool 13992 value: true 13993 mirror: always 13994 13995 # Set true to allow resolving proxy for localhost 13996 - name: network.proxy.allow_hijacking_localhost 13997 type: RelaxedAtomicBool 13998 value: false 13999 mirror: always 14000 14001 # This pref will still treat localhost URLs as secure even when hijacked 14002 # during testing. This is necessary for automated testing to check that we 14003 # actually treat localhost as a secure origin. 14004 - name: network.proxy.testing_localhost_is_secure_when_hijacked 14005 type: RelaxedAtomicBool 14006 value: true 14007 mirror: always 14008 14009 # The timeout used when calling DhcpRequestParams. The call may sometimes hang 14010 # after resuming from suspend. 14011 - name: network.proxy.dhcp_wpad_timeout_sec 14012 type: AtomicFloat 14013 value: 5.0 14014 mirror: always 14015 14016 # When true, we only allow one outstanding GetPacFromDHCP runnable 14017 - name: network.proxy.dhcp_wpad_only_one_outstanding 14018 type: RelaxedAtomicBool 14019 value: true 14020 mirror: always 14021 14022 # Allow CookieJarSettings to be unblocked for channels without a document. 14023 # This is for testing only. 14024 - name: network.cookieJarSettings.unblocked_for_testing 14025 type: bool 14026 value: false 14027 mirror: always 14028 14029 - name: network.predictor.enable-hover-on-ssl 14030 type: bool 14031 value: false 14032 mirror: always 14033 14034 # Indicates whether the `fetchpriority` attribute for elements which support it 14035 # (e.g. `<script>`) is enabled. 14036 - name: network.fetchpriority.enabled 14037 type: RelaxedAtomicBool 14038 value: true 14039 mirror: always 14040 14041 # When true, the channel's urgency will be adjusted based on the 14042 # channel's nsISupportsPriority. 14043 - name: network.fetchpriority.adjust_urgency 14044 type: RelaxedAtomicBool 14045 value: true 14046 mirror: always 14047 14048 # Adjustments to apply to the internal priority of <link rel=preload as=script 14049 # fetchpriority=low/high/auto> and equivalent Link header with respect to the 14050 # case when network.fetchpriority is disabled. 14051 # - When the flag is disabled, Gecko currently sets priority to HIGHEST. 14052 # - When the flag is enabled, it respectively maps to LOW/HIGHEST/HIGHEST. 14053 - name: network.fetchpriority.adjustments.link-preload-script.low 14054 type: int32_t 14055 value: 30 14056 mirror: always 14057 - name: network.fetchpriority.adjustments.link-preload-script.high 14058 type: int32_t 14059 value: 0 14060 mirror: always 14061 - name: network.fetchpriority.adjustments.link-preload-script.auto 14062 type: int32_t 14063 value: 0 14064 mirror: always 14065 14066 # Adjustments to apply to the internal priority of <script type="module" 14067 # fetchpriority=low/high/auto> with respect to the case when 14068 # network.fetchpriority is disabled. 14069 # - When the flag is disabled, Gecko currently sets priority to NORMAL. 14070 # - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL. 14071 - name: network.fetchpriority.adjustments.module-script.low 14072 type: int32_t 14073 value: 10 14074 mirror: always 14075 - name: network.fetchpriority.adjustments.module-script.high 14076 type: int32_t 14077 value: -10 14078 mirror: always 14079 - name: network.fetchpriority.adjustments.module-script.auto 14080 type: int32_t 14081 value: 0 14082 mirror: always 14083 14084 # Adjustments to apply to the internal priority of async or defer <script 14085 # fetchpriority=low/high/auto> with respect to the case when 14086 # network.fetchpriority is disabled. 14087 # - When the flag is disabled, Gecko currently sets priority to NORMAL. 14088 # - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL. 14089 - name: network.fetchpriority.adjustments.async-or-defer-script.low 14090 type: int32_t 14091 value: 10 14092 mirror: always 14093 - name: network.fetchpriority.adjustments.async-or-defer-script.high 14094 type: int32_t 14095 value: -10 14096 mirror: always 14097 - name: network.fetchpriority.adjustments.async-or-defer-script.auto 14098 type: int32_t 14099 value: 0 14100 mirror: always 14101 14102 # Adjustments to apply to the internal priority of <script 14103 # fetchpriority=low/high/auto> inside the <head>, with respect to the case when 14104 # network.fetchpriority is disabled. 14105 # - When the flag is disabled, Gecko currently sets priority to NORMAL. 14106 # - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL. 14107 - name: network.fetchpriority.adjustments.script-in-head.low 14108 type: int32_t 14109 value: 10 14110 mirror: always 14111 - name: network.fetchpriority.adjustments.script-in-head.high 14112 type: int32_t 14113 value: -10 14114 mirror: always 14115 - name: network.fetchpriority.adjustments.script-in-head.auto 14116 type: int32_t 14117 value: 0 14118 mirror: always 14119 14120 # Adjustments to apply to the internal priority of <script 14121 # fetchpriority=low/high/auto> (other than the scripts handled above) with 14122 # respect to the case when network.fetchpriority is disabled. 14123 # - When the flag is disabled, Gecko currently sets priority to NORMAL. 14124 # - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL. 14125 - name: network.fetchpriority.adjustments.other-script.low 14126 type: int32_t 14127 value: 10 14128 mirror: always 14129 - name: network.fetchpriority.adjustments.other-script.high 14130 type: int32_t 14131 value: -10 14132 mirror: always 14133 - name: network.fetchpriority.adjustments.other-script.auto 14134 type: int32_t 14135 value: 0 14136 mirror: always 14137 14138 # Adjustments to apply to the internal priority of <link rel=preload as=font 14139 # fetchpriority=low/high/auto> with respect to the case when 14140 # network.fetchpriority is disabled. 14141 # - When the flag is disabled, Gecko currently sets priority to HIGH. 14142 # - When the flag is enabled, it respectively maps to LOW/HIGH/HIGH. 14143 - name: network.fetchpriority.adjustments.link-preload-font.low 14144 type: int32_t 14145 value: 20 14146 mirror: always 14147 - name: network.fetchpriority.adjustments.link-preload-font.high 14148 type: int32_t 14149 value: -10 14150 mirror: always 14151 - name: network.fetchpriority.adjustments.link-preload-font.auto 14152 type: int32_t 14153 value: 0 14154 mirror: always 14155 14156 # Adjustments to apply to the internal priority of <link rel=preload as=fetch 14157 # fetchpriority=low/high/auto> with respect to the case when 14158 # network.fetchpriority is disabled. 14159 # - When the flag is disabled, Gecko currently sets priority to NORMAL. 14160 # - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL. 14161 - name: network.fetchpriority.adjustments.link-preload-fetch.low 14162 type: int32_t 14163 value: 10 14164 mirror: always 14165 - name: network.fetchpriority.adjustments.link-preload-fetch.high 14166 type: int32_t 14167 value: -10 14168 mirror: always 14169 - name: network.fetchpriority.adjustments.link-preload-fetch.auto 14170 type: int32_t 14171 value: 0 14172 mirror: always 14173 14174 # Adjustments to apply to the internal priority of deferred style for 14175 # fetchpriority=low/high/auto> with respect to the case when 14176 # network.fetchpriority is disabled. 14177 # - When the flag is disabled, Gecko currently sets priority to NORMAL. 14178 # - When the flag is enabled, it respectively maps to LOW/NORMAL/NORMAL. 14179 - name: network.fetchpriority.adjustments.deferred-style.low 14180 type: int32_t 14181 value: 10 14182 mirror: always 14183 - name: network.fetchpriority.adjustments.deferred-style.high 14184 type: int32_t 14185 value: 0 14186 mirror: always 14187 - name: network.fetchpriority.adjustments.deferred-style.auto 14188 type: int32_t 14189 value: 0 14190 mirror: always 14191 14192 # Adjustments to apply to the internal priority of <link rel=preload as=style 14193 # fetchpriority=low/high/auto> with respect to the case when 14194 # network.fetchpriority is disabled. 14195 # - When the flag is disabled, Gecko currently sets priority to HIGHEST. 14196 # - When the flag is enabled, it respectively maps to HIGH/HIGHEST/HIGHEST. 14197 - name: network.fetchpriority.adjustments.link-preload-style.low 14198 type: int32_t 14199 value: 10 14200 mirror: always 14201 - name: network.fetchpriority.adjustments.link-preload-style.high 14202 type: int32_t 14203 value: 0 14204 mirror: always 14205 - name: network.fetchpriority.adjustments.link-preload-style.auto 14206 type: int32_t 14207 value: 0 14208 mirror: always 14209 14210 # Adjustments to apply to the internal priority of other non-deferred 14211 # stylesheet load for fetchpriority=low/high/auto with respect to the case when 14212 # network.fetchpriority is disabled. 14213 # - When the flag is disabled, Gecko currently sets priority to NORMAL. 14214 # - When the flag is enabled, it respectively maps to HIGH/HIGHEST/NORMAL. 14215 - name: network.fetchpriority.adjustments.non-deferred-style.low 14216 type: int32_t 14217 value: 0 14218 mirror: always 14219 - name: network.fetchpriority.adjustments.non-deferred-style.high 14220 type: int32_t 14221 value: -20 14222 mirror: always 14223 - name: network.fetchpriority.adjustments.non-deferred-style.auto 14224 type: int32_t 14225 value: 0 14226 mirror: always 14227 14228 # Adjustments to apply to the internal priority of global fetch API 14229 # for fetchpriority=low/high/auto with respect to the case when 14230 # network.fetchpriority is disabled. 14231 # - When the flag is disabled, Gecko currently sets priority to NORMAL. 14232 # - When the flag is enabled, it respectively maps to LOW/HIGH/NORMAL. 14233 - name: network.fetchpriority.adjustments.global-fetch-api.low 14234 type: RelaxedAtomicInt32 14235 value: 10 14236 mirror: always 14237 - name: network.fetchpriority.adjustments.global-fetch-api.high 14238 type: RelaxedAtomicInt32 14239 value: -10 14240 mirror: always 14241 - name: network.fetchpriority.adjustments.global-fetch-api.auto 14242 type: RelaxedAtomicInt32 14243 value: 0 14244 mirror: always 14245 14246 # Adjustments to apply to the internal priority of <link rel=preload as=images 14247 # fetchpriority=low/high/auto> and <img fetchpriority=low/high/auto> with 14248 # respect to the case when network.fetchpriority is disabled. 14249 # - When the flag is disabled, Gecko currently sets priority to LOW. 14250 # - When the flag is enabled, it respectively maps to LOW/LOW/HIGH. 14251 # The image code can currently further adjust the priority for image load, see 14252 # imgRequest::BoostPriority and AdjustPriorityForImages. 14253 - name: network.fetchpriority.adjustments.images.low 14254 type: int32_t 14255 value: 10 14256 mirror: always 14257 - name: network.fetchpriority.adjustments.images.high 14258 type: int32_t 14259 value: -20 14260 mirror: always 14261 - name: network.fetchpriority.adjustments.images.auto 14262 type: int32_t 14263 value: 0 14264 mirror: always 14265 14266 # Adjustments to apply to the internal priority of <audio>, <track>, <video>, 14267 # or <link rel=preload as=audio/track/video> with respect to the case when 14268 # network.fetchpriority is disabled. 14269 # - When the flag is disabled, Gecko currently sets priority to NORMAL. 14270 # - When the flag is enabled, it respectively maps to LOW/LOW/HIGH. 14271 - name: network.fetchpriority.adjustments.media.low 14272 type: int32_t 14273 value: 10 14274 mirror: always 14275 - name: network.fetchpriority.adjustments.media.high 14276 type: int32_t 14277 value: 0 14278 mirror: always 14279 - name: network.fetchpriority.adjustments.media.auto 14280 type: int32_t 14281 value: 0 14282 mirror: always 14283 14284 # Enables `<link rel="preconnect">` tag and `Link: rel=preconnect` response header 14285 # handling. 14286 - name: network.preconnect 14287 type: RelaxedAtomicBool 14288 value: true 14289 mirror: always 14290 14291 # Enables `<link rel="modulepreload">` tag and `Link: rel=modulepreload` 14292 # response header handling. 14293 - name: network.modulepreload 14294 type: RelaxedAtomicBool 14295 value: true 14296 mirror: always 14297 14298 # Enable 103 Early Hint status code (RFC 8297) 14299 - name: network.early-hints.enabled 14300 type: RelaxedAtomicBool 14301 value: true 14302 mirror: always 14303 14304 # Enable sending 103 (Early Hints) responses over HTTP/1.1 14305 - name: network.early-hints.over-http-v1-1.enabled 14306 type: RelaxedAtomicBool 14307 value: true 14308 mirror: always 14309 14310 # Enable `Link: rel=preconnect` in 103 Early Hint response. 14311 - name: network.early-hints.preconnect.enabled 14312 type: RelaxedAtomicBool 14313 value: true 14314 mirror: always 14315 14316 # The max number of speculative connections we allow for `Link: rel=preconnect`. 14317 # When 0, the speculative connection created due to `Link: rel=preconnect` will 14318 # be limited by "network.http.speculative-parallel-limit". 14319 - name: network.early-hints.preconnect.max_connections 14320 type: uint32_t 14321 value: 10 14322 mirror: always 14323 14324 # How long we should wait for EarlyHintPreloader to be used. 14325 # Under normal circumstances it should be used immidiately. 14326 - name: network.early-hints.parent-connect-timeout 14327 type: uint32_t 14328 value: 10000 14329 mirror: always 14330 14331 # Whether to use the network process or not 14332 # Start a separate socket process. Performing networking on the socket process 14333 # is control by a sepparate pref 14334 # ("network.http.network_access_on_socket_process.enabled"). 14335 # Changing these prefs requires a restart. 14336 - name: network.process.enabled 14337 type: RelaxedAtomicBool 14338 mirror: always 14339 #if defined(ANDROID) || defined(MOZ_THUNDERBIRD) || defined(XP_IOS) 14340 value: false # see bug 1641427 14341 #else 14342 value: true 14343 #endif 14344 14345 # Whether we can send OnDataAvailable to content process directly. 14346 - name: network.send_ODA_to_content_directly 14347 type: RelaxedAtomicBool 14348 value: true 14349 mirror: always 14350 14351 # Whether we can send OnDataFinished to html5parser in content process directly 14352 - name: network.send_OnDataFinished.html5parser 14353 type: RelaxedAtomicBool 14354 value: true 14355 mirror: always 14356 14357 # Whether we can send OnDataFinished in the content process 14358 - name: network.send_OnDataFinished 14359 type: RelaxedAtomicBool 14360 value: true 14361 mirror: always 14362 14363 # Whether we can send OnDataFinished to content process directly. 14364 - name: network.send_OnDataFinished.nsInputStreamPump 14365 type: RelaxedAtomicBool 14366 value: true 14367 mirror: always 14368 14369 # Whether we can send OnDataFinished to cssLoader in content process. 14370 - name: network.send_OnDataFinished.cssLoader 14371 type: RelaxedAtomicBool 14372 value: true 14373 mirror: always 14374 14375 # Whether we can send send OnDataFinished only after dispatching 14376 # all the progress events on the main thread 14377 - name: network.send_OnDataFinished_after_progress_updates 14378 type: RelaxedAtomicBool 14379 value: false 14380 mirror: always 14381 14382 # Perform all network access on the socket process. 14383 # The pref requires "network.process.enabled" to be true. 14384 # Changing these prefs requires a restart. 14385 - name: network.http.network_access_on_socket_process.enabled 14386 type: RelaxedAtomicBool 14387 mirror: always 14388 value: false 14389 14390 # Telemetry of traffic categories. Whether or not to enable HttpTrafficAnalyzer. 14391 - name: network.traffic_analyzer.enabled 14392 type: RelaxedAtomicBool 14393 value: true 14394 mirror: always 14395 14396 # Whether DNS resolution is limited to literals and cached entries. 14397 - name: network.dns.disabled 14398 type: RelaxedAtomicBool 14399 value: false 14400 mirror: always 14401 14402 - name: network.dns.disablePrefetchFromHTTPS 14403 type: bool 14404 value: false 14405 mirror: always 14406 14407 # For testing purpose only: allow dns prefetch through proxies 14408 - name: network.dns.prefetch_via_proxy 14409 type: bool 14410 value: false 14411 mirror: always 14412 14413 # Max time to shutdown the resolver threads 14414 - name: network.dns.resolver_shutdown_timeout_ms 14415 type: uint32_t 14416 value: 5000 14417 mirror: always 14418 14419 # When true on Windows DNS resolutions for single label domains 14420 # (domains that don't contain a dot) will be resolved using the DnsQuery 14421 # API instead of PR_GetAddrInfoByName 14422 - name: network.dns.dns_query_single_label 14423 type: RelaxedAtomicBool 14424 value: false 14425 mirror: always 14426 14427 # Use platform DNS APIs (where available) to resolve HTTPS queries 14428 - name: network.dns.native_https_query 14429 type: RelaxedAtomicBool 14430 #if !defined(XP_MACOSX) 14431 value: true 14432 #else 14433 value: false 14434 #endif 14435 mirror: always 14436 14437 # DnsQuery_A is broken for HTTPS queries on Windows 10. 14438 # Once it gets fixed, we can flip this pref to enable it. 14439 # Changes might not take effect until restart. 14440 - name: network.dns.native_https_query_win10 14441 type: RelaxedAtomicBool 14442 value: false 14443 mirror: always 14444 14445 # When true, the HTTPS query will actually call the native 14446 # platform API. When false it will return before the call 14447 # to the platform API 14448 # This pref is necessary because having a HTTPS record 14449 # could cause channels to connect to a different port, 14450 # which is not desirable in automation. 14451 - name: network.dns.native_https_query_in_automation 14452 type: RelaxedAtomicBool 14453 value: false 14454 mirror: always 14455 14456 #ifdef MOZ_WIDGET_ANDROID 14457 # When resolving a native HTTPS query with native APIs 14458 # the Android implementation has a max timeout 14459 - name: network.dns.native_https_timeout_android 14460 type: RelaxedAtomicInt32 14461 value: 20000 14462 mirror: always 14463 #endif 14464 14465 #ifdef XP_MACOSX 14466 # When resolving a native HTTPS query with native APIs 14467 # the MacOS implementation has a max timeout 14468 - name: network.dns.native_https_timeout_mac_msec 14469 type: RelaxedAtomicInt32 14470 value: 5000 14471 mirror: always 14472 #endif 14473 14474 # When this pref is true, we copy the host name to a fresh string before 14475 # calling into getaddrinfo. 14476 - name: network.dns.copy_string_before_call 14477 type: RelaxedAtomicBool 14478 value: true 14479 mirror: always 14480 14481 - name: network.dns.max_high_priority_threads 14482 type: RelaxedAtomicUint32 14483 value: 40 14484 mirror: always 14485 14486 - name: network.dns.max_any_priority_threads 14487 type: RelaxedAtomicUint32 14488 value: 24 14489 mirror: always 14490 14491 # This makes it so NS_HTTP_REFRESH_DNS is only 14492 # set on DNS resolutions when LOAD_FRESH_CONNECTION is set. 14493 # That's because we don't need to refresh DNS on 14494 # every page reload. 14495 - name: network.dns.only_refresh_on_fresh_connection 14496 type: RelaxedAtomicBool 14497 value: true 14498 mirror: always 14499 14500 # When true, DNS resolutions will downgrade DNS 14501 # from AF_UNSPEC to AF_INET when no non-local IPv6 addresses are 14502 # available. 14503 - name: network.dns.skip_ipv6_when_no_addresses 14504 type: RelaxedAtomicBool 14505 value: false 14506 mirror: always 14507 14508 # This preference specifies a list of domains for which DNS lookups will be 14509 # IPv4 only. Works around broken DNS servers which can't handle IPv6 lookups 14510 # and/or allows the user to disable IPv6 on a per-domain basis. See bug 68796. 14511 - name: network.dns.ipv4OnlyDomains 14512 type: String 14513 value: "" 14514 mirror: never 14515 14516 # This is the number of dns cache entries allowed 14517 - name: network.dnsCacheEntries 14518 type: RelaxedAtomicUint32 14519 value: 800 14520 mirror: always 14521 14522 # In the absence of OS TTLs, the DNS cache TTL value 14523 - name: network.dnsCacheExpiration 14524 type: RelaxedAtomicUint32 14525 value: 60 14526 mirror: always 14527 14528 # Get TTL; not supported on all platforms; nop on the unsupported ones. 14529 - name: network.dns.get-ttl 14530 type: RelaxedAtomicBool 14531 #if defined(XP_WIN) 14532 value: true 14533 #else 14534 value: false 14535 #endif 14536 mirror: always 14537 14538 # For testing purposes! Makes the native resolver resolve IPv4 "localhost" 14539 # instead of the actual given name. 14540 - name: network.dns.native-is-localhost 14541 type: RelaxedAtomicBool 14542 value: false 14543 mirror: always 14544 14545 # The grace period allows the DNS cache to use expired entries, while kicking off 14546 # a revalidation in the background. 14547 - name: network.dnsCacheExpirationGracePeriod 14548 type: RelaxedAtomicUint32 14549 value: 600 14550 mirror: always 14551 14552 # This preference can be used to turn off DNS prefetch. 14553 - name: network.dns.disablePrefetch 14554 type: RelaxedAtomicBool 14555 value: false 14556 mirror: always 14557 14558 # This preference controls whether .onion hostnames are 14559 # rejected before being given to DNS. RFC 7686 14560 - name: network.dns.blockDotOnion 14561 type: RelaxedAtomicBool 14562 value: true 14563 mirror: always 14564 14565 # These domains are treated as localhost equivalent 14566 - name: network.dns.localDomains 14567 type: String 14568 value: "" 14569 mirror: never 14570 14571 # When non empty all non-localhost DNS queries (including IP addresses) 14572 # resolve to this value. The value can be a name or an IP address. 14573 # domains mapped to localhost with localDomains stay localhost. 14574 - name: network.dns.forceResolve 14575 type: String 14576 value: "" 14577 mirror: never 14578 14579 # Contols whether or not "localhost" should resolve when offline 14580 - name: network.dns.offline-localhost 14581 type: RelaxedAtomicBool 14582 value: true 14583 mirror: always 14584 14585 # Defines how much longer resolver threads should stay idle before are shut down. 14586 # A negative value will keep the thread alive forever. 14587 - name: network.dns.resolver-thread-extra-idle-time-seconds 14588 type: RelaxedAtomicInt32 14589 value: 60 14590 mirror: always 14591 14592 # When true, the DNS code will always set the AI_CANONNAME 14593 # when calling getaddrinfo 14594 - name: network.dns.always_ai_canonname 14595 type: RelaxedAtomicBool 14596 value: true 14597 mirror: always 14598 14599 # This preference specifies a comma seperated list of URL/IPAddress:Port that will be treated as public IPAddressSpace. 14600 - name: network.lna.address_space.public.override 14601 type: String 14602 type: String 14603 value: "" 14604 mirror: never 14605 14606 # This preference specifies a comma seperated list of URL/IPAddress:Port that will be treated as private IPAddressSpace. 14607 - name: network.lna.address_space.private.override 14608 type: String 14609 value: "" 14610 mirror: never 14611 14612 # This preference specifies a comma seperated list of URL/IPAddress:Port that will be treated as local IPAddressSpace. 14613 - name: network.lna.address_space.local.override 14614 type: String 14615 value: "" 14616 mirror: never 14617 14618 # This preference controls Local Network Access (LNA) feature. 14619 - name: network.lna.enabled 14620 type: RelaxedAtomicBool 14621 value: true 14622 mirror: always 14623 14624 # This preference controls if we need to fail transactions for Local Network Access (LNA) failures. 14625 # Currently it is enabled only for nightly builds. 14626 # For beta and release users we will be enabling it only for ETP strict users using network.lna.etp.enabled 14627 - name: network.lna.blocking 14628 type: RelaxedAtomicBool 14629 value: @IS_NIGHTLY_BUILD@ 14630 mirror: always 14631 14632 # When this pref is true, loads triggered by scripts classified as trackers 14633 # will automatically be blocked. 14634 - name: network.lna.block_trackers 14635 type: RelaxedAtomicBool 14636 value: false 14637 mirror: always 14638 14639 # When this pref is true, top-level document navigation to local network addresses 14640 # will bypass LNA permission checks. 14641 - name: network.lna.allow_top_level_navigation 14642 type: RelaxedAtomicBool 14643 value: true 14644 mirror: always 14645 14646 # Comma-separated list of domains to skip LNA checks for. 14647 # Supports suffix wildcard patterns (*.example.com) 14648 - name: network.lna.skip-domains 14649 type: String 14650 value: "" 14651 mirror: never 14652 14653 # When this pref is false, skip all LNA checks for WebSocket connections. 14654 # When true, WebSocket connections follow normal LNA rules. 14655 # Currently this is disabled for parity with chrome 14656 - name: network.lna.websocket.enabled 14657 type: RelaxedAtomicBool 14658 value: false 14659 mirror: always 14660 14661 # When this pref is true, skip LNA checks for requests from private network 14662 # to localhost (private -> local IP address space transitions). 14663 - name: network.lna.local-network-to-localhost.skip-checks 14664 type: RelaxedAtomicBool 14665 value: true 14666 mirror: always 14667 14668 # When true, benchmarking IP addresses 198.18.X.X is treated as local 14669 # Depending on how this ends up being treated in the LNA spec, we might 14670 # change it to be in the private space, but for now it's disabled to 14671 # match Chrome LNA behaviour. 14672 - name: network.lna.benchmarking-is-local 14673 type: RelaxedAtomicBool 14674 value: false 14675 mirror: always 14676 14677 14678 # The proxy type. See nsIProtocolProxyService.idl 14679 # PROXYCONFIG_DIRECT = 0 14680 # PROXYCONFIG_MANUAL = 1 14681 # PROXYCONFIG_PAC = 2 14682 # PROXYCONFIG_WPAD = 4 14683 # PROXYCONFIG_SYSTEM = 5 14684 - name: network.proxy.type 14685 type: RelaxedAtomicUint32 14686 value: 5 14687 mirror: always 14688 14689 # Whether to use WPAD while configuring proxy with system settings 14690 - name: network.proxy.system_wpad 14691 type: bool 14692 value: false 14693 mirror: always 14694 14695 # Whether to allow the use of WPAD while configuring proxy with system settings 14696 - name: network.proxy.system_wpad.allowed 14697 type: bool 14698 value: false 14699 mirror: always 14700 14701 # Whether the SOCKS5 proxy should be in charge of DNS resolution. Making it a 14702 # SOCKS5h proxy by convention 14703 - name: network.proxy.socks5_remote_dns 14704 type: RelaxedAtomicBool 14705 value: true 14706 mirror: always 14707 14708 # Whether the SOCKS4 proxy should be in charge of DNS resolution. Making it a 14709 # SOCKS4a proxy. 14710 - name: network.proxy.socks_remote_dns 14711 type: RelaxedAtomicBool 14712 value: false 14713 mirror: always 14714 14715 # When receiving a network change event, the time (in ms) we wait to reload the 14716 # PAC url. 14717 - name: network.proxy.reload_pac_delay 14718 type: RelaxedAtomicUint32 14719 value: 2000 14720 mirror: always 14721 14722 # When parsing "SOCKS" in PAC string, the default version of SOCKS that will be 14723 # used. 14724 - name: network.proxy.default_pac_script_socks_version 14725 type: RelaxedAtomicUint32 14726 value: 4 14727 mirror: always 14728 14729 # Whether to force failover to direct for system requests. 14730 #ifdef MOZ_PROXY_DIRECT_FAILOVER 14731 - name: network.proxy.failover_direct 14732 type: bool 14733 value: true 14734 mirror: always 14735 #endif 14736 14737 # Whether to allow a bypass flag to be set on httpChannel that will 14738 # prevent proxies from being used for that specific request. 14739 - name: network.proxy.allow_bypass 14740 type: bool 14741 #ifdef MOZ_PROXY_BYPASS_PROTECTION 14742 value: false 14743 #else 14744 value: true 14745 #endif 14746 mirror: always 14747 14748 - name: network.proxy.parse_pac_on_socket_process 14749 type: RelaxedAtomicBool 14750 value: false 14751 mirror: always 14752 14753 - name: network.proxy.detect_system_proxy_changes 14754 type: RelaxedAtomicBool 14755 value: false 14756 mirror: always 14757 14758 # If all non-direct proxies have failed, we retry all of them in case they 14759 # are online now. 14760 - name: network.proxy.retry_failed_proxies 14761 type: RelaxedAtomicBool 14762 value: true 14763 mirror: always 14764 14765 # Some requests during a page load are marked as "tail", mainly trackers, but not only. 14766 # This pref controls whether such requests are put to the tail, behind other requests 14767 # emerging during page loading process. 14768 - name: network.http.tailing.enabled 14769 type: bool 14770 value: true 14771 mirror: always 14772 14773 # Priority urgency of tailed request. Default to 6, which is a very low priority 14774 - name: network.http.tailing.urgency 14775 type: RelaxedAtomicUint32 14776 value: 6 14777 mirror: always 14778 14779 # Tailing: When the page load has not yet reached DOMContentLoaded point, tail requestes are delayed 14780 # by (non-tailed requests count + 1) * delay-quantum milliseconds. 14781 - name: network.http.tailing.delay-quantum 14782 type: int32_t 14783 value: 600 14784 mirror: always 14785 14786 # Tailing: The same as above, but applied after the document load reached DOMContentLoaded event. 14787 - name: network.http.tailing.delay-quantum-after-domcontentloaded 14788 type: int32_t 14789 value: 100 14790 mirror: always 14791 14792 # Tailing: Upper limit for the calculated delay, prevents long standing and comet-like requests tail forever. This is in milliseconds as well. 14793 - name: network.http.tailing.delay-max 14794 type: int32_t 14795 value: 6000 14796 mirror: always 14797 14798 # Tailing: Total limit we delay tailed requests since a page load beginning. 14799 - name: network.http.tailing.total-max 14800 type: int32_t 14801 value: 45000 14802 mirror: always 14803 14804 # When true, the default Accept request header will include the supported mime 14805 # types for images. 14806 - name: network.http.accept_include_images 14807 type: RelaxedAtomicBool 14808 value: false 14809 mirror: always 14810 14811 # Whether to run proxy checks when processing Alt-Svc headers. 14812 - name: network.http.altsvc.proxy_checks 14813 type: bool 14814 value: true 14815 mirror: always 14816 14817 - name: network.http.stale_while_revalidate.enabled 14818 type: RelaxedAtomicBool 14819 value: true 14820 mirror: always 14821 14822 # Capacity of the above cache, in kilobytes. 14823 - name: network.ssl_tokens_cache_capacity 14824 type: RelaxedAtomicUint32 14825 value: 2048 14826 mirror: always 14827 14828 # How many records we store per entry 14829 - name: network.ssl_tokens_cache_records_per_entry 14830 type: RelaxedAtomicUint32 14831 value: 2 14832 mirror: always 14833 14834 # The maximum allowed length for a URL - 1MB default. 14835 - name: network.standard-url.max-length 14836 type: RelaxedAtomicUint32 14837 value: 1048576 14838 mirror: always 14839 14840 # If true, use the HSTS preload list. 14841 - name: network.stricttransportsecurity.preloadlist 14842 type: RelaxedAtomicBool 14843 value: true 14844 mirror: always 14845 14846 # DNS Trusted Recursive Resolver 14847 # 0 - default off, 1 - reserved/off, 2 - TRR first, 3 - TRR only, 14848 # 4 - reserved/off, 5 off by choice 14849 - name: network.trr.mode 14850 type: RelaxedAtomicUint32 14851 value: 0 14852 mirror: always 14853 14854 # Default global TRR provider 14855 - name: network.trr.default_provider_uri 14856 type: String 14857 value: "https://mozilla.cloudflare-dns.com/dns-query" 14858 mirror: never 14859 14860 # If true, retry TRR for recoverable errors once. 14861 - name: network.trr.retry_on_recoverable_errors 14862 type: RelaxedAtomicBool 14863 value: false 14864 mirror: always 14865 14866 # If true, don't fallback to native DNS upon network errors. 14867 - name: network.trr.strict_native_fallback 14868 type: RelaxedAtomicBool 14869 value: false 14870 mirror: always 14871 14872 # If true, we'll fallback to native if the retry also times out. 14873 - name: network.trr.strict_native_fallback_allow_timeouts 14874 type: RelaxedAtomicBool 14875 value: true 14876 mirror: always 14877 14878 # Single TRR request timeout (ms) when strict native fallback is enabled. 14879 - name: network.trr.strict_fallback_request_timeout_ms 14880 type: RelaxedAtomicUint32 14881 value: 6000 14882 mirror: always 14883 14884 # If false, the temporary blocklisting feature is disabled. 14885 # This is useful for tests to prevent bleeding extra reqs 14886 # between tasks, since we may attempt to look up the 14887 # parent domain in the background when blocklisting a host. 14888 - name: network.trr.temp_blocklist 14889 type: RelaxedAtomicBool 14890 value: true 14891 mirror: always 14892 14893 # TRR blocklist entry expire time (in seconds). Default is one minute. 14894 # Meant to survive basically a page load. 14895 - name: network.trr.temp_blocklist_duration_sec 14896 type: RelaxedAtomicUint32 14897 value: 60 14898 mirror: always 14899 14900 # Single TRR request timeout, in milliseconds 14901 - name: network.trr.request_timeout_ms 14902 type: RelaxedAtomicUint32 14903 value: 1500 14904 mirror: always 14905 14906 # Single TRR request timeout, in milliseconds for mode 3 14907 - name: network.trr.request_timeout_mode_trronly_ms 14908 type: RelaxedAtomicUint32 14909 value: 30000 14910 mirror: always 14911 14912 # Similar to network.http.http2.ping-timeout, but this is used when the 14913 # Http/2 connection is connected to the TRR server. 14914 - name: network.trr.ping_timeout 14915 type: RelaxedAtomicUint32 14916 value: 3000 14917 mirror: always 14918 14919 # The timeout of the TRR confirmation request 14920 - name: network.trr.confirmation_timeout_ms 14921 type: RelaxedAtomicUint32 14922 value: 6000 14923 mirror: always 14924 14925 # Whether to send the Accept-Language header for TRR requests 14926 - name: network.trr.send_accept-language_headers 14927 type: RelaxedAtomicBool 14928 value: false 14929 mirror: always 14930 14931 # Whether to send an empty Accept-Encoding header for TRR requests 14932 - name: network.trr.send_empty_accept-encoding_headers 14933 type: RelaxedAtomicBool 14934 value: true 14935 mirror: always 14936 14937 # Whether to send the User-Agent header for TRR requests 14938 - name: network.trr.send_user-agent_headers 14939 type: RelaxedAtomicBool 14940 value: false 14941 mirror: always 14942 14943 # If we should wait for captive portal confirmation before enabling TRR 14944 - name: network.trr.wait-for-portal 14945 type: RelaxedAtomicBool 14946 value: false 14947 mirror: always 14948 14949 # If we should wait for TRR service confirmation to complete before enabling 14950 # TRR for lookups when fallback is enabled. Confirmation is always skipped when 14951 # global mode is TRR-only (no fallback). 14952 - name: network.trr.wait-for-confirmation 14953 type: RelaxedAtomicBool 14954 value: false 14955 mirror: always 14956 14957 # Normally when confirmation fails we wait for the confirmation to succeed 14958 # before attempting to do TRR. When this pref is true, we optimistically 14959 # assume the confirmation will succeed and might attempt TRR anyway. 14960 # If network.trr.wait-for-confirmation is true, this pref is ignored. 14961 - name: network.trr.attempt-when-retrying-confirmation 14962 type: RelaxedAtomicBool 14963 value: false 14964 mirror: always 14965 14966 # Use GET (rather than POST) 14967 - name: network.trr.useGET 14968 type: RelaxedAtomicBool 14969 value: @IS_NIGHTLY_BUILD@ 14970 mirror: always 14971 14972 # Allow RFC1918 address in responses? 14973 - name: network.trr.allow-rfc1918 14974 type: RelaxedAtomicBool 14975 value: false 14976 mirror: always 14977 14978 # When true, it only sends AAAA when the system has IPv6 connectivity 14979 - name: network.trr.skip-AAAA-when-not-supported 14980 type: RelaxedAtomicBool 14981 value: true 14982 mirror: always 14983 14984 # Whether to apply split horizon mitigations when using TRR. 14985 # These include adding the DNS suffix to the excluded domains 14986 - name: network.trr.split_horizon_mitigations 14987 type: RelaxedAtomicBool 14988 value: true 14989 mirror: always 14990 14991 # Explicitly disable ECS (EDNS Client Subnet, RFC 7871) 14992 - name: network.trr.disable-ECS 14993 type: RelaxedAtomicBool 14994 value: true 14995 mirror: always 14996 14997 # When true, the DNS+TRR cache will be cleared when a relevant TRR pref 14998 # changes. (uri, bootstrapAddress, excluded-domains) 14999 - name: network.trr.clear-cache-on-pref-change 15000 type: RelaxedAtomicBool 15001 value: true 15002 mirror: always 15003 15004 # After this many failed TRR requests in a row, consider TRR borked 15005 - name: network.trr.max-fails 15006 type: RelaxedAtomicUint32 15007 value: 15 15008 mirror: always 15009 15010 # When the TRR confirmation is set to CONFIRM_FAILED due to many failures in 15011 # a row, we set a timer to retry. This has an exponential backoff up to 15012 # network.trr.max-retry-timeout-ms (64 seconds by default) 15013 - name: network.trr.retry-timeout-ms 15014 type: RelaxedAtomicUint32 15015 value: 125 15016 mirror: always 15017 15018 - name: network.trr.max-retry-timeout-ms 15019 type: RelaxedAtomicUint32 15020 value: 64000 15021 mirror: always 15022 15023 # Retry with no TRR when the response contained only 0.0.0.0 or :: 15024 - name: network.trr.fallback-on-zero-response 15025 type: RelaxedAtomicBool 15026 value: false 15027 mirror: always 15028 15029 # If true we parse the /etc/hosts file and exclude any host names from TRR. 15030 # Reading the file is only done once, when TRR is first enabled - this could be 15031 # soon after startup or when the pref is flipped. 15032 - name: network.trr.exclude-etc-hosts 15033 type: RelaxedAtomicBool 15034 value: true 15035 mirror: always 15036 15037 # Whether to add padding in the doh dns queries (rfc 7830) 15038 - name: network.trr.padding 15039 type: RelaxedAtomicBool 15040 value: true 15041 mirror: always 15042 15043 # The block size to pad to. Capped at 1024 bytes. 15044 # Setting it to 0 doesn't add additional padding, but allows the server to 15045 # respond with padding (RFC7930 Sec 4) 15046 - name: network.trr.padding.length 15047 type: RelaxedAtomicUint32 15048 value: 128 15049 mirror: always 15050 15051 # Whether to skip the NS check for the blocked host. 15052 # Note this is used for test only. 15053 - name: network.trr.skip-check-for-blocked-host 15054 type: RelaxedAtomicBool 15055 value: false 15056 mirror: always 15057 15058 # Whether to use the connection info that is generated asynchronously. 15059 - name: network.trr.async_connInfo 15060 type: RelaxedAtomicBool 15061 value: @IS_EARLY_BETA_OR_EARLIER@ 15062 mirror: always 15063 15064 # If true, a failed TRR request that contains an extended DNS error 15065 # matching the hardFail condition in DNSPacket.cpp will not be 15066 # retried with native DNS 15067 - name: network.trr.hard_fail_on_extended_error 15068 type: RelaxedAtomicBool 15069 value: true 15070 mirror: always 15071 15072 # The base URL of the `Learn more` button for skip reasons 15073 - name: network.trr_ui.skip_reason_learn_more_url 15074 type: String 15075 value: "https://firefox-source-docs.mozilla.org/networking/dns/trr-skip-reasons.html#" 15076 mirror: never 15077 15078 # Use Oblivious HTTP when making TRR requests. 15079 - name: network.trr.use_ohttp 15080 type: RelaxedAtomicBool 15081 value: false 15082 mirror: always 15083 15084 # Oblivious HTTP relay URI for TRR requests. 15085 - name: network.trr.ohttp.relay_uri 15086 type: String 15087 value: "" 15088 mirror: never 15089 15090 # URI from which to fetch the configuration for the Oblivious HTTP gateway for TRR requests. 15091 - name: network.trr.ohttp.config_uri 15092 type: String 15093 value: "" 15094 mirror: never 15095 15096 # The URI used for the target DoH server when network.trr.use_ohttp is true 15097 - name: network.trr.ohttp.uri 15098 type: String 15099 value: "" 15100 mirror: never 15101 15102 # The idle timeout for the HTTP/3 connection that is used for DoH 15103 - name: network.trr.idle_timeout_for_http3_conn 15104 type: RelaxedAtomicUint32 15105 #ifdef EARLY_BETA_OR_EARLIER 15106 value: 400 15107 #else 15108 value: 30 15109 #endif 15110 mirror: always 15111 15112 # Allow the network changed event to get sent when a network topology or setup 15113 # change is noticed while running. 15114 - name: network.notify.changed 15115 type: RelaxedAtomicBool 15116 value: true 15117 mirror: always 15118 15119 # Allow network detection of IPv6 related changes (bug 1245059) 15120 - name: network.notify.IPv6 15121 type: RelaxedAtomicBool 15122 #ifdef XP_WIN 15123 value: false 15124 #else 15125 value: true 15126 #endif 15127 mirror: always 15128 15129 # Whether to check the dnsSuffix on network changes 15130 - name: network.notify.dnsSuffixList 15131 type: RelaxedAtomicBool 15132 value: true 15133 mirror: always 15134 15135 # Whether to check the registry for proxies on network changes that indicate 15136 # that TRR should not be used. 15137 - name: network.notify.checkForProxies 15138 type: RelaxedAtomicBool 15139 value: true 15140 mirror: always 15141 15142 # Whether to check the registry for NRPT rules on network changes that 15143 # indicate that TRR should not be used. 15144 - name: network.notify.checkForNRPT 15145 type: RelaxedAtomicBool 15146 value: true 15147 mirror: always 15148 15149 # Whether NotifyIpInterfaceChange should be called immediately after 15150 # registration in order to record the initial state of the network adapters. 15151 - name: network.notify.initial_call 15152 type: RelaxedAtomicBool 15153 value: true 15154 mirror: always 15155 15156 # Whether to check for DNS resolvers 15157 - name: network.notify.resolvers 15158 type: RelaxedAtomicBool 15159 value: true 15160 mirror: always 15161 15162 # Whether to use the rust implemented DefaultURI for unknown scheme types 15163 - name: network.url.useDefaultURI 15164 type: RelaxedAtomicBool 15165 value: true 15166 mirror: always 15167 15168 # Allows use of a protocol exception list that will bypass defaultURI parser 15169 - name: network.url.simple_uri_unknown_schemes_enabled 15170 type: RelaxedAtomicBool 15171 value: true 15172 mirror: always 15173 15174 # A list of schemes to allow for bypassing defaultURI as default 15175 # This is only used when network.url.simple_uri_unknown_schemes_enabled is true 15176 - name: network.url.simple_uri_unknown_schemes 15177 type: String 15178 value: "" 15179 mirror: never 15180 15181 # The maximum allowed length for a URL - 512MB default. 15182 # If 0 that means no limit. 15183 - name: network.url.max-length 15184 type: RelaxedAtomicUint32 15185 value: 512 * 1024 * 1024 15186 mirror: always 15187 15188 # When true, if all the cyrillic characters in a label 15189 # are latin confusables and on a non-cyrillic domain 15190 # the label will be displayed as punycode. 15191 - name: network.idn.punycode_cyrillic_confusables 15192 type: RelaxedAtomicBool 15193 value: true 15194 mirror: always 15195 15196 # Force remapping of remote port numbers to allow reaching local testing 15197 # servers or port forwarders listening on non-standard ports. Note that 15198 # this is not changing the origin URL in the addressbar, only internally 15199 # the port number used. This is intended to be used along with the 15200 # `network.dns.forceResolve` preference. 15201 # 15202 # The form is: 15203 # "80,443,808-888=8080; 563=8081" 15204 # this will remap ports for HTTP, HTTPS and the range of 808-888 included 15205 # to use port 8080, and port 563 to go to 8081. 15206 - name: network.socket.forcePort 15207 type: String 15208 value: "" 15209 mirror: never 15210 15211 # Try and use HTTP2 when using SSL 15212 - name: network.http.http2.enabled 15213 type: RelaxedAtomicBool 15214 value: true 15215 mirror: always 15216 15217 - name: network.http.http2.enabled.deps 15218 type: RelaxedAtomicBool 15219 value: false 15220 mirror: always 15221 15222 # When true, Firefox will send Extensivle prioritization scheme 15223 # PRIORITY_UPDATE frames. 15224 - name: network.http.http2.priority_updates 15225 type: RelaxedAtomicBool 15226 value: false 15227 mirror: always 15228 15229 # This pref controls whether to send the 15230 # SETTINGS_NO_RFC7540_PRIORITIES when stream dependencies 15231 # are disabled, and extensible prioritization scheme is in use. 15232 # defaults to false as some servers panic when they see this (bug 1928600) 15233 - name: network.http.http2.send_NO_RFC7540_PRI 15234 type: RelaxedAtomicBool 15235 value: false 15236 mirror: always 15237 15238 - name: network.http.http2.enforce-tls-profile 15239 type: RelaxedAtomicBool 15240 value: true 15241 mirror: always 15242 15243 - name: network.http.http2.chunk-size 15244 type: RelaxedAtomicInt32 15245 value: 16000 15246 mirror: always 15247 15248 - name: network.http.http2.timeout 15249 type: RelaxedAtomicInt32 15250 value: 170 15251 mirror: always 15252 15253 - name: network.http.http2.coalesce-hostnames 15254 type: RelaxedAtomicBool 15255 value: true 15256 mirror: always 15257 15258 # When true, origin A and origin B will be coalesced if they have an overlap 15259 # in IP addresses as advertized by DNS, regardless if the existing connection 15260 # to origin A is not to an IP present in B's DNS response. 15261 # When false, an existing connection will only be reused if the 15262 # connection's remote IP is also present in B's DNS response. 15263 - name: network.http.http2.aggressive_coalescing 15264 type: RelaxedAtomicBool 15265 value: false 15266 mirror: always 15267 15268 - name: network.http.http2.ping-threshold 15269 type: RelaxedAtomicInt32 15270 value: 58 15271 mirror: always 15272 15273 - name: network.http.http2.ping-timeout 15274 type: RelaxedAtomicInt32 15275 value: 8 15276 mirror: always 15277 15278 - name: network.http.http2.send-buffer-size 15279 type: RelaxedAtomicInt32 15280 value: 0 15281 mirror: always 15282 15283 # When true, Firefox will send a SETTINGS_MAX_CONCURRENT_STREAMS 15284 # parameter when push is disabled. Chrome doesn't send this, 15285 # so some servers misbehave when we do. See Bug 1919750. 15286 - name: network.http.http2.send-push-max-concurrent-frame 15287 type: RelaxedAtomicBool 15288 value: false 15289 mirror: always 15290 15291 - name: network.http.http2.push-allowance 15292 type: RelaxedAtomicInt32 15293 value: 131072 # 128KB 15294 mirror: always 15295 15296 - name: network.http.http2.pull-allowance 15297 type: RelaxedAtomicInt32 15298 value: 12582912 # 12MB 15299 mirror: always 15300 15301 - name: network.http.http2.default-concurrent 15302 type: RelaxedAtomicInt32 15303 value: 100 15304 mirror: always 15305 15306 - name: network.http.http2.default-hpack-buffer 15307 type: RelaxedAtomicInt32 15308 value: 65536 # 64K 15309 mirror: always 15310 15311 - name: network.http.http2.websockets 15312 type: RelaxedAtomicBool 15313 value: true 15314 mirror: always 15315 15316 - name: network.http.http2.enable-hpack-dump 15317 type: RelaxedAtomicBool 15318 value: false 15319 mirror: always 15320 15321 # According to RFC 9113, the maximum stream ID is 0x80000000. 15322 # However, we've been using a smaller value since the beginning. 15323 - name: network.http.http2.max_stream_id 15324 type: RelaxedAtomicInt32 15325 value: 0x7800000 15326 mirror: always 15327 15328 - name: network.http.move_to_pending_list_after_network_change 15329 type: RelaxedAtomicBool 15330 value: true 15331 mirror: always 15332 15333 # Enable HTTP/3 15334 - name: network.http.http3.enable 15335 type: RelaxedAtomicBool 15336 value: true 15337 mirror: always 15338 15339 # Receive buffer size of QUIC socket 15340 - name: network.http.http3.recvBufferSize 15341 type: RelaxedAtomicInt32 15342 value: 1048576 15343 mirror: always 15344 15345 # Use NSPR for HTTP3 UDP IO 15346 - name: network.http.http3.use_nspr_for_io 15347 type: RelaxedAtomicBool 15348 value: false 15349 mirror: always 15350 rust: true 15351 15352 # Set IP ECN marks on HTTP3/QUIC UDP datagrams. Noop if 15353 # network.http.http3.use_nspr_for_io is true. 15354 - name: network.http.http3.ecn_mark 15355 type: RelaxedAtomicBool 15356 value: true 15357 mirror: always 15358 rust: true 15359 15360 # Report IP ECN marks from HTTP3/QUIC UDP datagrams via QUIC ACKs back to the 15361 # sender. Noop if network.http.http3.use_nspr_for_io is true. 15362 - name: network.http.http3.ecn_report 15363 type: RelaxedAtomicBool 15364 value: true 15365 mirror: always 15366 rust: true 15367 15368 # Poll UDP socket via PR_POLL_WRITE on WOULD_BLOCK. Noop if 15369 # network.http.http3.use_nspr_for_io is true. 15370 # 15371 # See <https://phabricator.services.mozilla.com/D239162> for details. 15372 - name: network.http.http3.pr_poll_write 15373 type: RelaxedAtomicBool 15374 value: true 15375 mirror: always 15376 rust: true 15377 15378 # Fallback to H2 if mHttp3Connection->Fetch returns an error in 15379 # Http3Session::TryActivating 15380 - name: network.http.http3.fallback_to_h2_on_error 15381 type: RelaxedAtomicBool 15382 value: true 15383 mirror: always 15384 15385 # Maximum number of UDP segments in a single UDP GSO send. Noop if 15386 # network.http.http3.use_nspr_for_io is true. 15387 - name: network.http.http3.max_gso_segments 15388 type: RelaxedAtomicUint32 15389 #ifdef XP_WIN 15390 # Disable GSO on Windows. 15391 # 15392 # See https://bugzilla.mozilla.org/show_bug.cgi?id=1979279 for details. 15393 value: 1 15394 #else 15395 # Current industry standard. Likely worth tuning. 15396 value: 10 15397 #endif 15398 mirror: always 15399 rust: true 15400 15401 - name: network.http.http3.enable_qlog 15402 type: RelaxedAtomicBool 15403 value: false 15404 mirror: always 15405 15406 - name: network.http.http3.enable_0rtt 15407 type: RelaxedAtomicBool 15408 value: true 15409 mirror: always 15410 15411 # When a h3 transaction is inserted in the pending queue, the time (ms) we wait 15412 # to create a TCP backup connection. 15413 - name: network.http.http3.backup_timer_delay 15414 type: RelaxedAtomicUint32 15415 value: 100 15416 mirror: always 15417 15418 # Delay in milliseconds before falling back the proxy’s inner connection 15419 # from HTTP/3 to HTTP/2/1 after receiving 200 OK. 15420 - name: network.http.http3.inner_fallback_delay 15421 type: RelaxedAtomicUint32 15422 value: 3000 15423 mirror: always 15424 15425 # The global half open sockets allowed for creating a backup connection. 15426 - name: network.http.http3.parallel_fallback_conn_limit 15427 type: RelaxedAtomicUint32 15428 value: 32 15429 mirror: always 15430 15431 # Connection-level flow control limit 15432 - name: network.http.http3.max_data 15433 type: RelaxedAtomicUint32 15434 value: 25165824 15435 mirror: always 15436 15437 # Stream-level flow control limit 15438 - name: network.http.http3.max_stream_data 15439 type: RelaxedAtomicUint32 15440 value: 12582912 15441 mirror: always 15442 15443 # Enable http3 network priority as described in 15444 # <https://www.rfc-editor.org/rfc/rfc9218.html>. 15445 - name: network.http.http3.priority 15446 type: RelaxedAtomicBool 15447 value: true 15448 mirror: always 15449 15450 # Depriorizing background tabs notifies websites when switching to or from the 15451 # tab while still loading resources for the website. On one hand it might 15452 # improve performance when switching to an tab with a website using the same 15453 # QUIC connection. On the other hand it sends more data to the website and 15454 # might be a privacy concern. 15455 - name: network.http.http3.send_background_tabs_deprioritization 15456 type: RelaxedAtomicBool 15457 value: false 15458 mirror: always 15459 15460 - name: network.http.http3.version_negotiation.enabled 15461 type: RelaxedAtomicBool 15462 value: false 15463 mirror: always 15464 15465 # When a Http/3 connection failed, whether to retry with a different IP address. 15466 - name: network.http.http3.retry_different_ip_family 15467 type: RelaxedAtomicBool 15468 value: @IS_EARLY_BETA_OR_EARLIER@ 15469 mirror: always 15470 15471 # This is for testing purpose. When true, nsUDPSocket::SendWithAddress and 15472 # neqo_http3conn_process_output_and_send will return NS_ERROR_CONNECTION_REFUSED 15473 # for address "::1". 15474 - name: network.http.http3.block_loopback_ipv6_addr 15475 type: RelaxedAtomicBool 15476 value: false 15477 mirror: always 15478 rust: true 15479 15480 # The congestion control algorithm with which to configure neqo. 15481 # 0 => NewReno 15482 # 1 => Cubic 15483 - name: network.http.http3.cc_algorithm 15484 type: RelaxedAtomicUint32 15485 value: 1 15486 mirror: always 15487 rust: true 15488 15489 # Whether to send an mlkem768x25519 key share in HTTP/3 TLS handshakes. 15490 # Has no effect unless security.tls.enable_kyber is true. 15491 - name: network.http.http3.enable_kyber 15492 type: RelaxedAtomicBool 15493 value: true 15494 mirror: always 15495 rust: true 15496 15497 # When true, HTTP/3 will be disabled when third party roots are found. 15498 - name: network.http.http3.disable_when_third_party_roots_found 15499 type: RelaxedAtomicBool 15500 value: true 15501 mirror: always 15502 15503 # Only used for testing purposes. In automation, this value is used to override 15504 # the result of third party roots check. 15505 - name: network.http.http3.has_third_party_roots_found_in_automation 15506 type: RelaxedAtomicBool 15507 value: false 15508 mirror: always 15509 15510 # When network.http.http3.alt-svc-mapping-for-testing is set, only use 15511 # HTTP/3 to connect. 15512 - name: network.http.http3.force-use-alt-svc-mapping-for-testing 15513 type: RelaxedAtomicBool 15514 value: false 15515 mirror: always 15516 15517 # When network.http.http3.sni-slicing is set, TLS SNI slicing is enabled. 15518 - name: network.http.http3.sni-slicing 15519 type: RelaxedAtomicBool 15520 value: true 15521 mirror: always 15522 rust: true 15523 15524 # Whether to enable Zlib for H3/QUIC certificate compression. 15525 # Has no effect unless security.tls.enable_certificate_compression_zlib is true. 15526 - name: network.http.http3.enable_certificate_compression_zlib 15527 type: RelaxedAtomicBool 15528 value: true 15529 mirror: always 15530 rust: true 15531 15532 # Whether to enable Zstd for H3/QUIC certificate compression. 15533 # Has no effect unless security.tls.enable_certificate_compression_zstd is true. 15534 - name: network.http.http3.enable_certificate_compression_zstd 15535 type: RelaxedAtomicBool 15536 value: true 15537 mirror: always 15538 rust: true 15539 15540 # Whether to enable Brotli for H3/QUIC certificate compression. 15541 # Has no effect unless security.tls.enable_certificate_compression_brotli is true. 15542 - name: network.http.http3.enable_certificate_compression_brotli 15543 type: RelaxedAtomicBool 15544 value: true 15545 mirror: always 15546 rust: true 15547 15548 # When true, skip alt-svc validation when the connection is made using HTTPS RR. 15549 - name: network.http.skip_alt_svc_validation_on_https_rr 15550 type: RelaxedAtomicBool 15551 value: true 15552 mirror: always 15553 15554 # The idle timeout used for HTTP/3 connection. 15555 - name: network.http.http3.idle_timeout 15556 type: RelaxedAtomicUint32 15557 value: 30 15558 mirror: always 15559 15560 # Whether to enable Packetization Layer Path MTU Discovery. 15561 - name: network.http.http3.pmtud 15562 type: RelaxedAtomicBool 15563 value: false 15564 mirror: always 15565 rust: true 15566 15567 # When true, a http request will be upgraded to https when HTTPS RR is 15568 # available. 15569 - name: network.dns.upgrade_with_https_rr 15570 type: RelaxedAtomicBool 15571 value: true 15572 mirror: always 15573 15574 # Whether to use HTTPS RR as AltSvc 15575 - name: network.dns.use_https_rr_as_altsvc 15576 type: RelaxedAtomicBool 15577 value: true 15578 mirror: always 15579 15580 # Whether to check for NAT64 using the system resolver 15581 - name: network.connectivity-service.nat64-check 15582 type: bool 15583 value: true 15584 mirror: always 15585 15586 # Manually enter the NAT64 prefix that will be used if IPv4 is unavailable. 15587 # The value is formatted as IPv6 with the least significant bits to be dropped. 15588 # For example, 64:ff9b:: is a common prefix. This will not disable 15589 # the NAT64 check, although the value of this pref will be prioritized. 15590 - name: network.connectivity-service.nat64-prefix 15591 type: String 15592 value: "" 15593 mirror: never 15594 15595 # Whether to wait for idle-startup notification before performing connectivity checks 15596 - name: network.connectivity-service.wait_for_idle_startup 15597 type: RelaxedAtomicBool 15598 value: true 15599 mirror: always 15600 15601 # Whether to enable echconfig. 15602 - name: network.dns.echconfig.enabled 15603 type: RelaxedAtomicBool 15604 value: true 15605 mirror: always 15606 15607 # Whether to enable echconfig for http3. 15608 - name: network.dns.http3_echconfig.enabled 15609 type: RelaxedAtomicBool 15610 value: true 15611 mirror: always 15612 15613 # This pref needs to be worked together with network.dns.echconfig.enabled 15614 # being true and there is no record without ECHConfig. 15615 # When we try all records with ECHConfig in HTTPS RRs and still can't connect, 15616 # this pref indicate whether we can fallback to the origin server. 15617 - name: network.dns.echconfig.fallback_to_origin_when_all_failed 15618 type: RelaxedAtomicBool 15619 value: false 15620 mirror: always 15621 15622 # When true, reset the exclusion list when all records are excluded. 15623 - name: network.dns.httpssvc.reset_exclustion_list 15624 type: RelaxedAtomicBool 15625 value: true 15626 mirror: always 15627 15628 # If the http3 connection cannot be ready after the timeout value here, the 15629 # transaction will start another non-http3 conneciton. 15630 # Setting this value to 0 indicates this feature is disabled. 15631 - name: network.dns.httpssvc.http3_fast_fallback_timeout 15632 type: RelaxedAtomicUint32 15633 value: 50 15634 mirror: always 15635 15636 # The TTL for negative responses of TXT and HTTPS records. 15637 - name: network.dns.negative_ttl_for_type_record 15638 type: RelaxedAtomicUint32 15639 value: 300 # 5 minutes (in seconds) 15640 mirror: always 15641 15642 # Whether to use port prefixed QNAME for HTTPS RR 15643 - name: network.dns.port_prefixed_qname_https_rr 15644 type: RelaxedAtomicBool 15645 value: true 15646 mirror: always 15647 15648 # Whether to use HTTPS RR and ignore NS_HTTP_DISALLOW_HTTPS_RR 15649 # This pref is only set when running tests 15650 - name: network.dns.force_use_https_rr 15651 type: RelaxedAtomicBool 15652 value: false 15653 mirror: always 15654 15655 # When true, we check if the cname is the same as the target name of the record. 15656 # If not, the record will not be used. 15657 - name: network.dns.https_rr.check_record_with_cname 15658 type: RelaxedAtomicBool 15659 value: true 15660 mirror: always 15661 15662 # This preference can be used to turn off IPv6 name lookups. See bug 68796. 15663 - name: network.dns.disableIPv6 15664 type: RelaxedAtomicBool 15665 value: false 15666 mirror: always 15667 15668 # Whether to prefer IPv6 name lookups. 15669 - name: network.dns.preferIPv6 15670 type: RelaxedAtomicBool 15671 value: false 15672 mirror: always 15673 15674 # Only used for testing 15675 - name: network.dns.mock_HTTPS_RR_domain 15676 type: String 15677 value: "" 15678 mirror: never 15679 15680 # When true, placing the most recent used cache entry 15681 # to the tail of the EvictionQ. 15682 - name: network.dns.mru_to_tail 15683 type: RelaxedAtomicBool 15684 value: @IS_NIGHTLY_BUILD@ 15685 mirror: always 15686 15687 # Whether to add additional record IPs to the cache 15688 - name: network.trr.add_additional_records 15689 type: RelaxedAtomicBool 15690 value: true 15691 mirror: always 15692 15693 # When this pref is true, AddStorageEntry will return an error if the 15694 # OPEN_READONLY & OPEN_SECRETLY flags are passed and no entry exists. 15695 # If no regressions occur this pref should be removed. 15696 - name: network.cache.bug1708673 15697 type: RelaxedAtomicBool 15698 value: false 15699 mirror: always 15700 15701 # How much progress we want to do minimum when purging under pressure. 15702 # On disk, we may see blocking I/O, so for now we keep 0 here. 15703 - name: network.cache.purge_minprogress_disk 15704 type: RelaxedAtomicUint32 15705 value: 0 15706 mirror: always 15707 15708 # How much progress we want to do minimum when purging under pressure. 15709 # In memory, purging is cheap and memory is precious. 15710 - name: network.cache.purge_minprogress_memory 15711 type: RelaxedAtomicUint32 15712 value: 32 15713 mirror: always 15714 15715 # When true we will dispatch a background task (separate process) to 15716 # delete the cache folder at shutdown in order to avoid shutdown hangs. 15717 - name: network.cache.shutdown_purge_in_background_task 15718 type: RelaxedAtomicBool 15719 #if defined(XP_WIN) 15720 value: true 15721 #else 15722 value: false 15723 #endif 15724 mirror: always 15725 15726 # Number of seconds to wait for the cache folder to be renamed before 15727 # the background task forcefully exists. 15728 - name: network.cache.shutdown_purge_folder_wait_seconds 15729 type: RelaxedAtomicUint32 15730 value: 10 15731 mirror: always 15732 15733 - name: network.cache.persist_permanent_redirects_http 15734 type: bool 15735 value: false 15736 mirror: always 15737 15738 # Disable cache purging temporarily to support cache tests 15739 - name: network.cache.purge_disable 15740 type: RelaxedAtomicBool 15741 value: false 15742 mirror: always 15743 15744 # The number of milliseconds after which a suspended channel writing 15745 # to a cache entry will notify all readers waiting for a callback to 15746 # continue without a cache entry. 15747 - name: network.cache.suspended_writer_delay_ms 15748 type: RelaxedAtomicUint32 15749 value: 5000 15750 mirror: always 15751 15752 # This is used for a temporary workaround for a web-compat issue. If pref is 15753 # true CORS preflight requests are allowed to send client certificates. 15754 - name: network.cors_preflight.allow_client_cert 15755 type: RelaxedAtomicBool 15756 value: false 15757 mirror: always 15758 15759 # Whether to record the telemetry event when a JAR channel is failed to load. 15760 - name: network.jar.record_failure_reason 15761 type: RelaxedAtomicBool 15762 value: @IS_EARLY_BETA_OR_EARLIER@ 15763 mirror: always 15764 15765 # nsJARInputStream::Available returns the size indicated by the archived entry 15766 # so we need a limit so we don't OOM if the archive is corrupted. 15767 - name: network.jar.max_available_size 15768 type: RelaxedAtomicUint32 15769 value: 256*1024*1024 # 256 Mb 15770 mirror: always 15771 15772 # When decompressing an archived entry we need to allocate a buffer 15773 # large enough to hold the uncompressed entry. This pref specifies the max 15774 # size of such a buffer. 15775 # When set to 0 there is no limit. 15776 - name: network.jar.max_entry_size 15777 type: RelaxedAtomicUint32 15778 value: 256*1024*1024 # 256 Mb 15779 mirror: always 15780 15781 # When this pref is true, we will use the HTTPS acceptable content encoding 15782 # list for trustworthy domains such as http://localhost 15783 - name: network.http.encoding.trustworthy_is_https 15784 type: RelaxedAtomicBool 15785 value: true 15786 mirror: always 15787 15788 # Support http3 version1 15789 - name: network.http.http3.support_version1 15790 type: RelaxedAtomicBool 15791 value: true 15792 mirror: always 15793 15794 # Disable early data on an origin if SSL_ERROR_PROTOCOL_VERSION_ALERT is received 15795 - name: network.http.early_data_disable_on_error 15796 type: RelaxedAtomicBool 15797 value: true 15798 mirror: always 15799 15800 # Disable early data if it fails for more than this number of origins 15801 - name: network.http.early_data_max_error 15802 type: RelaxedAtomicUint32 15803 value: 5 15804 mirror: always 15805 15806 # If true, remove the resumption token when 0RTT failed. 15807 - name: network.http.remove_resumption_token_when_early_data_failed 15808 type: RelaxedAtomicBool 15809 value: true 15810 mirror: always 15811 15812 # The length of cnonce string used in HTTP digest auth. 15813 - name: network.http.digest_auth_cnonce_length 15814 type: uint32_t 15815 value: 16 15816 mirror: always 15817 15818 # When a primary or backup half-open socket fails while another is still 15819 # connecting, retry with the remaining one 15820 - name: network.http.retry_with_another_half_open 15821 type: RelaxedAtomicBool 15822 value: @IS_EARLY_BETA_OR_EARLIER@ 15823 mirror: always 15824 15825 - name: network.http.basic_http_auth.enabled 15826 type: RelaxedAtomicBool 15827 value: true 15828 mirror: always 15829 15830 # If true, HTTP response content-type headers will be parsed using the standards-compliant MimeType parser 15831 - name: network.standard_content_type_parsing.response_headers 15832 type: RelaxedAtomicBool 15833 value: true 15834 mirror: always 15835 15836 # If true, it will include extra tags to be sniffed by nsUnknownDecoder 15837 # These tags were previously sniffed by Firefox for legacy/webcompat but 15838 # are not part of the MIME sniffing spec. 15839 - name: network.mimesniff.extra_moz_html_tags 15840 type: RelaxedAtomicBool 15841 value: false 15842 mirror: always 15843 15844 # The maximum count that we allow socket prrocess to crash. If this count is 15845 # reached, we won't use networking over socket process. 15846 - name: network.max_socket_process_failed_count 15847 type: RelaxedAtomicUint32 15848 value: 1 15849 mirror: always 15850 15851 - name: network.allow_redirect_to_data 15852 type: RelaxedAtomicBool 15853 value: false 15854 mirror: always 15855 15856 - name: network.allow_raw_sockets_in_content_processes 15857 type: bool 15858 value: false 15859 mirror: once 15860 15861 - name: network.allow_large_stack_size_for_socket_thread 15862 type: RelaxedAtomicBool 15863 value: true 15864 mirror: always 15865 15866 # WebTransport 15867 - name: network.webtransport.enabled 15868 type: RelaxedAtomicBool 15869 value: true 15870 mirror: always 15871 15872 # WebTransport Redirect support 15873 - name: network.webtransport.redirect.enabled 15874 type: RelaxedAtomicBool 15875 value: false 15876 mirror: always 15877 15878 # Wifi-scan polling period, in ms, when on a mobile network. 15879 # A value of 0 indicates that no polling should be done. 15880 - name: network.wifi.scanning_period 15881 type: RelaxedAtomicUint32 15882 value: 60000 15883 mirror: always 15884 15885 # Block synchronous XMLHttpRequests coming from system requests 15886 - name: network.xhr.block_sync_system_requests 15887 type: bool 15888 value: true 15889 mirror: always 15890 15891 # When the Access-Control-Allow-Headers is wildcard (*), whether to allow 15892 # CORS-protected requests with the Authorization request header. 15893 - name: network.cors_preflight.authorization_covered_by_wildcard 15894 type: bool 15895 value: true 15896 mirror: always 15897 15898 # Inner schemes that are allowed to display application/http-index-format. 15899 # Set to * to allow all schemes. 15900 - name: network.http_index_format.allowed_schemes 15901 type: String 15902 value: "file,moz-gio" 15903 mirror: never 15904 15905 # Enable off-main-thread decompression of network streams 15906 # Note:network.decompression_off_mainthread triggered a bug, so 15907 # we switched to a new pref that can be turned off safely 15908 - name: network.decompression_off_mainthread2 15909 type: bool 15910 value: true 15911 mirror: always 15912 15913 # Minimum content-length to use off-main-thread decompression of network streams 15914 - name: network.decompression_off_mainthread_min_size 15915 type: int32_t 15916 value: 512 15917 mirror: always 15918 15919 # Cached state of parental controls (enabled/disabled) 15920 - name: network.parental_controls_cached_state 15921 type: RelaxedAtomicBool 15922 value: false 15923 mirror: always 15924 15925 # Used for testing purposes only. When true, it attaches an extra networking 15926 # layer to simulate different network scenarios. 15927 - name: network.socket.attach_mock_network_layer 15928 type: RelaxedAtomicBool 15929 value: false 15930 mirror: always 15931 15932 # Whether to redirect a failing request to an essential domain 15933 # to a fallback domain that hosts the same content. 15934 - name: network.essential_domains_fallback 15935 type: RelaxedAtomicBool 15936 value: @IS_NIGHTLY_BUILD@ 15937 mirror: always 15938 15939 # Enable HTTP Compression Dictionary support 15940 - name: network.http.dictionaries.enable 15941 type: RelaxedAtomicBool 15942 value: true 15943 mirror: always 15944 15945 #--------------------------------------------------------------------------- 15946 # Prefs starting with "nglayout." 15947 #--------------------------------------------------------------------------- 15948 15949 # Enable/disable display list invalidation logging --- useful for debugging. 15950 - name: nglayout.debug.invalidation 15951 type: bool 15952 value: false 15953 mirror: always 15954 15955 - name: nglayout.debug.disable_xul_cache 15956 type: bool 15957 value: false 15958 mirror: always 15959 15960 - name: nglayout.initialpaint.delay 15961 type: int32_t 15962 value: 5 15963 mirror: always 15964 15965 - name: nglayout.initialpaint.delay_in_oopif 15966 type: int32_t 15967 value: 5 15968 mirror: always 15969 15970 #--------------------------------------------------------------------------- 15971 # Prefs starting with "page_load." 15972 #--------------------------------------------------------------------------- 15973 15974 # Time in milliseconds during which certain tasks are deprioritized during 15975 # page load. 15976 - name: page_load.deprioritization_period 15977 type: RelaxedAtomicUint32 15978 value: 5000 15979 mirror: always 15980 15981 #--------------------------------------------------------------------------- 15982 # Prefs starting with "pdfjs." 15983 #--------------------------------------------------------------------------- 15984 15985 - name: pdfjs.disabled 15986 type: bool 15987 value: false 15988 mirror: always 15989 15990 #--------------------------------------------------------------------------- 15991 # Prefs starting with "permissions." 15992 #--------------------------------------------------------------------------- 15993 15994 # 1-Accept, 2-Deny, Any other value: Accept 15995 - name: permissions.default.image 15996 type: RelaxedAtomicUint32 15997 value: 1 15998 mirror: always 15999 16000 - name: permissions.default.screen-wake-lock 16001 type: RelaxedAtomicUint32 16002 value: 1 16003 mirror: always 16004 16005 - name: permissions.isolateBy.userContext 16006 type: RelaxedAtomicBool 16007 value: false 16008 mirror: always 16009 16010 - name: permissions.isolateBy.privateBrowsing 16011 type: RelaxedAtomicBool 16012 value: true 16013 mirror: always 16014 16015 # Is support for Permissions.query enabled for camera and microphone? 16016 - name: permissions.media.query.enabled 16017 type: RelaxedAtomicBool 16018 value: true 16019 mirror: always 16020 16021 # Whether default permissions should be imported from remote settings in 16022 # addition to importing them from browser/app/permissions. 16023 - name: permissions.manager.remote.enabled 16024 type: bool 16025 value: true 16026 mirror: always 16027 16028 #--------------------------------------------------------------------------- 16029 # Prefs starting with "places." 16030 #--------------------------------------------------------------------------- 16031 16032 # Whether pages alternative frecency is enabled. This and the following related 16033 # prefs only apply at restart. 16034 - name: places.frecency.pages.alternative.featureGate 16035 type: bool 16036 value: false 16037 mirror: once 16038 16039 - name: places.frecency.pages.alternative.veryHighWeight 16040 type: uint32_t 16041 value: 200 16042 mirror: once 16043 16044 - name: places.frecency.pages.alternative.highWeight 16045 type: uint32_t 16046 value: 100 16047 mirror: once 16048 16049 - name: places.frecency.pages.alternative.mediumWeight 16050 type: uint32_t 16051 value: 50 16052 mirror: once 16053 16054 - name: places.frecency.pages.alternative.lowWeight 16055 type: uint32_t 16056 value: 20 16057 mirror: once 16058 16059 - name: places.frecency.pages.alternative.halfLifeDays 16060 type: uint32_t 16061 value: 30 16062 mirror: once 16063 16064 - name: places.frecency.pages.alternative.numSampledVisits 16065 type: uint32_t 16066 value: 10 16067 mirror: once 16068 16069 # Max difference allowed between a visit and an interaction. 16070 - name: places.frecency.pages.alternative.interactions.maxVisitGapSeconds 16071 type: uint32_t 16072 value: 2 * 60 16073 mirror: once 16074 16075 # Minimum view time required to upgrade a visit score. 16076 - name: places.frecency.pages.alternative.interactions.viewTimeSeconds 16077 type: uint32_t 16078 value: 60 16079 mirror: once 16080 16081 # Minimum view time required to upgrade a visit score of a visit 16082 # provided there is a minimum threshold of keypresses. 16083 - name: places.frecency.pages.alternative.interactions.viewTimeIfManyKeypressesSeconds 16084 type: uint32_t 16085 value: 20 16086 mirror: once 16087 16088 # Minimum keypresses of a visit required to upgrade a visit score. 16089 - name: places.frecency.pages.alternative.interactions.manyKeypresses 16090 type: uint32_t 16091 value: 50 16092 mirror: once 16093 16094 # Preferences related to interaction based frecency. 16095 - name: places.frecency.pages.veryHighWeight 16096 type: uint32_t 16097 value: 200 16098 mirror: once 16099 16100 - name: places.frecency.pages.highWeight 16101 type: uint32_t 16102 value: 100 16103 mirror: once 16104 16105 - name: places.frecency.pages.mediumWeight 16106 type: uint32_t 16107 value: 50 16108 mirror: once 16109 16110 - name: places.frecency.pages.lowWeight 16111 type: uint32_t 16112 value: 20 16113 mirror: once 16114 16115 - name: places.frecency.pages.halfLifeDays 16116 type: uint32_t 16117 value: 30 16118 mirror: once 16119 16120 - name: places.frecency.pages.numSampledVisits 16121 type: uint32_t 16122 value: 10 16123 mirror: once 16124 16125 # Max difference allowed between a visit and an interaction. 16126 - name: places.frecency.pages.interactions.maxVisitGapSeconds 16127 type: uint32_t 16128 value: 2 * 60 16129 mirror: once 16130 16131 # Minimum view time required to upgrade a visit score. 16132 - name: places.frecency.pages.interactions.viewTimeSeconds 16133 type: uint32_t 16134 value: 60 16135 mirror: once 16136 16137 # Minimum view time required to upgrade a visit score of a visit 16138 # provided there is a minimum threshold of keypresses. 16139 - name: places.frecency.pages.interactions.viewTimeIfManyKeypressesSeconds 16140 type: uint32_t 16141 value: 20 16142 mirror: once 16143 16144 # Minimum keypresses of a visit required to upgrade a visit score. 16145 - name: places.frecency.pages.interactions.manyKeypresses 16146 type: uint32_t 16147 value: 50 16148 mirror: once 16149 16150 # Whether flooding prevention feature is enabled or not. 16151 - name: places.history.floodingPrevention.enabled 16152 type: bool 16153 value: true 16154 mirror: always 16155 16156 # Maximum elapsed time betwen a user interaction and a visit before starting to 16157 # apply flooding prevention. 16158 - name: places.history.floodingPrevention.maxSecondsFromLastUserInteraction 16159 type: uint32_t 16160 value: 3 16161 mirror: always 16162 16163 # Number of consecutive accesses to an origin in a short timeframe before 16164 # starting to restrict storing visits for it. 16165 - name: places.history.floodingPrevention.restrictionCount 16166 type: uint32_t 16167 value: 3 16168 mirror: always 16169 16170 # Duration of the timeframe where consecutive visits to an origin should happen 16171 # before starting to restrict storing visits for it. 16172 - name: places.history.floodingPrevention.restrictionExpireSeconds 16173 type: uint32_t 16174 value: 5 16175 mirror: always 16176 16177 #--------------------------------------------------------------------------- 16178 # Prefs starting with "plain_text." 16179 #--------------------------------------------------------------------------- 16180 16181 # When false, text in plaintext documents does not wrap long lines. 16182 - name: plain_text.wrap_long_lines 16183 type: bool 16184 value: true 16185 mirror: always 16186 16187 #--------------------------------------------------------------------------- 16188 # Prefs starting with "preferences." 16189 #--------------------------------------------------------------------------- 16190 16191 - name: preferences.allow.omt-write 16192 type: bool 16193 value: true 16194 mirror: never 16195 16196 #ifdef DEBUG 16197 # If set to true, setting a Preference matched to a `Once` StaticPref will 16198 # assert that the value matches. Such assertion being broken is a clear flag 16199 # that the Once policy shouldn't be used. 16200 - name: preferences.check.once.policy 16201 type: bool 16202 value: false 16203 mirror: always 16204 16205 # If set to true, StaticPrefs Once policy check will be skipped during 16206 # automation regression test. Use with care. This pref must be set back to 16207 # false as soon as specific test has completed. 16208 - name: preferences.force-disable.check.once.policy 16209 type: bool 16210 value: false 16211 mirror: always 16212 #endif 16213 16214 #--------------------------------------------------------------------------- 16215 # Prefs starting with "print." 16216 #--------------------------------------------------------------------------- 16217 16218 # Variation fonts can't always be embedded in certain output formats 16219 # such as PDF. To work around this, draw the variation fonts using 16220 # paths instead of using font embedding. 16221 - name: print.font-variations-as-paths 16222 type: RelaxedAtomicBool 16223 value: true 16224 mirror: always 16225 16226 # Whether we always print silently (without a print dialog). 16227 - name: print.always_print_silent 16228 type: RelaxedAtomicBool 16229 value: false 16230 mirror: always 16231 16232 # Whether we directly use the system print dialog to collect the user's print 16233 # settings rather than using the tab-modal print preview dialog. 16234 # Note: `print.always_print_silent` overrides this. 16235 - name: print.prefer_system_dialog 16236 type: RelaxedAtomicBool 16237 value: false 16238 mirror: always 16239 16240 # Whether we attempt to generate links in Save As PDF output. 16241 - name: print.save_as_pdf.links.enabled 16242 type: RelaxedAtomicBool 16243 value: true 16244 mirror: always 16245 16246 # Whether we attempt to generate and use document-internal PDF destinations. 16247 - name: print.save_as_pdf.internal_destinations.enabled 16248 type: RelaxedAtomicBool 16249 value: true 16250 mirror: always 16251 16252 # Whether we use the CSS @page size as the paper size in PDF output. 16253 - name: print.save_as_pdf.use_page_rule_size_as_paper_size.enabled 16254 type: RelaxedAtomicBool 16255 value: @IS_NOT_ANDROID@ 16256 mirror: always 16257 16258 # The default DPI for printing. 16259 # 16260 # For PDF-based output, DPI should ideally be irrelevant, but in fact it is not 16261 # for multiple reasons: 16262 # 16263 # * Layout code that tries to respect device pixels (e.g. for snapping glyph 16264 # positions and baselines, and especially for the "GDI Classic" 16265 # rendering-mode threshold for certain fonts). 16266 # 16267 # * The limitations of the PDF format mean that we can't natively represent 16268 # certain effects, such as filters, in PDF output, so we need to rasterize 16269 # the parts of the document with these applied. 16270 # 16271 # * Other rasterized things like images and such are also affected by DPI 16272 # (both in the output, and the images we select via srcset, for example). 16273 # 16274 # Therefore, using a high DPI is preferable. For now, we use 144dpi to match 16275 # physical printer output on Windows, but higher (e.g. 300dpi) might be better, 16276 # but only if it does not lead to issues such as excessive memory use. 16277 - name: print.default_dpi 16278 type: float 16279 value: 144.0f 16280 mirror: always 16281 16282 # Whether support for monochrome printing is enabled for CUPS. 16283 - name: print.cups.monochrome.enabled 16284 type: RelaxedAtomicBool 16285 value: true 16286 mirror: always 16287 16288 # Whether simpler monochrome printing set-up is enabled for CUPS. 16289 # TODO(emilio): remove after a few releases on-by-default 16290 - name: print.cups.monochrome-gtk-simple.enabled 16291 type: RelaxedAtomicBool 16292 value: true 16293 mirror: always 16294 16295 # Disabling this will no-op window.print() 16296 - name: print.enabled 16297 type: RelaxedAtomicBool 16298 value: true 16299 mirror: always 16300 16301 # Determines if and when to center pages on a sheet horiontally when printing. 16302 # With a setting of 2, it's guaranteed that A4 on US Letter will be centered. 16303 # 0: never, 16304 # 1: always, 16305 # 2: when the ratio of sheet to page size after content scaling is near 1.0 16306 - name: print.center_page_on_sheet 16307 type: RelaxedAtomicUint32 16308 value: 2 16309 mirror: always 16310 16311 #ifdef MOZ_ENABLE_SKIA_PDF 16312 # Whether we should try to use skpdf for pdf output. 16313 - name: print.experimental.skpdf 16314 type: RelaxedAtomicBool 16315 value: false 16316 mirror: always 16317 #endif 16318 16319 #--------------------------------------------------------------------------- 16320 # Prefs starting with "privacy." 16321 #--------------------------------------------------------------------------- 16322 16323 # Annotate trackers using the strict list. If set to false, the basic list will 16324 # be used instead. 16325 - name: privacy.annotate_channels.strict_list.enabled 16326 type: bool 16327 value: false 16328 mirror: always 16329 16330 # Annotate trackers using the strict list in the private browsing mode. If set 16331 # to false, the basic list will be used instead. 16332 - name: privacy.annotate_channels.strict_list.pbmode.enabled 16333 type: bool 16334 value: true 16335 mirror: always 16336 16337 # Enable the clearing of cache data using the clear-site-data header. If enabled, 16338 # header values of "cache" and "*" will clear cached data from the origin 16339 - name: privacy.clearSiteDataHeader.cache.enabled 16340 type: bool 16341 value: true 16342 mirror: always 16343 16344 # Also enable the clearing the bfcache for "Clear-Site-Data"-Header 16345 - name: privacy.clearSiteDataHeader.cache.bfcache.enabled 16346 type: bool 16347 value: true 16348 mirror: always 16349 16350 # First Party Isolation (double keying), disabled by default. 16351 - name: privacy.firstparty.isolate 16352 type: RelaxedAtomicBool 16353 value: false 16354 mirror: always 16355 16356 # If false, two windows in the same domain with different first party domains 16357 # (top level URLs) can access resources through window.opener. This pref is 16358 # effective only when "privacy.firstparty.isolate" is true. 16359 - name: privacy.firstparty.isolate.restrict_opener_access 16360 type: RelaxedAtomicBool 16361 value: true 16362 mirror: always 16363 16364 - name: privacy.firstparty.isolate.block_post_message 16365 type: RelaxedAtomicBool 16366 value: false 16367 mirror: always 16368 16369 - name: privacy.firstparty.isolate.use_site 16370 type: RelaxedAtomicBool 16371 value: false 16372 mirror: always 16373 16374 # Enforce tracking protection in all modes. 16375 - name: privacy.trackingprotection.enabled 16376 type: bool 16377 value: false 16378 mirror: always 16379 16380 # Enforce tracking protection in Private Browsing mode. 16381 - name: privacy.trackingprotection.pbmode.enabled 16382 type: bool 16383 value: true 16384 mirror: always 16385 16386 # Annotate channels based on the tracking protection list in all modes 16387 - name: privacy.trackingprotection.annotate_channels 16388 type: bool 16389 value: true 16390 mirror: always 16391 16392 # Block harmful addon URLs. 16393 - name: privacy.trackingprotection.harmfuladdon.enabled 16394 type: bool 16395 value: false 16396 mirror: always 16397 16398 # Block 3rd party fingerprinting resources. 16399 - name: privacy.trackingprotection.fingerprinting.enabled 16400 type: bool 16401 value: false 16402 mirror: always 16403 16404 # Block 3rd party cryptomining resources. 16405 - name: privacy.trackingprotection.cryptomining.enabled 16406 type: bool 16407 value: false 16408 mirror: always 16409 16410 # Block 3rd party socialtracking resources. 16411 - name: privacy.trackingprotection.socialtracking.enabled 16412 type: bool 16413 value: false 16414 mirror: always 16415 16416 # Consider socialtracking annotation as trackers (see ETP). 16417 - name: privacy.socialtracking.block_cookies.enabled 16418 type: bool 16419 value: true 16420 mirror: always 16421 16422 # Block 3rd party emailtracking resources in all mode. 16423 - name: privacy.trackingprotection.emailtracking.enabled 16424 type: bool 16425 value: false 16426 mirror: always 16427 16428 # Block 3rd party emailtracking resources in Private Browsing mode. 16429 - name: privacy.trackingprotection.emailtracking.pbmode.enabled 16430 type: bool 16431 value: true 16432 mirror: always 16433 16434 # Collecting 3rd party emailtracking telemetry. 16435 - name: privacy.trackingprotection.emailtracking.data_collection.enabled 16436 type: bool 16437 value: true 16438 mirror: always 16439 16440 - name: privacy.trackingprotection.testing.report_blocked_node 16441 type: RelaxedAtomicBool 16442 value: false 16443 mirror: always 16444 16445 # Annotate channels based on the consent manager list 16446 # Note: consent manager annotations will be disabled if tracking protection is disabled 16447 - name: privacy.trackingprotection.consentmanager.annotate_channels 16448 type: bool 16449 value: true 16450 mirror: always 16451 16452 # Skip blocking for consentmanager resources in all modes. 16453 - name: privacy.trackingprotection.consentmanager.skip.enabled 16454 type: RelaxedAtomicBool 16455 value: false 16456 mirror: always 16457 16458 # Skip blocking for consentmanager resources in Private Browsing mode. 16459 - name: privacy.trackingprotection.consentmanager.skip.pbmode.enabled 16460 type: RelaxedAtomicBool 16461 value: true 16462 mirror: always 16463 16464 # Annotate channels based on the anti-fraud list 16465 # Note: anti-fraud annotations will be disabled if tracking protection is disabled 16466 - name: privacy.trackingprotection.antifraud.annotate_channels 16467 type: bool 16468 value: true 16469 mirror: always 16470 16471 # Skip blocking for anti-fraud resources in all modes. 16472 - name: privacy.trackingprotection.antifraud.skip.enabled 16473 type: RelaxedAtomicBool 16474 value: false 16475 mirror: always 16476 16477 # Skip blocking for anti-fraud resources in Private Browsing mode. 16478 - name: privacy.trackingprotection.antifraud.skip.pbmode.enabled 16479 type: RelaxedAtomicBool 16480 value: true 16481 mirror: always 16482 16483 # Enable the "baseline" allow-list for fixing severe site breakage (e.g. blank 16484 # page). 16485 - name: privacy.trackingprotection.allow_list.baseline.enabled 16486 type: bool 16487 value: true 16488 mirror: always 16489 16490 # Enable the "convenience" allow-list for less severe site breakage (e.g. embeds 16491 # or images missing). "convenience" can only be enabled if "baseline" is 16492 # enabled. When "baseline" is false this pref is ignored. 16493 - name: privacy.trackingprotection.allow_list.convenience.enabled 16494 type: bool 16495 value: true 16496 mirror: always 16497 16498 # Whether to spoof user locale to English (used as part of Resist 16499 # Fingerprinting). 16500 # 0 - will prompt 16501 # 1 - don't spoof 16502 # 2 - spoof 16503 - name: privacy.spoof_english 16504 type: RelaxedAtomicUint32 16505 value: 0 16506 mirror: always 16507 do_not_use_directly: true 16508 16509 # Send "do not track" HTTP header, disabled by default. 16510 - name: privacy.donottrackheader.enabled 16511 type: bool 16512 value: false 16513 mirror: always 16514 16515 # Potentially send "global privacy control" HTTP header and set navigator 16516 # property accordingly. Communicates user's desire to opt-out/in of 16517 # websites or services selling or sharing the user's information, false by 16518 # default. 16519 # true - Send the header with a value of 1 to indicate opting-out 16520 # false - Do not send header to indicate opting-in 16521 - name: privacy.globalprivacycontrol.enabled 16522 type: RelaxedAtomicBool 16523 value: false 16524 mirror: always 16525 16526 # Controls whether or not GPC signals are sent in private browsing mode. 16527 # This can be overridden by `privacy.globalprivacycontrol.enabled` as true. 16528 - name: privacy.globalprivacycontrol.pbmode.enabled 16529 type: RelaxedAtomicBool 16530 value: false 16531 mirror: always 16532 16533 # Controls whether or not GPC signals are sent. Meant to act as a third option 16534 # of 'undecided' by leaving the navigator property undefined and not attaching 16535 # the Sec-GPC HTTP header. 16536 - name: privacy.globalprivacycontrol.functionality.enabled 16537 type: RelaxedAtomicBool 16538 value: false 16539 mirror: always 16540 16541 # Lower the priority of network loads for resources on the tracking protection 16542 # list. Note that this requires the 16543 # privacy.trackingprotection.annotate_channels pref to be on in order to have 16544 # any effect. 16545 - name: privacy.trackingprotection.lower_network_priority 16546 type: bool 16547 value: false 16548 mirror: always 16549 16550 # A subset of Resist Fingerprinting protections focused specifically on timers. 16551 # This affects the Animation API, the performance APIs, Date.getTime, 16552 # Event.timestamp, File.lastModified, audioContext.currentTime, 16553 # canvas.captureStream.currentTime. 16554 - name: privacy.reduceTimerPrecision 16555 type: RelaxedAtomicBool 16556 value: true 16557 mirror: always 16558 16559 # If privacy.reduceTimerPrecision is false, this pref controls whether or not 16560 # to clamp all timers at a fixed 20 microsconds. It should always be enabled, 16561 # and is only specified as a pref to enable an emergency disabling in the event 16562 # of catastrophic failure. 16563 - name: privacy.reduceTimerPrecision.unconditional 16564 type: RelaxedAtomicBool 16565 value: true 16566 mirror: always 16567 16568 # The resistFingerprinting variables are marked with 'Relaxed' memory ordering. 16569 # We don't particurally care that threads have a percently consistent view of 16570 # the values of these prefs. They are not expected to change often, and having 16571 # an outdated view is not particurally harmful. They will eventually become 16572 # consistent. 16573 # 16574 # The variables will, however, be read often (specifically .microseconds on 16575 # each timer rounding) so performance is important. 16576 - name: privacy.resistFingerprinting 16577 type: RelaxedAtomicBool 16578 value: false 16579 mirror: always 16580 do_not_use_directly: true 16581 16582 # When the .pbmode pref is on, RFP or FPP will be enabled in PBM 16583 # When the non-pbm pref is on, they will be enabled in PBM and non-PBM 16584 - name: privacy.resistFingerprinting.pbmode 16585 type: RelaxedAtomicBool 16586 value: false 16587 mirror: always 16588 do_not_use_directly: true 16589 16590 # privacy.fingerprintingProtection enables a set of fingerprinting protections 16591 # designed to minimize breakage while maximizing protection. 16592 - name: privacy.fingerprintingProtection 16593 type: RelaxedAtomicBool 16594 value: false 16595 mirror: always 16596 do_not_use_directly: true 16597 16598 - name: privacy.fingerprintingProtection.pbmode 16599 type: RelaxedAtomicBool 16600 value: true 16601 mirror: always 16602 do_not_use_directly: true 16603 16604 # Disables FPP Remote settings bucket. Allows user to stop overriding 16605 # of FPP overrides 16606 - name: privacy.fingerprintingProtection.remoteOverrides.enabled 16607 type: RelaxedAtomicBool 16608 value: true 16609 mirror: always 16610 16611 - name: privacy.fingerprintingProtection.testing 16612 type: RelaxedAtomicBool 16613 value: false 16614 mirror: always 16615 16616 # Enable/Disable fingerprinting protections that are enabled in 16617 # Enhanced Tracking Protection Standard mode. 16618 # bFPP cannot be enabled in only PBM, it is either enabled 16619 # browser-wide or disabled browser-wide. If FPP is enabled 16620 # in the same context as bFPP, FPP takes precedence. If 16621 # RFP is enabled in the same context as FPP, then RFP takes precedence 16622 - name: privacy.baselineFingerprintingProtection 16623 type: RelaxedAtomicBool 16624 value: true 16625 mirror: always 16626 do_not_use_directly: true 16627 16628 # This pref can be used to disable mozAddonManager entirely for fingerprinting 16629 # reasons. Someone like Tor browser will use this pref. 16630 # NOTE: We'd like this to be a "hidden" pref once StaticPrefs supports it. 16631 - name: privacy.resistFingerprinting.block_mozAddonManager 16632 type: RelaxedAtomicBool 16633 value: false 16634 mirror: always 16635 16636 # The log level for browser console messages logged in RFPHelper.sys.mjs. Change to 16637 # 'All' and restart to see the messages. 16638 - name: privacy.resistFingerprinting.jsmloglevel 16639 type: String 16640 value: "Warn" 16641 mirror: never 16642 16643 # Enable jittering the clock one precision value forward. 16644 - name: privacy.resistFingerprinting.reduceTimerPrecision.jitter 16645 type: RelaxedAtomicBool 16646 value: true 16647 mirror: always 16648 16649 # Dynamically tune the resolution of the timer reduction for 16650 # `privacy.reduceTimerPrecision` and `privacy.resistFingerprinting`. 16651 - name: privacy.resistFingerprinting.reduceTimerPrecision.microseconds 16652 type: RelaxedAtomicUint32 16653 value: 1000 16654 mirror: always 16655 16656 - name: privacy.resistFingerprinting.target_video_res 16657 type: uint32_t 16658 value: 1080 16659 mirror: always 16660 16661 # Enable resetting the fingerprinting randomization key daily for normal windwos. 16662 - name: privacy.resistFingerprinting.randomization.daily_reset.enabled 16663 type: RelaxedAtomicBool 16664 value: false 16665 mirror: always 16666 16667 # Enable resetting the fingerprinting randomization key daily for private windwos. 16668 - name: privacy.resistFingerprinting.randomization.daily_reset.private.enabled 16669 type: RelaxedAtomicBool 16670 value: false 16671 mirror: always 16672 16673 # Control whether we use the SipHash to generate the canvas random key. 16674 - name: privacy.resistFingerprinting.randomization.canvas.use_siphash 16675 type: RelaxedAtomicBool 16676 value: false 16677 mirror: always 16678 16679 # Anti-tracking permission expiration. 16680 - name: privacy.restrict3rdpartystorage.expiration 16681 type: uint32_t 16682 value: 2592000 # 30 days (in seconds) 16683 mirror: always 16684 16685 # Report Anti-tracking warnings to console lazily 16686 - name: privacy.restrict3rdpartystorage.console.lazy 16687 type: bool 16688 value: true 16689 mirror: always 16690 16691 # Enable the heuristic to allow storage access for windows opened using window.open() after user interaction 16692 - name: privacy.restrict3rdpartystorage.heuristic.opened_window_after_interaction 16693 type: bool 16694 value: true 16695 mirror: always 16696 16697 # Enable the heuristic to allow storage access for windows opened using window.open() 16698 - name: privacy.restrict3rdpartystorage.heuristic.window_open 16699 type: bool 16700 value: false 16701 mirror: always 16702 16703 # Enable the heuristic to allow storage access for windows opened using window.open() 16704 - name: privacy.restrict3rdpartystorage.heuristic.redirect 16705 type: bool 16706 value: false 16707 mirror: always 16708 16709 # Enable the heuristic to allow storage access for extended navigations with interaction 16710 - name: privacy.restrict3rdpartystorage.heuristic.navigation 16711 type: bool 16712 #if defined(ANDROID) 16713 value: false 16714 #else 16715 value: true 16716 #endif 16717 mirror: always 16718 16719 # Anti-tracking permission expiration. 16720 - name: privacy.restrict3rdpartystorage.expiration_redirect 16721 type: uint32_t 16722 value: 2592000 # 30 days (in seconds) 16723 mirror: always 16724 16725 # Anti-tracking user-interaction expiration. 16726 - name: privacy.userInteraction.expiration 16727 type: uint32_t 16728 value: 3888000 # 45 days (in seconds) 16729 mirror: always 16730 16731 # Anti-tracking user-interaction document interval. 16732 - name: privacy.userInteraction.document.interval 16733 type: uint32_t 16734 value: 1800 # 30 minutes (in seconds) 16735 mirror: always 16736 16737 # Enable Anti-tracking testing. When it enables, it will notify the observers 16738 # when user-interaction permission or storage access permission is added. This 16739 # is for testing only. 16740 - name: privacy.antitracking.testing 16741 type: bool 16742 value: false 16743 mirror: always 16744 16745 # Full isolation (referrer, cookie jar, etc) of resources injected by content-scripts. 16746 - name: privacy.antitracking.isolateContentScriptResources 16747 type: bool 16748 value: @IS_NIGHTLY_BUILD@ 16749 mirror: always 16750 16751 # Controls the anti-tracking webcompat features. This includes: 16752 # - All URL-Classifier and state partitioning skip lists (prefs and remote 16753 # settings) 16754 # - Storage access heuristics (opener, redirect, etc.) 16755 # - StorageAccessAPI automatic grants (skips the prompt) 16756 # - Allowing specific tracking channels on user opt-in (e.g. facebook login 16757 # shim). 16758 - name: privacy.antitracking.enableWebcompat 16759 type: RelaxedAtomicBool 16760 value: true 16761 mirror: always 16762 16763 # Enable the heuristic to allow storage access for recent visited pages 16764 - name: privacy.restrict3rdpartystorage.heuristic.recently_visited 16765 type: bool 16766 #if defined(ANDROID) 16767 value: true 16768 #else 16769 value: false 16770 #endif 16771 mirror: always 16772 16773 # Valid time gap since last visit 16774 - name: privacy.restrict3rdpartystorage.heuristic.recently_visited_time 16775 type: uint32_t 16776 value: 600 # 10 minutes 16777 mirror: always 16778 16779 # Whether to exclude third-party trackers from the storage access heuristics. 16780 - name: privacy.restrict3rdpartystorage.heuristic.exclude_third_party_trackers 16781 type: bool 16782 value: true 16783 mirror: always 16784 16785 # Recent visited pages redirection permission expiration. 16786 - name: privacy.restrict3rdpartystorage.expiration_visited 16787 type: uint32_t 16788 value: 2592000 # 30 days (in seconds) 16789 mirror: always 16790 16791 - name: privacy.window.maxInnerWidth 16792 type: int32_t 16793 value: 1400 16794 mirror: always 16795 16796 - name: privacy.window.maxInnerHeight 16797 type: int32_t 16798 value: 900 16799 mirror: always 16800 16801 - name: privacy.sanitize.useOldClearHistoryDialog 16802 type: RelaxedAtomicBool 16803 value: true 16804 mirror: always 16805 16806 - name: privacy.sanitize.sanitizeOnShutdown 16807 type: RelaxedAtomicBool 16808 value: false 16809 mirror: always 16810 16811 - name: privacy.clearOnShutdown.cache 16812 type: RelaxedAtomicBool 16813 value: false 16814 mirror: always 16815 16816 - name: privacy.clearOnShutdown_v2.cache 16817 type: RelaxedAtomicBool 16818 value: false 16819 mirror: always 16820 16821 - name: privacy.dynamic_firstparty.limitForeign 16822 type: RelaxedAtomicBool 16823 value: false 16824 mirror: always 16825 16826 - name: privacy.dynamic_firstparty.use_site 16827 type: RelaxedAtomicBool 16828 value: true 16829 mirror: always 16830 16831 - name: privacy.partition.network_state 16832 type: RelaxedAtomicBool 16833 value: true 16834 mirror: always 16835 16836 # Partition the OCSP cache by the partitionKey. 16837 - name: privacy.partition.network_state.ocsp_cache 16838 type: RelaxedAtomicBool 16839 value: true 16840 mirror: always 16841 16842 # Partition the OCSP cache by the partitionKey for private browsing mode. 16843 - name: privacy.partition.network_state.ocsp_cache.pbmode 16844 type: RelaxedAtomicBool 16845 value: true 16846 mirror: always 16847 16848 # Always partition web storage APIs except cookies. 16849 - name: privacy.partition.always_partition_third_party_non_cookie_storage 16850 type: RelaxedAtomicBool 16851 value: true 16852 mirror: always 16853 16854 # Exclude session storage from the above preference. 16855 - name: privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage 16856 type: RelaxedAtomicBool 16857 value: false 16858 mirror: always 16859 16860 - name: privacy.partition.bloburl_per_partition_key 16861 type: bool 16862 value: true 16863 mirror: always 16864 16865 - name: privacy.window.name.update.enabled 16866 type: bool 16867 value: true 16868 mirror: always 16869 16870 # By default, the network state isolation is not active when there is a proxy 16871 # setting. This pref forces the network isolation even in these scenarios. 16872 - name: privacy.partition.network_state.connection_with_proxy 16873 type: bool 16874 value: false 16875 mirror: always 16876 16877 # Partition the service workers unconditionally when dFPI is enabled. 16878 - name: privacy.partition.serviceWorkers 16879 type: RelaxedAtomicBool 16880 value: true 16881 mirror: always 16882 16883 # Enables / disables the strip on share feature which strips query parameters 16884 # when copying/sharing in-content links or from the url bar. 16885 - name: privacy.query_stripping.strip_on_share.enabled 16886 type: RelaxedAtomicBool 16887 value: false 16888 mirror: always 16889 16890 # Enables / disables the URL query string stripping in normal browsing mode 16891 # which strips query parameters from loading URIs to prevent bounce (redirect) 16892 # tracking. 16893 - name: privacy.query_stripping.enabled 16894 type: RelaxedAtomicBool 16895 value: false 16896 mirror: always 16897 16898 # Same as the pref above, but controls query stripping for private browsing 16899 # mode. 16900 - name: privacy.query_stripping.enabled.pbmode 16901 type: RelaxedAtomicBool 16902 value: false 16903 mirror: always 16904 16905 # The list which contains query parameters that are needed to be stripped from 16906 # URIs. The query parameters are separated by a space. 16907 - name: privacy.query_stripping.strip_list 16908 type: String 16909 value: "" 16910 mirror: never 16911 16912 # This controls if we will do the query string stripping for redirects. 16913 - name: privacy.query_stripping.redirect 16914 type: bool 16915 value: true 16916 mirror: always 16917 16918 # the list which contains sites where should exempt from query stripping 16919 - name: privacy.query_stripping.allow_list 16920 type: String 16921 value: "" 16922 mirror: never 16923 16924 # Controls Bounce Tracking Protection behavior. 16925 # Set to 0 to fully disable. See nsIBounceTrackingProtection.idl for 16926 # documentation. 16927 - name: privacy.bounceTrackingProtection.mode 16928 type: uint32_t 16929 #ifdef NIGHTLY_BUILD 16930 value: 1 16931 #else 16932 value: 3 16933 #endif 16934 mirror: always 16935 16936 # How long to wait for a client redirect after a navigation ends. 16937 - name: privacy.bounceTrackingProtection.clientBounceDetectionTimerPeriodMS 16938 type: uint32_t 16939 value: 10000 16940 mirror: always 16941 16942 # How long user activations will protect a site host from storage deletion. 16943 - name: privacy.bounceTrackingProtection.bounceTrackingActivationLifetimeSec 16944 type: uint32_t 16945 value: 3888000 16946 mirror: always 16947 16948 # How long to wait for interaction after a possible bounce tracking event before 16949 # deleting a site host's storage. 16950 - name: privacy.bounceTrackingProtection.bounceTrackingGracePeriodSec 16951 type: uint32_t 16952 value: 3600 16953 mirror: always 16954 16955 # How often to run the bounce tracking timer algorithm which purges bounce 16956 # tracker state periodically. Set to 0 to disable purging. 16957 - name: privacy.bounceTrackingProtection.bounceTrackingPurgeTimerPeriodSec 16958 type: uint32_t 16959 value: 3600 16960 mirror: always 16961 16962 # Whether only bounces that access storage should be considered trackers. 16963 - name: privacy.bounceTrackingProtection.requireStatefulBounces 16964 type: bool 16965 value: false 16966 mirror: always 16967 16968 # To be used in automated test environments to enable observer messages. 16969 - name: privacy.bounceTrackingProtection.enableTestMode 16970 type: RelaxedAtomicBool 16971 value: false 16972 mirror: always 16973 16974 # Whether the migration ran to import user activation flags into the BTP user 16975 # activation store. Set to false to trigger a new migration. 16976 - name: privacy.bounceTrackingProtection.hasMigratedUserActivationData 16977 type: bool 16978 value: false 16979 mirror: always 16980 16981 # Maximum number of pending storage updates before flushing to disk. 16982 - name: privacy.bounceTrackingProtection.storage.maxPendingUpdates 16983 type: uint32_t 16984 value: 25 16985 mirror: always 16986 16987 #--------------------------------------------------------------------------- 16988 # Prefs starting with "prompts." 16989 #--------------------------------------------------------------------------- 16990 16991 # Prompt modal type prefs 16992 # See nsIPromptService::MODAL_TYPE fields for possible values. 16993 16994 # Insecure form submit warning. 16995 - name: prompts.modalType.insecureFormSubmit 16996 type: int32_t 16997 value: 2 16998 mirror: always 16999 17000 #--------------------------------------------------------------------------- 17001 # Prefs starting with "security." 17002 #--------------------------------------------------------------------------- 17003 17004 # Mochitests that need to load resource:// URIs not declared content-accessible 17005 # in manifests should set this pref. 17006 - name: security.all_resource_uri_content_accessible 17007 type: bool 17008 value: false 17009 mirror: always 17010 17011 - name: security.bad_cert_domain_error.url_fix_enabled 17012 type: bool 17013 value: true 17014 mirror: always 17015 17016 # When a TLS server asks for a client authentication certificate, the platform 17017 # will ask the user to select one or opt to not send one. At the same time, the 17018 # platform will offer a few options for how long to remember the decision at 17019 # hand. The value of this preference determines which of these three options is 17020 # selected by default. 17021 # 0 selects "do not remember the decision" 17022 # 1 selects "remember the decision permanently" 17023 # 2 selects "remember the decision for the rest of the session" 17024 - name: security.client_auth_certificate_default_remember_setting 17025 type: uint32_t 17026 value: 2 17027 mirror: always 17028 17029 - name: security.csp.reporting.script-sample.max-length 17030 type: int32_t 17031 value: 40 17032 mirror: always 17033 17034 - name: security.csp.truncate_blocked_uri_for_frame_navigations 17035 type: bool 17036 value: false 17037 mirror: always 17038 17039 # Limit the number of CSP reports that are send in a specific timespan. 17040 - name: security.csp.reporting.limit.count 17041 type: uint32_t 17042 value: 100 17043 mirror: always 17044 17045 # Enable/disable CSP reporting (report-uri and report-to) 17046 - name: security.csp.reporting.enabled 17047 type: bool 17048 value: true 17049 mirror: always 17050 17051 #ifdef DEBUG 17052 # Crash on CSP violations on internal pages (i.e. chrome:) 17053 - name: security.csp.testing.allow_internal_csp_violation 17054 type: bool 17055 value: false 17056 mirror: always 17057 #endif 17058 17059 # If true, all toplevel data: URI navigations will be blocked. 17060 # Please note that manually entering a data: URI in the 17061 # URL-Bar will not be blocked when flipping this pref. 17062 - name: security.data_uri.block_toplevel_data_uri_navigations 17063 type: bool 17064 value: true 17065 mirror: always 17066 17067 # Whether to apply the <meta http="Content-Security-Policy"> to browser.xhtml 17068 - name: security.browser_xhtml_csp.enabled 17069 type: bool 17070 value: true 17071 mirror: always 17072 17073 # Allow unsafe eval usage with high privileges to. This should 17074 # not be activated without a very good reason. 17075 # This pref has to be set before starting Firefox! 17076 - name: security.allow_unsafe_dangerous_privileged_evil_eval 17077 type: bool 17078 value: false 17079 mirror: once 17080 17081 # Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but 17082 # not allowed for Firefox Desktop in firefox.js 17083 - name: security.allow_parent_unrestricted_js_loads 17084 type: RelaxedAtomicBool 17085 value: true 17086 mirror: always 17087 17088 # A temporary pref that will be removed when the dialog in 1979341 is removed 17089 # Needed for early enforcement of a user-initiated block action 17090 - name: security.block_parent_unrestricted_js_loads.temporary 17091 type: RelaxedAtomicBool 17092 value: false 17093 mirror: always 17094 17095 # A temporary pref that will be removed when the dialog in 1979341 is removed 17096 # Disables the notification bar and dialog 17097 - name: security.hide_parent_unrestricted_js_loads_warning.temporary 17098 type: RelaxedAtomicBool 17099 value: false 17100 mirror: always 17101 17102 # A pref needed for testing: xpinstall.signatures.required is disabled 17103 # for Marionette, which trips the JSHacks detection and disables our script 17104 # protections, so this pref skips the JSHacks check 17105 - name: security.parent_unrestricted_js_loads.skip_jshacks 17106 type: RelaxedAtomicBool 17107 value: false 17108 mirror: always 17109 17110 # Don't enable this! This is only meant for legacy tests. 17111 - name: security.allow_eval_with_system_principal 17112 type: RelaxedAtomicBool 17113 value: false 17114 mirror: always 17115 17116 # Don't enable this! This is only meant for legacy tests. 17117 - name: security.allow_eval_in_parent_process 17118 type: RelaxedAtomicBool 17119 value: false 17120 mirror: always 17121 17122 # Disallowed by default, ensure not disallowed content is loaded in the parent 17123 # process. 17124 - name: security.allow_unsafe_parent_loads 17125 type: bool 17126 value: false 17127 mirror: always 17128 17129 # Pref to block mixed scripts (fonts, plugin content, scripts, stylesheets, 17130 # iframes, websockets, XHR). 17131 - name: security.mixed_content.block_active_content 17132 type: bool 17133 value: @IS_ANDROID@ 17134 mirror: always 17135 17136 # Pref for mixed display content blocking (images, audio, video). 17137 - name: security.mixed_content.block_display_content 17138 type: bool 17139 value: false 17140 mirror: always 17141 17142 # Pref for mixed display content upgrading (images, audio, video). 17143 - name: security.mixed_content.upgrade_display_content 17144 type: RelaxedAtomicBool 17145 value: true 17146 mirror: always 17147 17148 # Whether strict file origin policy is in effect. "False" is traditional. 17149 - name: security.fileuri.strict_origin_policy 17150 type: RelaxedAtomicBool 17151 value: true 17152 mirror: always 17153 17154 # The level to which we sandbox the content process. firefox.js sets the 17155 # default to different values on a per-OS basis, and has documentation 17156 # on what the defaults are and what the numbers mean. 17157 - name: security.sandbox.content.level 17158 type: int32_t 17159 value: 0 17160 mirror: always 17161 do_not_use_directly: true # Consumers should use SandboxSettings to ask. 17162 17163 - name: security.sandbox.socket.process.level 17164 type: int32_t 17165 value: 0 17166 mirror: always 17167 do_not_use_directly: true # Consumers should use SandboxSettings to ask. 17168 17169 # This controls the strength of the GPU process sandbox on Windows 17170 # and macOS. Changes will require restart. Levels have different meanings 17171 # on Windows and macOS. For information on what the level number means on 17172 # Windows, see SetSecurityLevelForGPUProcess() in 17173 # security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp 17174 # For macOS, any level >= 1 enables the sandbox and setting a higher level 17175 # has no effect. 17176 - name: security.sandbox.gpu.level 17177 type: int32_t 17178 #if defined(XP_WIN) 17179 value: 2 17180 #elif defined(XP_MACOSX) 17181 value: 1 17182 #else 17183 value: 0 17184 #endif 17185 mirror: always 17186 17187 # Enrollment preferences for the win32k experiment, set and managed by Normandy 17188 - name: security.sandbox.content.win32k-experiment.enrollmentStatus 17189 type: uint32_t 17190 value: 0 17191 mirror: never 17192 17193 - name: security.sandbox.content.win32k-experiment.startupEnrollmentStatus 17194 type: uint32_t 17195 value: 0 17196 mirror: never 17197 17198 #if defined(XP_WIN) && defined(MOZ_SANDBOX) 17199 17200 # Whether win32k is disabled for content processes. 17201 # true means win32k system calls are not permitted. 17202 - name: security.sandbox.content.win32k-disable 17203 type: RelaxedAtomicBool 17204 value: true 17205 mirror: always 17206 17207 # Whether win32k is disabled for compatible plugins. 17208 - name: security.sandbox.gmp.win32k-disable 17209 type: RelaxedAtomicBool 17210 value: true 17211 mirror: always 17212 17213 # Whether ACG is enabled (dynamic code blocked) for compatible plugins. 17214 - name: security.sandbox.gmp.acg.enabled 17215 type: RelaxedAtomicBool 17216 value: true 17217 mirror: always 17218 17219 # Whether win32k is disabled for socket processes. 17220 # true means win32k system calls are not permitted. 17221 - name: security.sandbox.socket.win32k-disable 17222 type: RelaxedAtomicBool 17223 value: true 17224 mirror: always 17225 17226 # Whether CET User Shadow Stack compatible modules only is enabled for the 17227 # relevant process type. 17228 - name: security.sandbox.content.shadow-stack.enabled 17229 type: RelaxedAtomicBool 17230 value: false 17231 mirror: always 17232 17233 - name: security.sandbox.rdd.shadow-stack.enabled 17234 type: RelaxedAtomicBool 17235 value: true 17236 mirror: always 17237 17238 - name: security.sandbox.socket.shadow-stack.enabled 17239 type: RelaxedAtomicBool 17240 value: true 17241 mirror: always 17242 17243 - name: security.sandbox.gpu.shadow-stack.enabled 17244 type: RelaxedAtomicBool 17245 value: true 17246 mirror: always 17247 17248 - name: security.sandbox.gmp.shadow-stack.enabled 17249 type: RelaxedAtomicBool 17250 value: true 17251 mirror: always 17252 17253 # Whether a Low Privilege AppContainer (LPAC) is enabled for the relevant 17254 # process type. 17255 17256 #if defined(MOZ_WMF_MEDIA_ENGINE) 17257 - name: security.sandbox.utility-wmf-cdm.lpac.enabled 17258 type: RelaxedAtomicBool 17259 value: true 17260 mirror: always 17261 #endif 17262 17263 # Whether Arbitrary Code Guard is enabled for the RDD process. 17264 - name: security.sandbox.rdd.acg.enabled 17265 type: RelaxedAtomicBool 17266 value: true 17267 mirror: always 17268 17269 #ifdef MOZ_WMF 17270 # Whether Arbitrary Code Guard is enabled for the utility WMF audio decoder 17271 # process. 17272 17273 - name: security.sandbox.utility-wmf.acg.enabled 17274 type: RelaxedAtomicBool 17275 value: true 17276 mirror: always 17277 #endif // MOZ_WMF 17278 17279 # Whether CIG is applied pre-spawn or later when lowering the sandbox. We 17280 # enable pre-spawn CIG only in Nightly for now because it caused a compat 17281 # issue (bug 1682304 and 1704373). 17282 - name: security.sandbox.cig.prespawn.enabled 17283 type: RelaxedAtomicBool 17284 value: @IS_NIGHTLY_BUILD@ 17285 mirror: always 17286 17287 # This controls the depth of stack trace that is logged when Windows sandbox 17288 # logging is turned on. This is only currently available for the content 17289 # process because the only other sandbox (for GMP) has too strict a policy to 17290 # allow stack tracing. This does not require a restart to take effect. 17291 - name: security.sandbox.windows.log.stackTraceDepth 17292 type: RelaxedAtomicUint32 17293 value: 0 17294 mirror: always 17295 17296 # Whether \\??\\pipe\\chrome.* rule is added to the sandbox configurations. 17297 # We are removing this using a pref because we know that in the past some 17298 # injected DLLs have relied on this rule existing for their own pipes. 17299 # This gives users a work-around if they have issues. 17300 - name: security.sandbox.chrome-pipe-rule.enabled 17301 type: RelaxedAtomicBool 17302 value: false 17303 mirror: always 17304 17305 # Whether \Device\KsecDD is closed in content process. We are closing this 17306 # using a pref to give users a work-around if they have issues. 17307 - name: security.sandbox.content.close-ksecdd-handle 17308 type: RelaxedAtomicBool 17309 value: true 17310 mirror: always 17311 #endif 17312 17313 #if defined(XP_LINUX) && defined(MOZ_SANDBOX) 17314 - name: security.sandbox.warn_unprivileged_namespaces 17315 type: bool 17316 value: true 17317 mirror: always 17318 #endif 17319 17320 # Pref to show warning when submitting from secure to insecure. 17321 - name: security.warn_submit_secure_to_insecure 17322 type: bool 17323 value: true 17324 mirror: always 17325 17326 # Hardware Origin-bound Second Factor Support 17327 - name: security.webauth.webauthn 17328 type: bool 17329 value: true 17330 mirror: always 17331 17332 # WebAuthn CTAP2 support 17333 - name: security.webauthn.ctap2 17334 type: RelaxedAtomicBool 17335 value: true 17336 mirror: always 17337 rust: true 17338 17339 # WebAuthn JSON serialization methods 17340 - name: security.webauthn.enable_json_serialization_methods 17341 type: RelaxedAtomicBool 17342 value: true 17343 mirror: always 17344 17345 # WebAuthn conditional mediation 17346 - name: security.webauthn.enable_conditional_mediation 17347 type: RelaxedAtomicBool 17348 value: true 17349 mirror: always 17350 17351 # Dispatch WebAuthn requests to virtual authenticators (mutually exclusive 17352 # with and webauthn_enable_usbtoken) 17353 - name: security.webauth.webauthn_enable_softtoken 17354 type: RelaxedAtomicBool 17355 value: false 17356 mirror: always 17357 rust: true 17358 17359 # residentKey support when using Android platform API 17360 - name: security.webauthn.webauthn_enable_android_fido2.residentkey 17361 type: RelaxedAtomicBool 17362 value: true 17363 mirror: always 17364 17365 #ifdef XP_MACOSX 17366 # Dispatch WebAuthn requests to the macOS platform API 17367 - name: security.webauthn.enable_macos_passkeys 17368 type: RelaxedAtomicBool 17369 value: true 17370 mirror: always 17371 #endif 17372 17373 # Dispatch WebAuthn requests to authenticator-rs 17374 - name: security.webauth.webauthn_enable_usbtoken 17375 type: RelaxedAtomicBool 17376 value: @IS_NOT_MOBILE@ 17377 mirror: always 17378 rust: true 17379 17380 # Skip direct attestation consent prompts 17381 - name: security.webauthn.always_allow_direct_attestation 17382 type: RelaxedAtomicBool 17383 value: false 17384 mirror: always 17385 rust: true 17386 17387 # Show the Windows Passkey settings link in about:preferences. This is 17388 # set to true if we find that webauthn.dll is sufficiently recent. 17389 - name: security.webauthn.show_ms_settings_link 17390 type: RelaxedAtomicBool 17391 value: false 17392 mirror: always 17393 17394 # Allow WebAuthn when a certificate override is in place 17395 - name: security.webauthn.allow_with_certificate_override 17396 type: RelaxedAtomicBool 17397 value: false 17398 mirror: always 17399 17400 # Block Worker/SharedWorker scripts with wrong MIME type. 17401 - name: security.block_Worker_with_wrong_mime 17402 type: bool 17403 value: true 17404 mirror: always 17405 17406 # Block the execution of scripts using a wrong type as defined by the file extension 17407 # (OS) mapping when loaded via the file:// protocol. 17408 - name: security.block_fileuri_script_with_wrong_mime 17409 type: bool 17410 value: false 17411 mirror: always 17412 17413 # Cancel outgoing requests from privileged about pages: 17414 # but only with scheme http(s) and contentpolicytype script 17415 - name: security.disallow_privilegedabout_remote_script_loads 17416 type: RelaxedAtomicBool 17417 value: false 17418 mirror: always 17419 17420 # Enable preloaded static key pins by default. 17421 - name: security.cert_pinning.enforcement_level 17422 type: RelaxedAtomicUint32 17423 value: 1 17424 mirror: always 17425 do_not_use_directly: true 17426 17427 # OCSP fetching behavior: 17428 # 0: do not fetch OCSP 17429 # 1: fetch OCSP for DV and EV certificates 17430 # 2: fetch OCSP only for EV certificates 17431 - name: security.OCSP.enabled 17432 type: RelaxedAtomicUint32 17433 #ifdef ANDROID 17434 value: 2 17435 #else 17436 value: 1 17437 #endif 17438 mirror: always 17439 17440 17441 # Whether or not OCSP is required. 17442 # true => hard-fail (if an OCSP request times out, stop the connection) 17443 # false => soft-fail (if an OCSP request times out, continue the connection) 17444 - name: security.OCSP.require 17445 type: RelaxedAtomicBool 17446 value: false 17447 mirror: always 17448 17449 # How many milliseconds to wait for an OCSP response before assuming it failed 17450 # (when fetching for soft-fail). 17451 - name: security.OCSP.timeoutMilliseconds.soft 17452 type: RelaxedAtomicUint32 17453 #ifdef RELEASE_OR_BETA 17454 value: 2000 17455 #else 17456 value: 1000 17457 #endif 17458 mirror: always 17459 17460 # How many milliseconds to wait for an OCSP response before assuming it failed 17461 # (when fetching for hard-fail). 17462 - name: security.OCSP.timeoutMilliseconds.hard 17463 type: RelaxedAtomicUint32 17464 value: 10000 17465 mirror: always 17466 17467 # Whether or not to enable OCSP must-staple (in other words, TLS-feature with 17468 # status request). 17469 - name: security.ssl.enable_ocsp_must_staple 17470 type: RelaxedAtomicBool 17471 value: true 17472 mirror: always 17473 17474 # Whether or not to enable OCSP stapling. 17475 - name: security.ssl.enable_ocsp_stapling 17476 type: RelaxedAtomicBool 17477 value: true 17478 mirror: always 17479 17480 # This is checked at startup to see if NSS should be initialized without the 17481 # user's certificate and key databases. 17482 - name: security.nocertdb 17483 type: bool 17484 value: false 17485 mirror: once 17486 17487 # Whether or not to import and trust third party root certificates from the OS. 17488 - name: security.enterprise_roots.enabled 17489 type: RelaxedAtomicBool 17490 value: true 17491 mirror: always 17492 17493 # If true, attempt to load the osclientcerts PKCS#11 module at startup on a 17494 # background thread. This module allows Firefox to use client certificates 17495 # stored in OS certificate storage. Currently only available for Windows and 17496 # macOS. 17497 - name: security.osclientcerts.autoload 17498 type: RelaxedAtomicBool 17499 value: true 17500 mirror: always 17501 17502 - name: security.pki.cert_short_lifetime_in_days 17503 type: RelaxedAtomicUint32 17504 value: 10 17505 mirror: always 17506 17507 # Configures Certificate Transparency support mode: 17508 # 0: Fully disabled. 17509 # 1: Only collect telemetry. CT qualification checks are not performed. 17510 # 2: Enforce CT. 17511 - name: security.pki.certificate_transparency.mode 17512 type: RelaxedAtomicUint32 17513 #if defined(ANDROID) && !defined(EARLY_BETA_OR_EARLIER) 17514 value: 0 17515 #else 17516 value: 2 17517 #endif 17518 mirror: always 17519 17520 # A comma-separated list of host names to not enforce certificate transparency 17521 # for. Entries of the form 'example.com' apply to the host 'example.com' and 17522 # all subdomains (e.g. 'sub.example.com', 'sub.www.example.com', etc.). 17523 # Entries of the form '.example.com' only apply to the host 'example.com'. 17524 # Entries may also be IP addresses. 17525 - name: security.pki.certificate_transparency.disable_for_hosts 17526 type: String 17527 value: "" 17528 mirror: never 17529 17530 # A comma-separated list of base64-encoded sha256 hashes of subject public key 17531 # infos to not enforce certificate transparency for. If a verified certificate 17532 # chain contains a certificate with a SPKI hash in this list, certificate 17533 # transparency will not be enforced for that connection. 17534 - name: security.pki.certificate_transparency.disable_for_spki_hashes 17535 type: String 17536 value: "" 17537 mirror: never 17538 17539 # 0: Disable CRLite entirely. 17540 # 1: Enable CRLite but only to collect telemetry. 17541 # 2: Enable CRLite and enforce its results. Firefox will not fetch OCSP for DV 17542 # certificates that chain to the Mozilla root store unless 17543 # security.OCSP.require is true. Firefox will, however, fetch OCSP for EV 17544 # certificates that chain to the Mozilla root store (unless 17545 # security.OCSP.enable is 0). 17546 - name: security.pki.crlite_mode 17547 type: RelaxedAtomicUint32 17548 value: 2 17549 mirror: always 17550 17551 # The CRLite filter channel to which the user is subscribed. 17552 # - "default" => clubcards that contain all revocations 17553 # - "compat" => clubcards that contain priority revocations 17554 - name: security.pki.crlite_channel 17555 type: String 17556 #ifdef ANDROID 17557 value: "compat" 17558 #else 17559 value: "default" 17560 #endif 17561 mirror: never 17562 17563 # The number of SCTs that must be "covered" by a CRLite filter before 17564 # we will enforce a result from that filter. 17565 - name: security.pki.crlite_timestamps_for_coverage 17566 type: RelaxedAtomicUint32 17567 value: 1 17568 mirror: always 17569 rust: true 17570 17571 - name: security.pki.use_modern_crypto_with_pkcs12 17572 type: RelaxedAtomicBool 17573 value: true 17574 mirror: always 17575 17576 # The number of entries in the certificate signature cache. 17577 # A higher number increases memory usage, but should increase the cache hit rate. 17578 # Each entry is approximately 64 bytes, and the maximum number of entries is 65535. 17579 - name: security.pki.cert_signature_cache_size 17580 type: RelaxedAtomicUint32 17581 value: 128 17582 mirror: always 17583 17584 # The number of entries in the SCT signature cache. 17585 # A higher number increases memory usage, but should increase the cache hit rate. 17586 # Each entry is approximately 64 bytes, and the maximum number of entries is 65535. 17587 # There will be 2-3 SCTs per certificate, so this probably needs to be 2-3x 17588 # security.pki.cert_signature_cache_size to achieve similar hit rates. 17589 - name: security.pki.sct_signature_cache_size 17590 type: RelaxedAtomicUint32 17591 value: 256 17592 mirror: always 17593 17594 # The number of entries in the certificate trust cache. 17595 # A higher number increases memory usage, but should increase the cache hit rate. 17596 # Each entry is approximately 65 bytes, and the maximum number of entries is 65535. 17597 - name: security.pki.cert_trust_cache_size 17598 type: RelaxedAtomicUint32 17599 value: 128 17600 mirror: always 17601 17602 # Whether or not to enable the test trust anchor list when verifying QWACs 17603 # (qualified website authentication certificates) 17604 - name: security.qwacs.enable_test_trust_anchors 17605 type: RelaxedAtomicBool 17606 value: false 17607 mirror: always 17608 rust: true 17609 17610 - name: security.tls.version.min 17611 type: RelaxedAtomicUint32 17612 value: 3 17613 mirror: always 17614 17615 - name: security.tls.version.max 17616 type: RelaxedAtomicUint32 17617 value: 4 17618 mirror: always 17619 17620 - name: security.tls.version.enable-deprecated 17621 type: RelaxedAtomicBool 17622 value: false 17623 mirror: always 17624 17625 - name: security.tls.version.fallback-limit 17626 type: RelaxedAtomicUint32 17627 value: 4 17628 mirror: always 17629 17630 # Turn off post-handshake authentication for TLS 1.3 by default, 17631 # until the incompatibility with HTTP/2 is resolved: 17632 # https://tools.ietf.org/html/draft-davidben-http2-tls13-00 17633 - name: security.tls.enable_post_handshake_auth 17634 type: RelaxedAtomicBool 17635 value: false 17636 mirror: always 17637 17638 # Probability of GREASEing a TLS connection with ECH (0-100) 17639 # 0 means never GREASE, 100 means always GREASE 17640 - name: security.tls.ech.grease_probability 17641 type: RelaxedAtomicUint32 17642 value: 100 17643 mirror: always 17644 17645 # Whether to apply ECH GREASE settings to HTTP3/QUIC connections 17646 - name: security.tls.ech.grease_http3 17647 type: RelaxedAtomicBool 17648 value: true 17649 mirror: always 17650 17651 # Whether to retry connections without ECH Grease 17652 - name: security.tls.ech.disable_grease_on_fallback 17653 type: RelaxedAtomicBool 17654 value: false 17655 mirror: always 17656 17657 # ECH GREASE Padding target (1-255) 17658 - name: security.tls.ech.grease_size 17659 type: RelaxedAtomicUint32 17660 value: 100 17661 mirror: always 17662 17663 # Whether to apply GREASE settings to HTTP3/QUIC connections 17664 - name: security.tls.grease_http3_enable 17665 type: RelaxedAtomicBool 17666 value: false 17667 mirror: always 17668 rust: true 17669 17670 - name: security.tls.hello_downgrade_check 17671 type: RelaxedAtomicBool 17672 value: true 17673 mirror: always 17674 17675 - name: security.tls.enable_delegated_credentials 17676 type: RelaxedAtomicBool 17677 value: true 17678 mirror: always 17679 17680 - name: security.tls.enable_0rtt_data 17681 type: RelaxedAtomicBool 17682 value: true 17683 mirror: always 17684 17685 - name: security.tls.enable_kyber 17686 type: RelaxedAtomicBool 17687 value: true 17688 mirror: always 17689 rust: true 17690 17691 - name: security.tls.client_hello.send_p256_keyshare 17692 type: RelaxedAtomicBool 17693 value: @IS_NOT_NIGHTLY_BUILD@ 17694 mirror: always 17695 rust: true 17696 17697 - name: security.tls.enable_certificate_compression_zlib 17698 type: RelaxedAtomicBool 17699 value: true 17700 mirror: always 17701 rust: true 17702 17703 - name: security.tls.enable_certificate_compression_brotli 17704 type: RelaxedAtomicBool 17705 value: true 17706 mirror: always 17707 rust: true 17708 17709 - name: security.tls.enable_certificate_compression_zstd 17710 type: RelaxedAtomicBool 17711 value: true 17712 mirror: always 17713 rust: true 17714 17715 - name: security.tls.enable_certificate_compression_abridged 17716 type: RelaxedAtomicBool 17717 value: false 17718 mirror: always 17719 17720 - name: security.ssl.treat_unsafe_negotiation_as_broken 17721 type: RelaxedAtomicBool 17722 value: false 17723 mirror: always 17724 17725 - name: security.ssl.require_safe_negotiation 17726 type: RelaxedAtomicBool 17727 value: false 17728 mirror: always 17729 17730 - name: security.ssl.enable_false_start 17731 type: RelaxedAtomicBool 17732 value: true 17733 mirror: always 17734 17735 - name: security.ssl.enable_alpn 17736 type: RelaxedAtomicBool 17737 value: true 17738 mirror: always 17739 17740 - name: security.ssl.disable_session_identifiers 17741 type: RelaxedAtomicBool 17742 value: false 17743 mirror: always 17744 17745 - name: security.ssl3.ecdhe_rsa_aes_128_gcm_sha256 17746 type: RelaxedAtomicBool 17747 value: true 17748 mirror: always 17749 17750 - name: security.ssl3.ecdhe_ecdsa_aes_128_gcm_sha256 17751 type: RelaxedAtomicBool 17752 value: true 17753 mirror: always 17754 17755 - name: security.ssl3.ecdhe_ecdsa_chacha20_poly1305_sha256 17756 type: RelaxedAtomicBool 17757 value: true 17758 mirror: always 17759 17760 - name: security.ssl3.ecdhe_rsa_chacha20_poly1305_sha256 17761 type: RelaxedAtomicBool 17762 value: true 17763 mirror: always 17764 17765 - name: security.ssl3.ecdhe_ecdsa_aes_256_gcm_sha384 17766 type: RelaxedAtomicBool 17767 value: true 17768 mirror: always 17769 17770 - name: security.ssl3.ecdhe_rsa_aes_256_gcm_sha384 17771 type: RelaxedAtomicBool 17772 value: true 17773 mirror: always 17774 17775 - name: security.ssl3.ecdhe_rsa_aes_128_sha 17776 type: RelaxedAtomicBool 17777 value: true 17778 mirror: always 17779 17780 - name: security.ssl3.ecdhe_ecdsa_aes_128_sha 17781 type: RelaxedAtomicBool 17782 value: @IS_NOT_EARLY_BETA_OR_EARLIER@ 17783 mirror: always 17784 17785 - name: security.ssl3.ecdhe_rsa_aes_256_sha 17786 type: RelaxedAtomicBool 17787 value: true 17788 mirror: always 17789 17790 - name: security.ssl3.ecdhe_ecdsa_aes_256_sha 17791 type: RelaxedAtomicBool 17792 value: @IS_NOT_EARLY_BETA_OR_EARLIER@ 17793 mirror: always 17794 17795 - name: security.ssl3.dhe_rsa_aes_128_sha 17796 type: RelaxedAtomicBool 17797 value: false 17798 mirror: always 17799 17800 - name: security.ssl3.dhe_rsa_aes_256_sha 17801 type: RelaxedAtomicBool 17802 value: false 17803 mirror: always 17804 17805 - name: security.ssl3.rsa_aes_128_sha 17806 type: RelaxedAtomicBool 17807 value: true 17808 mirror: always 17809 17810 - name: security.ssl3.rsa_aes_256_sha 17811 type: RelaxedAtomicBool 17812 value: true 17813 mirror: always 17814 17815 - name: security.ssl3.rsa_aes_128_gcm_sha256 17816 type: RelaxedAtomicBool 17817 value: true 17818 mirror: always 17819 17820 - name: security.ssl3.rsa_aes_256_gcm_sha384 17821 type: RelaxedAtomicBool 17822 value: true 17823 mirror: always 17824 17825 - name: security.ssl3.deprecated.rsa_des_ede3_sha 17826 type: RelaxedAtomicBool 17827 value: true 17828 mirror: always 17829 17830 - name: security.tls13.aes_128_gcm_sha256 17831 type: RelaxedAtomicBool 17832 value: true 17833 mirror: always 17834 17835 - name: security.tls13.chacha20_poly1305_sha256 17836 type: RelaxedAtomicBool 17837 value: true 17838 mirror: always 17839 17840 - name: security.tls13.aes_256_gcm_sha384 17841 type: RelaxedAtomicBool 17842 value: true 17843 mirror: always 17844 17845 - name: security.integrity_policy.enabled 17846 type: RelaxedAtomicBool 17847 value: true 17848 mirror: always 17849 17850 - name: security.integrity_policy.stylesheet.enabled 17851 type: RelaxedAtomicBool 17852 value: false 17853 mirror: always 17854 17855 # Which mechanism the secret decoder ring should use for encryption. Decryption 17856 # can always happen with all mechanisms. 17857 # 0 - DES3_CBC 17858 # 1 - AES_CBC 17859 - name: security.sdr.mechanism 17860 type: RelaxedAtomicUint32 17861 value: 1 17862 mirror: always 17863 17864 - name: security.restrict_to_adults.respect_platform 17865 type: RelaxedAtomicBool 17866 value: false 17867 mirror: always 17868 17869 - name: security.restrict_to_adults.always 17870 type: bool 17871 value: false 17872 mirror: always 17873 17874 17875 #--------------------------------------------------------------------------- 17876 # Prefs starting with "signon." 17877 #--------------------------------------------------------------------------- 17878 - name: signon.usernameOnlyForm.enabled 17879 type: bool 17880 value: true 17881 mirror: always 17882 17883 #--------------------------------------------------------------------------- 17884 # Prefs starting with "slider." 17885 #--------------------------------------------------------------------------- 17886 17887 # Scrollbar snapping region. 17888 # - 0: off 17889 # - 1 and higher: slider thickness multiple 17890 - name: slider.snapMultiplier 17891 type: int32_t 17892 #ifdef XP_WIN 17893 value: 6 17894 #else 17895 value: 0 17896 #endif 17897 mirror: always 17898 17899 #--------------------------------------------------------------------------- 17900 # Prefs starting with "storage." 17901 #--------------------------------------------------------------------------- 17902 17903 # Whether to use a non-exclusive VFS. 17904 # By default we use the unix-excl VFS, for the following reasons: 17905 # 1. It improves compatibility with NFS shares, whose implementation 17906 # is incompatible with SQLite's locking requirements (reliable fcntl), and 17907 # in particular with WAL journaling. 17908 # Bug 433129 attempted to automatically identify such file-systems, 17909 # but a reliable way was not found and the fallback locking is slower than 17910 # POSIX locking, so we do not want to do it by default. 17911 # 2. It allows wal mode to avoid the memory mapped -shm file, reducing the 17912 # likelihood of SIGBUS failures when disk space is exhausted. 17913 # 3. It provides some protection from third party database tampering while a 17914 # connection is open. 17915 # Note there's no win32-excl VFS, so this has no effect on Windows. 17916 - name: storage.sqlite.exclusiveLock.enabled 17917 type: RelaxedAtomicBool 17918 value: @IS_NOT_MOBILE@ 17919 mirror: always 17920 17921 #--------------------------------------------------------------------------- 17922 # Prefs starting with "svg." 17923 #--------------------------------------------------------------------------- 17924 17925 # This pref controls whether the 'context-fill' and 'context-stroke' keywords 17926 # can be used in SVG-as-an-image in the content processes to use the fill/ 17927 # stroke specified on the element that embeds the image. (These keywords are 17928 # always enabled in the chrome process, regardless of this pref.) Also, these 17929 # keywords are currently not part of any spec, which is partly why we disable 17930 # them for web content. 17931 - name: svg.context-properties.content.enabled 17932 type: RelaxedAtomicBool 17933 value: false 17934 mirror: always 17935 17936 # Enables the 'context-fill' and 'context-stroke' keywords for particular 17937 # domains. We expect this list to be Mozilla-controlled properties, since the 17938 # 'context-*' keywords are not part of any spec. We expect to remove this 17939 # preference and the 'context-` keyword support entirely in the 17940 # not-too-distant future when a standardized alternative ships. This preference 17941 # is _not_ for allowing web content to use these keywords. For performance 17942 # reasons, the list of domains in this preference should remain short in 17943 # length. 17944 - name: svg.context-properties.content.allowed-domains 17945 type: String 17946 value: "" 17947 mirror: never 17948 17949 # Is support for the new getBBox method from SVG 2 enabled? 17950 # See https://svgwg.org/svg2-draft/single-page.html#types-SVGBoundingBoxOptions 17951 - name: svg.new-getBBox.enabled 17952 type: bool 17953 value: @IS_NIGHTLY_BUILD@ 17954 mirror: always 17955 17956 # Whether we use Moz2D Path::GetStrokedBounds to get the stroke bounds. 17957 - name: svg.Moz2D.strokeBounds.enabled 17958 type: bool 17959 value: @IS_NIGHTLY_BUILD@ 17960 mirror: always 17961 17962 # Whether SVGAElement.text is enabled. 17963 - name: svg.SVGAElement.text.enabled 17964 type: bool 17965 value: false 17966 mirror: always 17967 17968 # Whether SVGImageElement loading is forced to be sync. 17969 - name: svg.image-element.force-sync-load 17970 type: bool 17971 value: true 17972 mirror: always 17973 17974 # Tweak which elements are allowed in <svg:use> subtrees, and in which 17975 # circumstances. See RemoveForbiddenNodes in SVGUseElement.cpp for the spec 17976 # text. 17977 # 17978 # - 0: Don't restrict ever. 17979 # - 1: Restrict only cross-document. 17980 # - 2/other: restrict always. 17981 # 17982 # We allow the behavior to be configurable via this pref. Our chosen default 17983 # value forbids non-graphical content in <svg:use> clones of cross-document 17984 # elements. This is a compromise between our more-permissive pre-existing 17985 # behavior (which SVG 2 seems to call for, and maps to pref value 0) and the 17986 # behavior of other UAs (which SVG 1.1 seems to call for, and maps to pref 17987 # value 2). 17988 - name: svg.use-element.graphics-element-restrictions 17989 type: int32_t 17990 value: 1 17991 mirror: always 17992 17993 # Whether to restrict <svg:use> element recursion levels. 17994 # 17995 # - 0: Don't restrict ever. 17996 # - 1: Restrict everywhere 17997 # - 2/other: Restrict only in the parent process. 17998 # 17999 - name: svg.use-element.recursive-clone-limit.enabled 18000 type: int32_t 18001 value: 2 18002 mirror: always 18003 18004 # What is the recursion limit for svg use element cloning if enabled. 18005 - name: svg.use-element.recursive-clone-limit 18006 type: uint32_t 18007 value: 8 18008 mirror: always 18009 18010 #--------------------------------------------------------------------------- 18011 # Prefs starting with "telemetry." 18012 #--------------------------------------------------------------------------- 18013 18014 - name: telemetry.number_of_site_origin.min_interval 18015 type: uint32_t 18016 value: 300000 18017 mirror: always 18018 18019 - name: telemetry.fog.test.localhost_port 18020 type: RelaxedAtomicInt32 18021 value: 0 18022 mirror: always 18023 rust: true 18024 18025 - name: telemetry.fog.test.activity_limit 18026 type: RelaxedAtomicInt32 18027 value: 120 18028 mirror: always 18029 rust: true 18030 18031 - name: telemetry.fog.test.inactivity_limit 18032 type: RelaxedAtomicInt32 18033 value: 1200 18034 mirror: always 18035 rust: true 18036 18037 - name: telemetry.fog.artifact_build 18038 type: RelaxedAtomicBool 18039 value: false 18040 mirror: always 18041 18042 - name: telemetry.fog.init_on_shutdown 18043 type: RelaxedAtomicBool 18044 value: true 18045 mirror: always 18046 18047 #--------------------------------------------------------------------------- 18048 # Prefs starting with "test." 18049 #--------------------------------------------------------------------------- 18050 18051 # A mechanism to make the current time seem later than it is for specific 18052 # operations. Currently used to test expiration of the HSTS preload list. 18053 - name: test.currentTimeOffsetSeconds 18054 type: RelaxedAtomicUint32 18055 value: 0 18056 mirror: always 18057 18058 - name: test.events.async.enabled 18059 type: RelaxedAtomicBool 18060 value: false 18061 mirror: always 18062 18063 # Enable assertions in IMEContentObserver::FlatTextCache on debug builds. 18064 # If this pref is enabled, DOM mutation becomes much slower. 18065 - name: test.ime_content_observer.assert_valid_cache 18066 type: bool 18067 value: false 18068 mirror: always 18069 18070 - name: test.mousescroll 18071 type: RelaxedAtomicBool 18072 value: false 18073 mirror: always 18074 18075 #--------------------------------------------------------------------------- 18076 # Prefs starting with "thread." 18077 #--------------------------------------------------------------------------- 18078 18079 # If the service is available, set threads to low-power mode when in the background. 18080 - name: threads.use_low_power.enabled 18081 type: RelaxedAtomicBool 18082 #ifdef XP_MACOSX 18083 value: true 18084 #else 18085 value: @IS_NIGHTLY_BUILD@ 18086 #endif 18087 mirror: always 18088 18089 18090 # If the process priority is set to background, put the main thread in the background. 18091 # Currently off by default. 18092 - name: threads.lower_mainthread_priority_in_background.enabled 18093 type: bool 18094 #ifdef XP_MACOSX 18095 value: true 18096 #else 18097 value: @IS_NIGHTLY_BUILD@ 18098 #endif 18099 mirror: always 18100 18101 #--------------------------------------------------------------------------- 18102 # Prefs starting with "timer." 18103 #--------------------------------------------------------------------------- 18104 18105 # Since our timestamp on macOS does not increment while the system is asleep, we 18106 # should ignore sleep/wake notifications to make timer thread process timers. 18107 - name: timer.ignore_sleep_wake_notifications 18108 type: RelaxedAtomicBool 18109 #ifdef XP_MACOSX 18110 value: true 18111 #else 18112 value: false 18113 #endif 18114 mirror: always 18115 18116 # Amount of time by which it is always acceptable to delay the firing of a timer. 18117 # Any timer may be delayed by up to this amount in order to enable timers to be 18118 # bundled together for efficiency. 18119 - name: timer.minimum_firing_delay_tolerance_ms 18120 type: AtomicFloat 18121 value: 1.0 18122 mirror: always 18123 18124 # Maximum amount of time by which it is ever acceptable to delay the firing of a timer. 18125 # Setting this to zero will effectively disable timer coalescing. 18126 - name: timer.maximum_firing_delay_tolerance_ms 18127 type: AtomicFloat 18128 value: 10000.0 18129 mirror: always 18130 18131 #ifdef XP_WIN 18132 # Controls whether or not TimerThread will automatically increase the Windows timer 18133 # resolution when appropriate conditions are met. 18134 - name: timer.auto_increase_timer_resolution 18135 type: RelaxedAtomicBool 18136 #ifdef NIGHTLY_BUILD 18137 value: true 18138 #else 18139 value: false 18140 #endif 18141 mirror: always 18142 #endif 18143 18144 #--------------------------------------------------------------------------- 18145 # Prefs starting with "toolkit." 18146 #--------------------------------------------------------------------------- 18147 18148 # Makes removeDirectory background task wait for the given milliseconds before removal. 18149 - name: toolkit.background_tasks.remove_directory.testing.sleep_ms 18150 type: RelaxedAtomicUint32 18151 value: 0 18152 mirror: always 18153 18154 # Indicates whether we are testng crash annotation validation. In DEBUG builds, 18155 # invalid crash annotations cause an assertion failure, which would prevent us 18156 # from checking the non-DEBUG behavior. 18157 #ifdef DEBUG 18158 - name: toolkit.crash_annotation.testing_validation 18159 type: bool 18160 value: false 18161 mirror: always 18162 #endif 18163 18164 # Enable the gecko trace system. 18165 - name: toolkit.gecko-trace.enable 18166 type: bool 18167 value: false 18168 mirror: always 18169 18170 # Returns true if BHR is disabled. 18171 - name: toolkit.content-background-hang-monitor.disabled 18172 type: bool 18173 value: false 18174 mirror: always 18175 18176 - name: toolkit.scrollbox.smoothScroll 18177 type: RelaxedAtomicBool 18178 value: true 18179 mirror: always 18180 18181 - name: toolkit.scrollbox.horizontalScrollDistance 18182 type: RelaxedAtomicInt32 18183 value: 5 18184 mirror: always 18185 18186 - name: toolkit.scrollbox.verticalScrollDistance 18187 type: RelaxedAtomicInt32 18188 value: 3 18189 mirror: always 18190 18191 # The maximum overlap between pages when scrolling with 18192 # page-up/page-down/spacebar, as a percentage of scrollport size. 18193 - name: toolkit.scrollbox.pagescroll.maxOverlapPercent 18194 type: RelaxedAtomicInt32 18195 value: 10 18196 mirror: always 18197 18198 # The maximum overlap between pages when scrolling with 18199 # page-up/page-down/spacebar, in lines. 18200 - name: toolkit.scrollbox.pagescroll.maxOverlapLines 18201 type: RelaxedAtomicInt32 18202 value: 2 18203 mirror: always 18204 18205 # The lateWriteChecksStage and fastShutdownStage below represent the stage 18206 # of shutdown after which we (for lateWriteChecksStage) crash / gather 18207 # telemetry data on file writes, or (for fastShutdownStage) we call _exit(0). 18208 # Higher values are earlier during shutdown, and the full enumeration can 18209 # be found in AppShutdown.h in the AppShutdownPhase enum. 18210 - name: toolkit.shutdown.lateWriteChecksStage 18211 type: int32_t 18212 #ifdef MOZ_CODE_COVERAGE 18213 value: 0 18214 #else 18215 value: 2 18216 #endif 18217 mirror: always 18218 18219 # See the comment above toolkit.shutdown.lateWriteChecksStage. A higher value 18220 # for this pref means we call _exit(0) earlier during shutdown. 18221 - name: toolkit.shutdown.fastShutdownStage 18222 type: int32_t 18223 #if !defined(DEBUG) && !defined(MOZ_ASAN) && !defined(MOZ_TSAN) && !defined(MOZ_CODE_COVERAGE) && !defined(MOZ_VALGRIND) && !defined(MOZ_PROFILE_GENERATE) && !defined(JS_STRUCTURED_SPEW) 18224 value: 1 18225 #else 18226 value: 0 18227 #endif 18228 mirror: always 18229 18230 # Sending each remote accumulation immediately places undue strain on the IPC 18231 # subsystem. Batch the remote accumulations for a period of time before sending 18232 # them all at once. This value was chosen as a balance between data timeliness 18233 # and performance (see bug 1218576). 18234 - name: toolkit.telemetry.ipcBatchTimeout 18235 type: uint32_t 18236 value: 2000 18237 mirror: always 18238 18239 - name: toolkit.telemetry.testing.overrideProductsCheck 18240 type: RelaxedAtomicBool 18241 value: false 18242 mirror: always 18243 18244 #--------------------------------------------------------------------------- 18245 # Prefs starting with "ui." 18246 #--------------------------------------------------------------------------- 18247 18248 - name: ui.key.generalAccessKey 18249 type: int32_t 18250 value: -1 18251 mirror: always 18252 18253 # Use 17 for Ctrl, 18 for Alt, 91 or 224 for Meta, 0 for none. 18254 - name: ui.key.accelKey 18255 type: uint32_t 18256 #ifdef XP_MACOSX 18257 value: 224 18258 #else 18259 value: 17 18260 #endif 18261 mirror: always 18262 18263 # See above for the key codes to use. 18264 - name: ui.key.menuAccessKey 18265 type: uint32_t 18266 #ifdef XP_MACOSX 18267 value: 0 18268 #else 18269 value: 18 18270 #endif 18271 mirror: always 18272 18273 # Only used if generalAccessKey is -1. 18274 - name: ui.key.chromeAccess 18275 type: int32_t 18276 #ifdef XP_MACOSX 18277 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 3 = ctrl+shift, 8 = Meta 18278 value: 2 18279 #else 18280 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 5 = Alt+Shift, 8 = Win 18281 value: 4 18282 #endif 18283 mirror: always 18284 18285 # Only used if generalAccessKey is -1. 18286 - name: ui.key.contentAccess 18287 type: int32_t 18288 #ifdef XP_MACOSX 18289 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 3 = ctrl+shift, 8 = Meta 18290 value: 6 18291 #else 18292 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 5 = Alt+Shift, 8 = Win 18293 value: 5 18294 #endif 18295 mirror: always 18296 18297 #ifdef XP_WIN 18298 - name: ui.key.layout.load_when_first_needed 18299 type: bool 18300 value: true 18301 mirror: always 18302 #endif 18303 18304 # Does the access key by itself focus the menu bar? 18305 - name: ui.key.menuAccessKeyFocuses 18306 type: bool 18307 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK) 18308 # On Windows and Linux, we now default to showing the menu bar only when alt 18309 # is pressed. 18310 value: true 18311 #else 18312 value: false 18313 #endif 18314 mirror: always 18315 18316 # Whether native key bindings in the environment or builtin shortcut key 18317 # definitions in Gecko are used first in <input> and <textarea> 18318 - name: ui.key.textcontrol.prefer_native_key_bindings_over_builtin_shortcut_key_definitions 18319 type: bool 18320 value: true 18321 mirror: always 18322 18323 #ifdef MOZ_WIDGET_GTK 18324 # Only GtkTextView (native multiline text viewer/editor) supports "select-all" 18325 # signal so that we cannot know "select-all" key bindings only with GtkEntry. 18326 # When this pref is set to true, if a key combination does not cause any 18327 # signals in GtkEntry, try to check the key combination is mapped to 18328 # "select-all" in GtkTextView or not. If it's mapped to other commands, they 18329 # are just ignored. 18330 - name: ui.key.use_select_all_in_single_line_editor 18331 type: bool 18332 value: true 18333 mirror: always 18334 #endif 18335 18336 # Duration of timeout of incremental search in menus (ms). 0 means infinite. 18337 - name: ui.menu.incremental_search.timeout 18338 type: uint32_t 18339 value: 1000 18340 mirror: always 18341 18342 # If true, popups are attached to their native parent window (and move with it) 18343 # and can't overlap the OS chrome. Otherwise they are topmost. 18344 # NOTE(emilio): Comments below might not be accurate anymore. 18345 - name: ui.panel.default_level_parent 18346 type: RelaxedAtomicBool 18347 #if defined(XP_WIN) || defined(XP_MACOSX) 18348 # See bug 448927, on topmost panel, some IMEs are not usable on Windows. 18349 # See bug 404131, topmost <panel> element wins to Dashboard on MacOSX. 18350 value: true 18351 #else 18352 # Setting default_level_parent to true makes the default level for popup 18353 # windows "top" instead of "parent". On GTK2 platform, this is implemented 18354 # with override-redirect windows which is the normal way to implement 18355 # temporary popup windows. Setting this to false would make the default 18356 # level "parent" which is implemented with managed windows. A problem with 18357 # using managed windows is that metacity sometimes deactivates the parent 18358 # window when the managed popup is shown, see bug 526941. 18359 # 18360 # TODO(emilio): Re-evaluate this default, the comment above is no longer 18361 # true since bug 552982 (where we started looking at mNoAutohide rather than 18362 # popup level to make the override-redirect vs. managed window distinction). 18363 # 18364 # The Android default was copied from GTK in bug 568700. 18365 value: false 18366 #endif 18367 mirror: always 18368 18369 # If true, all popups won't hide automatically on blur 18370 - name: ui.popup.disable_autohide 18371 type: RelaxedAtomicBool 18372 value: false 18373 mirror: always 18374 18375 # Negate scroll, true will make the mouse scroll wheel move the screen the 18376 # same direction as with most desktops or laptops. 18377 - name: ui.scrolling.negate_wheel_scroll 18378 type: RelaxedAtomicBool 18379 value: @IS_ANDROID@ 18380 mirror: always 18381 18382 # Delay in milliseconds for tooltips 18383 - name: ui.tooltip.delay_ms 18384 type: uint32_t 18385 value: 500 18386 mirror: always 18387 18388 # If the user puts a finger down on an element and we think the user might be 18389 # executing a pan gesture, how long do we wait before tentatively deciding the 18390 # gesture is actually a tap and activating the target element? 18391 - name: ui.touch_activation.delay_ms 18392 type: int32_t 18393 value: 100 18394 mirror: always 18395 18396 # If the user has clicked an element, how long do we keep the :active state 18397 # before it is cleared. 18398 - name: ui.touch_activation.duration_ms 18399 type: int32_t 18400 value: 50 18401 mirror: always 18402 18403 # If the user puts a finger down on an element and we think the user might be 18404 # executing a pan gesture, how long do we wait before :hover state is set to 18405 # the target element. 18406 - name: ui.touch_hover.delay_ms 18407 type: int32_t 18408 value: 100 18409 mirror: always 18410 18411 # Prevent system colors from being exposed to CSS or canvas. 18412 - name: ui.use_standins_for_native_colors 18413 type: RelaxedAtomicBool 18414 value: false 18415 mirror: always 18416 18417 # Whether context menus should only appear on mouseup instead of mousedown, 18418 # on OSes where they normally appear on mousedown (macOS, *nix). 18419 # Note: ignored on Windows (context menus always use mouseup). 18420 - name: ui.context_menus.after_mouseup 18421 type: bool 18422 value: false 18423 mirror: always 18424 18425 # Whether click-hold context menus are enabled. 18426 - name: ui.click_hold_context_menus 18427 type: RelaxedAtomicBool 18428 value: false 18429 mirror: always 18430 18431 # How long to wait for a drag gesture before displaying click-hold context menu, 18432 # in milliseconds. 18433 - name: ui.click_hold_context_menus.delay 18434 type: RelaxedAtomicInt32 18435 value: 500 18436 mirror: always 18437 18438 # When enabled, the touch.radius and mouse.radius prefs allow events to be 18439 # dispatched to nearby elements that are sensitive to the event. See 18440 # PositionedEventTargeting.cpp. The 'mm' prefs define a rectangle around the 18441 # nominal event target point within which we will search for suitable elements. 18442 # 'visitedWeight' is a percentage weight; a value > 100 makes a visited link be 18443 # treated as further away from the event target than it really is, while a 18444 # value < 100 makes a visited link be treated as closer to the event target 18445 # than it really is. 18446 18447 - name: ui.touch.radius.enabled 18448 type: bool 18449 value: @IS_ANDROID@ 18450 mirror: always 18451 18452 - name: ui.touch.radius.topmm 18453 type: uint32_t 18454 #ifdef ANDROID 18455 value: 2 18456 #else 18457 value: 12 18458 #endif 18459 mirror: always 18460 18461 - name: ui.touch.radius.rightmm 18462 type: uint32_t 18463 #ifdef ANDROID 18464 value: 3 18465 #else 18466 value: 8 18467 #endif 18468 mirror: always 18469 18470 - name: ui.touch.radius.bottommm 18471 type: uint32_t 18472 #ifdef ANDROID 18473 value: 2 18474 #else 18475 value: 4 18476 #endif 18477 mirror: always 18478 18479 - name: ui.touch.radius.leftmm 18480 type: uint32_t 18481 #ifdef ANDROID 18482 value: 3 18483 #else 18484 value: 8 18485 #endif 18486 mirror: always 18487 18488 # If this pref and ui.touch.radious.enabled are both true, clickable content is 18489 # also treated as touchable content if and only if a sigle touch. 18490 - name: ui.touch.radius.single_touch.treat_clickable_as_touchable 18491 type: bool 18492 value: true 18493 mirror: always 18494 18495 - name: ui.touch.radius.visitedWeight 18496 type: uint32_t 18497 value: 120 18498 mirror: always 18499 18500 - name: ui.mouse.radius.enabled 18501 type: bool 18502 value: @IS_ANDROID@ 18503 mirror: always 18504 18505 - name: ui.mouse.radius.topmm 18506 type: uint32_t 18507 #ifdef ANDROID 18508 value: 2 18509 #else 18510 value: 12 18511 #endif 18512 mirror: always 18513 18514 - name: ui.mouse.radius.rightmm 18515 type: uint32_t 18516 #ifdef ANDROID 18517 value: 3 18518 #else 18519 value: 8 18520 #endif 18521 mirror: always 18522 18523 - name: ui.mouse.radius.bottommm 18524 type: uint32_t 18525 #ifdef ANDROID 18526 value: 2 18527 #else 18528 value: 4 18529 #endif 18530 mirror: always 18531 18532 - name: ui.mouse.radius.leftmm 18533 type: uint32_t 18534 #ifdef ANDROID 18535 value: 3 18536 #else 18537 value: 8 18538 #endif 18539 mirror: always 18540 18541 - name: ui.mouse.radius.visitedWeight 18542 type: uint32_t 18543 value: 120 18544 mirror: always 18545 18546 - name: ui.mouse.radius.reposition 18547 type: bool 18548 value: @IS_ANDROID@ 18549 mirror: always 18550 18551 # When true, the ui.mouse.radius.* prefs will only affect simulated mouse 18552 # events generated by touch input. When false, the prefs will be used for all 18553 # mouse events. 18554 - name: ui.mouse.radius.inputSource.touchOnly 18555 type: bool 18556 value: true 18557 mirror: always 18558 18559 # When true, selection is not collapsed at the right click point if there is a 18560 # non-collapsed selection. 18561 - name: ui.mouse.right_click.collapse_selection.stop_if_non_collapsed_selection 18562 type: bool 18563 value: true 18564 mirror: always 18565 18566 # When true, selection is not collapsed at the right click point if the clicked 18567 # node is not editable. 18568 - name: ui.mouse.right_click.collapse_selection.stop_if_non_editable_node 18569 type: bool 18570 value: false 18571 mirror: always 18572 18573 # When true, the caret is not moved to the right click point in focused editable 18574 # content. 18575 - name: ui.mouse.right_click.move_caret.stop_if_in_focused_editable_node 18576 type: bool 18577 value: false 18578 mirror: always 18579 18580 #--------------------------------------------------------------------------- 18581 # Prefs starting with "urlclassifier." 18582 #--------------------------------------------------------------------------- 18583 18584 # Update server response timeout for Safe Browsing. 18585 - name: urlclassifier.update.response_timeout_ms 18586 type: uint32_t 18587 value: 30000 18588 mirror: always 18589 18590 # Download update timeout for Safe Browsing. 18591 - name: urlclassifier.update.timeout_ms 18592 type: uint32_t 18593 value: 90000 18594 mirror: always 18595 18596 # Whether to delay the CRC32 check of prefix files until the update. 18597 - name: urlclassifier.delay_prefixes_crc32_check 18598 type: RelaxedAtomicBool 18599 value: false 18600 mirror: always 18601 18602 # Enable classification for safebrowsing and anti-tracking 18603 # 0 -> disabled, 1 -> anti-tracking only, 2 -> safe-browsing only, 3 -> enabled 18604 # see netwerk/base/nsNetUtil.cpp for C++ enum 18605 - name: urlclassifier.enabled_mode 18606 type: RelaxedAtomicUint32 18607 value: 3 18608 mirror: always 18609 18610 #--------------------------------------------------------------------------- 18611 # Prefs starting with "view_source." 18612 #--------------------------------------------------------------------------- 18613 18614 - name: view_source.editor.external 18615 type: bool 18616 value: false 18617 mirror: always 18618 18619 - name: view_source.wrap_long_lines 18620 type: bool 18621 value: @IS_ANDROID@ 18622 mirror: always 18623 18624 - name: view_source.syntax_highlight 18625 type: bool 18626 value: true 18627 mirror: always 18628 18629 - name: view_source.tab_size 18630 type: int32_t 18631 value: 4 18632 mirror: always 18633 18634 #--------------------------------------------------------------------------- 18635 # Prefs starting with "webgl." (for pref access from Worker threads) 18636 #--------------------------------------------------------------------------- 18637 18638 - name: webgl.1.allow-core-profiles 18639 type: RelaxedAtomicBool 18640 #ifdef XP_MACOSX 18641 value: true 18642 #else 18643 value: false 18644 #endif 18645 mirror: always 18646 18647 - name: webgl.1.request_es2 18648 type: RelaxedAtomicBool 18649 #ifdef XP_WIN 18650 value: false 18651 #else 18652 value: true 18653 #endif 18654 mirror: always 18655 18656 - name: webgl.angle.force-d3d11 18657 type: RelaxedAtomicBool 18658 value: false 18659 mirror: always 18660 18661 - name: webgl.angle.try-d3d11 18662 type: RelaxedAtomicBool 18663 #ifdef XP_WIN 18664 value: true 18665 #else 18666 value: false 18667 #endif 18668 mirror: always 18669 18670 - name: webgl.angle.force-warp 18671 type: RelaxedAtomicBool 18672 value: false 18673 mirror: always 18674 18675 - name: webgl.auto-flush 18676 type: RelaxedAtomicBool 18677 value: true 18678 mirror: always 18679 18680 - name: webgl.auto-flush.gl 18681 type: RelaxedAtomicBool 18682 value: false 18683 mirror: always 18684 18685 - name: webgl.can-lose-context-in-foreground 18686 type: RelaxedAtomicBool 18687 value: true 18688 mirror: always 18689 18690 - name: webgl.cgl.multithreaded 18691 type: RelaxedAtomicBool 18692 value: true 18693 mirror: always 18694 18695 - name: webgl.drawing_buffer_color_space 18696 type: RelaxedAtomicBool 18697 value: true 18698 mirror: always 18699 18700 - name: webgl.debug.incomplete-tex-color 18701 type: RelaxedAtomicUint32 18702 value: 0 18703 mirror: always 18704 18705 - name: webgl.default-antialias 18706 type: RelaxedAtomicBool 18707 value: @IS_NOT_ANDROID@ 18708 mirror: always 18709 18710 - name: webgl.default-no-alpha 18711 type: RelaxedAtomicBool 18712 value: false 18713 mirror: always 18714 18715 - name: webgl.disable-angle 18716 type: RelaxedAtomicBool 18717 value: false 18718 mirror: always 18719 18720 - name: webgl.disable-wgl 18721 type: RelaxedAtomicBool 18722 value: false 18723 mirror: always 18724 18725 - name: webgl.porting.strict_readpixels_formats 18726 type: RelaxedAtomicBool 18727 value: false 18728 mirror: always 18729 18730 - name: webgl.porting.strict_readpixels_formats.non_es 18731 type: RelaxedAtomicBool 18732 value: false 18733 mirror: always 18734 18735 #ifdef XP_WIN 18736 - name: webgl.dxgl.enabled 18737 type: RelaxedAtomicBool 18738 value: true 18739 mirror: always 18740 18741 - name: webgl.dxgl.needs-finish 18742 type: RelaxedAtomicBool 18743 value: false 18744 mirror: always 18745 #endif 18746 18747 - name: webgl.disable-fail-if-major-performance-caveat 18748 type: RelaxedAtomicBool 18749 value: true 18750 mirror: always 18751 18752 - name: webgl.disable-DOM-blit-uploads 18753 type: RelaxedAtomicBool 18754 #if defined(MOZ_AARCH64) && defined(XP_MACOSX) 18755 value: true 18756 #else 18757 value: false 18758 #endif 18759 mirror: always 18760 18761 - name: webgl.disabled 18762 type: RelaxedAtomicBool 18763 value: false 18764 mirror: always 18765 18766 - name: webgl.enable-debug-renderer-info 18767 type: RelaxedAtomicBool 18768 value: true 18769 mirror: always 18770 18771 - name: webgl.enable-draft-extensions 18772 type: RelaxedAtomicBool 18773 value: false 18774 mirror: always 18775 18776 - name: webgl.enable-privileged-extensions 18777 type: RelaxedAtomicBool 18778 value: false 18779 mirror: always 18780 18781 - name: webgl.enable-renderer-query 18782 type: RelaxedAtomicBool 18783 value: true 18784 mirror: always 18785 18786 - name: webgl.enable-egl-image 18787 type: RelaxedAtomicBool 18788 value: true 18789 mirror: always 18790 18791 - name: webgl.enable-surface-texture 18792 type: RelaxedAtomicBool 18793 value: true 18794 mirror: always 18795 18796 - name: webgl.enable-webgl2 18797 type: RelaxedAtomicBool 18798 value: true 18799 mirror: always 18800 18801 - name: webgl.fake-verts.max 18802 type: RelaxedAtomicUint32 18803 value: 10*1000*1000 # 10M as vec4 is count*4*4 = 160MB 18804 mirror: always 18805 18806 # Only works on Mac for now. 18807 - name: webgl.forbid-hardware 18808 type: RelaxedAtomicBool 18809 value: false 18810 mirror: always 18811 18812 # Only works on Mac for now. 18813 - name: webgl.forbid-software 18814 type: RelaxedAtomicBool 18815 value: true # It's generally better to encourage fallback to e.g. canvas2d. 18816 mirror: always 18817 18818 - name: webgl.force-enabled 18819 type: RelaxedAtomicBool 18820 value: false 18821 mirror: always 18822 18823 - name: webgl.force-index-validation 18824 type: RelaxedAtomicInt32 18825 value: 0 18826 mirror: always 18827 18828 - name: webgl.gl_khr_no_error 18829 type: RelaxedAtomicBool 18830 #ifdef XP_WIN 18831 value: false 18832 #elif defined(MOZ_WIDGET_GTK) 18833 # Bug 1862039 - All versions of Mesa as of Nov 2023 have issues with 18834 # GL_CONTEXT_FLAG_NO_ERROR_BIT. We should aspire to reenable it at 18835 # some point when the bugs are fixed. 18836 # See also https://gitlab.freedesktop.org/mesa/mesa/-/issues/10062 18837 value: false 18838 #else 18839 value: true 18840 #endif 18841 mirror: always 18842 18843 - name: webgl.glsl.max_var_size_in_kibytes 18844 type: RelaxedAtomicInt32 18845 value: -1 # -1 => default for platform, 0 => no limit, >0 => max valid size 18846 mirror: always 18847 18848 - name: webgl.glsl.max_private_var_size_in_bytes 18849 type: RelaxedAtomicInt32 18850 value: -1 # -1 => default for platform, 0 => no limit, >0 => max valid size 18851 mirror: always 18852 18853 - name: webgl.lose-context-on-memory-pressure 18854 type: RelaxedAtomicBool 18855 value: false 18856 mirror: always 18857 18858 - name: webgl.max-contexts 18859 type: RelaxedAtomicUint32 18860 value: 1000 18861 mirror: always 18862 18863 - name: webgl.max-contexts-per-principal 18864 type: RelaxedAtomicUint32 18865 value: 300 18866 mirror: always 18867 18868 - name: webgl.max-size-per-texture-mib 18869 type: RelaxedAtomicUint32 18870 value: 1024 18871 mirror: always 18872 18873 - name: webgl.max-vert-ids-per-draw 18874 type: RelaxedAtomicUint32 18875 value: 30*1000*1000 18876 mirror: always 18877 18878 - name: webgl.max-warnings-per-context 18879 type: RelaxedAtomicUint32 18880 value: 32 18881 mirror: always 18882 18883 - name: webgl.min_capability_mode 18884 type: RelaxedAtomicBool 18885 value: false 18886 mirror: always 18887 18888 - name: webgl.msaa-force 18889 type: RelaxedAtomicBool 18890 value: false 18891 mirror: always 18892 18893 - name: webgl.msaa-samples 18894 type: RelaxedAtomicUint32 18895 value: 4 18896 mirror: always 18897 18898 - name: webgl.out-of-process 18899 type: RelaxedAtomicBool 18900 value: true 18901 mirror: always 18902 18903 - name: webgl.out-of-process.worker 18904 type: RelaxedAtomicBool 18905 value: true 18906 mirror: always 18907 18908 - name: webgl.out-of-process.force 18909 type: RelaxedAtomicBool 18910 value: false 18911 mirror: always 18912 18913 - name: webgl.out-of-process.shmem-size 18914 type: RelaxedAtomicUint32 18915 value: 100000 # 100KB 18916 mirror: always 18917 18918 - name: webgl.out-of-process.async-present 18919 type: RelaxedAtomicBool 18920 value: true 18921 mirror: always 18922 18923 # Forces async present to wait for a sync, even while using remote textures. 18924 - name: webgl.out-of-process.async-present.force-sync 18925 type: RelaxedAtomicBool 18926 value: false 18927 mirror: always 18928 18929 #if defined(MOZ_WIDGET_ANDROID) 18930 - name: webgl.out-of-process.enable-ahardwarebuffer 18931 type: bool 18932 value: false 18933 mirror: once 18934 #endif 18935 18936 # Override the blocklist to assume that GL is threadsafe. 18937 - name: webgl.threadsafe-gl.force-enabled 18938 type: bool 18939 value: false 18940 mirror: once 18941 18942 # Override the blocklist to assume that GL is not threadsafe. 18943 - name: webgl.threadsafe-gl.force-disabled 18944 type: bool 18945 value: false 18946 mirror: once 18947 18948 - name: webgl.use-canvas-render-thread 18949 type: bool 18950 value: true 18951 mirror: once 18952 18953 - name: webgl.override-unmasked-renderer 18954 type: DataMutexString 18955 value: "" 18956 mirror: always 18957 18958 - name: webgl.override-unmasked-vendor 18959 type: DataMutexString 18960 value: "" 18961 mirror: always 18962 18963 - name: webgl.power-preference-override 18964 type: RelaxedAtomicInt32 18965 value: 0 18966 mirror: always 18967 18968 - name: webgl.sanitize-unmasked-renderer 18969 type: RelaxedAtomicBool 18970 value: true 18971 mirror: always 18972 18973 - name: webgl.allow-immediate-queries 18974 type: RelaxedAtomicBool 18975 value: false 18976 mirror: always 18977 18978 - name: webgl.allow-fb-invalidation 18979 type: RelaxedAtomicBool 18980 value: false 18981 mirror: always 18982 18983 18984 - name: webgl.perf.max-warnings 18985 type: RelaxedAtomicInt32 18986 value: 0 18987 mirror: always 18988 18989 - name: webgl.perf.max-acceptable-fb-status-invals 18990 type: RelaxedAtomicInt32 18991 value: 0 18992 mirror: always 18993 18994 - name: webgl.perf.spew-frame-allocs 18995 type: RelaxedAtomicBool 18996 value: true 18997 mirror: always 18998 18999 #--------------------------------------------------------------------------- 19000 # Prefs starting with "widget." 19001 #--------------------------------------------------------------------------- 19002 19003 # Whether the non-native theme should always use system colors. Useful mostly 19004 # for testing forced colors mode. 19005 - name: widget.non-native-theme.always-high-contrast 19006 type: RelaxedAtomicBool 19007 value: false 19008 mirror: always 19009 19010 # The style of scrollbars to use. Here are the current options: 19011 # 19012 # 0: Default platform scrollbar style. 19013 # 1: macOS scrollbars 19014 # 2: GTK scrollbars 19015 # 3: Android scrollbars 19016 # 4: Windows 10 scrollbars 19017 # 5: Windows 11 scrollbars 19018 # 19019 # Note that switching to non-default scrollbars is experimental and other 19020 # scrollbar-related prefs may interfere with the experience. For example, 19021 # setting the GTK thumb size may have no effect when using non-GTK scrollbars 19022 # on GTK. 19023 - name: widget.non-native-theme.scrollbar.style 19024 type: uint32_t 19025 value: 0 19026 mirror: always 19027 19028 # An override that allows to override the default platform size. The size in CSS 19029 # pixels at full zoom of the minimum scrollbar width. 19030 - name: widget.non-native-theme.scrollbar.size.override 19031 type: uint32_t 19032 value: 0 19033 mirror: always 19034 19035 # Whether we should use themed values for dark scrollbars. 19036 - name: widget.non-native-theme.scrollbar.dark-themed 19037 type: RelaxedAtomicBool 19038 value: true 19039 mirror: always 19040 19041 # Whether the active thumb color should always use the themed colors, even if 19042 # dark scrollbars are in use. 19043 - name: widget.non-native-theme.scrollbar.active-always-themed 19044 type: RelaxedAtomicBool 19045 value: true 19046 mirror: always 19047 19048 # Whether we use the Windows CSS scrollbar sizes, or the scrollbar sizes 19049 # defined above. 19050 - name: widget.non-native-theme.win.scrollbar.use-system-size 19051 type: bool 19052 value: true 19053 mirror: always 19054 19055 # Whether Windows 11 scrollbars are always drawn with the thinner "overlay" 19056 # scrollbar style. 19057 - name: widget.non-native-theme.win11.scrollbar.force-overlay-style 19058 type: bool 19059 value: false 19060 mirror: always 19061 19062 # Whether Windows 11 overlay scrollbar tracks are round. 19063 - name: widget.non-native-theme.win11.scrollbar.round-track 19064 type: bool 19065 value: false 19066 mirror: always 19067 19068 # The amount of space that the thumb should fill the scrollbar, from zero to 19069 # one. 19070 - name: widget.non-native-theme.gtk.scrollbar.thumb-size 19071 type: float 19072 value: 0.75 19073 mirror: always 19074 19075 # The minimum size of the scroll thumb, in the scrollbar direction. 19076 - name: widget.non-native-theme.gtk.scrollbar.thumb-cross-size 19077 type: uint32_t 19078 value: 40 19079 mirror: always 19080 19081 # Whether the thumb should be rounded for the non-native scrollbars. 19082 - name: widget.non-native-theme.gtk.scrollbar.round-thumb 19083 type: bool 19084 value: true 19085 mirror: always 19086 19087 # Whether buttons shouldn't be suppressed for non-native scrollbars. 19088 - name: widget.non-native-theme.gtk.scrollbar.allow-buttons 19089 type: bool 19090 value: false 19091 mirror: always 19092 19093 # Whether we should use the default accent color or the theme-provided one for 19094 # content (e.g. for form controls and CSS system colors). 19095 # 19096 # Turned off on Windows, for now (we always use the default blue-ish 19097 # accent-color there). We might want to turn this on there, though it's worth 19098 # thinking on what the behavior should be for grey-ish accent colors (which are 19099 # a thing on Windows and can cause confusion with things like disabled form 19100 # controls). Maybe it's just fine. 19101 - name: widget.non-native-theme.use-theme-accent 19102 type: RelaxedAtomicBool 19103 #if defined(XP_WIN) && !defined(MOZ_THUNDERBIRD) 19104 value: false 19105 #else 19106 value: true 19107 #endif 19108 mirror: always 19109 19110 # Preference to disable dark scrollbar implementation. 19111 # This is mainly for testing because dark scrollbars have to be semi- 19112 # transparent, but many reftests expect scrollbars to look identical 19113 # among different backgrounds. 19114 # However, some users may want to disable this as well. 19115 - name: widget.disable-dark-scrollbar 19116 type: bool 19117 value: false 19118 mirror: always 19119 19120 - name: widget.disable_file_pickers 19121 type: RelaxedAtomicBool 19122 value: false 19123 mirror: always 19124 19125 # When looking for a recent window (for example, when a link is clicked 19126 # on from an external application), whether to prefer windows on the 19127 # current virtual desktop (aka workspace). For now this only applies on Windows. 19128 # See bug 1994825 19129 - name: widget.prefer_windows_on_current_virtual_desktop 19130 type: RelaxedAtomicBool 19131 value: true 19132 mirror: always 19133 19134 #ifdef XP_MACOSX 19135 19136 # Whether to shift by the menubar height on fullscreen mode. 19137 # 0: never 19138 # 1: always 19139 # 2: auto (tries to detect when it is needed) 19140 - name: widget.macos.shift-by-menubar-on-fullscreen 19141 type: RelaxedAtomicUint32 19142 value: 2 19143 mirror: always 19144 19145 - name: widget.macos.native-context-menus 19146 type: RelaxedAtomicBool 19147 value: true 19148 mirror: always 19149 19150 - name: widget.macos.sidebar-blend-mode.behind-window 19151 type: RelaxedAtomicBool 19152 value: true 19153 mirror: always 19154 19155 - name: widget.macos.titlebar-blend-mode.behind-window 19156 type: RelaxedAtomicBool 19157 value: false 19158 mirror: always 19159 19160 - name: widget.macos.window-transforms.disabled 19161 type: RelaxedAtomicBool 19162 value: false 19163 mirror: always 19164 #endif 19165 19166 # Whether native GTK global menubar support is enabled. 19167 # Disabled because there are some minor bugs and it needs deeper integration 19168 # with the front-end. 19169 - name: widget.gtk.global-menu.enabled 19170 type: RelaxedAtomicBool 19171 value: false 19172 mirror: always 19173 19174 # Whether GTK global menubar support is enabled using wayland's experimental 19175 # dbus_annotation protocol: 19176 # https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/52 19177 # Disabled until it has a final shape and it is available in compositors. 19178 - name: widget.gtk.global-menu.wayland.enabled 19179 type: RelaxedAtomicBool 19180 value: false 19181 mirror: always 19182 19183 # Whether native GTK context menus are enabled. 19184 # Disabled because at the very least there's missing custom icon support. 19185 - name: widget.gtk.native-context-menus 19186 type: RelaxedAtomicBool 19187 value: false 19188 mirror: always 19189 19190 # Whether we use overlay scrollbars on GTK. 19191 - name: widget.gtk.overlay-scrollbars.enabled 19192 type: RelaxedAtomicBool 19193 value: true 19194 mirror: always 19195 19196 # Whether we hide the pointer while typing on Linux 19197 - name: widget.gtk.hide-pointer-while-typing.enabled 19198 type: RelaxedAtomicBool 19199 value: true 19200 mirror: always 19201 19202 # Whether we honor the scrollbar colors from the gtk theme. 19203 - name: widget.gtk.theme-scrollbar-colors.enabled 19204 type: bool 19205 value: true 19206 mirror: always 19207 19208 # Whether libadwaita colors are used rather than the default ones. 19209 - name: widget.gtk.libadwaita-colors.enabled 19210 type: bool 19211 value: true 19212 mirror: always 19213 19214 # Whether to use gtk titlebar actions for middle click instead of Firefox 19215 # build in one 19216 - name: widget.gtk.titlebar-action-middle-click-enabled 19217 type: bool 19218 value: false 19219 mirror: always 19220 19221 # Whether to ignore middle click events on widget level. 19222 - name: widget.gtk.middle-click-enabled 19223 type: bool 19224 value: true 19225 mirror: always 19226 19227 # Whether we enable rounded bottom corners on GTK by default. 19228 # 19229 # The implementation is a bit hacky (see details in bug 1850827) so behind a 19230 # pref for emergency purposes. 19231 - name: widget.gtk.rounded-bottom-corners.enabled 19232 type: bool 19233 value: false 19234 mirror: always 19235 rust: true 19236 19237 # Whether selection colors for the non-system theme get passed from the system 19238 # GTK theme. 19239 - name: widget.gtk.alt-theme.selection 19240 type: bool 19241 value: true 19242 mirror: always 19243 19244 # Whether form control accent colors for the non-system theme get passed from 19245 # the system GTK theme. 19246 - name: widget.gtk.alt-theme.accent 19247 type: bool 19248 value: true 19249 mirror: always 19250 19251 # Whether the scrollbar thumb active color from the non-system theme gets 19252 # passed from the system GTK theme. 19253 - name: widget.gtk.alt-theme.scrollbar_active 19254 type: bool 19255 value: true 19256 mirror: always 19257 19258 # Whether we should try to grab the pointer on popups. 19259 # 0: Never 19260 # 1: Always 19261 # 2: Auto (depending on the system) 19262 - name: widget.gtk.grab-pointer 19263 type: int32_t 19264 value: 2 19265 mirror: always 19266 19267 # Whether we should try ignore bogus leave-notify events from the window 19268 # manager. 19269 # 0: Never 19270 # 1: Always 19271 # 2: Auto (depending on the system) 19272 - name: widget.gtk.ignore-bogus-leave-notify 19273 type: int32_t 19274 value: 2 19275 mirror: always 19276 19277 # Whether to use gtk legacy cursor API. 19278 - name: widget.gtk.legacy-cursors.enabled 19279 type: bool 19280 value: false 19281 mirror: always 19282 19283 # Gtk clipboard timeout 19284 - name: widget.gtk.clipboard_timeout_ms 19285 type: RelaxedAtomicUint32 19286 value: 1000 19287 mirror: always 19288 19289 # Whether to use gtk high contrast themes to disable content styling like on 19290 # windows high contrast mode. 19291 - name: widget.content.gtk-high-contrast.enabled 19292 type: bool 19293 value: true 19294 mirror: always 19295 19296 #ifdef MOZ_WAYLAND 19297 - name: widget.wayland.fractional-scale.enabled 19298 type: bool 19299 value: true 19300 mirror: always 19301 19302 # Use opaque region for MozContainer wl_surface 19303 - name: widget.wayland.opaque-region.enabled 19304 type: bool 19305 value: true 19306 mirror: once 19307 19308 # Use frame callback based vsync 19309 - name: widget.wayland.vsync.enabled 19310 type: bool 19311 value: true 19312 mirror: once 19313 19314 # Whether experimental PiP support for Wayland is enabled via the xx_pip_v1 19315 # protocol. 19316 - name: widget.wayland.experimental.pip.enabled 19317 type: bool 19318 value: true 19319 mirror: once 19320 19321 # Whether to keep firing vsync at layout.throttled_frame_rate after we've been 19322 # occluded. 19323 - name: widget.wayland.vsync.keep-firing-at-idle 19324 type: bool 19325 value: false 19326 mirror: always 19327 #endif 19328 19329 #ifdef MOZ_WIDGET_GTK 19330 # Whether to use DMABuf backend. 19331 - name: widget.dmabuf.enabled 19332 type: bool 19333 value: true 19334 mirror: once 19335 19336 # Whether to override the DMABuf blocklist. 19337 - name: widget.dmabuf.force-enabled 19338 type: bool 19339 value: false 19340 mirror: once 19341 19342 #ifdef NIGHTLY_BUILD 19343 # Keep those pref hidden on non-nightly builds to avoid people accidentally 19344 # turning it on. 19345 19346 # Override FEATURE_DMABUF_SURFACE_EXPORT for testing 19347 - name: widget.dmabuf-export.force-enabled 19348 type: bool 19349 value: false 19350 mirror: once 19351 19352 # Get DMABuf format feedback from compositor. 19353 # For testing only 19354 - name: widget.dmabuf-feedback.enabled 19355 type: bool 19356 value: false 19357 mirror: once 19358 #endif 19359 19360 # Use DMABuf backend for WebGL. 19361 - name: widget.dmabuf-webgl.enabled 19362 type: bool 19363 value: true 19364 mirror: once 19365 19366 # Use gdk_window_move_to_rect to move Wayland popups when available. 19367 - name: widget.wayland.use-move-to-rect 19368 type: bool 19369 value: true 19370 mirror: once 19371 19372 # The time we should spend on a DBUS call to the FileManager1 interface before 19373 # giving up and trying an alternative method. 19374 # 19375 # -1 for the default system timeout, INT_MAX for "infinite time". 19376 # 19377 # This happens right now on the main thread so 1 second should be enough, we 19378 # should consider moving it to a background task and just use the default 19379 # timeout. 19380 - name: widget.gtk.file-manager-show-items-timeout-ms 19381 type: int32_t 19382 value: 1000 19383 mirror: always 19384 19385 # The timeout we should spend on a DBUS call to the Settings proxy before 19386 # giving up. 19387 # 19388 # -1 for the default system timeout, INT_MAX for "infinite time". 19389 # 19390 # This runs just once, but during startup, so make sure it doesn't take too 19391 # long. Three seconds should be way more than enough, and if we don't get the 19392 # reply on time then the only potential issue is that we use a light instead of 19393 # dark interface or vice versa. 19394 - name: widget.gtk.settings-portal-timeout-ms 19395 type: int32_t 19396 value: 3000 19397 mirror: always 19398 19399 # Whether to use gtk portal for the file picker. 19400 # - 0: never 19401 # - 1: always 19402 # - 2: auto (true for flatpak or GTK_USE_PORTAL=1, false otherwise) 19403 - name: widget.use-xdg-desktop-portal.file-picker 19404 type: int32_t 19405 value: 2 19406 mirror: always 19407 19408 # Whether to use gtk portal for the mime handler. 19409 # - 0: never 19410 # - 1: always 19411 # - 2: auto (for now only true for flatpak, see bug 1516290) 19412 - name: widget.use-xdg-desktop-portal.mime-handler 19413 type: int32_t 19414 value: 2 19415 mirror: always 19416 19417 # Whether to use XDG portal for native messaging. 19418 # https://github.com/flatpak/xdg-desktop-portal/issues/655 19419 # - 0: never 19420 # - 1: always 19421 # - 2: auto (true for snap and flatpak or GTK_USE_PORTAL=1, false otherwise) 19422 - name: widget.use-xdg-desktop-portal.native-messaging 19423 type: int32_t 19424 value: 0 19425 mirror: always 19426 19427 # Whether to try to use XDG portal for settings / look-and-feel information. 19428 # https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.Settings 19429 # - 0: never 19430 # - 1: always 19431 # - 2: auto 19432 - name: widget.use-xdg-desktop-portal.settings 19433 type: int32_t 19434 value: 2 19435 mirror: always 19436 19437 # Whether to use XDG portal for geolocation. 19438 # https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.Location 19439 # - 0: never 19440 # - 1: always 19441 # - 2: auto 19442 - name: widget.use-xdg-desktop-portal.location 19443 type: int32_t 19444 value: 2 19445 mirror: always 19446 # Whether to use XDG portal for opening to a file. 19447 # https://flatpak.github.io/xdg-desktop-portal/#gdbus-org.freedesktop.portal.OpenURI 19448 # - 0: never 19449 # - 1: always 19450 # - 2: auto (true for flatpak or GTK_USE_PORTAL=1, false otherwise) 19451 - name: widget.use-xdg-desktop-portal.open-uri 19452 type: int32_t 19453 value: 2 19454 mirror: always 19455 #endif 19456 19457 #ifdef XP_WIN 19458 # WindowsUIUtils::Share to wait for user action on Windows share dialog 19459 # `true` means the promise resolves when user completes or cancels the share 19460 # action. This can be unsafe since selecting copy action fires no DataPackage 19461 # event as of 21H1. 19462 # `false` means the promise resolves when the share data is passed to 19463 # DataPackage. 19464 # This affects the behavior of `navigator.share()`. 19465 - name: widget.windows.share.wait_action.enabled 19466 type: bool 19467 value: false 19468 mirror: always 19469 19470 - name: widget.windows.window_occlusion_tracking.enabled 19471 type: bool 19472 value: true 19473 mirror: always 19474 19475 # Whether overlay scrollbars respect the system settings. 19476 # Note that these can be overridden by the ui.useOverlayScrollbars pref. 19477 - name: widget.windows.overlay-scrollbars.enabled 19478 type: bool 19479 value: true 19480 mirror: always 19481 19482 # Whether we allow accessing the UWP system color pallete. 19483 - name: widget.windows.uwp-system-colors.enabled 19484 type: bool 19485 value: true 19486 mirror: always 19487 19488 # Whether PiP windows have window decorations (borders and shadows). 19489 # Off for now while we fix bug 1934760 and related issues. 19490 - name: widget.windows.pip-decorations.enabled 19491 type: bool 19492 value: false 19493 mirror: always 19494 19495 # Whether we use the accent color for highlight as some other UWP apps do. 19496 # 19497 # false for now since it can cause some contrast-with-background issues 19498 # specially with grey accents, see bug 1776588. 19499 - name: widget.windows.uwp-system-colors.highlight-accent 19500 type: bool 19501 value: false 19502 mirror: always 19503 19504 - name: widget.windows.window_occlusion_tracking_display_state.enabled 19505 type: bool 19506 value: false 19507 mirror: always 19508 19509 - name: widget.windows.window_occlusion_tracking_session_lock.enabled 19510 type: bool 19511 value: true 19512 mirror: always 19513 19514 # tiltX and tiltY are supported only by expensive pen tablet devices. For 19515 # testing the feature, enabling this pref overrides tiltX and tiltY values to 19516 # non-zero values. 19517 - name: widget.windows.pen.tilt_override.enabled 19518 type: bool 19519 value: false 19520 mirror: always 19521 19522 # twist is supported only by expensive pen tablet devices. For testing the 19523 # feature, enabling this overrides twist value to non-zero values. 19524 - name: widget.windows.pen.twist_override.enabled 19525 type: bool 19526 value: false 19527 mirror: always 19528 19529 # How frequently updates the value of tiltX, tiltY and/or twist value of pen 19530 # input which can be enabled by the above prefs. 19531 - name: widget.windows.pen.override.number_of_preserver_value 19532 type: RelaxedAtomicUint32 19533 value: 75 19534 mirror: always 19535 19536 # Whether this device is capable of entering tablet mode. (Win11+ only.) 19537 # 19538 # Valid values: 19539 # * -1: assume this device is tablet-mode-incapable 19540 # * 0: rely on heuristics 19541 # * 1: assume this device is tablet-mode-capable 19542 - name: widget.windows.tablet_detection_override 19543 type: RelaxedAtomicInt32 19544 value: 0 19545 mirror: always 19546 19547 # Whether to give explorer.exe a delayed nudge to recalculate the fullscreenness 19548 # of a window after unminimizing it. 19549 - name: widget.windows.fullscreen_remind_taskbar 19550 type: RelaxedAtomicBool 19551 value: true 19552 mirror: always 19553 19554 # Mechanism to use to mark fullscreen windows. 19555 # 19556 # This value can be fixed once we settle on a version that works universally. 19557 # 19558 # * 0: Default. Use Gecko-internal heuristics. May vary between versions. 19559 # * 1: Use only "NonRudeHWND". Historical default on Win7. 19560 # * 2: Use only MarkFullscreenWindow. Historical default for Win10+. 19561 # * 3: Use both. (Never a default; not well-tested.) 19562 - name: widget.windows.fullscreen_marking_method 19563 type: RelaxedAtomicUint32 19564 value: 2 19565 mirror: always 19566 19567 # Whether to open the Windows file and folder pickers "remotely" (in a utility 19568 # process) or "locally" (in the main process). 19569 # 19570 # Valid values: 19571 # * 0: auto (possibly release-channel-dependent) 19572 # * 1: remotely, falling back to locally 19573 # * 2: remotely, no fallback 19574 # * 3: remotely, falling back to locally except on crashes 19575 # * -1: locally, no fallback 19576 - name: widget.windows.utility_process_file_picker 19577 type: RelaxedAtomicInt32 19578 value: 0 19579 mirror: always 19580 19581 # Whether to follow `.lnk` (etc.) shortcuts in the Windows file-open dialog. 19582 # 19583 # Valid values: 19584 # * 0: never 19585 # * 1: always 19586 # * 2: auto 19587 - name: widget.windows.follow_shortcuts_on_file_open 19588 type: RelaxedAtomicInt32 19589 value: 1 19590 mirror: always 19591 19592 # The number of messages of each type to keep for display in 19593 # about:windows-messages 19594 - name: widget.windows.messages_to_log 19595 type: RelaxedAtomicUint32 19596 value: 6 19597 mirror: always 19598 19599 # Whether to flush the Ole clipboard synchronously. 19600 # Possible values are: 19601 # * 0: never 19602 # * 1: always 19603 # * 2 (or others): when needed 19604 - name: widget.windows.sync-clipboard-flush 19605 type: uint32_t 19606 value: 2 19607 mirror: always 19608 19609 # Whether to allow dragging and dropping tabs onto another application. This is 19610 # disallowed by default because most applications that say they can handle 19611 # Firefox tabs are lying (bug 1598915). 19612 - name: widget.windows.allow-external-tab-drag 19613 type: bool 19614 value: false 19615 mirror: always 19616 19617 # Whether to apply a hack (adjusting the window height by -1px and back again) 19618 # upon first entering fullscreen intended to work around a bug exhibited under 19619 # on some Windows 11 machines under some configurations. (See bug 1763981.) 19620 # 19621 # Semantics: 19622 # * 0: never 19623 # * 1: always 19624 # * 2: auto 19625 - name: widget.windows.apply-dwm-resize-hack 19626 type: RelaxedAtomicInt32 19627 value: 2 19628 mirror: always 19629 19630 # Whether we use the mica backdrop for top level windows. Off by default for 19631 # now. 19632 - name: widget.windows.mica 19633 type: bool 19634 value: false 19635 mirror: always 19636 19637 # Whether we use the mica backdrop for popups when available. 19638 # * 0: never 19639 # * 1: always 19640 # * 2 or others: auto 19641 - name: widget.windows.mica.popups 19642 type: RelaxedAtomicInt32 19643 value: 2 19644 mirror: always 19645 19646 # What mica backdrop do we use for toplevels. See [1] for the meaning. 19647 # 19648 # * 0 or other values: auto 19649 # * 1: MAINWINDOW 19650 # * 2: TRANSIENTWINDOW 19651 # * 3: TABBEDWINDOW 19652 # 19653 # [1]: https://learn.microsoft.com/en-us/windows/win32/api/dwmapi/ne-dwmapi-dwm_systembackdrop_type#constants 19654 - name: widget.windows.mica.toplevel-backdrop 19655 type: RelaxedAtomicInt32 19656 value: 0 19657 mirror: always 19658 19659 # Whether to use the Windows App SDK to disable the minimize/maximize/close buttons. 19660 # This should only be disabled if crashes are happening, because it will make 19661 # double minimize/maximize/close buttons draw. Note that this preference is disregarded 19662 # when running on Windows 11 H2 or earlier (which includes Windows 10), as we never use 19663 # the Windows App SDK on those versions. 19664 - name: widget.windows.windowsappsdk.enabled 19665 type: bool 19666 value: true 19667 mirror: always 19668 #endif 19669 19670 # Whether to disable SwipeTracker (e.g. swipe-to-nav). 19671 - name: widget.disable-swipe-tracker 19672 type: bool 19673 value: false 19674 mirror: always 19675 19676 # Various metrics to control SwipeTracker. 19677 - name: widget.swipe.velocity-twitch-tolerance 19678 type: float 19679 value: 0.0000001f 19680 mirror: always 19681 19682 - name: widget.swipe.success-velocity-contribution 19683 type: float 19684 value: 0.05f 19685 mirror: always 19686 19687 # When using pixel deltas for pan input, how many pixels do we consider a whole 19688 # swipe? 19689 # 19690 # The values for this pref are derived from trial and error in an effort to 19691 # match the existing behavior on the respective platforms. 19692 - name: widget.swipe.pixel-size 19693 type: float 19694 #if defined(XP_MACOSX) 19695 value: 550.0f 19696 #else 19697 value: 1100.0f 19698 #endif 19699 mirror: always 19700 19701 # When using page deltas for pan input, how many pages do we consider a whole 19702 # swipe navigation? 19703 # 19704 # This is only relevant for GTK which is as of right now the only platform 19705 # which supports page-based pan gestures. 19706 - name: widget.swipe.page-size 19707 type: float 19708 value: 40.0f 19709 mirror: always 19710 19711 - name: widget.transparent-windows 19712 type: bool 19713 value: true 19714 mirror: once 19715 19716 # Whether the clipboard cached are used while getting system clipboard data. 19717 - name: widget.clipboard.use-cached-data.enabled 19718 type: bool 19719 #if defined(XP_MACOSX) 19720 value: true 19721 #else 19722 value: false 19723 #endif 19724 mirror: always 19725 19726 #ifdef XP_MACOSX 19727 # The folllowing widget.macos.automatic.* prefs are whether Gecko turns on 19728 # text replacement features. 19729 - name: widget.macos.automatic.text_replacement 19730 type: bool 19731 value: true 19732 mirror: always 19733 19734 # Whether the smart dash feature is enabled 19735 - name: widget.macos.automatic.dash_substitution 19736 type: bool 19737 value: false 19738 mirror: always 19739 19740 # Whether the smart quote feature is enabled 19741 - name: widget.macos.automatic.quote_substitution 19742 type: bool 19743 value: false 19744 mirror: always 19745 19746 # fetching length when processing text substitution. 19747 - name: widget.macos.automatic.text_substitution_fetch_length 19748 type: uint32_t 19749 value: 20 19750 mirror: always 19751 #endif 19752 19753 #ifdef ANDROID 19754 # Whether to render in to a child SurfaceControl rather than directly into the SurfaceView 19755 - name: widget.android.use-surfacecontrol 19756 type: bool 19757 value: false 19758 mirror: once 19759 19760 # A threshold value for double click by mouse. 19761 - name: widget.double-click.threshold 19762 type: RelaxedAtomicInt32 19763 value: 4 19764 mirror: always 19765 19766 # A timeout value for double click by mouse. 19767 - name: widget.double-click.timeout 19768 type: RelaxedAtomicInt32 19769 value: 500 19770 mirror: always 19771 19772 # A min time value for double click by mouse. 19773 - name: widget.double-click.min 19774 type: RelaxedAtomicInt32 19775 value: 40 19776 mirror: always 19777 #endif 19778 19779 #--------------------------------------------------------------------------- 19780 # Prefs starting with "zoom." 19781 #--------------------------------------------------------------------------- 19782 19783 - name: zoom.maxPercent 19784 type: uint32_t 19785 #ifdef ANDROID 19786 value: 400 19787 #else 19788 value: 500 19789 #endif 19790 mirror: always 19791 19792 - name: zoom.minPercent 19793 type: uint32_t 19794 #ifdef ANDROID 19795 value: 20 19796 #else 19797 value: 30 19798 #endif 19799 mirror: always 19800 19801 #--------------------------------------------------------------------------- 19802 # End of prefs 19803 #---------------------------------------------------------------------------