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# 40# - `name` is the name of the pref, without double-quotes, as it appears 41# in about:config. It is used in most libpref API functions (from both C++ 42# and JS code). 43# 44# - `type` is one of `bool`, `int32_t`, `uint32_t`, `float`, an atomic version 45# of one of those, or `String`. Note that float prefs are stored internally 46# as strings. The C++ preprocessor doesn't like template syntax in a macro 47# argument, so use the typedefs defined in StaticPrefsBase.h; for example, 48# use `RelaxedAtomicBool` instead of `Atomic<bool, Relaxed>`. 49# 50# - `value` is the default value. Its type should be appropriate for 51# <cpp-type>, otherwise the generated code will fail to compile. A complex 52# C++ numeric expressions like `60 * 60` (which the YAML parser cannot treat 53# as an integer or float) is treated as a string and passed through without 54# change, which is useful. 55# 56# - `mirror` indicates how the pref value is mirrored into a C++ variable. 57# 58# * `never`: There is no C++ mirror variable. The pref value can only be 59# accessed via the standard libpref API functions. 60# 61# * `once`: The pref value is mirrored into a variable at startup; the 62# mirror variable is left unchanged after that. (The exact point at which 63# all `once` mirror variables are set is when the first `once` mirror 64# variable is accessed, via its getter function.) This is mostly useful for 65# graphics prefs where we often don't want a new pref value to apply until 66# restart. Otherwise, this update policy is best avoided because its 67# behaviour can cause confusion and bugs. 68# 69# * `always`: The mirror variable is always kept in sync with the pref value. 70# This is the most common choice. 71# 72# When a mirror variable is present, a getter will be created that can access 73# it. Using the getter function to read the pref's value has the two 74# following advantages over the normal API functions. 75# 76# * A direct variable access is faster than a hash table lookup. 77# 78# * A mirror variable can be accessed off the main thread. If a pref *is* 79# accessed off the main thread, it should have an atomic type. Assertions 80# enforce this. 81# 82# Note that Rust code must access the mirror variable directly, rather than 83# via the getter function. 84# 85# - `do_not_use_directly` indicates if `_DoNotUseDirectly` should be appended to 86# the name of the getter function. This is simply a naming convention 87# indicating that there is some other wrapper getter function that should be 88# used in preference to the normal static pref getter. Defaults to `false` if 89# not present. Cannot be used with a `never` mirror value, because there is 90# no getter function in that case. 91# 92# - `include` names a header file that must be included for the pref value to 93# compile correctly, e.g. because it refers to a code constant. System 94# headers should be surrounded with angle brackets, e.g. `<cmath>`. 95# 96# - `rust` indicates if the mirror variable is used by Rust code. If so, it 97# will be usable via the `static_prefs::pref!` macro, e.g. 98# `static_prefs::pref!("layout.css.font-display.enabled")`. 99# 100# The getter function's base name is the same as the pref's name, but with 101# '.' or '-' chars converted to '_', to make a valid identifier. For example, 102# the getter for `foo.bar_baz` is `foo_bar_baz()`. This is ugly but clear, 103# and you can search for both the pref name and the getter using the regexp 104# /foo.bar.baz/. Suffixes are added as follows: 105# 106# - If the `mirror` value is `once`, `_AtStartup` is appended, to indicate the 107# value was obtained at startup. 108# 109# - If the `do_not_use_directly` value is true, `_DoNotUseDirectly` is 110# appended. 111# 112# Preprocessor 113# ------------ 114# Note finally that this file is preprocessed by preprocessor.py, not the C++ 115# preprocessor. As a result, the following things may be surprising. 116# 117# - YAML comments start with a '#', so putting a comment on the same line as a 118# preprocessor directive is dubious. E.g. avoid lines like `#define X 3 # 119# three` because the ` # three` will be part of `X`. 120# 121# - '@' use is required for substitutions to occur. E.g. with `#define FOO 1`, 122# `FOO` won't be replaced with `1` unless it has '@' chars around it. 123# 124# - Spaces aren't permitted between the leading '#' and the name of a 125# directive, e.g. `#ifdef XYZ` works but `# ifdef XYZ` does not. 126# 127# Please indent all prefs defined within #ifdef/#ifndef conditions. This 128# improves readability, particular for conditional blocks that exceed a single 129# screen. But note that the leading '-' in a definition must remain in the 130# first column for it to be valid YAML. 131 132#ifdef RELEASE_OR_BETA 133#define IS_NOT_RELEASE_OR_BETA false 134#else 135#define IS_NOT_RELEASE_OR_BETA true 136#endif 137 138#ifdef NIGHTLY_BUILD 139#define IS_NIGHTLY_BUILD true 140#define IS_NOT_NIGHTLY_BUILD false 141#else 142#define IS_NIGHTLY_BUILD false 143#define IS_NOT_NIGHTLY_BUILD true 144#endif 145 146#if defined(NIGHTLY_BUILD) || defined(MOZ_DEV_EDITION) 147#define IS_NIGHTLY_OR_DEV_EDITION true 148#else 149#define IS_NIGHTLY_OR_DEV_EDITION false 150#endif 151 152#ifdef MOZILLA_OFFICIAL 153#define IS_NOT_MOZILLA_OFFICIAL false 154#else 155#define IS_NOT_MOZILLA_OFFICIAL true 156#endif 157 158#ifdef EARLY_BETA_OR_EARLIER 159#define IS_EARLY_BETA_OR_EARLIER true 160#define IS_NOT_EARLY_BETA_OR_EARLIER false 161#else 162#define IS_EARLY_BETA_OR_EARLIER false 163#define IS_NOT_EARLY_BETA_OR_EARLIER true 164#endif 165 166#ifdef ANDROID 167#define IS_ANDROID true 168#define IS_NOT_ANDROID false 169#else 170#define IS_ANDROID false 171#define IS_NOT_ANDROID true 172#endif 173 174#--------------------------------------------------------------------------- 175# Prefs starting with "accessibility." 176#--------------------------------------------------------------------------- 177 178- name: accessibility.accesskeycausesactivation 179 type: bool 180 value: true 181 mirror: always 182 183- name: accessibility.monoaudio.enable 184 type: RelaxedAtomicBool 185 value: false 186 mirror: always 187 188- name: accessibility.browsewithcaret 189 type: RelaxedAtomicBool 190 value: false 191 mirror: always 192 193- name: accessibility.AOM.enabled 194 type: bool 195 value: false 196 mirror: always 197 198- name: accessibility.ARIAReflection.enabled 199 type: bool 200 value: false 201 mirror: always 202 203# Whether form controls and images should be focusable with mouse, in content 204# documents. 205# 206# This matches historical macOS / Safari behavior. 207# 208# * 0: never 209# * 1: always 210# * 2: on content documents 211- name: accessibility.mouse_focuses_formcontrol 212 type: int32_t 213#ifdef XP_MACOSX 214 value: 2 215#else 216 value: 1 217#endif 218 mirror: always 219 220# Whether to cache the entire accessibility trees of all content processes in 221# the parent process. 222- name: accessibility.cache.enabled 223 type: bool 224 value: false 225 mirror: once 226 227#--------------------------------------------------------------------------- 228# Prefs starting with "alerts." 229#--------------------------------------------------------------------------- 230 231# Whether to use platform-specific backends for showing desktop notifications. 232# If no such backend is available, or if the pref is false, then XUL 233# notifications are used. 234- name: alerts.useSystemBackend 235 type: bool 236#ifdef XP_WIN 237 # Linux and macOS turn on system level notification as default, but Windows is 238 # disabled due to instability (dependencies of bug 1497425). 239 value: false 240#else 241 value: true 242#endif 243 mirror: always 244 245 246#ifdef ANDROID 247 #--------------------------------------------------------------------------- 248 # Prefs starting with "android." 249 #--------------------------------------------------------------------------- 250 251 # On Android, we want an opaque background to be visible under the page, 252 # so layout should not force a default background. 253- name: android.widget_paints_background 254 type: RelaxedAtomicBool 255 value: true 256 mirror: always 257 258- name: android.touch_resampling.enabled 259 type: RelaxedAtomicBool 260 value: true 261 mirror: always 262 263#endif 264 265#--------------------------------------------------------------------------- 266# Prefs starting with "apz." 267# The apz prefs are explained in AsyncPanZoomController.cpp 268#--------------------------------------------------------------------------- 269 270# amount we zoom in for a double tap gesture if we couldn't find any content 271# based rect to zoom to 272- name: apz.doubletapzoom.defaultzoomin 273 type: AtomicFloat 274 value: 1.2f 275 mirror: always 276 277- name: apz.scrollbarbuttonrepeat.enabled 278 type: RelaxedAtomicBool 279 value: true 280 mirror: always 281 282- name: apz.wr.activate_all_scroll_frames 283 type: RelaxedAtomicBool 284 value: false 285 mirror: always 286 287- name: apz.wr.activate_all_scroll_frames_when_fission 288 type: RelaxedAtomicBool 289 value: true 290 mirror: always 291 292- name: apz.nonwr.activate_all_scroll_frames 293 type: RelaxedAtomicBool 294 value: false 295 mirror: always 296 297- name: apz.nonwr.activate_all_scroll_frames_when_fission 298 type: RelaxedAtomicBool 299 value: false 300 mirror: always 301 302- name: apz.prefer_jank_minimal_displayports 303 type: RelaxedAtomicBool 304 value: true 305 mirror: always 306 307- name: apz.allow_double_tap_zooming 308 type: RelaxedAtomicBool 309 value: true 310 mirror: always 311 312- name: apz.mac.enable_double_tap_zoom_touchpad_gesture 313 type: RelaxedAtomicBool 314 value: true 315 mirror: always 316 317- name: apz.allow_immediate_handoff 318 type: RelaxedAtomicBool 319 value: false 320 mirror: always 321 322- name: apz.allow_zooming 323 type: RelaxedAtomicBool 324 value: true 325 mirror: always 326 327- name: apz.allow_zooming_out 328 type: RelaxedAtomicBool 329 value: false 330 mirror: always 331 332- name: apz.android.chrome_fling_physics.friction 333 type: AtomicFloat 334 value: 0.015f 335 mirror: always 336 337- name: apz.android.chrome_fling_physics.inflexion 338 type: AtomicFloat 339 value: 0.35f 340 mirror: always 341 342- name: apz.android.chrome_fling_physics.stop_threshold 343 type: AtomicFloat 344 value: 0.1f 345 mirror: always 346 347- name: apz.autoscroll.enabled 348 type: RelaxedAtomicBool 349 value: true 350 mirror: always 351 352- name: apz.axis_lock.breakout_angle 353 type: AtomicFloat 354 value: float(M_PI / 8.0) # 22.5 degrees 355 mirror: always 356 include: <cmath> 357 358- name: apz.axis_lock.breakout_threshold 359 type: AtomicFloat 360 value: 1.0f / 32.0f 361 mirror: always 362 363- name: apz.axis_lock.direct_pan_angle 364 type: AtomicFloat 365 value: float(M_PI / 3.0) # 60 degrees 366 mirror: always 367 include: <cmath> 368 369- name: apz.axis_lock.lock_angle 370 type: AtomicFloat 371 value: float(M_PI / 6.0) # 30 degrees 372 mirror: always 373 include: <cmath> 374 375# Whether to lock touch scrolling to one axis at a time. 376# 0 = FREE (No locking at all) 377# 1 = STANDARD (Once locked, remain locked until scrolling ends) 378# 2 = STICKY (Allow lock to be broken, with hysteresis) 379- name: apz.axis_lock.mode 380 type: RelaxedAtomicInt32 381 value: 2 382 mirror: always 383 384- name: apz.content_response_timeout 385 type: RelaxedAtomicInt32 386 value: 400 387 mirror: always 388 389- name: apz.danger_zone_x 390 type: RelaxedAtomicInt32 391 value: 50 392 mirror: always 393 394- name: apz.danger_zone_y 395 type: RelaxedAtomicInt32 396 value: 100 397 mirror: always 398 399- name: apz.disable_for_scroll_linked_effects 400 type: RelaxedAtomicBool 401 value: false 402 mirror: always 403 404- name: apz.displayport_expiry_ms 405 type: RelaxedAtomicUint32 406 value: 15000 407 mirror: always 408 409- name: apz.drag.enabled 410 type: RelaxedAtomicBool 411 value: true 412 mirror: always 413 414- name: apz.drag.initial.enabled 415 type: RelaxedAtomicBool 416 value: true 417 mirror: always 418 419- name: apz.drag.touch.enabled 420 type: RelaxedAtomicBool 421 value: true 422 mirror: always 423 424- name: apz.enlarge_displayport_when_clipped 425 type: RelaxedAtomicBool 426 value: @IS_ANDROID@ 427 mirror: always 428 429# Test only. 430- name: apz.fixed-margin-override.enabled 431 type: RelaxedAtomicBool 432 value: false 433 mirror: always 434 435# Test only. 436- name: apz.fixed-margin-override.bottom 437 type: RelaxedAtomicInt32 438 value: 0 439 mirror: always 440 441# Test only. 442- name: apz.fixed-margin-override.top 443 type: RelaxedAtomicInt32 444 value: 0 445 mirror: always 446 447- name: apz.fling_accel_base_mult 448 type: AtomicFloat 449 value: 1.0f 450 mirror: always 451 452- name: apz.fling_accel_supplemental_mult 453 type: AtomicFloat 454 value: 1.0f 455 mirror: always 456 457- name: apz.fling_accel_min_fling_velocity 458 type: AtomicFloat 459 value: 1.5f 460 mirror: always 461 462- name: apz.fling_accel_min_pan_velocity 463 type: AtomicFloat 464 value: 0.8f 465 mirror: always 466 467- name: apz.fling_accel_max_pause_interval_ms 468 type: RelaxedAtomicInt32 469 value: 50 470 mirror: always 471 472- name: apz.fling_curve_function_x1 473 type: float 474 value: 0.0f 475 mirror: once 476 477- name: apz.fling_curve_function_x2 478 type: float 479 value: 1.0f 480 mirror: once 481 482- name: apz.fling_curve_function_y1 483 type: float 484 value: 0.0f 485 mirror: once 486 487- name: apz.fling_curve_function_y2 488 type: float 489 value: 1.0f 490 mirror: once 491 492- name: apz.fling_curve_threshold_inches_per_ms 493 type: AtomicFloat 494 value: -1.0f 495 mirror: always 496 497- name: apz.fling_friction 498 type: AtomicFloat 499 value: 0.002f 500 mirror: always 501 502- name: apz.fling_min_velocity_threshold 503 type: AtomicFloat 504 value: 0.5f 505 mirror: always 506 507- name: apz.fling_stop_on_tap_threshold 508 type: AtomicFloat 509 value: 0.05f 510 mirror: always 511 512- name: apz.fling_stopped_threshold 513 type: AtomicFloat 514 value: 0.01f 515 mirror: always 516 517- name: apz.touch_acceleration_factor_x 518 type: float 519 value: 1.0f 520 mirror: always 521 522- name: apz.touch_acceleration_factor_y 523 type: float 524 value: 1.0f 525 mirror: always 526 527# new scrollbar code for desktop zooming 528- name: apz.force_disable_desktop_zooming_scrollbars 529 type: RelaxedAtomicBool 530 value: false 531 mirror: always 532 533#ifdef MOZ_WIDGET_GTK 534- name: apz.gtk.kinetic_scroll.enabled 535 type: RelaxedAtomicBool 536 value: true 537 mirror: always 538 539- name: apz.gtk.touchpad_pinch.enabled 540 type: RelaxedAtomicBool 541 value: true 542 mirror: always 543 544- name: apz.gtk.touchpad_pinch.three_fingers.enabled 545 type: RelaxedAtomicBool 546 value: false 547 mirror: always 548#endif 549 550- name: apz.keyboard.enabled 551 type: bool 552 value: @IS_NOT_ANDROID@ 553 mirror: once 554 555- name: apz.keyboard.passive-listeners 556 type: RelaxedAtomicBool 557 value: @IS_NOT_ANDROID@ 558 mirror: always 559 560- name: apz.max_tap_time 561 type: RelaxedAtomicInt32 562 value: 300 563 mirror: always 564 565- name: apz.max_velocity_inches_per_ms 566 type: AtomicFloat 567 value: -1.0f 568 mirror: always 569 570- name: apz.max_velocity_queue_size 571 type: uint32_t 572 value: 5 573 mirror: once 574 575- name: apz.min_skate_speed 576 type: AtomicFloat 577 value: 1.0f 578 mirror: always 579 580- name: apz.minimap.enabled 581 type: RelaxedAtomicBool 582 value: false 583 mirror: always 584 585- name: apz.mvm.force-enabled 586 type: RelaxedAtomicBool 587 value: true 588 mirror: always 589 590- name: apz.one_touch_pinch.enabled 591 type: RelaxedAtomicBool 592 value: @IS_ANDROID@ 593 mirror: always 594 595- name: apz.overscroll.enabled 596 type: RelaxedAtomicBool 597#if defined(XP_MACOSX) 598 value: true 599#else 600 value: false 601#endif 602 mirror: always 603 604# The "test async scroll offset" (used via reftest-async-scroll 605# or nsIDOMWindowUtils.setAsyncScrollOffset()) can be used to 606# trigger overscroll. Used for tests only. 607- name: apz.overscroll.test_async_scroll_offset.enabled 608 type: RelaxedAtomicBool 609 value: false 610 mirror: always 611 612- name: apz.overscroll.min_pan_distance_ratio 613 type: AtomicFloat 614 value: 1.0f 615 mirror: always 616 617- name: apz.overscroll.stop_distance_threshold 618 type: AtomicFloat 619 value: 5.0f 620 mirror: always 621 622- name: apz.overscroll.spring_stiffness 623 type: AtomicFloat 624 value: 200 625 mirror: always 626 627- name: apz.overscroll.damping 628 type: AtomicFloat 629 value: 1.1 630 mirror: always 631 632- name: apz.overscroll.max_velocity 633 type: AtomicFloat 634 value: 10 635 mirror: always 636 637- name: apz.paint_skipping.enabled 638 type: RelaxedAtomicBool 639 value: true 640 mirror: always 641 642- name: apz.peek_messages.enabled 643 type: RelaxedAtomicBool 644 value: true 645 mirror: always 646 647# Fetch displayport updates early from the message queue. 648- name: apz.pinch_lock.mode 649 type: RelaxedAtomicInt32 650 value: 1 651 mirror: always 652 653- name: apz.pinch_lock.scroll_lock_threshold 654 type: AtomicFloat 655 value: 1.0f / 32.0f # 1/32 inches 656 mirror: always 657 658- name: apz.pinch_lock.span_breakout_threshold 659 type: AtomicFloat 660 value: 1.0f / 32.0f # 1/32 inches 661 mirror: always 662 663- name: apz.pinch_lock.span_lock_threshold 664 type: AtomicFloat 665 value: 1.0f / 32.0f # 1/32 inches 666 mirror: always 667 668- name: apz.pinch_lock.buffer_max_age 669 type: int32_t 670 value: 50 # milliseconds 671 mirror: once 672 673- name: apz.popups.enabled 674 type: RelaxedAtomicBool 675 value: true 676 mirror: always 677 678# Whether to print the APZC tree for debugging. 679- name: apz.printtree 680 type: RelaxedAtomicBool 681 value: false 682 mirror: always 683 684- name: apz.record_checkerboarding 685 type: RelaxedAtomicBool 686 value: @IS_NIGHTLY_BUILD@ 687 mirror: always 688 689- name: apz.second_tap_tolerance 690 type: AtomicFloat 691 value: 0.5f 692 mirror: always 693 694- name: apz.test.fails_with_native_injection 695 type: RelaxedAtomicBool 696 value: false 697 mirror: always 698 699- name: apz.test.logging_enabled 700 type: RelaxedAtomicBool 701 value: false 702 mirror: always 703 704- name: apz.touch_move_tolerance 705 type: AtomicFloat 706 value: 0.1f 707 mirror: always 708 709- name: apz.touch_start_tolerance 710 type: AtomicFloat 711 value: 0.1f 712 mirror: always 713 714- name: apz.velocity_bias 715 type: AtomicFloat 716 value: 0.0f 717 mirror: always 718 719- name: apz.velocity_relevance_time_ms 720 type: RelaxedAtomicUint32 721 value: 100 722 mirror: always 723 724- name: apz.windows.force_disable_direct_manipulation 725 type: RelaxedAtomicBool 726 value: false 727 mirror: always 728 729- name: apz.windows.use_direct_manipulation 730 type: RelaxedAtomicBool 731 value: true 732 mirror: always 733 734- name: apz.windows.check_for_pan_gesture_conversion 735 type: RelaxedAtomicBool 736 value: true 737 mirror: always 738 739- name: apz.x_skate_highmem_adjust 740 type: AtomicFloat 741 value: 0.0f 742 mirror: always 743 744- name: apz.x_skate_size_multiplier 745 type: AtomicFloat 746 value: 1.25f 747 mirror: always 748 749- name: apz.x_stationary_size_multiplier 750 type: AtomicFloat 751 value: 1.5f 752 mirror: always 753 754- name: apz.y_skate_highmem_adjust 755 type: AtomicFloat 756 value: 0.0f 757 mirror: always 758 759- name: apz.y_skate_size_multiplier 760 type: AtomicFloat 761#if defined(MOZ_WIDGET_ANDROID) 762 value: 1.5f 763#else 764 value: 3.5f 765#endif 766 mirror: always 767 768- name: apz.y_stationary_size_multiplier 769 type: AtomicFloat 770#if defined(MOZ_WIDGET_ANDROID) 771 value: 1.5f 772#else 773 value: 3.5f 774#endif 775 mirror: always 776 777- name: apz.zoom_animation_duration_ms 778 type: RelaxedAtomicInt32 779#if defined(MOZ_WIDGET_ANDROID) 780 value: 250 781#else 782 value: 350 783#endif 784 mirror: always 785 786- name: apz.scale_repaint_delay_ms 787 type: RelaxedAtomicInt32 788 value: 500 789 mirror: always 790 791#--------------------------------------------------------------------------- 792# Prefs starting with "beacon." 793#--------------------------------------------------------------------------- 794 795# Is support for Navigator.sendBeacon enabled? 796- name: beacon.enabled 797 type: bool 798 value: true 799 mirror: always 800 801#--------------------------------------------------------------------------- 802# Prefs starting with "bidi." 803#--------------------------------------------------------------------------- 804 805# Whether delete and backspace should immediately delete characters not 806# visually adjacent to the caret, or adjust the visual position of the caret 807# on the first keypress and delete the character on a second keypress 808- name: bidi.edit.delete_immediately 809 type: bool 810 value: true 811 mirror: always 812 813# Bidi caret movement style: 814# 0 = logical 815# 1 = visual 816# 2 = visual, but logical during selection 817- name: bidi.edit.caret_movement_style 818 type: int32_t 819#if !defined(XP_LINUX) && defined(NIGHTLY_BUILD) 820 value: 1 821#else 822 value: 2 # See Bug 1638240 823#endif 824 mirror: always 825 826#--------------------------------------------------------------------------- 827# Prefs starting with "browser." 828#--------------------------------------------------------------------------- 829 830- name: browser.active_color 831 type: String 832 value: "#EE0000" 833 mirror: never 834 835- name: browser.anchor_color 836 type: String 837 value: "#0000EE" 838 mirror: never 839 840# See http://dev.w3.org/html5/spec/forms.html#attr-fe-autofocus 841- name: browser.autofocus 842 type: bool 843 value: true 844 mirror: always 845 846- name: browser.cache.offline.enable 847 type: bool 848 value: @IS_NOT_EARLY_BETA_OR_EARLIER@ 849 mirror: always 850 851- name: browser.cache.disk.enable 852 type: RelaxedAtomicBool 853 value: true 854 mirror: always 855 856- name: browser.cache.memory.enable 857 type: RelaxedAtomicBool 858 value: true 859 mirror: always 860 861# Limit of recent metadata we keep in memory for faster access, in KB. 862- name: browser.cache.disk.metadata_memory_limit 863 type: RelaxedAtomicUint32 864 value: 250 # 0.25 MB 865 mirror: always 866 867# Does the user want smart-sizing? 868- name: browser.cache.disk.smart_size.enabled 869 type: RelaxedAtomicBool 870 value: true 871 mirror: always 872 873# Disk cache capacity in kilobytes. It's used only when 874# browser.cache.disk.smart_size.enabled == false 875- name: browser.cache.disk.capacity 876 type: RelaxedAtomicUint32 877 value: 256000 878 mirror: always 879 880# -1 = determine dynamically, 0 = none, n = memory capacity in kilobytes. 881- name: browser.cache.memory.capacity 882 type: RelaxedAtomicInt32 883 value: -1 884 mirror: always 885 886# When smartsizing is disabled we could potentially fill all disk space by 887# cache data when the disk capacity is not set correctly. To avoid that we 888# check the free space every time we write some data to the cache. The free 889# space is checked against two limits. Once the soft limit is reached we start 890# evicting the least useful entries, when we reach the hard limit writing to 891# the entry fails. 892- name: browser.cache.disk.free_space_soft_limit 893 type: RelaxedAtomicUint32 894 value: 5 * 1024 # 5MB 895 mirror: always 896 897- name: browser.cache.disk.free_space_hard_limit 898 type: RelaxedAtomicUint32 899 value: 1024 # 1MB 900 mirror: always 901 902# The number of chunks we preload ahead of read. One chunk currently has 903# 256kB. 904- name: browser.cache.disk.preload_chunk_count 905 type: RelaxedAtomicUint32 906 value: 4 # 1 MB of read ahead 907 mirror: always 908 909# Max-size (in KB) for entries in disk cache. Set to -1 for no limit. 910# (Note: entries bigger than 1/8 of disk-cache are never cached) 911- name: browser.cache.disk.max_entry_size 912 type: RelaxedAtomicUint32 913 value: 50 * 1024 # 50 MB 914 mirror: always 915 916# Max-size (in KB) for entries in memory cache. Set to -1 for no limit. 917# (Note: entries bigger than than 90% of the mem-cache are never cached.) 918- name: browser.cache.memory.max_entry_size 919 type: RelaxedAtomicInt32 920 value: 5 * 1024 921 mirror: always 922 923# Memory limit (in kB) for new cache data not yet written to disk. Writes to 924# the cache are buffered and written to disk on background with low priority. 925# With a slow persistent storage these buffers may grow when data is coming 926# fast from the network. When the amount of unwritten data is exceeded, new 927# writes will simply fail. We have two buckets, one for important data 928# (priority) like html, css, fonts and js, and one for other data like images, 929# video, etc. 930# Note: 0 means no limit. 931- name: browser.cache.disk.max_chunks_memory_usage 932 type: RelaxedAtomicUint32 933 value: 40 * 1024 934 mirror: always 935- name: browser.cache.disk.max_priority_chunks_memory_usage 936 type: RelaxedAtomicUint32 937 value: 40 * 1024 938 mirror: always 939 940# Number of seconds the cache spends writing pending data and closing files 941# after shutdown has been signalled. Past that time data is not written and 942# files are left open for the OS to clean up. 943- name: browser.cache.max_shutdown_io_lag 944 type: RelaxedAtomicUint32 945 value: 2 946 mirror: always 947 948# A percentage limit for media content type in the disk cache. When some entries 949# need to be evicted and media is over the limit, it's evicted first. 950- name: browser.cache.disk.content_type_media_limit 951 type: RelaxedAtomicInt32 952 value: 50 953 mirror: always 954 955# How often to validate document in cache 956# 0 = once-per-session, 957# 1 = each-time, 958# 2 = never, 959# 3 = when-appropriate/automatically 960- name: browser.cache.check_doc_frequency 961 type: RelaxedAtomicUint32 962 value: 3 963 mirror: always 964 965- name: browser.contentblocking.database.enabled 966 type: bool 967 value: false 968 mirror: always 969 970# How many recent block/unblock actions per origins we remember in the 971# Content Blocking log for each top-level window. 972- name: browser.contentblocking.originlog.length 973 type: uint32_t 974 value: 32 975 mirror: always 976 977- name: browser.display.background_color 978 type: String 979 value: "#FFFFFF" 980 mirror: never 981 982# This preference is a bit confusing because we use the opposite 983# string value in the colors dialog to indicate to users how FF HCM 984# will behave. 985# With resect to document colors, these values mean: 986# 0 = "default" = always, except in high contrast mode 987# 1 = "always" 988# 2 = "never" 989# 990# On windows, we set this to 0, which means FF HCM will mirror OS HCM. 991# Everywhere else, we set this to 1, disabling FF HCM. 992- name: browser.display.document_color_use 993 type: RelaxedAtomicUint32 994#if defined(XP_WIN) 995 value: 0 996#else 997 value: 1 998#endif 999 mirror: always 1000 rust: true 1001 1002# 0 = always native 1003# 1 = never native 1004# other = default 1005- name: browser.display.windows.non_native_menus 1006 type: RelaxedAtomicUint32 1007 value: 2 1008 mirror: always 1009 rust: true 1010 1011# This pref dictates whether or not backplates and background images 1012# are to be drawn, when in high-contrast mode: 1013# false: do not draw backplates or render background images 1014# true: render background images and draw backplates 1015# This condition is only considered when high-contrast mode is enabled 1016# in Firefox, ie. when the user has: 1017# (1) mUseAccessibilityMode set to true (Widows high-contrast mode is on) 1018# AND browser.display.document_color_use set to 0 1019# (only with high-contrast themes) OR 1020# (2) browser.display.document_color_use set to 2 (always) 1021- name: browser.display.permit_backplate 1022 type: RelaxedAtomicBool 1023 value: true 1024 mirror: always 1025 rust: true 1026 1027# Whether we should suppress the background-image of the canvas (the root 1028# frame) if we're in forced colors mode. 1029# 1030# This is important because some sites use background-image with a plain color 1031# and it causes undesirable results in high-contrast mode. 1032# 1033# See bug 1614921 for example. 1034- name: browser.display.suppress_canvas_background_image_on_forced_colors 1035 type: bool 1036 value: true 1037 mirror: always 1038 1039- name: browser.display.focus_ring_on_anything 1040 type: bool 1041 value: false 1042 mirror: always 1043 1044- name: browser.display.focus_ring_width 1045 type: uint32_t 1046 value: 1 1047 mirror: always 1048 1049- name: browser.display.focus_background_color 1050 type: String 1051 value: "#117722" 1052 mirror: never 1053 1054# Focus ring border style. 1055# 0 = solid border, 1 = dotted border 1056- name: browser.display.focus_ring_style 1057 type: uint32_t 1058 value: 1 1059 mirror: always 1060 1061- name: browser.display.focus_text_color 1062 type: String 1063 value: "#ffffff" 1064 mirror: never 1065- name: browser.display.foreground_color 1066 type: String 1067 value: "#000000" 1068 mirror: never 1069 1070# Whether focus rings are always shown by default. 1071# 1072# This is the initial value of nsWindowRoot::mShowFocusRings, but it can be 1073# overridden by system preferences. 1074- name: browser.display.show_focus_rings 1075 type: bool 1076 value: false 1077 mirror: always 1078 1079# Whether we should always enable focus rings after focus was moved by keyboard. 1080# 1081# This behavior matches both historical and GTK / Windows focus behavior. 1082# 1083# :focus-visible is intended to provide better heuristics than this. 1084- name: browser.display.always_show_rings_after_key_focus 1085 type: bool 1086 value: false 1087 mirror: always 1088 1089# In theory: 0 = never, 1 = quick, 2 = always, though we always just use it as 1090# a bool! 1091- name: browser.display.use_document_fonts 1092 type: RelaxedAtomicInt32 1093 value: 1 1094 mirror: always 1095 rust: true 1096 1097- name: browser.display.use_focus_colors 1098 type: bool 1099 value: false 1100 mirror: always 1101 1102- name: browser.display.use_system_colors 1103 type: bool 1104 value: false 1105 mirror: always 1106 1107- name: browser.dom.window.dump.enabled 1108 type: RelaxedAtomicBool 1109 value: @IS_NOT_MOZILLA_OFFICIAL@ 1110 mirror: always 1111 1112# See bug 1710926 1113- name: browser.download.improvements_to_download_panel 1114 type: bool 1115 value: false 1116 mirror: always 1117 1118- name: browser.download.sanitize_non_media_extensions 1119 type: bool 1120 value: true 1121 mirror: always 1122 1123# Image document's automatic image sizing. 1124- name: browser.enable_automatic_image_resizing 1125 type: bool 1126 value: true 1127 mirror: always 1128 1129# Image document's click-to-resize. 1130- name: browser.enable_click_image_resizing 1131 type: bool 1132 value: @IS_NOT_ANDROID@ 1133 mirror: always 1134 1135# The max url length we'll store in history. 1136# 1137# The default value is mostly a guess based on various facts: 1138# 1139# * IE didn't support urls longer than 2083 chars 1140# * Sitemaps protocol used to support a maximum of 2048 chars 1141# * Various SEO guides suggest to not go over 2000 chars 1142# * Various apps/services are known to have issues over 2000 chars 1143# * RFC 2616 - HTTP/1.1 suggests being cautious about depending 1144# on URI lengths above 255 bytes 1145# 1146- name: browser.history.maxUrlLength 1147 type: uint32_t 1148 value: 2000 1149 mirror: always 1150 1151#ifdef XP_WIN 1152 # Notify TabUnloader or send the memory pressure if the memory resource 1153 # notification is signaled AND the available commit space is lower than 1154 # this value. 1155- name: browser.low_commit_space_threshold_mb 1156 type: RelaxedAtomicUint32 1157 value: 200 1158 mirror: always 1159#endif 1160 1161# Render animations and videos as a solid color 1162- name: browser.measurement.render_anims_and_video_solid 1163 type: RelaxedAtomicBool 1164 value: false 1165 mirror: always 1166 1167- name: browser.navigation.requireUserInteraction 1168 type: bool 1169 value: false 1170 mirror: always 1171 1172# Indicates if about:newtab shows content (enabled) or just blank. 1173- name: browser.newtabpage.enabled 1174 type: bool 1175 value: true 1176 mirror: always 1177 1178# Open PDFs in Edge with the --app flag if it is the default. 1179- name: browser.pdf.launchDefaultEdgeAsApp 1180 type: bool 1181 value: true 1182 mirror: always 1183 1184# Maximium delay between keystrokes that will be considered typing (milliseconds). 1185- name: browser.places.interactions.typing_timeout_ms 1186 type: RelaxedAtomicUint32 1187 value: 3000 1188 mirror: always 1189 1190# Force usage of in-memory (rather than file on disk) media cache for video streaming when private browsing 1191- name: browser.privatebrowsing.forceMediaMemoryCache 1192 type: bool 1193 value: false 1194 mirror: always 1195 1196# Controls @media -moz-toolbar-prefers-color-scheme. 1197# 1198# Returns whether the toolbar is dark (0), light (1), or system (2). 1199# 1200# Default to "system", the theming code sets it appropriately. 1201- name: browser.theme.toolbar-theme 1202 type: RelaxedAtomicUint32 1203 value: 2 1204 mirror: always 1205 rust: true 1206 1207# Enable Proton restyle. Requires restart. 1208- name: browser.proton.enabled 1209 type: RelaxedAtomicBool 1210 value: true 1211 mirror: always 1212 rust: true 1213 1214- name: browser.proton.places-tooltip.enabled 1215 type: RelaxedAtomicBool 1216 value: false 1217 mirror: always 1218 rust: true 1219 1220# Blocked plugin content 1221- name: browser.safebrowsing.blockedURIs.enabled 1222 type: bool 1223 value: true 1224 mirror: always 1225 1226# Malware protection 1227- name: browser.safebrowsing.malware.enabled 1228 type: bool 1229 value: true 1230 mirror: always 1231 1232# Password protection 1233- name: browser.safebrowsing.passwords.enabled 1234 type: bool 1235 value: false 1236 mirror: always 1237 1238# Phishing protection 1239- name: browser.safebrowsing.phishing.enabled 1240 type: bool 1241 value: true 1242 mirror: always 1243 1244# Maximum size for an array to store the safebrowsing prefixset. 1245- name: browser.safebrowsing.prefixset_max_array_size 1246 type: RelaxedAtomicUint32 1247 value: 512*1024 1248 mirror: always 1249 1250# SessionStore prefs 1251# Maximum number of bytes of DOMSessionStorage data we collect per origin. 1252- name: browser.sessionstore.dom_storage_limit 1253 type: uint32_t 1254 value: 2048 1255 mirror: always 1256 1257# Minimal interval between two save operations in milliseconds (while the user is active). 1258- name: browser.sessionstore.interval 1259 type: RelaxedAtomicUint32 1260 value: 15000 1261 mirror: always 1262 1263# Causes SessionStore to ignore non-final update messages from 1264# browser tabs that were not caused by a flush from the parent. 1265# This is a testing flag and should not be used by end-users. 1266- name: browser.sessionstore.debug.no_auto_updates 1267 type: RelaxedAtomicBool 1268 value: false 1269 mirror: always 1270 1271# If set, use DocumentChannel to directly initiate loads entirely 1272# from parent-process BrowsingContexts 1273- name: browser.tabs.documentchannel.parent-controlled 1274 type: bool 1275 value: false 1276 mirror: always 1277 1278- name: browser.tabs.remote.desktopbehavior 1279 type: bool 1280 value: false 1281 mirror: always 1282 1283- name: browser.tabs.remote.force-paint 1284 type: bool 1285 value: true 1286 mirror: always 1287 1288# When this pref is enabled document loads with a mismatched 1289# Cross-Origin-Embedder-Policy header will fail to load 1290- name: browser.tabs.remote.useCrossOriginEmbedderPolicy 1291 type: RelaxedAtomicBool 1292#if !defined(ANDROID) 1293 value: true 1294#else 1295 value: @IS_NIGHTLY_BUILD@ 1296#endif 1297 mirror: always 1298 1299# When this pref is enabled top level loads with a mismatched 1300# Cross-Origin-Opener-Policy header will be loaded in a separate process. 1301- name: browser.tabs.remote.useCrossOriginOpenerPolicy 1302 type: RelaxedAtomicBool 1303#if !defined(ANDROID) 1304 value: true 1305#else 1306 value: @IS_NIGHTLY_BUILD@ 1307#endif 1308 mirror: always 1309 1310# When this pref is enabled then we use a separate content process for 1311# top-level load of file:// URIs 1312- name: browser.tabs.remote.separateFileUriProcess 1313 type: RelaxedAtomicBool 1314#if !defined(ANDROID) 1315 value: true 1316#else 1317 value: false 1318#endif 1319 mirror: always 1320 1321# When this pref is enabled, opaque response is only allowed to enter the 1322# content process if it's a response for media (audio, image, video), CSS, or 1323# JavaScript. 1324- name: browser.opaqueResponseBlocking 1325 type: RelaxedAtomicBool 1326 value: @IS_NIGHTLY_BUILD@ 1327 mirror: always 1328 1329# When true, zooming will be enabled on all sites, even ones that declare 1330# user-scalable=no. 1331- name: browser.ui.zoom.force-user-scalable 1332 type: RelaxedAtomicBool 1333 value: false 1334 mirror: always 1335 1336- name: browser.underline_anchors 1337 type: bool 1338 value: true 1339 mirror: always 1340 1341- name: browser.viewport.desktopWidth 1342 type: RelaxedAtomicInt32 1343 value: 980 1344 mirror: always 1345 1346- name: browser.visited_color 1347 type: String 1348 value: "#551A8B" 1349 mirror: never 1350 1351#--------------------------------------------------------------------------- 1352# Prefs starting with "canvas." 1353#--------------------------------------------------------------------------- 1354 1355# Limit for the canvas image cache. 0 means unlimited. 1356- name: canvas.image.cache.limit 1357 type: int32_t 1358 value: 0 1359 mirror: always 1360 1361# Add support for canvas path objects 1362- name: canvas.path.enabled 1363 type: bool 1364 value: true 1365 mirror: always 1366 1367- name: canvas.capturestream.enabled 1368 type: bool 1369 value: true 1370 mirror: always 1371 1372# Is support for CanvasRenderingContext2D.filter enabled? 1373- name: canvas.filters.enabled 1374 type: bool 1375 value: true 1376 mirror: always 1377 1378# Provide ability to turn on support for canvas focus rings. 1379- name: canvas.focusring.enabled 1380 type: bool 1381 value: true 1382 mirror: always 1383 1384# Is support for CanvasRenderingContext2D's hitRegion APIs enabled? 1385- name: canvas.hitregions.enabled 1386 type: bool 1387 value: false 1388 mirror: always 1389 1390# Is support for CanvasRenderingContext2D's createConicGradient API enabled? 1391- name: canvas.createConicGradient.enabled 1392 type: RelaxedAtomicBool 1393 value: true 1394 mirror: always 1395 1396# Provide ability to turn on support for canvas mozGetAsFile API. 1397- name: canvas.mozgetasfile.enabled 1398 type: bool 1399 value: false 1400 mirror: always 1401 1402#--------------------------------------------------------------------------- 1403# Prefs starting with "channelclassifier." 1404#--------------------------------------------------------------------------- 1405 1406- name: channelclassifier.allowlist_example 1407 type: bool 1408 value: false 1409 mirror: always 1410 1411#--------------------------------------------------------------------------- 1412# Prefs starting with "clipboard." 1413#--------------------------------------------------------------------------- 1414 1415# Clipboard behavior. 1416- name: clipboard.autocopy 1417 type: bool 1418#if !defined(ANDROID) && !defined(XP_MACOSX) && defined(XP_UNIX) 1419 value: true 1420#else 1421 value: false 1422#endif 1423 mirror: always 1424 1425#ifdef XP_WIN 1426 # allow to copy clipboard data to Clipboard History/Cloud 1427 # (used on sensitive data in about:logins and Private Browsing) 1428- name: clipboard.copyPrivateDataToClipboardCloudOrHistory 1429 type: bool 1430 value: false 1431 mirror: always 1432#endif 1433 1434#--------------------------------------------------------------------------- 1435# Prefs starting with "consoleservice." 1436#--------------------------------------------------------------------------- 1437 1438#if defined(ANDROID) 1439 # Disable sending console to logcat on release builds. 1440- name: consoleservice.logcat 1441 type: RelaxedAtomicBool 1442 value: @IS_NOT_RELEASE_OR_BETA@ 1443 mirror: always 1444#endif 1445 1446#--------------------------------------------------------------------------- 1447# Prefs starting with "content." 1448#--------------------------------------------------------------------------- 1449 1450- name: content.cors.disable 1451 type: bool 1452 value: false 1453 mirror: always 1454 1455# Back off timer notification after count. 1456# -1 means never. 1457- name: content.notify.backoffcount 1458 type: int32_t 1459 value: -1 1460 mirror: always 1461 1462# Notification interval in microseconds. 1463# The notification interval has a dramatic effect on how long it takes to 1464# initially display content for slow connections. The current value 1465# provides good incremental display of content without causing an increase 1466# in page load time. If this value is set below 1/10 of a second it starts 1467# to impact page load performance. 1468# See bugzilla bug 72138 for more info. 1469- name: content.notify.interval 1470 type: int32_t 1471 value: 120000 1472 mirror: always 1473 1474# Do we notify based on time? 1475- name: content.notify.ontimer 1476 type: bool 1477 value: true 1478 mirror: always 1479 1480# How many times to deflect in interactive mode. 1481- name: content.sink.interactive_deflect_count 1482 type: int32_t 1483 value: 0 1484 mirror: always 1485 1486# How many times to deflect in perf mode. 1487- name: content.sink.perf_deflect_count 1488 type: int32_t 1489 value: 200 1490 mirror: always 1491 1492# Parse mode for handling pending events. 1493# 0 = don't check for pending events 1494# 1 = don't deflect if there are pending events 1495# 2 = bail if there are pending events 1496- name: content.sink.pending_event_mode 1497 type: int32_t 1498#ifdef XP_WIN 1499 value: 1 1500#else 1501 value: 0 1502#endif 1503 mirror: always 1504 1505# How often to probe for pending events. 1 = every token. 1506- name: content.sink.event_probe_rate 1507 type: int32_t 1508 value: 1 1509 mirror: always 1510 1511# How long to stay off the event loop in interactive mode. 1512- name: content.sink.interactive_parse_time 1513 type: int32_t 1514 value: 3000 1515 mirror: always 1516 1517# How long to stay off the event loop in perf mode. 1518- name: content.sink.perf_parse_time 1519 type: int32_t 1520 value: 360000 1521 mirror: always 1522 1523# How long to be in interactive mode after an event. 1524- name: content.sink.interactive_time 1525 type: uint32_t 1526 value: 750000 1527 mirror: always 1528 1529# How long to stay in perf mode after initial loading. 1530- name: content.sink.initial_perf_time 1531 type: uint32_t 1532 value: 2000000 1533 mirror: always 1534 1535# Should we switch between perf-mode and interactive-mode? 1536# 0 = Switch 1537# 1 = Interactive mode 1538# 2 = Perf mode 1539- name: content.sink.enable_perf_mode 1540 type: int32_t 1541 value: 0 1542 mirror: always 1543 1544#--------------------------------------------------------------------------- 1545# Prefs starting with "converter." 1546#--------------------------------------------------------------------------- 1547 1548# Whether we include ruby annotation in the text despite whether it 1549# is requested. This was true because we didn't explicitly strip out 1550# annotations. Set false by default to provide a better behavior, but 1551# we want to be able to pref-off it if user doesn't like it. 1552- name: converter.html2txt.always_include_ruby 1553 type: bool 1554 value: false 1555 mirror: always 1556 1557#--------------------------------------------------------------------------- 1558# Prefs starting with "datareporting." 1559#--------------------------------------------------------------------------- 1560 1561- name: datareporting.healthreport.uploadEnabled 1562 type: RelaxedAtomicBool 1563 value: false 1564 mirror: always 1565 rust: true 1566 1567#--------------------------------------------------------------------------- 1568# Prefs starting with "device." 1569#--------------------------------------------------------------------------- 1570 1571# Is support for the device sensors API enabled? 1572- name: device.sensors.enabled 1573 type: bool 1574 value: true 1575 mirror: always 1576 1577# KaiOS-only, see https://bugzilla.mozilla.org/show_bug.cgi?id=1699707#c10 1578- name: device.sensors.ambientLight.enabled 1579 type: bool 1580 value: false 1581 mirror: always 1582 1583- name: device.sensors.motion.enabled 1584 type: bool 1585 value: true 1586 mirror: always 1587 1588- name: device.sensors.orientation.enabled 1589 type: bool 1590 value: true 1591 mirror: always 1592 1593# KaiOS-only, see https://bugzilla.mozilla.org/show_bug.cgi?id=1699707#c10 1594- name: device.sensors.proximity.enabled 1595 type: bool 1596 value: false 1597 mirror: always 1598 1599- name: device.sensors.test.events 1600 type: bool 1601 value: false 1602 mirror: always 1603 1604#--------------------------------------------------------------------------- 1605# Prefs starting with "devtools." 1606#--------------------------------------------------------------------------- 1607 1608# Tells if DevTools have been explicitely enabled by the user. This pref 1609# allows to disable all features related to DevTools for users that never use 1610# them. Until bug 1361080 lands, we always consider them enabled. 1611- name: devtools.enabled 1612 type: RelaxedAtomicBool 1613 value: true 1614 mirror: always 1615 1616- name: devtools.console.stdout.chrome 1617 type: RelaxedAtomicBool 1618 value: @IS_NOT_MOZILLA_OFFICIAL@ 1619 mirror: always 1620 1621- name: devtools.console.stdout.content 1622 type: RelaxedAtomicBool 1623 value: false 1624 mirror: always 1625 1626- name: devtools.toolbox.force-chrome-prefs 1627 type: RelaxedAtomicBool 1628 value: true 1629 mirror: always 1630 1631#--------------------------------------------------------------------------- 1632# Prefs starting with "docshell." 1633#--------------------------------------------------------------------------- 1634 1635# Used to indicate whether session history listeners should be notified 1636# about content viewer eviction. Used only for testing. 1637- name: docshell.shistory.testing.bfevict 1638 type: bool 1639 value: false 1640 mirror: always 1641 1642# If true, pages with an opener won't be bfcached. 1643- name: docshell.shistory.bfcache.require_no_opener 1644 type: bool 1645 value: @IS_ANDROID@ 1646 mirror: always 1647 1648# If true, page with beforeunload or unload event listeners can be bfcached. 1649- name: docshell.shistory.bfcache.allow_unload_listeners 1650 type: bool 1651 value: @IS_ANDROID@ 1652 mirror: always 1653 1654#--------------------------------------------------------------------------- 1655# Prefs starting with "dom." 1656#--------------------------------------------------------------------------- 1657 1658# Whether window.mozPaintCount is exposed to the web. 1659- name: dom.mozPaintCount.enabled 1660 type: bool 1661 value: false 1662 mirror: always 1663 1664# Allow cut/copy 1665- name: dom.allow_cut_copy 1666 type: bool 1667 value: true 1668 mirror: always 1669 1670- name: dom.allow_XUL_XBL_for_file 1671 type: bool 1672 value: false 1673 mirror: always 1674 1675# Checks if offscreen animation throttling is enabled. 1676- name: dom.animations.offscreen-throttling 1677 type: bool 1678 value: true 1679 mirror: always 1680 1681# Is support for automatically removing replaced filling animations enabled? 1682- name: dom.animations-api.autoremove.enabled 1683 type: bool 1684 value: true 1685 mirror: always 1686 1687# Is support for composite operations from the Web Animations API enabled? 1688- name: dom.animations-api.compositing.enabled 1689 type: bool 1690 value: true 1691 mirror: always 1692 1693# Is support for the core interfaces of Web Animations API enabled? 1694- name: dom.animations-api.core.enabled 1695 type: bool 1696 value: true 1697 mirror: always 1698 1699# Is support for Document.getAnimations() and Element.getAnimations() 1700# supported? 1701- name: dom.animations-api.getAnimations.enabled 1702 type: bool 1703 value: true 1704 mirror: always 1705 1706# Is support for animations from the Web Animations API without 0%/100% 1707# keyframes enabled? 1708- name: dom.animations-api.implicit-keyframes.enabled 1709 type: bool 1710 value: true 1711 mirror: always 1712 1713# Is support for timelines from the Web Animations API enabled? 1714- name: dom.animations-api.timelines.enabled 1715 type: bool 1716 value: true 1717 mirror: always 1718 1719# Synchronize transform animations with geometric animations on the 1720# main thread. 1721- name: dom.animations.mainthread-synchronization-with-geometric-animations 1722 type: bool 1723 value: @IS_NOT_NIGHTLY_BUILD@ 1724 mirror: always 1725 1726# Is support for AudioWorklet enabled? 1727- name: dom.audioworklet.enabled 1728 type: bool 1729 value: true 1730 mirror: always 1731 1732# Is support for Navigator.getBattery enabled? 1733- name: dom.battery.enabled 1734 type: bool 1735 value: true 1736 mirror: always 1737 1738# Block multiple external protocol URLs in iframes per single event. 1739- name: dom.block_external_protocol_in_iframes 1740 type: bool 1741 value: true 1742 mirror: always 1743 1744# Block Insecure downloads from Secure Origins 1745- name: dom.block_download_insecure 1746 type: bool 1747 value: @IS_NIGHTLY_BUILD@ 1748 mirror: always 1749 1750# Block all downloads in iframes with the sandboxed attribute 1751- name: dom.block_download_in_sandboxed_iframes 1752 type: bool 1753 value: true 1754 mirror: always 1755 1756# Block multiple window.open() per single event. 1757- name: dom.block_multiple_popups 1758 type: bool 1759 value: true 1760 mirror: always 1761 1762# The maximum number of popup that is allowed to be opened. Set to -1 for no 1763# limit. 1764- name: dom.popup_maximum 1765 type: int32_t 1766 value: 20 1767 mirror: always 1768 1769# Whether window.location.reload() and window.history.go(0) should be blocked 1770# if called directly from a window resize event handler. 1771# 1772# This used to be necessary long ago to prevent terrible UX when using stuff 1773# like TypeAheadFind (bug 258917), but it also causes compat issues on mobile 1774# (bug 1570566). 1775# 1776# So for now disable it on Android and Desktop Nightly, to see if we have any 1777# desktop regression before removing it completely. Note that this means that 1778# non-nightly RDM behaves different than Android in this case. 1779- name: dom.block_reload_from_resize_event_handler 1780 type: bool 1781#if defined(MOZ_WIDGET_ANDROID) || defined(NIGHTLY_BUILD) 1782 value: false 1783#else 1784 value: true 1785#endif 1786 mirror: always 1787 1788# SW Cache API 1789- name: dom.caches.enabled 1790 type: RelaxedAtomicBool 1791 value: true 1792 mirror: always 1793 1794- name: dom.caches.testing.enabled 1795 type: RelaxedAtomicBool 1796 value: false 1797 mirror: always 1798 1799# Disable capture attribute for input elements; only supported on GeckoView. 1800- name: dom.capture.enabled 1801 type: bool 1802 value: false 1803 mirror: always 1804 1805# Allow control characters appear in composition string. 1806# When this is false, control characters except 1807# CHARACTER TABULATION (horizontal tab) are removed from 1808# both composition string and data attribute of compositionupdate 1809# and compositionend events. 1810- name: dom.compositionevent.allow_control_characters 1811 type: bool 1812 value: false 1813 mirror: always 1814 1815# Is support for CSSPseudoElement enabled? 1816- name: dom.css_pseudo_element.enabled 1817 type: bool 1818 value: false 1819 mirror: always 1820 1821# After how many seconds we allow external protocol URLs in iframe when not in 1822# single events 1823- name: dom.delay.block_external_protocol_in_iframes 1824 type: uint32_t 1825 value: 10 # in seconds 1826 mirror: always 1827 1828# Whether the above pref has any effect at all. 1829- name: dom.delay.block_external_protocol_in_iframes.enabled 1830 type: bool 1831 value: @IS_NOT_NIGHTLY_BUILD@ 1832 mirror: always 1833 1834# HTML <dialog> element 1835- name: dom.dialog_element.enabled 1836 type: bool 1837 value: @IS_NIGHTLY_BUILD@ 1838 mirror: always 1839 1840# Only propagate the open window click permission if the setTimeout() is equal 1841# to or less than this value. 1842- name: dom.disable_open_click_delay 1843 type: int32_t 1844 value: 1000 1845 mirror: always 1846 1847- name: dom.disable_open_during_load 1848 type: bool 1849 value: false 1850 mirror: always 1851 1852- name: dom.disable_beforeunload 1853 type: bool 1854 value: false 1855 mirror: always 1856 1857- name: dom.require_user_interaction_for_beforeunload 1858 type: bool 1859 value: true 1860 mirror: always 1861 1862# If set this to true, `Document.execCommand` may be performed nestedly. 1863# Otherwise, nested calls just return false. 1864- name: dom.document.exec_command.nested_calls_allowed 1865 type: bool 1866 value: false 1867 mirror: always 1868 1869- name: dom.enable_window_print 1870 type: bool 1871 value: @IS_NOT_ANDROID@ 1872 mirror: always 1873 1874# Only intended for fuzzing purposes, this will break mozPrintCallback, etc. 1875- name: dom.window_print.fuzzing.block_while_printing 1876 type: bool 1877 value: false 1878 mirror: always 1879 1880- name: dom.element.transform-getters.enabled 1881 type: bool 1882 value: false 1883 mirror: always 1884 1885- name: dom.mouse_capture.enabled 1886 type: bool 1887 value: true 1888 mirror: always 1889 1890# Is support for Performance.mozMemory enabled? 1891- name: dom.enable_memory_stats 1892 type: bool 1893 value: false 1894 mirror: always 1895 1896# Enable Performance API 1897# Whether nonzero values can be returned from performance.timing.* 1898- name: dom.enable_performance 1899 type: RelaxedAtomicBool 1900 value: true 1901 mirror: always 1902 1903# Enable Performance Observer API 1904- name: dom.enable_performance_observer 1905 type: RelaxedAtomicBool 1906 value: true 1907 mirror: always 1908 1909# Whether resource timing will be gathered and returned by performance.GetEntries* 1910- name: dom.enable_resource_timing 1911 type: bool 1912 value: true 1913 mirror: always 1914 1915# Whether event timing will be gathered and returned by performance observer* 1916- name: dom.enable_event_timing 1917 type: RelaxedAtomicBool 1918 value: true 1919 mirror: always 1920 1921# Whether performance.GetEntries* will contain an entry for the active document 1922- name: dom.enable_performance_navigation_timing 1923 type: bool 1924 value: true 1925 mirror: always 1926 1927# If this is true, it's allowed to fire "cut", "copy" and "paste" events. 1928# Additionally, "input" events may expose clipboard content when inputType 1929# is "insertFromPaste" or something. 1930- name: dom.event.clipboardevents.enabled 1931 type: bool 1932 value: true 1933 mirror: always 1934 1935# Whether touch event listeners are passive by default. 1936- name: dom.event.default_to_passive_touch_listeners 1937 type: bool 1938 value: true 1939 mirror: always 1940 1941# Whether wheel listeners are passive by default. 1942- name: dom.event.default_to_passive_wheel_listeners 1943 type: bool 1944 value: true 1945 mirror: always 1946 1947# Whether WheelEvent should return pixels instead of lines for 1948# WheelEvent.deltaX/Y/Z, when deltaMode hasn't been checked. 1949# 1950# Other browsers don't use line deltas and websites forget to check for it, see 1951# bug 1392460. 1952- name: dom.event.wheel-deltaMode-lines.disabled 1953 type: bool 1954 value: true 1955 mirror: always 1956 1957# Mostly for debugging. Whether we should do the same as 1958# dom.event.wheel-deltaMode-lines.disabled, but unconditionally rather than 1959# only when deltaMode hasn't been checked. 1960- name: dom.event.wheel-deltaMode-lines.always-disabled 1961 type: bool 1962 value: false 1963 mirror: always 1964 1965# A blocklist (list of domains) for the 1966# dom.event.wheel-deltaMode-lines.disabled behavior, in case potential 1967# unforeseen problems with it arrive. 1968- name: dom.event.wheel-deltaMode-lines.always-enabled 1969 type: String 1970 value: "" 1971 mirror: never 1972 1973# Whether WheelEvent should expose wheelDelta / wheelDeltaX / wheelDeltaY 1974- name: dom.event.wheelDelta.enabled 1975 type: bool 1976 value: true 1977 mirror: always 1978 1979#if defined(XP_MACOSX) 1980# Whether to disable treating ctrl click as right click 1981- name: dom.event.treat_ctrl_click_as_right_click.disabled 1982 type: bool 1983 value: @IS_NIGHTLY_BUILD@ 1984 mirror: always 1985#endif 1986 1987# Whether .offset{X,Y} for events targeted at SVG nodes returns bounds relative 1988# to the outer SVG. 1989- name: dom.events.offset-in-svg-relative-to-svg-root 1990 type: bool 1991 value: true 1992 mirror: always 1993 1994# Enable clipboard readText() and writeText() by default 1995- name: dom.events.asyncClipboard 1996 type: bool 1997 value: true 1998 mirror: always 1999 2000# Disable clipboard.read() by default 2001- name: dom.events.asyncClipboard.read 2002 type: bool 2003 value: false 2004 mirror: always 2005 2006# Disable ClipboardItem and clipboard.write by default 2007- name: dom.events.asyncClipboard.clipboardItem 2008 type: bool 2009 value: false 2010 mirror: always 2011 2012# Should only be enabled in tests. 2013# Access with Clipboard::IsTestingPrefEnabled(). 2014- name: dom.events.testing.asyncClipboard 2015 type: bool 2016 value: false 2017 mirror: always 2018 do_not_use_directly: true 2019 2020# This pref controls whether or not the `protected` dataTransfer state is 2021# enabled. If the `protected` dataTransfer stae is disabled, then the 2022# DataTransfer will be read-only whenever it should be protected, and will not 2023# be disconnected after a drag event is completed. 2024- name: dom.events.dataTransfer.protected.enabled 2025 type: bool 2026 value: false 2027 mirror: always 2028 2029# User interaction timer interval, in ms 2030- name: dom.events.user_interaction_interval 2031 type: uint32_t 2032 value: 5000 2033 mirror: always 2034 2035# Whether to try to compress touchmove events on IPC layer. 2036- name: dom.events.compress.touchmove 2037 type: bool 2038 value: true 2039 mirror: always 2040 2041# In addition to the above IPC layer compresison, allow touchmove 2042# events to be further coalesced in the child side after they 2043# are sent. 2044- name: dom.events.coalesce.touchmove 2045 type: bool 2046 value: @IS_NIGHTLY_BUILD@ 2047 mirror: always 2048 2049# Whether to expose test interfaces of various sorts 2050- name: dom.expose_test_interfaces 2051 type: bool 2052 value: false 2053 mirror: always 2054 2055- name: dom.fetchObserver.enabled 2056 type: RelaxedAtomicBool 2057 value: false 2058 mirror: always 2059 2060# Allow the content process to create a File from a path. This is allowed just 2061# on parent process, on 'file' Content process, or for testing. 2062- name: dom.file.createInChild 2063 type: RelaxedAtomicBool 2064 value: false 2065 mirror: always 2066 2067# Support @autocomplete values for form autofill feature. 2068- name: dom.forms.autocomplete.formautofill 2069 type: bool 2070 value: false 2071 mirror: always 2072 2073# Only trusted submit event could trigger form submission. 2074- name: dom.forms.submit.trusted_event_only 2075 type: bool 2076 value: false 2077 mirror: always 2078 2079# This pref just controls whether we format the number with grouping separator 2080# characters when the internal value is set or updated. It does not stop the 2081# user from typing in a number and using grouping separators. 2082- name: dom.forms.number.grouping 2083 type: bool 2084 value: false 2085 mirror: always 2086 2087# Whether the Gamepad API is enabled 2088- name: dom.gamepad.enabled 2089 type: bool 2090 value: true 2091 mirror: always 2092 2093# Is Gamepad Extension API enabled? 2094- name: dom.gamepad.extensions.enabled 2095 type: bool 2096 value: true 2097 mirror: always 2098 2099# Is LightIndicator API enabled in Gamepad Extension API? 2100- name: dom.gamepad.extensions.lightindicator 2101 type: bool 2102 value: false 2103 mirror: always 2104 2105# Is MultiTouch API enabled in Gamepad Extension API? 2106- name: dom.gamepad.extensions.multitouch 2107 type: bool 2108 value: false 2109 mirror: always 2110 2111# Is Gamepad vibrate haptic feedback function enabled? 2112- name: dom.gamepad.haptic_feedback.enabled 2113 type: bool 2114 value: true 2115 mirror: always 2116 2117- name: dom.gamepad.non_standard_events.enabled 2118 type: bool 2119 value: @IS_NOT_RELEASE_OR_BETA@ 2120 mirror: always 2121 2122- name: dom.gamepad.test.enabled 2123 type: bool 2124 value: false 2125 mirror: always 2126 2127# W3C draft ImageCapture API 2128- name: dom.imagecapture.enabled 2129 type: bool 2130 value: false 2131 mirror: always 2132 2133# <img loading="lazy"> 2134# 2135# See https://github.com/whatwg/html/pull/3752 2136- name: dom.image-lazy-loading.enabled 2137 type: RelaxedAtomicBool 2138 value: true 2139 mirror: always 2140 2141# The root margin for image lazy loading, defined as four (value, percentage) 2142# pairs. 2143- name: dom.image-lazy-loading.root-margin.top 2144 type: float 2145#if defined(EARLY_BETA_OR_EARLIER) 2146 value: 1000 2147#else 2148 value: 300 2149#endif 2150 mirror: always 2151 2152- name: dom.image-lazy-loading.root-margin.top.percentage 2153 type: bool 2154 value: false 2155 mirror: always 2156 2157- name: dom.image-lazy-loading.root-margin.bottom 2158 type: float 2159#if defined(EARLY_BETA_OR_EARLIER) 2160 value: 1000 2161#else 2162 value: 300 2163#endif 2164 mirror: always 2165 2166- name: dom.image-lazy-loading.root-margin.bottom.percentage 2167 type: bool 2168 value: false 2169 mirror: always 2170 2171- name: dom.image-lazy-loading.root-margin.left 2172 type: float 2173#if defined(EARLY_BETA_OR_EARLIER) 2174 value: 1000 2175#else 2176 value: 300 2177#endif 2178 mirror: always 2179 2180- name: dom.image-lazy-loading.root-margin.left.percentage 2181 type: bool 2182 value: false 2183 mirror: always 2184 2185- name: dom.image-lazy-loading.root-margin.right 2186 type: float 2187#if defined(EARLY_BETA_OR_EARLIER) 2188 value: 1000 2189#else 2190 value: 300 2191#endif 2192 mirror: always 2193 2194- name: dom.image-lazy-loading.root-margin.right.percentage 2195 type: bool 2196 value: false 2197 mirror: always 2198 2199# Enable passing the "storage" option to indexedDB.open. 2200- name: dom.indexedDB.storageOption.enabled 2201 type: RelaxedAtomicBool 2202 value: false 2203 mirror: always 2204 2205# Enable indexedDB in private browsing mode. 2206- name: dom.indexedDB.privateBrowsing.enabled 2207 type: RelaxedAtomicBool 2208 value: false 2209 mirror: always 2210 2211- name: dom.input_events.beforeinput.enabled 2212 type: bool 2213 value: true 2214 mirror: always 2215 2216# Whether innerWidth / innerHeight return rounded or fractional sizes. 2217# 2218# NOTE(emilio): Fractional sizes are not web-compatible, see the regressions 2219# from bug 1676843, but we want to expose the fractional sizes (probably in 2220# another API) one way or another, see [1], so we're keeping the code for the 2221# time being. 2222# 2223# [1]: https://github.com/w3c/csswg-drafts/issues/5260 2224- name: dom.innerSize.rounded 2225 type: bool 2226 value: true 2227 mirror: always 2228 2229# Whether we conform to Input Events Level 1 or Input Events Level 2. 2230# true: conforming to Level 1 2231# false: conforming to Level 2 2232- name: dom.input_events.conform_to_level_1 2233 type: bool 2234 value: true 2235 mirror: always 2236 2237# Whether we allow BrowsingContextGroup to suspend input events 2238- name: dom.input_events.canSuspendInBCG.enabled 2239 type: bool 2240 value: false 2241 mirror: always 2242 2243# Whether we perform a more strict alignment with vsync for input events 2244- name: dom.input_events.strict_input_vsync_alignment 2245 type: bool 2246 value: true 2247 mirror: always 2248 2249# Enable not moving the cursor to end when a text input or textarea has .value 2250# set to the value it already has. By default, enabled. 2251- name: dom.input.skip_cursor_move_for_same_value_set 2252 type: bool 2253 value: true 2254 mirror: always 2255 2256- name: dom.IntersectionObserver.enabled 2257 type: bool 2258 value: true 2259 mirror: always 2260 2261- name: dom.IntersectionObserverExplicitDocumentRoot.enabled 2262 type: bool 2263 value: true 2264 mirror: always 2265 2266- name: dom.ipc.cancel_content_js_when_navigating 2267 type: bool 2268 value: true 2269 mirror: always 2270 2271# How often to check for CPOW timeouts (ms). CPOWs are only timed 2272# out by the hang monitor. 2273- name: dom.ipc.cpow.timeout 2274 type: uint32_t 2275 value: 500 2276 mirror: always 2277 2278#ifdef MOZ_ENABLE_FORKSERVER 2279- name: dom.ipc.forkserver.enable 2280 type: bool 2281 value: false 2282 mirror: once 2283#endif 2284 2285#ifdef MOZ_WIDGET_GTK 2286# 2287# Avoid the use of GTK in content processes if possible, by running 2288# them in headless mode, to conserve resources (e.g., connections to 2289# the X server). See the usage in `ContentParent.cpp` for the full 2290# definition of "if possible". 2291# 2292# This does not affect sandbox policies; content processes may still 2293# dynamically connect to the display server for, e.g., WebGL. 2294- name: dom.ipc.avoid-gtk 2295 type: bool 2296 value: true 2297 mirror: always 2298#endif 2299 2300# Whether or not to collect a paired minidump when force-killing a 2301# content process. 2302- name: dom.ipc.tabs.createKillHardCrashReports 2303 type: bool 2304 value: @IS_NOT_RELEASE_OR_BETA@ 2305 mirror: once 2306 2307# Allow Flash async drawing mode in 64-bit release builds. 2308- name: dom.ipc.plugins.asyncdrawing.enabled 2309 type: RelaxedAtomicBool 2310 value: true 2311 mirror: always 2312 2313# How long we wait before unloading an idle plugin process. 2314- name: dom.ipc.plugins.unloadTimeoutSecs 2315 type: RelaxedAtomicUint32 2316 value: 30 2317 mirror: always 2318 2319- name: dom.ipc.plugins.allow_dxgi_surface 2320 type: bool 2321 value: true 2322 mirror: always 2323 2324# Enable e10s hang monitoring (slow script checking and plugin hang detection). 2325- name: dom.ipc.processHangMonitor 2326 type: bool 2327 value: true 2328 mirror: once 2329 2330# Whether we report such process hangs 2331- name: dom.ipc.reportProcessHangs 2332 type: RelaxedAtomicBool 2333# Don't report hangs in DEBUG builds. They're too slow and often a 2334# debugger is attached. 2335#ifdef DEBUG 2336 value: false 2337#else 2338 value: true 2339#endif 2340 mirror: always 2341 2342- name: dom.ipc.tabs.disabled 2343 type: bool 2344 value: false 2345 mirror: always 2346 2347# Process launch delay (in milliseconds). 2348- name: dom.ipc.processPrelaunch.delayMs 2349 type: uint32_t 2350# This number is fairly arbitrary ... the intention is to put off 2351# launching another app process until the last one has finished 2352# loading its content, to reduce CPU/memory/IO contention. 2353 value: 1000 2354 mirror: always 2355 2356- name: dom.ipc.processPrelaunch.startupDelayMs 2357 type: uint32_t 2358# delay starting content processes for a short time after browser start 2359# to provide time for the UI to come up 2360 value: 1000 2361 mirror: always 2362 2363# Process preallocation cache 2364# Only used in fission; in e10s we use 1 always 2365- name: dom.ipc.processPrelaunch.fission.number 2366 type: uint32_t 2367 value: 3 2368 mirror: always 2369 2370# Limit preallocated processes below this memory size (in MB) 2371- name: dom.ipc.processPrelaunch.lowmem_mb 2372 type: uint32_t 2373 value: 4096 2374 mirror: always 2375 2376- name: dom.ipc.processPriorityManager.enabled 2377 type: bool 2378 value: false 2379 mirror: always 2380 2381- name: dom.ipc.processPriorityManager.testMode 2382 type: bool 2383 value: false 2384 mirror: always 2385 2386- name: dom.ipc.processPriorityManager.backgroundPerceivableGracePeriodMS 2387 type: uint32_t 2388#if defined(MOZ_WIDGET_ANDROID) && defined(NIGHTLY_BUILD) 2389 value: 3000 2390#else 2391 value: 0 2392#endif 2393 mirror: always 2394 2395- name: dom.ipc.processPriorityManager.backgroundGracePeriodMS 2396 type: uint32_t 2397#if defined(MOZ_WIDGET_ANDROID) && defined(NIGHTLY_BUILD) 2398 value: 3000 2399#else 2400 value: 0 2401#endif 2402 mirror: always 2403 2404# Is support for HTMLElement.autocapitalize enabled? 2405- name: dom.forms.autocapitalize 2406 type: bool 2407 value: @IS_NIGHTLY_BUILD@ 2408 mirror: always 2409 2410# Support for input type=datetime-local. 2411- name: dom.forms.datetime-local 2412 type: bool 2413 value: @IS_ANDROID@ 2414 mirror: always 2415 2416# Support for input type=datetime-local widget. Disabled for now. 2417- name: dom.forms.datetime-local.widget 2418 type: bool 2419 value: false 2420 mirror: always 2421 2422# Support for input type=month, type=week. By default, disabled. 2423- name: dom.forms.datetime.others 2424 type: bool 2425 value: @IS_ANDROID@ 2426 mirror: always 2427 2428# Is support for HTMLElement.enterKeyHint enabled? 2429- name: dom.forms.enterkeyhint 2430 type: bool 2431 value: @IS_NIGHTLY_BUILD@ 2432 mirror: always 2433 2434# Is support for HTMLElement.inputMode enabled? 2435- name: dom.forms.inputmode 2436 type: bool 2437#if defined(ANDROID) 2438 value: true 2439#else 2440 value: @IS_NOT_RELEASE_OR_BETA@ 2441#endif 2442 mirror: always 2443 2444# Enable Directory API. By default, disabled. 2445- name: dom.input.dirpicker 2446 type: bool 2447 value: false 2448 mirror: always 2449 2450# Whether to allow or disallow web apps to cancel `beforeinput` events caused 2451# by MozEditableElement#setUserInput() which is used by autocomplete, autofill 2452# and password manager. 2453- name: dom.input_event.allow_to_cancel_set_user_input 2454 type: bool 2455 value: false 2456 mirror: always 2457 2458# How long a content process can take before closing its IPC channel 2459# after shutdown is initiated. If the process exceeds the timeout, 2460# we fear the worst and kill it. 2461- name: dom.ipc.tabs.shutdownTimeoutSecs 2462 type: RelaxedAtomicUint32 2463#if !defined(DEBUG) && !defined(MOZ_ASAN) && !defined(MOZ_VALGRIND) && !defined(MOZ_TSAN) 2464 value: 20 2465#else 2466 value: 0 2467#endif 2468 mirror: always 2469 2470# Whether a native event loop should be used in the content process. 2471- name: dom.ipc.useNativeEventProcessing.content 2472 type: RelaxedAtomicBool 2473#if defined(XP_WIN) || defined(XP_MACOSX) 2474 value: false 2475#else 2476 value: true 2477#endif 2478 mirror: always 2479 2480# If this is true, TextEventDispatcher dispatches keydown and keyup events 2481# even during composition (keypress events are never fired during composition 2482# even if this is true). 2483- name: dom.keyboardevent.dispatch_during_composition 2484 type: bool 2485 value: true 2486 mirror: always 2487 2488# If this is true, keypress events for non-printable keys are dispatched only 2489# for event listeners of the system event group in web content. 2490- name: dom.keyboardevent.keypress.dispatch_non_printable_keys_only_system_group_in_content 2491 type: bool 2492 value: true 2493 mirror: always 2494 2495# If this is true, "keypress" event's keyCode value and charCode value always 2496# become same if the event is not created/initialized by JS. 2497- name: dom.keyboardevent.keypress.set_keycode_and_charcode_to_same_value 2498 type: bool 2499 value: true 2500 mirror: always 2501 2502# Whether the Large-Allocation header is enabled. 2503- name: dom.largeAllocationHeader.enabled 2504 type: bool 2505 value: true 2506 mirror: always 2507 2508- name: dom.largeAllocation.forceEnable 2509 type: bool 2510 value: false 2511 mirror: always 2512 2513# Whether "W3C Web Manifest" processing is enabled 2514- name: dom.manifest.enabled 2515 type: bool 2516 value: true 2517 mirror: always 2518 2519# Enable mapped array buffer by default. 2520- name: dom.mapped_arraybuffer.enabled 2521 type: bool 2522 value: true 2523 mirror: always 2524 2525# This pref is used to enable/disable the `document.autoplayPolicy` API which 2526# returns a enum string which presents current autoplay policy and can change 2527# overtime based on user session activity. 2528- name: dom.media.autoplay.autoplay-policy-api 2529 type: bool 2530 value: false 2531 mirror: always 2532 2533# Media Session API 2534- name: dom.media.mediasession.enabled 2535 type: bool 2536 value: true 2537 mirror: always 2538 2539# Number of seconds of very quiet or silent audio before considering the audio 2540# inaudible. 2541- name: dom.media.silence_duration_for_audibility 2542 type: AtomicFloat 2543 value: 2.0f 2544 mirror: always 2545 2546- name: dom.menuitem.enabled 2547 type: bool 2548 value: false 2549 mirror: always 2550 2551# Enable meta-viewport support in remote APZ-enabled frames. 2552- name: dom.meta-viewport.enabled 2553 type: RelaxedAtomicBool 2554 value: false 2555 mirror: always 2556 2557# Timeout clamp in ms for timeouts we clamp. 2558- name: dom.min_timeout_value 2559 type: RelaxedAtomicInt32 2560 value: 4 2561 mirror: always 2562 2563# Timeout clamp in ms for background windows. 2564- name: dom.min_background_timeout_value 2565 type: int32_t 2566 value: 1000 2567 mirror: always 2568 2569# Timeout clamp in ms for background windows when throttling isn't enabled. 2570- name: dom.min_background_timeout_value_without_budget_throttling 2571 type: int32_t 2572 value: 1000 2573 mirror: always 2574 2575# Are missing-property use counters for certain DOM attributes enabled? 2576- name: dom.missing_prop_counters.enabled 2577 type: bool 2578 value: true 2579 mirror: always 2580 2581# Is support for module scripts (<script type="module">) enabled for content? 2582- name: dom.moduleScripts.enabled 2583 type: bool 2584 value: true 2585 mirror: always 2586 2587# Whether we disable triggering mutation events for changes to style 2588# attribute via CSSOM. 2589# NOTE: This preference is used in unit tests. If it is removed or its default 2590# value changes, please update test_sharedMap_static_prefs.js accordingly. 2591- name: dom.mutation-events.cssom.disabled 2592 type: bool 2593 value: true 2594 mirror: always 2595 2596# Limit of location change caused by content scripts in a time span per 2597# BrowsingContext. This includes calls to History and Location APIs. 2598- name: dom.navigation.locationChangeRateLimit.count 2599 type: uint32_t 2600 value: 200 2601 mirror: always 2602 2603# Time span in seconds for location change rate limit. 2604- name: dom.navigation.locationChangeRateLimit.timespan 2605 type: uint32_t 2606 value: 10 2607 mirror: always 2608 2609# Network Information API 2610- name: dom.netinfo.enabled 2611 type: RelaxedAtomicBool 2612 value: @IS_ANDROID@ 2613 mirror: always 2614 2615# Whether we should open noopener links in a new process. 2616- name: dom.noopener.newprocess.enabled 2617 type: bool 2618 value: true 2619 mirror: always 2620 2621# Whether we shouldn't show an error page for unknown protocols (and should 2622# show a console warning instead). 2623- name: dom.no_unknown_protocol_error.enabled 2624 type: bool 2625 value: true 2626 mirror: always 2627 2628# Is support for Window.paintWorklet enabled? 2629- name: dom.paintWorklet.enabled 2630 type: bool 2631 value: false 2632 mirror: always 2633 2634# Enable/disable the PaymentRequest API 2635- name: dom.payments.request.enabled 2636 type: bool 2637 value: false 2638 mirror: always 2639 2640# Whether a user gesture is required to call PaymentRequest.prototype.show(). 2641- name: dom.payments.request.user_interaction_required 2642 type: bool 2643 value: true 2644 mirror: always 2645 2646# Time in milliseconds for PaymentResponse to wait for 2647# the Web page to call complete(). 2648- name: dom.payments.response.timeout 2649 type: uint32_t 2650 value: 5000 2651 mirror: always 2652 2653# Enable printing performance marks/measures to log 2654- name: dom.performance.enable_user_timing_logging 2655 type: RelaxedAtomicBool 2656 value: false 2657 mirror: always 2658 2659- name: dom.performance.children_results_ipc_timeout 2660 type: uint32_t 2661 value: 1000 2662 mirror: always 2663 2664# Enable notification of performance timing 2665- name: dom.performance.enable_notify_performance_timing 2666 type: bool 2667 value: false 2668 mirror: always 2669 2670# Is support for PerformanceTiming.timeToContentfulPaint enabled? 2671- name: dom.performance.time_to_contentful_paint.enabled 2672 type: bool 2673 value: false 2674 mirror: always 2675 2676# Is support for PerformanceTiming.timeToDOMContentFlushed enabled? 2677- name: dom.performance.time_to_dom_content_flushed.enabled 2678 type: bool 2679 value: false 2680 mirror: always 2681 2682# Is support for PerformanceTiming.timeToFirstInteractive enabled? 2683- name: dom.performance.time_to_first_interactive.enabled 2684 type: bool 2685 value: false 2686 mirror: always 2687 2688# Is support for PerformanceTiming.timeToNonBlankPaint enabled? 2689- name: dom.performance.time_to_non_blank_paint.enabled 2690 type: bool 2691 value: false 2692 mirror: always 2693 2694# Is support for Permissions.revoke enabled? 2695- name: dom.permissions.revoke.enable 2696 type: bool 2697 value: false 2698 mirror: always 2699 2700# Is support for Element.requestPointerLock enabled? 2701# This is added for accessibility purpose. When user has no way to exit 2702# pointer lock (e.g. no keyboard available), they can use this pref to 2703# disable the Pointer Lock API altogether. 2704- name: dom.pointer-lock.enabled 2705 type: bool 2706 value: true 2707 mirror: always 2708 2709# re-SAB: Whether to allow postMessage of a SharedArrayBuffer if various 2710# preconditions related to COOP and COEP are met 2711- name: dom.postMessage.sharedArrayBuffer.withCOOP_COEP 2712 type: bool 2713#if !defined(ANDROID) 2714 value: true 2715#else 2716 value: @IS_NIGHTLY_BUILD@ 2717#endif 2718 mirror: once 2719 2720# Overridden in all.js on RELEASE_OR_BETA in order to add the locked attribute. 2721- name: dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled 2722 type: RelaxedAtomicBool 2723 value: false 2724 mirror: always 2725 2726# This currently only affects XHTML. For XUL the cache is always allowed. 2727- name: dom.prototype_document_cache.enabled 2728 type: bool 2729 value: true 2730 mirror: always 2731 2732# Push 2733- name: dom.push.enabled 2734 type: RelaxedAtomicBool 2735 value: false 2736 mirror: always 2737 2738# Preference that is primarily used for testing of problematic file paths. 2739# It can also be used for switching between different storage directories, but 2740# such feature is not officially supported. 2741- name: dom.quotaManager.storageName 2742 type: String 2743 value: "storage" 2744 mirror: never 2745 2746# Should we try to load origin information from the cache? 2747# See bug 1563023 for more details. 2748- name: dom.quotaManager.loadQuotaFromCache 2749 type: RelaxedAtomicBool 2750 value: true 2751 mirror: always 2752 2753# Should we check build ID as part of the cache validation? 2754# When enabled, the cache is invalidated on any upgrade (or downgrade), 2755# ensuring that changes in how quota usage is calculated can't cause 2756# inconsistencies at the cost of a slower initialization. Currently, this 2757# should only be set to false in tests using a packaged profile that inherently 2758# includes a build id different from the building running the tests. In the 2759# future this may be set to false if we are confident that we have sufficiently 2760# thorough schema versioning. 2761- name: dom.quotaManager.caching.checkBuildId 2762 type: RelaxedAtomicBool 2763 value: true 2764 mirror: always 2765 2766# Preference that users can set to override temporary storage smart limit 2767# calculation. 2768- name: dom.quotaManager.temporaryStorage.fixedLimit 2769 type: RelaxedAtomicInt32 2770 value: -1 2771 mirror: always 2772 2773# Preference that users can set to override temporary storage smart limit 2774# calculation. 2775- name: dom.quotaManager.temporaryStorage.chunkSize 2776 type: RelaxedAtomicUint32 2777 value: 10 * 1024 2778 mirror: always 2779 2780# A pref that is used to enable testing features. 2781- name: dom.quotaManager.testing 2782 type: SequentiallyConsistentAtomicBool 2783 value: false 2784 mirror: always 2785 2786#ifdef XP_WIN 2787 # Preference that is used to set nsILocalFileWin::useDOSDevicePathSyntax 2788 # attribute for all local file instances created by QuotaManager and its 2789 # clients. The value of this preference is cached so changing the preference 2790 # during runtime has no effect. 2791 # See bug 1626846 for setting this to false by default. 2792- name: dom.quotaManager.useDOSDevicePathSyntax 2793 type: RelaxedAtomicBool 2794 value: true 2795 mirror: always 2796 do_not_use_directly: true 2797 2798 # Preference that is used to enable the hack for overrriding xFullPathname in 2799 # TelemetryVFS. 2800- name: dom.quotaManager.overrideXFullPathname 2801 type: RelaxedAtomicBool 2802 value: true 2803 mirror: always 2804#endif 2805 2806# How many times we should retry directory removal or renaming if access was 2807# denied? 2808- name: dom.quotaManager.directoryRemovalOrRenaming.maxRetries 2809 type: RelaxedAtomicUint32 2810#ifdef XP_WIN 2811 value: 10 2812#else 2813 value: 0 2814#endif 2815 mirror: always 2816 2817# How long we should wait between retries (in milliseconds)? 2818- name: dom.quotaManager.directoryRemovalOrRenaming.delayMs 2819 type: RelaxedAtomicUint32 2820 value: 200 2821 mirror: always 2822 2823# Reporting API. 2824- name: dom.reporting.enabled 2825 type: RelaxedAtomicBool 2826 value: @IS_NIGHTLY_BUILD@ 2827 mirror: always 2828 2829- name: dom.reporting.testing.enabled 2830 type: RelaxedAtomicBool 2831 value: false 2832 mirror: always 2833 2834- name: dom.reporting.featurePolicy.enabled 2835 type: RelaxedAtomicBool 2836 value: @IS_NIGHTLY_BUILD@ 2837 mirror: always 2838 2839- name: dom.reporting.crash.enabled 2840 type: RelaxedAtomicBool 2841 value: false 2842 mirror: always 2843 2844- name: dom.reporting.header.enabled 2845 type: RelaxedAtomicBool 2846 value: false 2847 mirror: always 2848 2849# In seconds. The timeout to remove not-active report-to endpoints. 2850- name: dom.reporting.cleanup.timeout 2851 type: uint32_t 2852 value: 3600 2853 mirror: always 2854 2855# Any X seconds the reports are dispatched to endpoints. 2856- name: dom.reporting.delivering.timeout 2857 type: uint32_t 2858 value: 5 2859 mirror: always 2860 2861# How many times the delivering of a report should be tried. 2862- name: dom.reporting.delivering.maxFailures 2863 type: uint32_t 2864 value: 3 2865 mirror: always 2866 2867# How many reports should be stored in the report queue before being delivered. 2868- name: dom.reporting.delivering.maxReports 2869 type: uint32_t 2870 value: 100 2871 mirror: always 2872 2873# Enable requestIdleCallback API 2874- name: dom.requestIdleCallback.enabled 2875 type: bool 2876 value: true 2877 mirror: always 2878 2879# Whether to enable the JavaScript start-up cache. This causes one of the first 2880# execution to record the bytecode of the JavaScript function used, and save it 2881# in the existing cache entry. On the following loads of the same script, the 2882# bytecode would be loaded from the cache instead of being generated once more. 2883- name: dom.script_loader.bytecode_cache.enabled 2884 type: bool 2885 value: true 2886 mirror: always 2887 2888# Ignore the heuristics of the bytecode cache, and always record on the first 2889# visit. (used for testing purposes). 2890 2891# Choose one strategy to use to decide when the bytecode should be encoded and 2892# saved. The following strategies are available right now: 2893# * -2 : (reader mode) The bytecode cache would be read, but it would never 2894# be saved. 2895# * -1 : (eager mode) The bytecode would be saved as soon as the script is 2896# seen for the first time, independently of the size or last access 2897# time. 2898# * 0 : (default) The bytecode would be saved in order to minimize the 2899# page-load time. 2900# 2901# Other values might lead to experimental strategies. For more details, have a 2902# look at: ScriptLoader::ShouldCacheBytecode function. 2903- name: dom.script_loader.bytecode_cache.strategy 2904 type: int32_t 2905 value: 0 2906 mirror: always 2907 2908# Force full parse on any external JS scripts that is being compiled off thread. 2909- name: dom.script_loader.full_parse 2910 type: bool 2911 value: false 2912 mirror: always 2913 2914# Is support for decoding external (non-inline) classic or module DOM scripts 2915# (i.e. anything but workers) as UTF-8, then directly compiling without 2916# inflating to UTF-16, enabled? 2917- name: dom.script_loader.external_scripts.utf8_parsing.enabled 2918 type: bool 2919 value: true 2920 mirror: always 2921 2922# Enable speculative off main thread parsing of external scripts as 2923# soon as they are fetched. 2924- name: dom.script_loader.external_scripts.speculative_omt_parse.enabled 2925 type: bool 2926 value: true 2927 mirror: always 2928 2929# Speculatively compile non parser inserted scripts 2930- name: dom.script_loader.external_scripts.speculate_non_parser_inserted.enabled 2931 type: bool 2932 value: false 2933 mirror: always 2934 2935# Speculatively compile async scripts 2936- name: dom.script_loader.external_scripts.speculate_async.enabled 2937 type: bool 2938 value: false 2939 mirror: always 2940 2941# Speculatively compile link preload scripts 2942- name: dom.script_loader.external_scripts.speculate_link_preload.enabled 2943 type: bool 2944 value: false 2945 mirror: always 2946 2947- name: dom.securecontext.whitelist_onions 2948 type: bool 2949 value: false 2950 mirror: always 2951 2952# This pref enables Sec-Fetch-* logic and causes corresponding 2953# request headers to be set. 2954- name: dom.security.secFetch.enabled 2955 type: RelaxedAtomicBool 2956 value: true 2957 mirror: always 2958 2959# This pref enables the featurePolicy header support. 2960- name: dom.security.featurePolicy.header.enabled 2961 type: bool 2962 value: false 2963 mirror: always 2964 2965- name: dom.security.featurePolicy.experimental.enabled 2966 type: bool 2967 value: false 2968 mirror: always 2969 2970# Expose the 'featurePolicy' attribute in document and HTMLIFrameElement 2971- name: dom.security.featurePolicy.webidl.enabled 2972 type: bool 2973 value: false 2974 mirror: always 2975 2976# Perform IPC based Principal vetting in ContentParent 2977- name: dom.security.enforceIPCBasedPrincipalVetting 2978 type: RelaxedAtomicBool 2979 value: true 2980 mirror: always 2981 2982# For testing purposes only: Flipping this pref to true allows 2983# to skip the allowlist for about: pages and do not ship with a 2984# CSP and NS_ASSERT right away. 2985- name: dom.security.skip_about_page_csp_allowlist_and_assert 2986 type: RelaxedAtomicBool 2987 value: false 2988 mirror: always 2989 2990# For testing purposes only: Flipping this pref to true allows 2991# to skip the assertion that every about page ships with a CSP. 2992- name: dom.security.skip_about_page_has_csp_assert 2993 type: RelaxedAtomicBool 2994 value: false 2995 mirror: always 2996 2997# For testing purposes only: Flipping this pref to true allows 2998# to skip the assertion that HTML fragments (e.g. innerHTML) can 2999# not be used within chrome code or about: pages. 3000- name: dom.security.skip_html_fragment_assertion 3001 type: RelaxedAtomicBool 3002 value: false 3003 mirror: always 3004 3005# For testing purposes only; Flipping this pref to true allows 3006# to skip the assertion that remote scripts can not be loaded 3007# in system privileged contexts. 3008- name: dom.security.skip_remote_script_assertion_in_system_priv_context 3009 type: RelaxedAtomicBool 3010 value: false 3011 mirror: always 3012 3013# If true, all content requests will get upgraded to HTTPS:// 3014# (some Firefox functionality requests, like OCSP will not be affected) 3015- name: dom.security.https_only_mode 3016 type: RelaxedAtomicBool 3017 value: false 3018 mirror: always 3019 3020# If true, all content requests in Private Browsing Mode will get 3021# upgraded to HTTPS://. (If dom.security.https_only_mode is set 3022# to true then this pref has no effect) 3023- name: dom.security.https_only_mode_pbm 3024 type: RelaxedAtomicBool 3025 value: false 3026 mirror: always 3027 3028# If true, sends http background request for top-level sites to 3029# counter long timeouts. 3030- name: dom.security.https_only_mode_send_http_background_request 3031 type: RelaxedAtomicBool 3032 value: true 3033 mirror: always 3034 3035# Time limit, in milliseconds, before sending the http background 3036# request for HTTPS-Only and HTTPS-First 3037- name: dom.security.https_only_fire_http_request_background_timer_ms 3038 type: RelaxedAtomicUint32 3039 value: 3000 3040 mirror: always 3041 3042# If true, tries to break upgrade downgrade cycles where https-only tries 3043# to upgrad ethe connection, but the website tries to downgrade again. 3044- name: dom.security.https_only_mode_break_upgrade_downgrade_endless_loop 3045 type: RelaxedAtomicBool 3046 value: true 3047 mirror: always 3048 3049# If true and HTTPS-only mode is enabled, requests 3050# to local IP addresses are also upgraded 3051- name: dom.security.https_only_mode.upgrade_local 3052 type: RelaxedAtomicBool 3053 value: false 3054 mirror: always 3055 3056# If true and HTTPS-only mode is enabled, requests 3057# to .onion hosts are also upgraded 3058- name: dom.security.https_only_mode.upgrade_onion 3059 type: RelaxedAtomicBool 3060 value: false 3061 mirror: always 3062 3063# WARNING: Don't ever update that pref manually! It is only used 3064# for telemetry purposes and allows to reason about retention of 3065# the pref dom.security.https_only_mode from above. 3066- name: dom.security.https_only_mode_ever_enabled 3067 type: RelaxedAtomicBool 3068 value: false 3069 mirror: always 3070 3071# WARNING: Don't ever update that pref manually! It is only used 3072# for telemetry purposes and allows to reason about retention of 3073# the pref dom.security.https_only_mode_pbm from above. 3074- name: dom.security.https_only_mode_ever_enabled_pbm 3075 type: RelaxedAtomicBool 3076 value: false 3077 mirror: always 3078 3079# If true checks for secure www connections when https fails 3080# and gives the user suggestions on the error page 3081- name: dom.security.https_only_mode_error_page_user_suggestions 3082 type: RelaxedAtomicBool 3083 value: false 3084 mirror: always 3085 3086# If true, top-level request will get upgraded to HTTPS and 3087# downgraded again if the request failed. 3088- name: dom.security.https_first 3089 type: RelaxedAtomicBool 3090 value: false 3091 mirror: always 3092 3093# If true, top-level requests in Private Browsing Mode will get 3094# upgraded to HTTPS. (If dom.security.https_first 3095# is set to true then this pref has no effect) 3096- name: dom.security.https_first_pbm 3097 type: RelaxedAtomicBool 3098 value: true 3099 mirror: always 3100 3101- name: dom.security.unexpected_system_load_telemetry_enabled 3102 type: bool 3103 value: true 3104 mirror: always 3105 3106# pref controls `Sanitizer` API being exposed 3107- name: dom.security.sanitizer.enabled 3108 type: bool 3109 value: false 3110 mirror: always 3111 3112# Whether or not selection events on text controls are enabled. 3113- name: dom.select_events.textcontrols.enabled 3114 type: bool 3115 value: @IS_NIGHTLY_BUILD@ 3116 mirror: always 3117 3118- name: dom.separate_event_queue_for_post_message.enabled 3119 type: bool 3120 value: true 3121 mirror: always 3122 3123- name: dom.arena_allocator.enabled 3124 type: bool 3125 value: true 3126 mirror: once 3127 3128- name: dom.serviceWorkers.enabled 3129 type: RelaxedAtomicBool 3130 value: false 3131 mirror: always 3132 3133- name: dom.serviceWorkers.navigationPreload.enabled 3134 type: RelaxedAtomicBool 3135 value: false 3136 mirror: always 3137 3138# Mitigates ServiceWorker navigation faults by bypassing the ServiceWorker on 3139# navigation faults. This is more extensive than just resetting interception 3140# because we also mark the page as uncontrolled so that subresources will not 3141# go to the ServiceWorker either. 3142- name: dom.serviceWorkers.mitigations.bypass_on_fault 3143 type: bool 3144 value: true 3145 mirror: always 3146 3147# Additional ServiceWorker navigation mitigation control to unregister the 3148# ServiceWorker after multiple faults are encountered. The mitigation is 3149# disabled when this is set to zero, otherwise this is the number of faults that 3150# need to occur for a specific ServiceWorker before it will be unregistered. 3151- name: dom.serviceWorkers.mitigations.navigation_fault_threshold 3152 type: uint32_t 3153 value: 3 3154 mirror: always 3155 3156- name: dom.serviceWorkers.testing.enabled 3157 type: RelaxedAtomicBool 3158 value: false 3159 mirror: always 3160 3161- name: dom.workers.serialized-sab-access 3162 type: RelaxedAtomicBool 3163 value: false 3164 mirror: always 3165 3166# Whether automatic storage access granting heuristics should be turned on. 3167- name: dom.storage_access.auto_grants 3168 type: bool 3169 value: true 3170 mirror: always 3171 3172- name: dom.storage_access.auto_grants.delayed 3173 type: bool 3174 value: true 3175 mirror: always 3176 3177# Storage-access API. 3178- name: dom.storage_access.enabled 3179 type: bool 3180 value: false 3181 mirror: always 3182 3183# The maximum number of origins that a given third-party tracker is allowed 3184# to have concurrent access to before the user is presented with a storage 3185# access prompt. Only effective when the auto_grants pref is turned on. 3186- name: dom.storage_access.max_concurrent_auto_grants 3187 type: int32_t 3188 value: 5 3189 mirror: always 3190 3191# Enable Storage API for all platforms except Android. 3192- name: dom.storageManager.enabled 3193 type: RelaxedAtomicBool 3194 value: @IS_NOT_ANDROID@ 3195 mirror: always 3196 3197# Should we abort LocalStorage requests when a sync message from parent is 3198# detected? 3199# 3200# LocalStorage is a synchronous API involving sync IPC from the child to the 3201# parent. Accessibility interfaces currently also involve different forms of 3202# synchronous parent-to-child communication. (See bug 1516136 comment 11 and 3203# comment 15.) Although LocalStorage NextGen no longer needs to consult the 3204# main thread, thereby eliminating the possibility of deadlock, the browser is 3205# very complex and so we have retained a fail-safe mechanism that will cause 3206# blocking LocalStorage operations to abort on synchronous IPC from the parent 3207# to the child. 3208# 3209# We are disabling this fail-safe mechanism because it is fundamentally visible 3210# to content when activated. When we abort the synchronous LocalStorage 3211# operation we throw an error which has the potential to break web content. 3212# This is not a hypothetical. In bug 1574569 content broke due to accessibility 3213# path aborting the LS call, but the LS call didn't need to abort because it 3214# was not at risk of deadlock. 3215# 3216# But we are retaining the preference in the event that regressions occur 3217# anywhere in the code-base that could cause a cascade that would result in 3218# deadlock. (There have been logic bugs in components that resulted in 3219# PBackground synchronously blocking in a way that could result in deadlock.) 3220# This allows us to re-enable the fail-safe with only a pref flip. 3221- name: dom.storage.abort_on_sync_parent_to_child_messages 3222 type: bool 3223 value: false 3224 mirror: always 3225 3226# LocalStorage data limit as determined by summing up the lengths of all string 3227# keys and values. This is consistent with the legacy implementation and other 3228# browser engines. This value should really only ever change in unit testing 3229# where being able to lower it makes it easier for us to test certain edge 3230# cases. Measured in KiBs. 3231- name: dom.storage.default_quota 3232 type: RelaxedAtomicUint32 3233 # Only allow relatively small amounts of data since performance of the 3234 # synchronous IO is very bad. We are enforcing simple per-origin quota only. 3235 value: 5 * 1024 3236 mirror: always 3237 3238# Per-site quota for legacy LocalStorage implementation. 3239- name: dom.storage.default_site_quota 3240 type: RelaxedAtomicUint32 3241 value: 25 * 1024 3242 mirror: always 3243 3244# Whether or not LSNG (Next Generation Local Storage) is enabled. 3245# See bug 1517090 for enabling this on Nightly. 3246# See bug 1534736 for changing it to EARLY_BETA_OR_EARLIER. 3247# See bug 1539835 for enabling this unconditionally. 3248# See bug 1619948 for changing it back to EARLY_BETA_OR_EARLIER. 3249- name: dom.storage.next_gen 3250 type: RelaxedAtomicBool 3251 value: @IS_EARLY_BETA_OR_EARLIER@ 3252 mirror: always 3253 do_not_use_directly: true 3254 3255# Is support for Storage test APIs enabled? 3256- name: dom.storage.testing 3257 type: bool 3258 value: false 3259 mirror: always 3260 3261# For area and anchor elements with target=_blank and no rel set to 3262# opener/noopener. 3263- name: dom.targetBlankNoOpener.enabled 3264 type: bool 3265 value: true 3266 mirror: always 3267 3268# Is support for Selection.GetRangesForInterval enabled? 3269- name: dom.testing.selection.GetRangesForInterval 3270 type: bool 3271 value: false 3272 mirror: always 3273 3274- name: dom.testing.structuredclonetester.enabled 3275 type: RelaxedAtomicBool 3276 value: false 3277 mirror: always 3278 3279- name: dom.testing.sync-content-blocking-notifications 3280 type: bool 3281 value: false 3282 mirror: always 3283 3284- name: dom.textMetrics.actualBoundingBox.enabled 3285 type: bool 3286 value: true 3287 mirror: always 3288 3289- name: dom.textMetrics.baselines.enabled 3290 type: bool 3291 value: false 3292 mirror: always 3293 3294- name: dom.textMetrics.emHeight.enabled 3295 type: bool 3296 value: false 3297 mirror: always 3298 3299- name: dom.textMetrics.fontBoundingBox.enabled 3300 type: bool 3301 value: false 3302 mirror: always 3303 3304# Time (in ms) that it takes to regenerate 1ms. 3305- name: dom.timeout.background_budget_regeneration_rate 3306 type: int32_t 3307 value: 100 3308 mirror: always 3309 3310# Time (in ms) that it takes to regenerate 1ms. 3311- name: dom.timeout.foreground_budget_regeneration_rate 3312 type: int32_t 3313 value: 1 3314 mirror: always 3315 3316# Maximum value (in ms) for the background budget. Only valid for 3317# values greater than 0. 3318- name: dom.timeout.background_throttling_max_budget 3319 type: int32_t 3320 value: 50 3321 mirror: always 3322 3323# Maximum value (in ms) for the foreground budget. Only valid for 3324# values greater than 0. 3325- name: dom.timeout.foreground_throttling_max_budget 3326 type: int32_t 3327 value: -1 3328 mirror: always 3329 3330# The maximum amount a timeout can be delayed by budget throttling. 3331- name: dom.timeout.budget_throttling_max_delay 3332 type: int32_t 3333 value: 15000 3334 mirror: always 3335 3336# Turn on budget throttling by default. 3337- name: dom.timeout.enable_budget_timer_throttling 3338 type: bool 3339 value: true 3340 mirror: always 3341 3342# Should we defer timeouts and intervals while loading a page. Released 3343# on Idle or when the page is loaded. 3344- name: dom.timeout.defer_during_load 3345 type: bool 3346 value: true 3347 mirror: always 3348 3349# Maximum amount of time in milliseconds consecutive setTimeout()/setInterval() 3350# callback are allowed to run before yielding the event loop. 3351- name: dom.timeout.max_consecutive_callbacks_ms 3352 type: uint32_t 3353 value: 4 3354 mirror: always 3355 3356# Maximum deferral time for setTimeout/Interval in milliseconds 3357- name: dom.timeout.max_idle_defer_ms 3358 type: uint32_t 3359 value: 10*1000 3360 mirror: always 3361 3362# Delay in ms from document load until we start throttling background timeouts. 3363- name: dom.timeout.throttling_delay 3364 type: int32_t 3365 value: 30000 3366 mirror: always 3367 3368# UDPSocket API 3369- name: dom.udpsocket.enabled 3370 type: bool 3371 value: false 3372 mirror: always 3373 3374# Time limit, in milliseconds, for user gesture transient activation. 3375- name: dom.user_activation.transient.timeout 3376 type: uint32_t 3377 value: 5000 3378 mirror: always 3379 3380# Whether to shim a Components object on untrusted windows. 3381- name: dom.use_components_shim 3382 type: bool 3383 value: @IS_NOT_NIGHTLY_BUILD@ 3384 mirror: always 3385 3386- name: dom.vibrator.enabled 3387 type: bool 3388 value: true 3389 mirror: always 3390 3391- name: dom.vibrator.max_vibrate_ms 3392 type: RelaxedAtomicUint32 3393 value: 10000 3394 mirror: always 3395 3396- name: dom.vibrator.max_vibrate_list_len 3397 type: RelaxedAtomicUint32 3398 value: 128 3399 mirror: always 3400 3401# Is support for Window.visualViewport enabled? 3402- name: dom.visualviewport.enabled 3403 type: bool 3404 value: true 3405 mirror: always 3406 3407# Is support for WebVR APIs enabled? 3408# Disabled everywhere, but not removed. 3409- name: dom.vr.enabled 3410 type: RelaxedAtomicBool 3411 value: false 3412 mirror: always 3413 3414# Should VR sessions always be reported as supported, without first 3415# checking for VR runtimes? This will prevent permission prompts 3416# from being suppressed on machines without VR runtimes and cause 3417# navigatior.xr.isSessionSupported to always report that immersive-vr 3418# is supported. 3419- name: dom.vr.always_support_vr 3420 type: RelaxedAtomicBool 3421 value: false 3422 mirror: always 3423 3424# Should AR sessions always be reported as supported, without first 3425# checking for AR runtimes? This will prevent permission prompts 3426# from being suppressed on machines without AR runtimes and cause 3427# navigatior.xr.isSessionSupported to always report that immersive-ar 3428# is supported. 3429- name: dom.vr.always_support_ar 3430 type: RelaxedAtomicBool 3431 value: false 3432 mirror: always 3433 3434# It is often desirable to automatically start vr presentation when 3435# a user puts on the VR headset. This is done by emitting the 3436# Window.vrdisplayactivate event when the headset's sensors detect it 3437# being worn. This can result in WebVR content taking over the headset 3438# when the user is using it outside the browser or inadvertent start of 3439# presentation due to the high sensitivity of the proximity sensor in some 3440# headsets, so it is off by default. 3441- name: dom.vr.autoactivate.enabled 3442 type: RelaxedAtomicBool 3443 value: false 3444 mirror: always 3445 3446# Minimum number of milliseconds that the browser will wait before 3447# attempting to poll again for connected VR controllers. The browser 3448# will not attempt to poll for VR controllers until it needs to use them. 3449- name: dom.vr.controller.enumerate.interval 3450 type: RelaxedAtomicInt32 3451 value: 1000 3452 mirror: always 3453 3454# The threshold value of trigger inputs for VR controllers. 3455- name: dom.vr.controller_trigger_threshold 3456 type: AtomicFloat 3457 value: 0.1f 3458 mirror: always 3459 3460# Minimum number of milliseconds that the browser will wait before 3461# attempting to poll again for connected VR displays. The browser 3462# will not attempt to poll for VR displays until it needs to use 3463# them, such as when detecting a WebVR site. 3464- name: dom.vr.display.enumerate.interval 3465 type: RelaxedAtomicInt32 3466 value: 5000 3467 mirror: always 3468 3469# The number of milliseconds since last frame start before triggering a new 3470# frame. When content is failing to submit frames on time or the lower level 3471# VR platform APIs are rejecting frames, it determines the rate at which RAF 3472# callbacks will be called. 3473- name: dom.vr.display.rafMaxDuration 3474 type: RelaxedAtomicUint32 3475 value: 50 3476 mirror: always 3477 3478# Minimum number of milliseconds the browser will wait before attempting 3479# to re-start the VR service after an enumeration returned no devices. 3480- name: dom.vr.external.notdetected.timeout 3481 type: RelaxedAtomicInt32 3482 value: 60000 3483 mirror: always 3484 3485# Minimum number of milliseconds the browser will wait before attempting 3486# to re-start the VR service after a VR API (eg, OpenVR or Oculus) 3487# requests that we shutdown and unload its libraries. 3488# To ensure that we don't interfere with VR runtime software auto-updates, 3489# we will not attempt to re-load the service until this timeout has elapsed. 3490- name: dom.vr.external.quit.timeout 3491 type: RelaxedAtomicInt32 3492 value: 10000 3493 mirror: always 3494 3495# Minimum number of milliseconds that the VR session will be kept 3496# alive after the browser and content no longer are using the 3497# hardware. If a VR multitasking environment, this should be set 3498# very low or set to 0. 3499- name: dom.vr.inactive.timeout 3500 type: RelaxedAtomicInt32 3501 value: 5000 3502 mirror: always 3503 3504# Maximum number of milliseconds the browser will wait for content to call 3505# VRDisplay.requestPresent after emitting vrdisplayactivate during VR 3506# link traversal. This prevents a long running event handler for 3507# vrdisplayactivate from later calling VRDisplay.requestPresent, which would 3508# result in a non-responsive browser in the VR headset. 3509- name: dom.vr.navigation.timeout 3510 type: RelaxedAtomicInt32 3511 value: 5000 3512 mirror: always 3513 3514# Oculus device 3515- name: dom.vr.oculus.enabled 3516 type: RelaxedAtomicBool 3517#if defined(HAVE_64BIT_BUILD) && !defined(ANDROID) 3518 # We are only enabling WebVR by default on 64-bit builds (Bug 1384459). 3519 value: true 3520#else 3521 # On Android, this pref is irrelevant. 3522 value: false 3523#endif 3524 mirror: always 3525 3526# When enabled, Oculus sessions may be created with the ovrInit_Invisible 3527# flag if a page is using tracking but not presenting. When a page 3528# begins presenting VR frames, the session will be re-initialized without 3529# the flag. This eliminates the "Firefox not responding" warnings in 3530# the headset, but might not be compatible with all versions of the Oculus 3531# runtime. 3532- name: dom.vr.oculus.invisible.enabled 3533 type: RelaxedAtomicBool 3534 value: true 3535 mirror: always 3536 3537# Minimum number of milliseconds after content has stopped VR presentation 3538# before the Oculus session is re-initialized to an invisible / tracking 3539# only mode. If this value is too high, users will need to wait longer 3540# after stopping WebVR presentation before automatically returning to the 3541# Oculus home interface. (They can immediately return to the Oculus Home 3542# interface through the Oculus HUD without waiting this duration) 3543# If this value is too low, the Oculus Home interface may be visible 3544# momentarily during VR link navigation. 3545- name: dom.vr.oculus.present.timeout 3546 type: RelaxedAtomicInt32 3547 value: 500 3548 mirror: always 3549 3550# OpenVR device 3551- name: dom.vr.openvr.enabled 3552 type: RelaxedAtomicBool 3553#if !defined(HAVE_64BIT_BUILD) && !defined(ANDROID) 3554 # We are only enabling WebVR by default on 64-bit builds (Bug 1384459). 3555 value: false 3556#elif defined(XP_WIN) || defined(XP_MACOSX) 3557 # We enable OpenVR by default for Windows and macOS. 3558 value: true 3559#else 3560 # See Bug 1310663 (Linux). On Android, this pref is irrelevant. 3561 value: false 3562#endif 3563 mirror: always 3564 3565# OSVR device 3566- name: dom.vr.osvr.enabled 3567 type: RelaxedAtomicBool 3568 value: false 3569 mirror: always 3570 3571# Pose prediction reduces latency effects by returning future predicted HMD 3572# poses to callers of the WebVR API. This currently only has an effect for 3573# Oculus Rift on SDK 0.8 or greater. 3574- name: dom.vr.poseprediction.enabled 3575 type: RelaxedAtomicBool 3576 value: true 3577 mirror: always 3578 3579# Enable a separate process for VR module. 3580- name: dom.vr.process.enabled 3581 type: bool 3582#if defined(XP_WIN) 3583 value: true 3584#else 3585 value: false 3586#endif 3587 mirror: once 3588 3589- name: dom.vr.process.startup_timeout_ms 3590 type: int32_t 3591 value: 5000 3592 mirror: once 3593 3594# Puppet device, used for simulating VR hardware within tests and dev tools. 3595- name: dom.vr.puppet.enabled 3596 type: RelaxedAtomicBool 3597 value: false 3598 mirror: always 3599 3600# Starting VR presentation is only allowed within a user gesture or event such 3601# as VRDisplayActivate triggered by the system. dom.vr.require-gesture allows 3602# this requirement to be disabled for special cases such as during automated 3603# tests or in a headless kiosk system. 3604- name: dom.vr.require-gesture 3605 type: RelaxedAtomicBool 3606 value: true 3607 mirror: always 3608 3609# Is support for WebXR APIs enabled? 3610- name: dom.vr.webxr.enabled 3611 type: RelaxedAtomicBool 3612 value: false 3613 mirror: always 3614 3615#ifdef XP_WIN 3616 # Control firing WidgetMouseEvent by handling Windows pointer messages or 3617 # mouse messages. 3618- name: dom.w3c_pointer_events.dispatch_by_pointer_messages 3619 type: bool 3620 value: @IS_NIGHTLY_BUILD@ 3621 mirror: always 3622 3623- name: dom.w3c_pointer_events.scroll_by_pen.enabled 3624 type: bool 3625 value: true 3626 mirror: always 3627#endif 3628 3629# If the value is >= 0, it will be used for max touch points in child processes. 3630- name: dom.maxtouchpoints.testing.value 3631 type: int32_t 3632 value: -1 3633 mirror: always 3634 3635# W3C pointer events draft. 3636- name: dom.w3c_pointer_events.implicit_capture 3637 type: bool 3638 value: true 3639 mirror: always 3640 3641# In case Touch API is enabled, this pref controls whether to support 3642# ontouch* event handlers, document.createTouch, document.createTouchList and 3643# document.createEvent("TouchEvent"). 3644- name: dom.w3c_touch_events.legacy_apis.enabled 3645 type: bool 3646 value: @IS_ANDROID@ 3647 mirror: always 3648 3649# W3C touch events 3650# 0 - disabled, 1 - enabled, 2 - autodetect 3651# Autodetection is currently only supported on Windows and GTK3 (and assumed on 3652# Android). 3653- name: dom.w3c_touch_events.enabled 3654 type: int32_t 3655#if defined(XP_MACOSX) 3656 value: 0 3657#else 3658 value: 2 3659#endif 3660 mirror: always 3661 3662# Is support for the Web Audio API enabled? 3663- name: dom.webaudio.enabled 3664 type: bool 3665 value: true 3666 mirror: always 3667 3668- name: dom.webkitBlink.dirPicker.enabled 3669 type: RelaxedAtomicBool 3670 value: @IS_NOT_ANDROID@ 3671 mirror: always 3672 3673# NOTE: This preference is used in unit tests. If it is removed or its default 3674# value changes, please update test_sharedMap_static_prefs.js accordingly. 3675- name: dom.webcomponents.shadowdom.report_usage 3676 type: bool 3677 value: false 3678 mirror: always 3679 3680# Is support for form-associated custom element enabled? 3681- name: dom.webcomponents.formAssociatedCustomElement.enabled 3682 type: bool 3683 value: @IS_NIGHTLY_BUILD@ 3684 mirror: always 3685 3686# Is support for the Web GPU API enabled? 3687- name: dom.webgpu.enabled 3688 type: RelaxedAtomicBool 3689 value: false 3690 mirror: always 3691 3692# Is support for HTMLInputElement.webkitEntries enabled? 3693- name: dom.webkitBlink.filesystem.enabled 3694 type: bool 3695 value: @IS_NOT_ANDROID@ 3696 mirror: always 3697 3698# Whether the WebMIDI API is enabled 3699- name: dom.webmidi.enabled 3700 type: bool 3701 value: false 3702 mirror: always 3703 3704- name: dom.webnotifications.allowinsecure 3705 type: RelaxedAtomicBool 3706 value: false 3707 mirror: always 3708 3709- name: dom.webnotifications.allowcrossoriginiframe 3710 type: RelaxedAtomicBool 3711 value: false 3712 mirror: always 3713 3714- name: dom.webnotifications.enabled 3715 type: RelaxedAtomicBool 3716 value: true 3717 mirror: always 3718 3719- name: dom.webnotifications.requireuserinteraction 3720 type: RelaxedAtomicBool 3721 value: true 3722 mirror: always 3723 3724- name: dom.webnotifications.requireinteraction.enabled 3725 type: RelaxedAtomicBool 3726 value: @IS_NIGHTLY_BUILD@ 3727 mirror: always 3728 3729- name: dom.webnotifications.silent.enabled 3730 type: RelaxedAtomicBool 3731#if defined(MOZ_WIDGET_ANDROID) 3732 value: @IS_NIGHTLY_BUILD@ 3733#else 3734 value: false 3735#endif 3736 mirror: always 3737 3738- name: dom.webnotifications.vibrate.enabled 3739 type: RelaxedAtomicBool 3740#if defined(MOZ_WIDGET_ANDROID) 3741 value: @IS_NIGHTLY_BUILD@ 3742#else 3743 value: false 3744#endif 3745 mirror: always 3746 3747- name: dom.webnotifications.serviceworker.enabled 3748 type: RelaxedAtomicBool 3749 value: true 3750 mirror: always 3751 3752# Is support for Window.event enabled? 3753- name: dom.window.event.enabled 3754 type: bool 3755 value: true 3756 mirror: always 3757 3758- name: dom.window.history.async 3759 type: bool 3760 value: true 3761 mirror: always 3762 3763# Enable the "noreferrer" feature argument for window.open() 3764- name: dom.window.open.noreferrer.enabled 3765 type: bool 3766 value: true 3767 mirror: always 3768 3769- name: dom.window.content.untrusted.enabled 3770 type: bool 3771 value: @IS_NOT_EARLY_BETA_OR_EARLIER@ 3772 mirror: always 3773 3774- name: dom.window.clientinformation.enabled 3775 type: bool 3776 value: true 3777 mirror: always 3778 3779- name: dom.window.sidebar.enabled 3780 type: bool 3781 value: @IS_NOT_EARLY_BETA_OR_EARLIER@ 3782 mirror: always 3783 3784- name: dom.worker.canceling.timeoutMilliseconds 3785 type: RelaxedAtomicUint32 3786 value: 30000 # 30 seconds 3787 mirror: always 3788 3789# Is support for compiling DOM worker scripts directly from UTF-8 (without ever 3790# inflating to UTF-16) enabled? 3791- name: dom.worker.script_loader.utf8_parsing.enabled 3792 type: RelaxedAtomicBool 3793 value: true 3794 mirror: always 3795 3796- name: dom.worker.use_medium_high_event_queue 3797 type: RelaxedAtomicBool 3798 value: true 3799 mirror: always 3800 3801# Enables the dispatching of console log events from worker threads to the 3802# main-thread. 3803- name: dom.worker.console.dispatch_events_to_main_thread 3804 type: RelaxedAtomicBool 3805 value: true 3806 mirror: always 3807 3808- name: dom.workers.testing.enabled 3809 type: RelaxedAtomicBool 3810 value: false 3811 mirror: always 3812 3813- name: dom.worklet.enabled 3814 type: bool 3815 value: true 3816 mirror: always 3817 3818# Enable content type normalization of XHR uploads via MIME Sniffing standard 3819- name: dom.xhr.standard_content_type_normalization 3820 type: RelaxedAtomicBool 3821 value: true 3822 mirror: always 3823 3824# When this pref is set, parent documents may consider child iframes have 3825# loaded while they are still loading. 3826- name: dom.cross_origin_iframes_loaded_in_background 3827 type: bool 3828 value: false 3829 mirror: always 3830 3831# WebIDL test prefs. 3832- name: dom.webidl.test1 3833 type: bool 3834 value: true 3835 mirror: always 3836- name: dom.webidl.test2 3837 type: bool 3838 value: true 3839 mirror: always 3840 3841- name: dom.webidl.crosscontext_hasinstance.enabled 3842 type: RelaxedAtomicBool 3843 value: @IS_NOT_NIGHTLY_BUILD@ 3844 mirror: always 3845 3846# WebShare API - exposes navigator.share() 3847- name: dom.webshare.enabled 3848 type: bool 3849 value: false 3850 mirror: always 3851 3852# WebShare API - allows WebShare without user interaction (for tests only). 3853- name: dom.webshare.requireinteraction 3854 type: bool 3855 value: true 3856 mirror: always 3857 3858# about:home and about:newtab include remote snippets that contain arbitrarily 3859# placed anchor tags in their content; we want sanitization to be turned off 3860# in order to render them correctly 3861- name: dom.about_newtab_sanitization.enabled 3862 type: bool 3863 value: false 3864 mirror: always 3865 3866# Hide the confirm dialog when a POST request is reloaded. 3867- name: dom.confirm_repost.testing.always_accept 3868 type: bool 3869 value: false 3870 mirror: always 3871 3872# Whether we should suspend inactive tabs or not 3873- name: dom.suspend_inactive.enabled 3874 type: bool 3875 value: @IS_ANDROID@ 3876 mirror: always 3877 3878# The following three prefs control the maximum script run time before slow 3879# script warning. 3880 3881# Controls the time that a content script can run before showing a 3882# notification. 3883- name: dom.max_script_run_time 3884 type: int32_t 3885 value: 10 3886 mirror: always 3887 3888# Controls whether we want to wait for user input before surfacing notifying 3889# the parent process about a long-running script. 3890- name: dom.max_script_run_time.require_critical_input 3891 type: bool 3892# On desktop, we don't want to annoy the user with a notification if they're 3893# not interacting with the browser. On Android however, we automatically 3894# terminate long-running scripts, so we want to make sure we don't get in the 3895# way of that by waiting for input. 3896#if defined(MOZ_WIDGET_ANDROID) 3897 value: false 3898#else 3899 value: true 3900#endif 3901 mirror: always 3902 3903- name: dom.max_chrome_script_run_time 3904 type: int32_t 3905 value: 0 3906 mirror: always 3907 3908- name: dom.max_ext_content_script_run_time 3909 type: int32_t 3910 value: 5 3911 mirror: always 3912 3913#--------------------------------------------------------------------------- 3914# Prefs starting with "editor" 3915#--------------------------------------------------------------------------- 3916 3917# Allow or disallow to delete `<hr>` element when caret is at start of 3918# following line of the element. If false, Backspace from start of following 3919# line of an `<hr>` element causes moving caret to immediatly after the `<hr>` 3920# element, and then, another Backspace can delete it. 3921- name: editor.hr_element.allow_to_delete_from_following_line 3922 type: bool 3923 value: false 3924 mirror: always 3925 3926# Delay to mask last input character in password fields. 3927# If negative value, to use platform's default behavior. 3928# If 0, no delay to mask password. 3929# Otherwise, password fields unmask last input character(s) during specified 3930# time (in milliseconds). 3931- name: editor.password.mask_delay 3932 type: int32_t 3933 value: -1 3934 mirror: always 3935 3936# Set to true when you test mask_delay of password editor. If this is set 3937# to true, "MozLastInputMasked" is fired when last input characters are 3938# masked by timeout. 3939- name: editor.password.testing.mask_delay 3940 type: bool 3941 value: false 3942 mirror: always 3943 3944# General prefs for editor, indicating whether Gecko-specific editing UI is 3945# enabled by default. Those UIs are not implemented by any other browsers. So, 3946# only Firefox users can change some styles with them. This means that Firefox 3947# users may get unexpected result of some web apps if they assume that users 3948# cannot change such styles. 3949- name: editor.resizing.enabled_by_default 3950 type: bool 3951 value: false 3952 mirror: always 3953- name: editor.inline_table_editing.enabled_by_default 3954 type: bool 3955 value: false 3956 mirror: always 3957- name: editor.positioning.enabled_by_default 3958 type: bool 3959 value: false 3960 mirror: always 3961 3962# Whether user pastes should be truncated. 3963- name: editor.truncate_user_pastes 3964 type: bool 3965 value: true 3966 mirror: always 3967 3968# How line breakers are treated in single line editor: 3969# * 0: Only remove the leading and trailing newlines. 3970# * 1: Remove the first newline and all characters following it. 3971# * 2: Replace newlines with spaces (default of Firefox). 3972# * 3: Remove newlines from the string. 3973# * 4: Replace newlines with commas (default of Thunderbird). 3974# * 5: Collapse newlines and surrounding white space characters and 3975# remove them from the string. 3976# Other values are treated as 1. 3977- name: editor.singleLine.pasteNewlines 3978 type: int32_t 3979 value: 2 3980 mirror: always 3981 3982# Whether enabling blink compatible white-space normalizer or keep using 3983# Gecko's traditional white-space normalizer. 3984- name: editor.white_space_normalization.blink_compatible 3985 type: bool 3986 value: false 3987 mirror: always 3988 3989#--------------------------------------------------------------------------- 3990# Prefs starting with "extensions." 3991#--------------------------------------------------------------------------- 3992 3993# Whether the background.service_worker in the extension manifest.json file 3994# is enabled. 3995- name: extensions.backgroundServiceWorker.enabled 3996 type: bool 3997 value: false 3998 mirror: once 3999 4000# Whether the extensions can register a service worker on its own. 4001# NOTE: WebExtensions Framework ability to register a background service worker 4002# is not controlled by this pref, only the extension code ability to use 4003# navigator.serviceWorker.register is locked behind this pref. 4004- name: extensions.serviceWorkerRegister.allowed 4005 type: bool 4006 value: false 4007 mirror: always 4008 4009# This pref governs whether we run webextensions in a separate process (true) 4010# or the parent/main process (false) 4011- name: extensions.webextensions.remote 4012 type: RelaxedAtomicBool 4013 value: false 4014 mirror: always 4015 4016# Whether to expose the MockExtensionAPI test interface in tests. 4017# The interface MockExtensionAPI doesn't represent a real extension API, 4018# it is only available in test and does include a series of cases useful 4019# to test the API request handling without tying the unit test to a 4020# specific WebExtensions API. 4021- name: extensions.webidl-api.expose_mock_interface 4022 type: RelaxedAtomicBool 4023 value: false 4024 mirror: always 4025 4026#--------------------------------------------------------------------------- 4027# Prefs starting with "findbar." 4028#--------------------------------------------------------------------------- 4029 4030- name: findbar.modalHighlight 4031 type: bool 4032 value: false 4033 mirror: always 4034 4035#--------------------------------------------------------------------------- 4036# Prefs starting with "fission." 4037#--------------------------------------------------------------------------- 4038 4039# Whether to enable Fission in new windows by default. 4040# IMPORTANT: This preference should *never* be checked directly, since any 4041# session can contain a mix of Fission and non-Fission windows. Instead, 4042# callers should check whether the relevant nsILoadContext has the 4043# `useRemoteSubframes` flag set. 4044# Callers which cannot use `useRemoteSubframes` must use 4045# `Services.appinfo.fissionAutostart` or `mozilla::FissionAutostart()` to check 4046# if fission is enabled by default. 4047- name: fission.autostart 4048 type: bool 4049 value: false 4050 mirror: never 4051 4052# Prefs used by normandy to orchestrate the fission experiment. For more 4053# details, see the comments in nsAppRunner.cpp. 4054- name: fission.experiment.enrollmentStatus 4055 type: uint32_t 4056 value: 0 4057 mirror: never 4058 4059- name: fission.experiment.startupEnrollmentStatus 4060 type: uint32_t 4061 value: 0 4062 mirror: never 4063 4064# This pref has no effect within fission windows, it only controls the 4065# behaviour within non-fission windows. If true, preserve browsing contexts 4066# between process swaps. 4067- name: fission.preserve_browsing_contexts 4068 type: bool 4069 value: true 4070 mirror: always 4071 4072# Store the session history in the parent process, and access it over IPC 4073# from the child processes. 4074- name: fission.sessionHistoryInParent 4075 type: bool 4076 value: false 4077 mirror: once 4078 do_not_use_directly: true 4079 4080# If session history is stored in the parent process, enable bfcache for it. 4081- name: fission.bfcacheInParent 4082 type: bool 4083 value: true 4084 mirror: always 4085 do_not_use_directly: true 4086 4087# Allow renaming of process names to the origin on nightly 4088# Setting this pref creates a privacy leak, but helps greatly with 4089# debugging 4090- name: fission.processOriginNames 4091 type: bool 4092 value: false 4093 mirror: always 4094 4095# If true, allow process-switching documents loaded by <object> and <embed> 4096# elements into a remote process. 4097# NOTE: This pref has no impact outside of windows with the 4098# `useRemoteSubframes` flag set. 4099- name: fission.remoteObjectEmbed 4100 type: bool 4101 value: true 4102 mirror: always 4103 4104# If true, show option for opening a non-Fission window in a menu, when Fission 4105# is enabled. 4106- name: fission.openNonFissionWindowOption 4107 type: bool 4108 value: false 4109 mirror: always 4110 4111#--------------------------------------------------------------------------- 4112# Prefs starting with "font." 4113#--------------------------------------------------------------------------- 4114 4115# A value greater than zero enables font size inflation for 4116# pan-and-zoom UIs, so that the fonts in a block are at least the size 4117# that, if a block's width is scaled to match the device's width, the 4118# fonts in the block are big enough that at most the pref value ems of 4119# text fit in *the width of the device*. 4120# 4121# When both this pref and the next are set, the larger inflation is used. 4122- name: font.size.inflation.emPerLine 4123 type: uint32_t 4124 value: 0 4125 mirror: always 4126 4127# A value greater than zero enables font size inflation for 4128# pan-and-zoom UIs, so that if a block's width is scaled to match the 4129# device's width, the fonts in a block are at least the given font size. 4130# The value given is in twips, i.e., 1/20 of a point, or 1/1440 of an inch. 4131# 4132# When both this pref and the previous are set, the larger inflation is used. 4133- name: font.size.inflation.minTwips 4134 type: uint32_t 4135 value: 0 4136 mirror: always 4137 4138# In products with multi-mode pan-and-zoom and non-pan-and-zoom UIs, 4139# this pref forces font inflation to always be enabled in all modes. 4140# That is, any heuristics used to detect pan-and-zoom 4141# vs. non-pan-and-zoom modes are disabled and all content is treated 4142# as pan-and-zoom mode wrt font inflation. 4143# 4144# This pref has no effect if font inflation is not enabled through 4145# either of the prefs above. It has no meaning in single-mode UIs. 4146- name: font.size.inflation.forceEnabled 4147 type: bool 4148 value: false 4149 mirror: always 4150 4151# In products with multi-mode pan-and-zoom and non-pan-and-zoom UIs, 4152# this pref disables font inflation in master-process contexts where 4153# existing heuristics can't be used determine enabled-ness. 4154# 4155# This pref has no effect if font inflation is not enabled through 4156# either of the prefs above. The "forceEnabled" pref above overrides 4157# this pref. 4158- name: font.size.inflation.disabledInMasterProcess 4159 type: bool 4160 value: false 4161 mirror: always 4162 4163# Defines the font size inflation mapping intercept parameter. 4164# 4165# Font size inflation computes a minimum font size, m, based on 4166# other preferences (see font.size.inflation.minTwips and 4167# font.size.inflation.emPerLine, above) and the width of the 4168# frame in which the text resides. Using this minimum, a specified 4169# font size, s, is mapped to an inflated font size, i, using an 4170# equation that varies depending on the value of the font size 4171# inflation mapping intercept parameter, P. 4172# 4173# If the intercept parameter is negative, then the following mapping 4174# function is used: 4175# 4176# i = m + s 4177# 4178# If the intercept parameter is non-negative, then the mapping function 4179# is a function such that its graph meets the graph of i = s at the 4180# point where both i and s are (1 + P/2) * m for values of s that are 4181# large enough. This means that when s=0, i is always equal to m. 4182- name: font.size.inflation.mappingIntercept 4183 type: int32_t 4184 value: 1 4185 mirror: always 4186 4187# Since the goal of font size inflation is to avoid having to 4188# repeatedly scroll side to side to read a block of text, and there are 4189# a number of page layouts where a relatively small chunk of text is 4190# better off not being inflated according to the same algorithm we use 4191# for larger chunks of text, we want a threshold for an amount of text 4192# that triggers font size inflation. This preference controls that 4193# threshold. 4194# 4195# It controls the threshold used within an *approximation* of the 4196# number of lines of text we use. In particular, if we assume that 4197# each character (collapsing collapsible whitespace) has a width the 4198# same as the em-size of the font (when, normally, it's actually quite 4199# a bit smaller on average), this preference gives the percentage of a 4200# number of lines of text we'd need to trigger inflation. This means 4201# that a percentage of 100 means that we'd need a number of characters 4202# (we know the font size and the width) equivalent to one line of 4203# square text (which is actually a lot less than a real line of text). 4204# 4205# A value of 0 means there's no character length threshold. 4206- name: font.size.inflation.lineThreshold 4207 type: uint32_t 4208 value: 400 4209 mirror: always 4210 4211# This controls the percentage that fonts will be inflated, if font 4212# size inflation is enabled. Essentially, if we have a specified font 4213# size, s, and an inflated font size, i, this specifies that the ratio 4214# i/s * 100 should never exceed the value of this preference. In order 4215# for this preference to have any effect, its value must be greater 4216# than 100, since font inflation can never decrease the ratio i/s. 4217- name: font.size.inflation.maxRatio 4218 type: uint32_t 4219 value: 0 4220 mirror: always 4221 4222# This setting corresponds to a global text zoom setting affecting 4223# all content that is not already subject to font size inflation. 4224# It is interpreted as a percentage value that is applied on top 4225# of the document's current text zoom setting. 4226# 4227# The resulting total zoom factor (text zoom * system font scale) 4228# will be limited by zoom.minPercent and maxPercent. 4229- name: font.size.systemFontScale 4230 type: uint32_t 4231 value: 100 4232 mirror: always 4233 4234#--------------------------------------------------------------------------- 4235# Prefs starting with "full-screen-api." 4236#--------------------------------------------------------------------------- 4237 4238- name: full-screen-api.enabled 4239 type: bool 4240 value: false 4241 mirror: always 4242 4243- name: full-screen-api.allow-trusted-requests-only 4244 type: bool 4245 value: true 4246 mirror: always 4247 4248- name: full-screen-api.mouse-event-allow-left-button-only 4249 type: bool 4250 value: true 4251 mirror: always 4252 4253- name: full-screen-api.exit-on.windowOpen 4254 type: bool 4255 value: true 4256 mirror: always 4257 4258- name: full-screen-api.exit-on.windowRaise 4259 type: bool 4260 value: true 4261 mirror: always 4262 4263- name: full-screen-api.pointer-lock.enabled 4264 type: bool 4265 value: true 4266 mirror: always 4267 4268#--------------------------------------------------------------------------- 4269# Prefs starting with "fuzzing.". It's important that these can only be 4270# checked in fuzzing builds (when FUZZING is defined), otherwise you could 4271# enable the fuzzing stuff on your regular build which would be bad :) 4272#--------------------------------------------------------------------------- 4273 4274#ifdef FUZZING 4275- name: fuzzing.enabled 4276 type: bool 4277 value: false 4278 mirror: always 4279 4280- name: fuzzing.necko.enabled 4281 type: RelaxedAtomicBool 4282 value: false 4283 mirror: always 4284#endif 4285 4286#--------------------------------------------------------------------------- 4287# Prefs starting with "general." 4288#--------------------------------------------------------------------------- 4289 4290- name: general.aboutConfig.enable 4291 type: bool 4292 value: true 4293 mirror: always 4294 4295# Limits the depth of recursive conversion of data when opening 4296# a content to view. This is mostly intended to prevent infinite 4297# loops with faulty converters involved. 4298- name: general.document_open_conversion_depth_limit 4299 type: uint32_t 4300 value: 20 4301 mirror: always 4302 4303- name: general.smoothScroll 4304 type: RelaxedAtomicBool 4305 value: true 4306 mirror: always 4307 4308# This pref and general.smoothScroll.stopDecelerationWeighting determine 4309# the timing function. 4310- name: general.smoothScroll.currentVelocityWeighting 4311 type: AtomicFloat 4312 value: 0.25 4313 mirror: always 4314 4315# To connect consecutive scroll events into a continuous flow, the animation's 4316# duration should be longer than scroll events intervals (or else the scroll 4317# will stop before the next event arrives - we're guessing the next interval 4318# by averaging recent intervals). 4319# This defines how much longer the duration is compared to the events 4320# interval (percentage). 4321- name: general.smoothScroll.durationToIntervalRatio 4322 type: RelaxedAtomicInt32 4323 value: 200 4324 mirror: always 4325 4326- name: general.smoothScroll.lines 4327 type: RelaxedAtomicBool 4328 value: true 4329 mirror: always 4330 4331- name: general.smoothScroll.lines.durationMaxMS 4332 type: RelaxedAtomicInt32 4333 value: 150 4334 mirror: always 4335 4336- name: general.smoothScroll.lines.durationMinMS 4337 type: RelaxedAtomicInt32 4338 value: 150 4339 mirror: always 4340 4341- name: general.smoothScroll.mouseWheel 4342 type: RelaxedAtomicBool 4343 value: true 4344 mirror: always 4345 4346- name: general.smoothScroll.mouseWheel.durationMaxMS 4347 type: RelaxedAtomicInt32 4348 value: 200 4349 mirror: always 4350 4351- name: general.smoothScroll.mouseWheel.durationMinMS 4352 type: RelaxedAtomicInt32 4353 value: 50 4354 mirror: always 4355 4356- name: general.smoothScroll.other 4357 type: RelaxedAtomicBool 4358 value: true 4359 mirror: always 4360 4361- name: general.smoothScroll.other.durationMaxMS 4362 type: RelaxedAtomicInt32 4363 value: 150 4364 mirror: always 4365 4366- name: general.smoothScroll.other.durationMinMS 4367 type: RelaxedAtomicInt32 4368 value: 150 4369 mirror: always 4370 4371- name: general.smoothScroll.pages 4372 type: RelaxedAtomicBool 4373 value: true 4374 mirror: always 4375 4376- name: general.smoothScroll.pages.durationMaxMS 4377 type: RelaxedAtomicInt32 4378 value: 150 4379 mirror: always 4380 4381- name: general.smoothScroll.pages.durationMinMS 4382 type: RelaxedAtomicInt32 4383 value: 150 4384 mirror: always 4385 4386- name: general.smoothScroll.scrollbars 4387 type: RelaxedAtomicBool 4388 value: true 4389 mirror: always 4390 4391- name: general.smoothScroll.scrollbars.durationMaxMS 4392 type: RelaxedAtomicInt32 4393 value: 150 4394 mirror: always 4395 4396- name: general.smoothScroll.scrollbars.durationMinMS 4397 type: RelaxedAtomicInt32 4398 value: 150 4399 mirror: always 4400 4401- name: general.smoothScroll.pixels 4402 type: RelaxedAtomicBool 4403 value: true 4404 mirror: always 4405 4406- name: general.smoothScroll.pixels.durationMaxMS 4407 type: RelaxedAtomicInt32 4408 value: 150 4409 mirror: always 4410 4411- name: general.smoothScroll.pixels.durationMinMS 4412 type: RelaxedAtomicInt32 4413 value: 150 4414 mirror: always 4415 4416# This pref and general.smoothScroll.currentVelocityWeighting determine 4417# the timing function. 4418- name: general.smoothScroll.stopDecelerationWeighting 4419 type: AtomicFloat 4420 value: 0.4f 4421 mirror: always 4422 4423# Alternative smooth scroll physics. ("MSD" = Mass-Spring-Damper) 4424- name: general.smoothScroll.msdPhysics.enabled 4425 type: RelaxedAtomicBool 4426 value: false 4427 mirror: always 4428 4429- name: general.smoothScroll.msdPhysics.continuousMotionMaxDeltaMS 4430 type: RelaxedAtomicInt32 4431 value: 120 4432 mirror: always 4433 4434- name: general.smoothScroll.msdPhysics.motionBeginSpringConstant 4435 type: RelaxedAtomicInt32 4436 value: 1250 4437 mirror: always 4438 4439- name: general.smoothScroll.msdPhysics.slowdownMinDeltaMS 4440 type: RelaxedAtomicInt32 4441 value: 12 4442 mirror: always 4443 4444- name: general.smoothScroll.msdPhysics.slowdownMinDeltaRatio 4445 type: AtomicFloat 4446 value: 1.3f 4447 mirror: always 4448 4449- name: general.smoothScroll.msdPhysics.slowdownSpringConstant 4450 type: RelaxedAtomicInt32 4451 value: 2000 4452 mirror: always 4453 4454- name: general.smoothScroll.msdPhysics.regularSpringConstant 4455 type: RelaxedAtomicInt32 4456 value: 1000 4457 mirror: always 4458 4459#--------------------------------------------------------------------------- 4460# Prefs starting with "geo." 4461#--------------------------------------------------------------------------- 4462 4463# Is support for Navigator.geolocation enabled? 4464- name: geo.enabled 4465 type: bool 4466 value: true 4467 mirror: always 4468 4469# Time, in milliseconds, to wait for the location provider to spin up. 4470- name: geo.timeout 4471 type: int32_t 4472 value: 6000 4473 mirror: always 4474 4475#--------------------------------------------------------------------------- 4476# Prefs starting with "gfx." 4477#--------------------------------------------------------------------------- 4478 4479- name: gfx.allow-texture-direct-mapping 4480 type: bool 4481 value: true 4482 mirror: once 4483 4484# Allow 24-bit colour when the hardware supports it. 4485- name: gfx.android.rgb16.force 4486 type: bool 4487 value: false 4488 mirror: once 4489 4490- name: gfx.apitrace.enabled 4491 type: bool 4492 value: false 4493 mirror: once 4494 4495# Nb: we ignore this pref on release and beta. 4496- name: gfx.blocklist.all 4497 type: int32_t 4498 value: 0 4499 mirror: once 4500 4501# 0x7fff is the maximum supported xlib surface size and is more than enough for canvases. 4502- name: gfx.canvas.max-size 4503 type: RelaxedAtomicInt32 4504 value: 0x7fff 4505 mirror: always 4506 4507- name: gfx.canvas.remote 4508 type: RelaxedAtomicBool 4509#if defined(XP_WIN) 4510 value: true 4511#else 4512 value: false 4513#endif 4514 mirror: always 4515 4516- name: gfx.color_management.force_srgb 4517 type: RelaxedAtomicBool 4518 value: false 4519 mirror: always 4520 4521- name: gfx.color_management.native_srgb 4522 type: RelaxedAtomicBool 4523#if defined(XP_MACOSX) 4524 value: true 4525#else 4526 value: false 4527#endif 4528 mirror: always 4529 4530- name: gfx.color_management.enablev4 4531 type: RelaxedAtomicBool 4532#if defined(XP_MACOSX) && defined(NIGHTLY_BUILD) 4533 value: true 4534#else 4535 value: false 4536#endif 4537 mirror: always 4538 4539# 0 = Off, 1 = Full, 2 = Tagged Images Only. 4540# See CMSMode in gfx/thebes/gfxPlatform.h. 4541- name: gfx.color_management.mode 4542 type: RelaxedAtomicInt32 4543 value: 2 4544 mirror: always 4545 4546# The zero default here should match QCMS_INTENT_DEFAULT from qcms.h 4547- name: gfx.color_management.rendering_intent 4548 type: RelaxedAtomicInt32 4549 value: 0 4550 mirror: always 4551 4552- name: gfx.compositor.clearstate 4553 type: RelaxedAtomicBool 4554 value: false 4555 mirror: always 4556 4557# Whether GL contexts can be migrated to a different GPU (to match the one the 4558# OS is using for composition). 4559# 4560# 0 = force disable migration 4561# 1 = use migration where in safe configurations (the default) 4562# 2 = force enable migration (for testing) 4563- name: gfx.compositor.gpu-migration 4564 type: RelaxedAtomicInt32 4565 value: 1 4566 mirror: always 4567 4568- name: gfx.core-animation.tint-opaque 4569 type: RelaxedAtomicBool 4570 value: false 4571 mirror: always 4572 4573#if defined(MOZ_WIDGET_ANDROID) 4574 # Overrides the glClear color used when the surface origin is not (0, 0) 4575 # Used for drawing a border around the content. 4576- name: gfx.compositor.override.clear-color.r 4577 type: AtomicFloat 4578 value: 0.0f 4579 mirror: always 4580 4581- name: gfx.compositor.override.clear-color.g 4582 type: AtomicFloat 4583 value: 0.0f 4584 mirror: always 4585 4586- name: gfx.compositor.override.clear-color.b 4587 type: AtomicFloat 4588 value: 0.0f 4589 mirror: always 4590 4591- name: gfx.compositor.override.clear-color.a 4592 type: AtomicFloat 4593 value: 0.0f 4594 mirror: always 4595#endif # defined(MOZ_WIDGET_ANDROID) 4596 4597- name: gfx.content.always-paint 4598 type: RelaxedAtomicBool 4599 value: false 4600 mirror: always 4601 4602# Size in megabytes 4603- name: gfx.content.skia-font-cache-size 4604 type: int32_t 4605 value: 5 4606 mirror: once 4607 4608- name: gfx.device-reset.limit 4609 type: int32_t 4610 value: 10 4611 mirror: once 4612 4613- name: gfx.device-reset.threshold-ms 4614 type: int32_t 4615 value: -1 4616 mirror: once 4617 4618 4619# Whether to disable the automatic detection and use of direct2d. 4620- name: gfx.direct2d.disabled 4621 type: bool 4622 value: false 4623 mirror: once 4624 4625# Whether to attempt to enable Direct2D regardless of automatic detection or 4626# blacklisting. 4627- name: gfx.direct2d.force-enabled 4628 type: bool 4629 value: false 4630 mirror: once 4631 4632# Whether to defer destruction of Direct2D DrawTargets to the paint thread 4633# when using OMTP. 4634- name: gfx.direct2d.destroy-dt-on-paintthread 4635 type: RelaxedAtomicBool 4636 value: true 4637 mirror: always 4638 4639- name: gfx.direct3d11.reuse-decoder-device 4640 type: RelaxedAtomicInt32 4641 value: -1 4642 mirror: always 4643 4644- name: gfx.direct3d11.allow-keyed-mutex 4645 type: RelaxedAtomicBool 4646 value: true 4647 mirror: always 4648 4649- name: gfx.direct3d11.use-double-buffering 4650 type: RelaxedAtomicBool 4651 value: false 4652 mirror: always 4653 4654- name: gfx.direct3d11.enable-debug-layer 4655 type: bool 4656 value: false 4657 mirror: once 4658 4659- name: gfx.direct3d11.break-on-error 4660 type: bool 4661 value: false 4662 mirror: once 4663 4664- name: gfx.direct3d11.sleep-on-create-device 4665 type: int32_t 4666 value: 0 4667 mirror: once 4668 4669# Whether to preserve color bitmap tables in fonts (bypassing OTS). 4670# Currently these are supported only on platforms where we use Freetype 4671# to render fonts (Linux/Gtk and Android). 4672- name: gfx.downloadable_fonts.keep_color_bitmaps 4673 type: RelaxedAtomicBool 4674 value: false 4675 mirror: always 4676 4677# Whether font sanitization is performed on the main thread or not. 4678- name: gfx.downloadable_fonts.sanitize_omt 4679 type: RelaxedAtomicBool 4680 value: true 4681 mirror: always 4682 4683# Whether to validate OpenType variation tables in fonts. 4684- name: gfx.downloadable_fonts.validate_variation_tables 4685 type: RelaxedAtomicBool 4686 value: true 4687 mirror: always 4688 4689# Whether OTS validation should be applied to OpenType Layout (OTL) tables. 4690- name: gfx.downloadable_fonts.otl_validation 4691 type: RelaxedAtomicBool 4692 value: @IS_NOT_RELEASE_OR_BETA@ 4693 mirror: always 4694 4695- name: gfx.draw-color-bars 4696 type: RelaxedAtomicBool 4697 value: false 4698 mirror: always 4699 4700- name: gfx.e10s.hide-plugins-for-scroll 4701 type: bool 4702 value: true 4703 mirror: once 4704 4705- name: gfx.e10s.font-list.shared 4706 type: bool 4707 value: false 4708 mirror: once 4709 4710# [Windows] Whether registry FontSubstitutes entries are used unconditionally, 4711# or only if the original font is not available. 4712#if defined(XP_WIN) 4713- name: gfx.windows-font-substitutes.always 4714 type: bool 4715 value: false 4716 mirror: once 4717#endif 4718 4719- name: gfx.font-list-omt.enabled 4720 type: bool 4721 value: false 4722 mirror: once 4723 4724# Whether to load fonts (e.g. Twemoji Mozilla) bundled with the application: 4725# -1 - Auto behavior based on OS version (currently, disables loading on 4726# "low-memory" Android devices) 4727# 0 - Skip loading any bundled fonts 4728# 1 - Always load bundled fonts 4729- name: gfx.bundled-fonts.activate 4730 type: int32_t 4731 value: -1 4732 mirror: once 4733 4734- name: gfx.font_loader.delay 4735 type: uint32_t 4736#if defined(XP_WIN) 4737 value: 60000 4738#else 4739 value: 8000 4740#endif 4741 mirror: once 4742 4743# Disable antialiasing of Ahem, for use in tests. 4744- name: gfx.font_rendering.ahem_antialias_none 4745 type: RelaxedAtomicBool 4746 value: false 4747 mirror: always 4748 4749#if defined(XP_MACOSX) 4750 # Set to true to revert from HarfBuzz AAT shaping to the old Core Text 4751 # backend. 4752- name: gfx.font_rendering.coretext.enabled 4753 type: RelaxedAtomicBool 4754 value: false 4755 mirror: always 4756#endif 4757 4758- name: gfx.font_rendering.opentype_svg.enabled 4759 type: RelaxedAtomicBool 4760 value: true 4761 mirror: always 4762 rust: true 4763 4764- name: gfx.font_rendering.fallback.async 4765 type: RelaxedAtomicBool 4766 value: true 4767 mirror: always 4768 4769# Whether to enable LayerScope tool and default listening port. 4770- name: gfx.layerscope.enabled 4771 type: RelaxedAtomicBool 4772 value: false 4773 mirror: always 4774 4775- name: gfx.layerscope.port 4776 type: RelaxedAtomicInt32 4777 value: 23456 4778 mirror: always 4779 4780# The level of logging: 4781# - 0: no logging; 4782# - 1: adds errors; 4783# - 2: adds warnings; 4784# - 3 or 4: adds debug logging. 4785# If you set the value to 4, you will also need to set the environment 4786# variable MOZ_LOG to gfx:4. See mozilla/Logging.h for details. 4787- name: gfx.logging.level 4788 type: RelaxedAtomicInt32 4789 value: mozilla::gfx::LOG_DEFAULT 4790 mirror: always 4791 include: mozilla/gfx/LoggingConstants.h 4792 4793- name: gfx.logging.crash.length 4794 type: uint32_t 4795 value: 16 4796 mirror: once 4797 4798- name: gfx.logging.painted-pixel-count.enabled 4799 type: RelaxedAtomicBool 4800 value: false 4801 mirror: always 4802 4803# The maximums here are quite conservative, we can tighten them if problems show up. 4804- name: gfx.logging.texture-usage.enabled 4805 type: bool 4806 value: false 4807 mirror: once 4808 4809- name: gfx.logging.peak-texture-usage.enabled 4810 type: bool 4811 value: false 4812 mirror: once 4813 4814- name: gfx.logging.slow-frames.enabled 4815 type: bool 4816 value: false 4817 mirror: once 4818 4819# Use gfxPlatform::MaxAllocSize instead of the pref directly. 4820- name: gfx.max-alloc-size 4821 type: int32_t 4822 value: (int32_t)500000000 4823 mirror: once 4824 do_not_use_directly: true 4825 4826# Use gfxPlatform::MaxTextureSize instead of the pref directly. 4827- name: gfx.max-texture-size 4828 type: int32_t 4829 value: (int32_t)32767 4830 mirror: once 4831 do_not_use_directly: true 4832 4833- name: gfx.offscreencanvas.enabled 4834 type: RelaxedAtomicBool 4835 value: false 4836 mirror: always 4837 4838- name: gfx.omta.background-color 4839 type: bool 4840 value: true 4841 mirror: always 4842 4843- name: gfx.partialpresent.force 4844 type: RelaxedAtomicInt32 4845 value: 0 4846 mirror: always 4847 4848# Log severe performance warnings to the error console and profiles. 4849# This should be use to quickly find which slow paths are used by test cases. 4850- name: gfx.perf-warnings.enabled 4851 type: RelaxedAtomicBool 4852 value: false 4853 mirror: always 4854 4855#ifdef MOZ_X11 4856# Whether to force using GLX over EGL. 4857- name: gfx.x11-egl.force-disabled 4858 type: bool 4859 value: false 4860 mirror: once 4861 4862# Whether to force using EGL over GLX. 4863- name: gfx.x11-egl.force-enabled 4864 type: bool 4865 value: false 4866 mirror: once 4867#endif 4868 4869- name: gfx.testing.device-fail 4870 type: RelaxedAtomicBool 4871 value: false 4872 mirror: always 4873 4874- name: gfx.testing.device-reset 4875 type: RelaxedAtomicInt32 4876 value: 0 4877 mirror: always 4878 4879- name: gfx.text.disable-aa 4880 type: bool 4881 value: false 4882 mirror: once 4883 4884- name: gfx.text.subpixel-position.force-enabled 4885 type: bool 4886 value: false 4887 mirror: once 4888 4889- name: gfx.text.subpixel-position.force-disabled 4890 type: bool 4891 value: false 4892 mirror: once 4893 4894# Disable surface sharing due to issues with compatible FBConfigs on 4895# NVIDIA drivers as described in bug 1193015. 4896- name: gfx.use-glx-texture-from-pixmap 4897 type: RelaxedAtomicBool 4898 value: false 4899 mirror: always 4900 4901- name: gfx.use-iosurface-textures 4902 type: bool 4903 value: false 4904 mirror: once 4905 4906- name: gfx.use-mutex-on-present 4907 type: bool 4908 value: false 4909 mirror: once 4910 4911- name: gfx.use-ahardwarebuffer-content 4912 type: bool 4913 value: false 4914 mirror: once 4915 4916# Use SurfaceTextures as preferred backend for TextureClient/Host. 4917- name: gfx.use-surfacetexture-textures 4918 type: bool 4919 value: false 4920 mirror: once 4921 4922- name: gfx.vsync.collect-scroll-transforms 4923 type: RelaxedAtomicBool 4924 value: false 4925 mirror: always 4926 4927- name: gfx.vsync.compositor.unobserve-count 4928 type: int32_t 4929 value: 10 4930 mirror: once 4931 4932- name: gfx.vsync.force-disable-waitforvblank 4933 type: RelaxedAtomicBool 4934 value: false 4935 mirror: always 4936 4937# We expose two prefs: gfx.webrender.all and gfx.webrender.enabled. 4938# The first enables WR+additional features, and the second just enables WR. 4939# For developer convenience, building with --enable-webrender=true or just 4940# --enable-webrender will set gfx.webrender.enabled to true by default. 4941# 4942# We also have a pref gfx.webrender.all.qualified which is not exposed via 4943# about:config. That pref enables WR but only on qualified hardware. This is 4944# the pref we'll eventually flip to deploy WebRender to the target population. 4945- name: gfx.webrender.all 4946 type: bool 4947 value: false 4948 mirror: once 4949 4950- name: gfx.webrender.enabled 4951 type: bool 4952 value: false 4953 mirror: once 4954 do_not_use_directly: true 4955 4956#ifdef XP_WIN 4957- name: gfx.webrender.force-angle 4958 type: bool 4959 value: true 4960 mirror: once 4961#endif 4962 4963# WebRender is not enabled when there is no GPU process on window when 4964# WebRender uses ANGLE. It is for avoiding that WebGL and WebRender use ANGLE 4965# at once. But there is a case that we want to enable WebRender for testing. 4966#ifdef XP_WIN 4967- name: gfx.webrender.enabled-no-gpu-process-with-angle-win 4968 type: bool 4969 value: true 4970 mirror: once 4971#endif 4972 4973- name: gfx.webrender.blob-images 4974 type: RelaxedAtomicBool 4975 value: true 4976 mirror: always 4977 4978- name: gfx.webrender.svg-images 4979 type: RelaxedAtomicBool 4980 value: false 4981 mirror: always 4982 4983- name: gfx.webrender.blob.paint-flashing 4984 type: RelaxedAtomicBool 4985 value: false 4986 mirror: always 4987 4988- name: gfx.webrender.enable-capture 4989 type: bool 4990 value: false 4991 mirror: once 4992 4993- name: gfx.webrender.dl.dump-parent 4994 type: RelaxedAtomicBool 4995 value: false 4996 mirror: always 4997 4998- name: gfx.webrender.dl.dump-content 4999 type: RelaxedAtomicBool 5000 value: false 5001 mirror: always 5002 5003- name: gfx.webrender.dl.dump-content-serialized 5004 type: RelaxedAtomicBool 5005 value: false 5006 mirror: always 5007 5008# Also expose a pref to allow users to force-disable WR. This is exposed 5009# on all channels because WR can be enabled on qualified hardware on all 5010# channels. 5011- name: gfx.webrender.force-disabled 5012 type: bool 5013 value: false 5014 mirror: once 5015 5016#ifdef MOZ_WIDGET_GTK 5017- name: gfx.webrender.reject-software-driver 5018 type: bool 5019 value: true 5020 mirror: once 5021#endif 5022 5023- name: gfx.webrender.highlight-painted-layers 5024 type: RelaxedAtomicBool 5025 value: false 5026 mirror: always 5027 5028- name: gfx.webrender.late-scenebuild-threshold 5029 type: RelaxedAtomicInt32 5030 value: 4 5031 mirror: always 5032 5033- name: gfx.webrender.max-filter-ops-per-chain 5034 type: RelaxedAtomicUint32 5035 value: 64 5036 mirror: always 5037 5038- name: gfx.webrender.enable-multithreading 5039 type: bool 5040 value: true 5041 mirror: always 5042 5043- name: gfx.webrender.batching.lookback 5044 type: uint32_t 5045 value: 10 5046 mirror: always 5047 5048- name: gfx.webrender.compositor 5049 type: bool 5050#if defined(XP_WIN) || defined(XP_MACOSX) 5051 value: true 5052#else 5053 value: false 5054#endif 5055 mirror: once 5056 5057- name: gfx.webrender.compositor.force-enabled 5058 type: bool 5059 value: false 5060 mirror: once 5061 5062- name: gfx.webrender.compositor.max_update_rects 5063 type: uint32_t 5064#if defined(XP_WIN) || defined(XP_MACOSX) 5065 value: 1 5066#else 5067 value: 0 5068#endif 5069 mirror: once 5070 5071- name: gfx.webrender.compositor.surface-pool-size 5072 type: uint32_t 5073 value: 25 5074 mirror: once 5075 5076# Number of damage rects we can give to the compositor for a new frame with 5077# partial present. This controls whether partial present is used or not. 5078- name: gfx.webrender.max-partial-present-rects 5079 type: uint32_t 5080#if defined(XP_WIN) || defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GTK) 5081 value: 1 5082#else 5083 value: 0 5084#endif 5085 mirror: once 5086 5087# Whether or not we can reuse the buffer contents using the GL buffer age 5088# extension, if supported by the platform. This requires partial present 5089# to be used. 5090- name: gfx.webrender.allow-partial-present-buffer-age 5091 type: bool 5092 value: true 5093 mirror: once 5094 5095- name: gfx.webrender.enable-gpu-markers 5096 type: bool 5097#ifdef DEBUG 5098 value: true 5099#else 5100 value: false 5101#endif 5102 mirror: once 5103 5104- name: gfx.webrender.enable-item-cache 5105 type: bool 5106 value: true 5107 mirror: once 5108 5109# Whether or not to fallback from WebRender/WebRender Software to Basic. 5110- name: gfx.webrender.fallback.basic 5111 type: bool 5112#if defined(MOZ_WIDGET_ANDROID) 5113 value: true 5114#else 5115 value: @IS_NOT_EARLY_BETA_OR_EARLIER@ 5116#endif 5117 mirror: once 5118 5119# Whether or not to fallback from WebRender to Software WebRender. 5120- name: gfx.webrender.fallback.software 5121 type: bool 5122#if defined(MOZ_WIDGET_ANDROID) 5123 value: false 5124#else 5125 value: true 5126#endif 5127 mirror: once 5128 5129#ifdef XP_WIN 5130 # Whether or not to fallback from WebRender to Software WebRender + D3D11. 5131- name: gfx.webrender.fallback.software-d3d11 5132 type: bool 5133 value: true 5134 mirror: once 5135#endif 5136 5137# Whether or not fallback to Software WebRender requires the GPU process. 5138- name: gfx.webrender.fallback.software.requires-gpu-process 5139 type: bool 5140 value: false 5141 mirror: once 5142 5143- name: gfx.webrender.program-binary-disk 5144 type: bool 5145#if defined(XP_WIN) || defined(ANDROID) 5146 value: true 5147#else 5148 value: false 5149#endif 5150 mirror: once 5151 5152- name: gfx.webrender.use-optimized-shaders 5153 type: bool 5154 value: true 5155 mirror: once 5156 5157- name: gfx.webrender.precache-shaders 5158 type: bool 5159 value: false 5160 mirror: once 5161 5162# When gl debug message is a high severity message, forwward it to gfx critical 5163# note. 5164- name: gfx.webrender.gl-debug-message-critical-note 5165 type: bool 5166#if defined(XP_WIN) && defined(NIGHTLY_BUILD) 5167 value: true 5168#else 5169 value: false 5170#endif 5171 mirror: once 5172 5173# Enable printing gl debug messages 5174- name: gfx.webrender.gl-debug-message-print 5175 type: bool 5176 value: false 5177 mirror: once 5178 5179#ifdef NIGHTLY_BUILD 5180 # Keep this pref hidden on non-nightly builds to avoid people accidentally 5181 # turning it on. 5182- name: gfx.webrender.panic-on-gl-error 5183 type: bool 5184 value: false 5185 mirror: once 5186#endif 5187 5188#ifdef XP_WIN 5189 # Enables display of performance debugging counters when DirectComposition 5190 # is used. 5191 # Performance counters are displayed on the top-right corner of the screen. 5192- name: gfx.webrender.debug.dcomp-counter 5193 type: RelaxedAtomicBool 5194 value: false 5195 mirror: always 5196 # Enables highlighting redraw regions of DCompositionVisual 5197- name: gfx.webrender.debug.dcomp-redraw-regions 5198 type: RelaxedAtomicBool 5199 value: false 5200 mirror: always 5201#endif 5202 5203- name: gfx.webrender.enable-low-priority-pool 5204 type: RelaxedAtomicBool 5205#if defined(ANDROID) 5206 value: false 5207#else 5208 value: true 5209#endif 5210 mirror: always 5211 5212 # Force subpixel anti-aliasing as much as possible, despite performance cost. 5213- name: gfx.webrender.quality.force-subpixel-aa-where-possible 5214 type: bool 5215 value: false 5216 mirror: always 5217 5218#ifdef XP_MACOSX 5219- name: gfx.webrender.enable-client-storage 5220 type: bool 5221 value: true 5222 mirror: once 5223#endif 5224 5225 # Width of WebRender tile size 5226- name: gfx.webrender.picture-tile-width 5227 type: RelaxedAtomicInt32 5228 value: 1024 5229 mirror: always 5230 5231 # Width of WebRender tile size 5232- name: gfx.webrender.picture-tile-height 5233 type: RelaxedAtomicInt32 5234 value: 512 5235 mirror: always 5236 5237# Whether to use EGL robustness or not. 5238- name: gfx.webrender.prefer-robustness 5239 type: bool 5240#if defined(XP_WIN) || defined(MOZ_WIDGET_GTK) 5241 value: true 5242#else 5243 value: false 5244#endif 5245 mirror: once 5246 5247# Whether to use the WebRender software backend 5248- name: gfx.webrender.software 5249 type: bool 5250 value: false 5251 mirror: once 5252 5253# Whether to use the D3D11 RenderCompositor when using WebRender software backend 5254- name: gfx.webrender.software.d3d11 5255 type: bool 5256 value: true 5257 mirror: once 5258 5259- name: gfx.webrender.software.opengl 5260 type: bool 5261#if defined(MOZ_WIDGET_ANDROID) 5262 value: true 5263#else 5264 value: false 5265#endif 5266 mirror: once 5267 5268- name: gfx.webrender.software.d3d11.upload-mode 5269 type: RelaxedAtomicInt32 5270 value: 4 5271 mirror: always 5272 5273# Whether to allow widgets that don't support acceleration to use WebRender 5274# software backend 5275- name: gfx.webrender.software.unaccelerated-widget.allow 5276 type: RelaxedAtomicBool 5277 value: true 5278 mirror: always 5279 5280# Whether to force widgets to don't support acceleration to use WebRender 5281# despite that 5282- name: gfx.webrender.unaccelerated-widget.force 5283 type: RelaxedAtomicBool 5284 value: false 5285 mirror: always 5286 5287# Enable a lower quality, but higher performance pinch-zoom mode. Primarily 5288# for devices with weak GPUs, or when running SWGL. 5289- name: gfx.webrender.low-quality-pinch-zoom 5290 type: bool 5291#if defined(MOZ_WIDGET_ANDROID) && defined(NIGHTLY_BUILD) 5292 value: true 5293#else 5294 value: false 5295#endif 5296 mirror: once 5297 5298# Use vsync events generated by hardware 5299- name: gfx.work-around-driver-bugs 5300 type: bool 5301 value: true 5302 mirror: once 5303 5304- name: gfx.ycbcr.accurate-conversion 5305 type: RelaxedAtomicBool 5306 value: false 5307 mirror: always 5308 5309#--------------------------------------------------------------------------- 5310# Prefs starting with "gl." (OpenGL) 5311#--------------------------------------------------------------------------- 5312 5313- name: gl.allow-high-power 5314 type: RelaxedAtomicBool 5315 value: true 5316 mirror: always 5317 5318- name: gl.ignore-dx-interop2-blacklist 5319 type: RelaxedAtomicBool 5320 value: false 5321 mirror: always 5322 5323- name: gl.use-tls-is-current 5324 type: RelaxedAtomicInt32 5325 value: 0 5326 mirror: always 5327 5328#--------------------------------------------------------------------------- 5329# Prefs starting with "html5." 5330#--------------------------------------------------------------------------- 5331 5332# Turn HTML:inert on or off. 5333- name: html5.inert.enabled 5334 type: bool 5335 value: false 5336 mirror: always 5337 5338# Toggle which thread the HTML5 parser uses for stream parsing. 5339- name: html5.offmainthread 5340 type: bool 5341 value: true 5342 mirror: always 5343 5344# Time in milliseconds between the time a network buffer is seen and the timer 5345# firing when the timer hasn't fired previously in this parse in the 5346# off-the-main-thread HTML5 parser. 5347- name: html5.flushtimer.initialdelay 5348 type: RelaxedAtomicInt32 5349 value: 16 5350 mirror: always 5351 5352# Time in milliseconds between the time a network buffer is seen and the timer 5353# firing when the timer has already fired previously in this parse. 5354- name: html5.flushtimer.subsequentdelay 5355 type: RelaxedAtomicInt32 5356 value: 16 5357 mirror: always 5358 5359#--------------------------------------------------------------------------- 5360# Prefs starting with "idle_period." 5361#--------------------------------------------------------------------------- 5362 5363- name: idle_period.min 5364 type: uint32_t 5365 value: 3 5366 mirror: always 5367 5368- name: idle_period.during_page_load.min 5369 type: uint32_t 5370 value: 12 5371 mirror: always 5372 5373- name: idle_period.cross_process_scheduling 5374 type: RelaxedAtomicBool 5375 value: true 5376 mirror: always 5377 5378#--------------------------------------------------------------------------- 5379# Prefs starting with "image." 5380#--------------------------------------------------------------------------- 5381 5382# The maximum size (in kB) that the aggregate frames of an animation can use 5383# before it starts to discard already displayed frames and redecode them as 5384# necessary. 5385- name: image.animated.decode-on-demand.threshold-kb 5386 type: RelaxedAtomicUint32 5387 value: 20*1024 5388 mirror: always 5389 5390# The minimum number of frames we want to have buffered ahead of an 5391# animation's currently displayed frame. 5392- name: image.animated.decode-on-demand.batch-size 5393 type: RelaxedAtomicUint32 5394 value: 6 5395 mirror: always 5396 5397# Whether we should recycle already displayed frames instead of discarding 5398# them. This saves on the allocation itself, and may be able to reuse the 5399# contents as well. Only applies if generating full frames. 5400- name: image.animated.decode-on-demand.recycle 5401 type: bool 5402 value: true 5403 mirror: once 5404 5405# Resume an animated image from the last displayed frame rather than 5406# advancing when out of view. 5407- name: image.animated.resume-from-last-displayed 5408 type: RelaxedAtomicBool 5409 value: true 5410 mirror: always 5411 5412# Maximum number of surfaces for an image before entering "factor of 2" mode. 5413# This in addition to the number of "native" sizes of an image. A native size 5414# is a size for which we can decode a frame without up or downscaling. Most 5415# images only have 1, but some (i.e. ICOs) may have multiple frames for the 5416# same data at different sizes. 5417- name: image.cache.factor2.threshold-surfaces 5418 type: RelaxedAtomicInt32 5419 value: 4 5420 mirror: always 5421 5422# Maximum size of a surface in KB we are willing to produce when rasterizing 5423# an SVG. 5424- name: image.cache.max-rasterized-svg-threshold-kb 5425 type: RelaxedAtomicInt32 5426 value: 200*1024 5427 mirror: always 5428 5429# The maximum size, in bytes, of the decoded images we cache. 5430- name: image.cache.size 5431 type: int32_t 5432 value: 5*1024*1024 5433 mirror: once 5434 5435# A weight, from 0-1000, to place on time when comparing to size. 5436# Size is given a weight of 1000 - timeweight. 5437- name: image.cache.timeweight 5438 type: int32_t 5439 value: 500 5440 mirror: once 5441 5442# Decode all images automatically on load, ignoring our normal heuristics. 5443- name: image.decode-immediately.enabled 5444 type: RelaxedAtomicBool 5445 value: false 5446 mirror: always 5447 5448# Whether we attempt to downscale images during decoding. 5449- name: image.downscale-during-decode.enabled 5450 type: RelaxedAtomicBool 5451 value: true 5452 mirror: always 5453 5454# Whether we use EXIF metadata for image density. 5455- name: image.exif-density-correction.enabled 5456 type: RelaxedAtomicBool 5457 value: true 5458 mirror: always 5459 5460# Whether EXIF density metadata is sanity checked against PixelXDimension and PixelYDimension 5461- name: image.exif-density-correction.sanity-check.enabled 5462 type: RelaxedAtomicBool 5463 value: true 5464 mirror: always 5465 5466# The threshold for inferring that changes to an <img> element's |src| 5467# attribute by JavaScript represent an animation, in milliseconds. If the |src| 5468# attribute is changing more frequently than this value, then we enter a 5469# special "animation mode" which is designed to eliminate flicker. Set to 0 to 5470# disable. 5471- name: image.infer-src-animation.threshold-ms 5472 type: RelaxedAtomicUint32 5473 value: 2000 5474 mirror: always 5475 5476# Whether the network request priority should be adjusted according 5477# the layout and view frame position of each particular image. 5478- name: image.layout_network_priority 5479 type: RelaxedAtomicBool 5480 value: true 5481 mirror: always 5482 5483# Chunk size for calls to the image decoders. 5484- name: image.mem.decode_bytes_at_a_time 5485 type: uint32_t 5486 value: 16384 5487 mirror: once 5488 5489# Discards inactive image frames and re-decodes them on demand from 5490# compressed data. 5491- name: image.mem.discardable 5492 type: RelaxedAtomicBool 5493 value: true 5494 mirror: always 5495 5496# Discards inactive image frames of _animated_ images and re-decodes them on 5497# demand from compressed data. Has no effect if image.mem.discardable is false. 5498- name: image.mem.animated.discardable 5499 type: bool 5500 value: true 5501 mirror: once 5502 5503# Whether the heap should be used for frames from animated images. On Android, 5504# volatile memory keeps file handles open for each buffer. 5505- name: image.mem.animated.use_heap 5506 type: RelaxedAtomicBool 5507 value: @IS_ANDROID@ 5508 mirror: always 5509 5510# Enable extra information for debugging in the image memory reports. 5511- name: image.mem.debug-reporting 5512 type: RelaxedAtomicBool 5513 value: false 5514 mirror: always 5515 5516# Decodes images into shared memory to allow direct use in separate 5517# rendering processes. Only applicable with WebRender. 5518- name: image.mem.shared 5519 type: RelaxedAtomicBool 5520 value: true 5521 mirror: always 5522 5523# Force unmapping of unused shared surfaces after a timeout period or when we 5524# encounter virtual memory pressure. By default this is only enabled on 32-bit 5525# Firefox. 5526- name: image.mem.shared.unmap.force-enabled 5527 type: bool 5528 value: false 5529 mirror: once 5530 5531# Minimum timeout to unmap shared surfaces since they have been last used, 5532# in milliseconds. 5533- name: image.mem.shared.unmap.min_expiration_ms 5534 type: uint32_t 5535 value: 60*1000 5536 mirror: once 5537 5538# Mininum size for shared surfaces to consider unmapping, in kilobytes. 5539- name: image.mem.shared.unmap.min_threshold_kb 5540 type: uint32_t 5541 value: 100 5542 mirror: once 5543 5544# How much of the data in the surface cache is discarded when we get a memory 5545# pressure notification, as a fraction. The discard factor is interpreted as a 5546# reciprocal, so a discard factor of 1 means to discard everything in the 5547# surface cache on memory pressure, a discard factor of 2 means to discard half 5548# of the data, and so forth. The default should be a good balance for desktop 5549# and laptop systems, where we never discard visible images. 5550- name: image.mem.surfacecache.discard_factor 5551 type: uint32_t 5552 value: 1 5553 mirror: once 5554 5555# Maximum size for the surface cache, in kilobytes. 5556- name: image.mem.surfacecache.max_size_kb 5557 type: uint32_t 5558 value: 2024 * 1024 5559 mirror: once 5560 5561# Minimum timeout for expiring unused images from the surface cache, in 5562# milliseconds. This controls how long we store cached temporary surfaces. 5563- name: image.mem.surfacecache.min_expiration_ms 5564 type: uint32_t 5565 value: 60*1000 5566 mirror: once 5567 5568# The surface cache's size, within the constraints of the maximum size set 5569# above, is determined as a fraction of main memory size. The size factor is 5570# interpreted as a reciprocal, so a size factor of 4 means to use no more than 5571# 1/4 of main memory. The default should be a good balance for most systems. 5572- name: image.mem.surfacecache.size_factor 5573 type: uint32_t 5574 value: 4 5575 mirror: once 5576 5577# Minimum buffer size in KB before using volatile memory over the heap. 5578- name: image.mem.volatile.min_threshold_kb 5579 type: RelaxedAtomicInt32 5580#if defined(ANDROID) 5581 # On Android, volatile memory keeps file handles open for each buffer. 5582 value: 100 5583#else 5584 value: -1 5585#endif 5586 mirror: always 5587 5588# How long in ms before we should start shutting down idle decoder threads. 5589- name: image.multithreaded_decoding.idle_timeout 5590 type: int32_t 5591 value: 600000 5592 mirror: once 5593 5594# How many threads we'll use for multithreaded decoding. If < 0, will be 5595# automatically determined based on the system's number of cores. 5596- name: image.multithreaded_decoding.limit 5597 type: int32_t 5598 value: -1 5599 mirror: once 5600 5601# Whether we record SVG images as blobs or not. 5602- name: image.svg.blob-image 5603 type: RelaxedAtomicBool 5604 value: false 5605 mirror: always 5606 5607# Whether we attempt to decode WebP images or not. 5608- name: image.webp.enabled 5609 type: RelaxedAtomicBool 5610 value: true 5611 mirror: always 5612 5613# Whether we attempt to decode AVIF images or not. 5614- name: image.avif.enabled 5615 type: RelaxedAtomicBool 5616#if defined(MOZ_AV1) 5617 value: false 5618#else 5619 value: false 5620#endif 5621 mirror: always 5622 5623# How strict we are in accepting/rejecting AVIF inputs according to whether they 5624# conform to the specification 5625# 0 = Permissive: accept whatever we can simply, unambiguously interpret 5626# 1 = Normal: reject violations of "shall" specification directives 5627# 2 = Strict: reject violations of "should" specification directives 5628- name: image.avif.compliance_strictness 5629 type: RelaxedAtomicInt32 5630 value: 1 5631 mirror: always 5632 5633# Whether we apply container-level transforms like mirroring and rotation 5634- name: image.avif.apply_transforms 5635 type: RelaxedAtomicBool 5636 value: true 5637 mirror: always 5638 5639# Whether we use dav1d (true) or libaom (false) to decode AVIF image 5640- name: image.avif.use-dav1d 5641 type: RelaxedAtomicBool 5642 value: true 5643 mirror: always 5644 5645# Whether we attempt to decode JXL images or not. 5646- name: image.jxl.enabled 5647 type: RelaxedAtomicBool 5648 value: false 5649 mirror: always 5650 5651#--------------------------------------------------------------------------- 5652# Prefs starting with "intl." 5653#--------------------------------------------------------------------------- 5654 5655# If true, dispatch the keydown and keyup events on any web apps even during 5656# composition. 5657- name: intl.ime.hack.on_any_apps.fire_key_events_for_composition 5658 type: bool 5659 value: @IS_ANDROID@ 5660 mirror: always 5661 5662# Android-specific pref to control if keydown and keyup events are fired even 5663# during composition. Note that those prefs are ignored if 5664# dom.keyboardevent.dispatch_during_composition is false. 5665- name: intl.ime.hack.on_ime_unaware_apps.fire_key_events_for_composition 5666 type: bool 5667# If true and intl.ime.hack.on_any_apps.fire_key_events_for_composition is 5668# false, dispatch the keydown and keyup events only on IME-unaware web apps. 5669# So, this supports web apps which listen to only keydown or keyup events 5670# to get a change to do something at every text input. 5671 value: @IS_ANDROID@ 5672 mirror: always 5673 5674#ifdef XP_WIN 5675 # If true, automatically extend selection to cluster boundaries when 5676 # TSF/TIP requests to select from/by middle of a cluster. 5677- name: intl.tsf.hack.extend_setting_selection_range_to_cluster_boundaries 5678 type: bool 5679 value: @IS_NOT_EARLY_BETA_OR_EARLIER@ 5680 mirror: always 5681#endif 5682 5683# If you use legacy Chinese IME which puts an ideographic space to composition 5684# string as placeholder, this pref might be useful. If this is true and when 5685# web contents forcibly commits composition (e.g., moving focus), the 5686# ideographic space will be ignored (i.e., commits with empty string). 5687- name: intl.ime.remove_placeholder_character_at_commit 5688 type: bool 5689 value: false 5690 mirror: always 5691 5692#if defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK) 5693# Whether text input without keyboard press nor IME composition should cause a 5694# set of composition events or not. E.g., when you use Emoji picker on macOS, 5695# it inserts an Emoji character directly. If set to true, `compositionstart`, 5696# `compositionupdate` and `compositionend` events will be fired, and the 5697# correspnding `beforeinput` events are not cancelable. Otherwise, if set to 5698# false, any user input events are not exposed to web apps but only 5699# `beforeinput` event is fired as "insert text" as a cancelable event. 5700- name: intl.ime.use_composition_events_for_insert_text 5701 type: bool 5702 value: false 5703 mirror: always 5704#endif 5705 5706#--------------------------------------------------------------------------- 5707# Prefs starting with "javascript." 5708# 5709# NOTE: SpiderMonkey starts up before `mirror: once` preferences are sealed and 5710# we cannot use them (Bug 1698311). Instead, we use `mirror: always` 5711# prefs but mark as `do_not_use_directly` and `LoadStartupJSPrefs` will 5712# mirror them into SpiderMonkey. 5713#--------------------------------------------------------------------------- 5714 5715# The JavaScript JIT compilers. These are read once on startup so a browser may 5716# need to be restarted if toggling them. In general each subsequent JIT depends 5717# on the ones before it being enabled. 5718- name: javascript.options.blinterp 5719 type: bool 5720 value: true 5721 mirror: always # LoadStartupJSPrefs 5722 do_not_use_directly: true 5723 5724- name: javascript.options.baselinejit 5725 type: bool 5726 value: true 5727 mirror: always # LoadStartupJSPrefs 5728 do_not_use_directly: true 5729 5730- name: javascript.options.ion 5731 type: bool 5732 value: true 5733 mirror: always # LoadStartupJSPrefs 5734 do_not_use_directly: true 5735 5736# The irregexp JIT for regex evaluation. 5737- name: javascript.options.native_regexp 5738 type: bool 5739 value: true 5740 mirror: always # LoadStartupJSPrefs 5741 do_not_use_directly: true 5742 5743# "Warm-up" thresholds at which we attempt to compile a script/function with 5744# the next JIT tier. 5745# 5746# NOTE: These must match JitOptions defaults. 5747- name: javascript.options.blinterp.threshold 5748 type: int32_t 5749 value: 10 5750 mirror: always # LoadStartupJSPrefs 5751 do_not_use_directly: true 5752 5753- name: javascript.options.baselinejit.threshold 5754 type: int32_t 5755 value: 100 5756 mirror: always # LoadStartupJSPrefs 5757 do_not_use_directly: true 5758 5759- name: javascript.options.ion.threshold 5760 type: int32_t 5761 value: 1500 5762 mirror: always # LoadStartupJSPrefs 5763 do_not_use_directly: true 5764 5765# Enable off-main-thread Warp compilation. 5766- name: javascript.options.ion.offthread_compilation 5767 type: bool 5768 value: true 5769 mirror: always # LoadStartupJSPrefs 5770 do_not_use_directly: true 5771 5772#ifdef DEBUG 5773 # Enable extra correctness checks in the JITs that are slow and only available 5774 # in debug builds. 5775- name: javascript.options.jit.full_debug_checks 5776 type: bool 5777 value: false 5778 mirror: always # LoadStartupJSPrefs 5779 do_not_use_directly: true 5780#endif 5781 5782# Heuristic threshold for Warp/Ion to decide that too many bailouts are 5783# happening and an IonScript should be discarded. 5784# 5785# NOTE: This must match JitOptions defaults. 5786- name: javascript.options.ion.frequent_bailout_threshold 5787 type: int32_t 5788 value: 10 5789 mirror: always # LoadStartupJSPrefs 5790 do_not_use_directly: true 5791 5792# A threshold for Warp to decide whether a function can be inlined. 5793# If the size of a function is smaller than this threshold, then it 5794# may be inlined. 5795# 5796# NOTE: These must match JitOptions defaults. 5797- name: javascript.options.inlining_bytecode_max_length 5798 type: uint32_t 5799 value: 130 5800 mirror: always 5801 do_not_use_directly: true 5802 5803- name: javascript.options.compact_on_user_inactive 5804 type: bool 5805 value: true 5806 mirror: always 5807 5808# The default amount of time to wait from the user being idle to starting a 5809# shrinking GC. Measured in milliseconds. 5810- name: javascript.options.compact_on_user_inactive_delay 5811 type: uint32_t 5812#ifdef NIGHTLY_BUILD 5813 value: 15000 5814#else 5815 value: 300000 5816#endif 5817 mirror: always 5818 5819# Use better error message when accessing property of null or undefined. 5820- name: javascript.options.property_error_message_fix 5821 type: bool 5822 value: @IS_NIGHTLY_OR_DEV_EDITION@ 5823 mirror: always 5824 5825# Support for weak references in JavaScript (WeakRef and FinalizationRegistry). 5826- name: javascript.options.weakrefs 5827 type: bool 5828 value: true 5829 mirror: always 5830 5831# Whether to expose the FinalizationRegistry.prototype.cleanupSome method. 5832- name: javascript.options.experimental.weakrefs.expose_cleanupSome 5833 type: bool 5834 value: false 5835 mirror: always 5836 5837#ifdef NIGHTLY_BUILD 5838 # Experimental support for Iterator Helpers in JavaScript. 5839- name: javascript.options.experimental.iterator_helpers 5840 type: bool 5841 value: false 5842 mirror: always 5843 5844# Experimental support for class static blocks in JavaScript. 5845- name: javascript.options.experimental.class_static_blocks 5846 type: bool 5847 value: false 5848 mirror: always 5849#endif // NIGHTLY_BUILD 5850 5851 # Support for Private Fields in JavaScript. 5852- name: javascript.options.experimental.private_fields 5853 type: bool 5854 value: true 5855 mirror: always 5856 5857 # Experimental support for Private Methods in JavaScript. 5858- name: javascript.options.experimental.private_methods 5859 type: bool 5860 value: true 5861 mirror: always 5862 5863 # Experimental support for the ergonomic brand check proposal. 5864- name: javascript.options.experimental.ergonomic_brand_checks 5865 type: bool 5866 value: true 5867 mirror: always 5868 5869 # Experimental support for Top-level Await in JavaScript. 5870- name: javascript.options.experimental.top_level_await 5871 type: bool 5872 value: true 5873 mirror: always 5874 5875# The amount of time we wait between a request to GC (due to leaving a page) and doing the actual GC, in ms. 5876- name: javascript.options.gc_delay 5877 type: uint32_t 5878 value: 4000 5879 mirror: always 5880 5881# The amount of time we wait from the first request to GC to actually doing the first GC, in ms. 5882- name: javascript.options.gc_delay.first 5883 type: uint32_t 5884 value: 10000 5885 mirror: always 5886 5887# After doing a zonal GC, wait this much time (in ms) and then do a full GC, 5888# unless one is already pending. 5889- name: javascript.options.gc_delay.full 5890 type: uint32_t 5891 value: 60000 5892 mirror: always 5893 5894# Maximum amount of time that should elapse between incremental GC slices, in ms. 5895- name: javascript.options.gc_delay.interslice 5896 type: uint32_t 5897 value: 100 5898 mirror: always 5899 5900# nsJSEnvironmentObserver observes the memory-pressure notifications and 5901# forces a garbage collection and cycle collection when it happens, if the 5902# appropriate pref is set. 5903- name: javascript.options.gc_on_memory_pressure 5904 type: bool 5905 # Disable the JS engine's GC on memory pressure, since we do one in the 5906 # mobile browser (bug 669346). 5907 # XXX: this value possibly should be changed, or the pref removed entirely. 5908 # See bug 1450787. 5909 value: @IS_NOT_ANDROID@ 5910 mirror: always 5911 5912# We allow at most MIN(max, MAX(NUM_CPUS / cpu_divisor, 1)) concurrent GCs 5913# between processes 5914- name: javascript.options.concurrent_multiprocess_gcs.cpu_divisor 5915 type: RelaxedAtomicUint32 5916 value: 4 5917 mirror: always 5918 5919# See 'cpu_divisor' above, 0 means UINT_32_MAX. 5920- name: javascript.options.concurrent_multiprocess_gcs.max 5921 type: RelaxedAtomicUint32 5922 value: 0 5923 mirror: always 5924 5925- name: javascript.options.mem.log 5926 type: bool 5927 value: false 5928 mirror: always 5929 5930- name: javascript.options.mem.notify 5931 type: bool 5932 value: false 5933 mirror: always 5934 5935# Whether the Parent process allocates and shares memory with all content 5936# processes. This is mirrored once, as the parent process will do this 5937# allocation early on. 5938- name: javascript.options.self_hosted.use_shared_memory 5939 type: bool 5940 value: true 5941 mirror: always # LoadStartupJSPrefs 5942 do_not_use_directly: true 5943 5944# Streams API. 5945- name: javascript.options.streams 5946 type: RelaxedAtomicBool 5947 value: true 5948 mirror: always 5949 5950# Writable Streams API. (The pref above must also be set to expose this.) 5951# 5952# Writable streams are still EXTRAORDINARILY BETA and it is well-known that 5953# things are likely pretty broken if you poke much at all, so if you flip this 5954# preference, don't report bugs against it just yet. 5955- name: javascript.options.writable_streams 5956 type: RelaxedAtomicBool 5957 value: false 5958 mirror: always 5959 5960- name: javascript.options.main_thread_stack_quota_cap 5961 type: uint32_t 5962#if defined(MOZ_ASAN) 5963 value: 6 * 1024 * 1024 5964#else 5965 value: 2 * 1024 * 1024 5966#endif 5967 mirror: always 5968 5969- name: javascript.options.wasm_optimizingjit 5970 type: bool 5971 value: true 5972 mirror: always 5973 5974#if defined(ENABLE_WASM_SIMD) 5975- name: javascript.options.wasm_simd 5976 type: bool 5977 value: true 5978 mirror: always 5979#endif // defined(ENABLE_WASM_SIMD) 5980 5981#if defined(ENABLE_WASM_RELAXED_SIMD) 5982- name: javascript.options.wasm_relaxed_simd 5983 type: bool 5984 value: false 5985 mirror: always 5986#endif // defined(ENABLE_WASM_RELAXED_SIMD) 5987 5988#if defined(ENABLE_WASM_EXTENDED_CONST) 5989- name: javascript.options.wasm_extended_const 5990 type: bool 5991 value: @IS_NIGHTLY_BUILD@ 5992 mirror: always 5993#endif // defined(ENABLE_WASM_EXTENDED_CONST) 5994 5995#if defined(ENABLE_WASM_EXCEPTIONS) 5996- name: javascript.options.wasm_exceptions 5997 type: bool 5998 value: false 5999 mirror: always 6000#endif // defined(ENABLE_WASM_EXCEPTIONS) 6001 6002#if defined(ENABLE_WASM_FUNCTION_REFERENCES) 6003- name: javascript.options.wasm_function_references 6004 type: bool 6005 value: false 6006 mirror: always 6007#endif // defined(ENABLE_WASM_FUNCTION_REFERENCES) 6008 6009#if defined(ENABLE_WASM_GC) 6010- name: javascript.options.wasm_gc 6011 type: bool 6012 value: false 6013 mirror: always 6014#endif // defined(ENABLE_WASM_GC) 6015 6016#if defined(ENABLE_WASM_SIMD_WORMHOLE) && defined(EARLY_BETA_OR_EARLIER) 6017 # This is x64-only and it would break unified macOS builds if 6018 # it were in all.js. The feature rides the trains but not the 6019 # pref to control it; in late beta and release, it is only 6020 # available to privileged content. 6021- name: javascript.options.wasm_simd_wormhole 6022 type: bool 6023 value: false 6024 mirror: always 6025#endif 6026 6027# Support for ArrayBuffers larger than 2 GB on 64-bit systems 6028- name: javascript.options.large_arraybuffers 6029 type: bool 6030 value: true 6031 mirror: always # LoadStartupJSPrefs 6032 do_not_use_directly: true 6033 6034# Support for pretenuring allocations based on their allocation site. 6035- name: javascript.options.site_based_pretenuring 6036 type: bool 6037 value: true 6038 mirror: always # LoadStartupJSPrefs 6039 do_not_use_directly: true 6040 6041#if !defined(JS_CODEGEN_MIPS32) && !defined(JS_CODEGEN_MIPS64) 6042 # Spectre security vulnerability mitigations for the JS JITs. 6043 # 6044 # NOTE: The MIPS backends do not support these mitigations (and generally 6045 # do not need them). In that case, leave the pref unlisted with its 6046 # default value of false. 6047- name: javascript.options.spectre.index_masking 6048 type: bool 6049 value: true 6050 mirror: always # LoadStartupJSPrefs 6051 do_not_use_directly: true 6052 6053- name: javascript.options.spectre.object_mitigations 6054 type: bool 6055 value: true 6056 mirror: always # LoadStartupJSPrefs 6057 do_not_use_directly: true 6058 6059- name: javascript.options.spectre.string_mitigations 6060 type: bool 6061 value: true 6062 mirror: always # LoadStartupJSPrefs 6063 do_not_use_directly: true 6064 6065- name: javascript.options.spectre.value_masking 6066 type: bool 6067 value: true 6068 mirror: always # LoadStartupJSPrefs 6069 do_not_use_directly: true 6070 6071- name: javascript.options.spectre.jit_to_cxx_calls 6072 type: bool 6073 value: true 6074 mirror: always # LoadStartupJSPrefs 6075 do_not_use_directly: true 6076#endif // !defined(JS_CODEGEN_MIPSXX) 6077 6078# Whether to use the XPCOM thread pool for JS helper tasks. 6079- name: javascript.options.external_thread_pool 6080 type: bool 6081 value: true 6082 mirror: always 6083 do_not_use_directly: true 6084 6085# Whether to use fdlibm for Math.sin, Math.cos, and Math.tan. When 6086# privacy.resistFingerprinting is true, this pref is ignored and fdlibm is used 6087# anyway. 6088- name: javascript.options.use_fdlibm_for_sin_cos_tan 6089 type: bool 6090 value: false 6091 mirror: always 6092 6093#--------------------------------------------------------------------------- 6094# Prefs starting with "layers." 6095#--------------------------------------------------------------------------- 6096 6097# Whether to disable acceleration for all widgets. 6098- name: layers.acceleration.disabled 6099 type: bool 6100 value: false 6101 mirror: once 6102 do_not_use_directly: true 6103# Instead, use gfxConfig::IsEnabled(Feature::HW_COMPOSITING). 6104 6105- name: layers.acceleration.draw-fps 6106 type: RelaxedAtomicBool 6107 value: false 6108 mirror: always 6109 6110- name: layers.acceleration.draw-fps.print-histogram 6111 type: RelaxedAtomicBool 6112 value: false 6113 mirror: always 6114 6115- name: layers.acceleration.draw-fps.write-to-file 6116 type: RelaxedAtomicBool 6117 value: false 6118 mirror: always 6119 6120# Whether to force acceleration on, ignoring blacklists. 6121 6122# bug 838603 -- on Android, accidentally blacklisting OpenGL layers 6123# means a startup crash for everyone. 6124# Temporarily force-enable GL compositing. This is default-disabled 6125# deep within the bowels of the widgetry system. Remove me when GL 6126# compositing isn't default disabled in widget/android. 6127- name: layers.acceleration.force-enabled 6128 type: bool 6129 value: @IS_ANDROID@ 6130 mirror: once 6131 do_not_use_directly: true 6132 6133# Whether we allow AMD switchable graphics. 6134- name: layers.amd-switchable-gfx.enabled 6135 type: bool 6136 value: true 6137 mirror: once 6138 6139# Whether to use async panning and zooming. 6140- name: layers.async-pan-zoom.enabled 6141 type: bool 6142 value: true 6143 mirror: once 6144 do_not_use_directly: true 6145 6146# Preference that when switched at runtime will run a series of benchmarks 6147# and output the result to stderr. 6148- name: layers.bench.enabled 6149 type: RelaxedAtomicBool 6150 value: false 6151 mirror: always 6152 6153- name: layers.bufferrotation.enabled 6154 type: bool 6155 value: true 6156 mirror: once 6157 6158- name: layers.child-process-shutdown 6159 type: RelaxedAtomicBool 6160 value: true 6161 mirror: always 6162 6163- name: layers.componentalpha.enabled 6164 type: bool 6165#ifdef MOZ_GFX_OPTIMIZE_MOBILE 6166 # Nb: we ignore this pref if MOZ_GFX_OPTIMIZE_MOBILE is defined, as if this 6167 # pref was always false. But we go to the effort of setting it to false so 6168 # that telemetry's reporting of the pref value is more likely to reflect what 6169 # the code is doing. 6170 value: false 6171#else 6172 value: true 6173#endif 6174 mirror: once 6175 do_not_use_directly: true 6176 6177- name: layers.d3d11.force-warp 6178 type: bool 6179 value: false 6180 mirror: once 6181 6182- name: layers.d3d11.enable-blacklist 6183 type: bool 6184 value: true 6185 mirror: once 6186 6187# Enable DEAA antialiasing for transformed layers in the compositor. 6188- name: layers.deaa.enabled 6189 type: RelaxedAtomicBool 6190#if defined(MOZ_WIDGET_ANDROID) 6191 value: false 6192#else 6193 value: true 6194#endif 6195 mirror: always 6196 6197- name: layers.draw-bigimage-borders 6198 type: RelaxedAtomicBool 6199 value: false 6200 mirror: always 6201 6202- name: layers.draw-borders 6203 type: RelaxedAtomicBool 6204 value: false 6205 mirror: always 6206 6207- name: layers.draw-tile-borders 6208 type: RelaxedAtomicBool 6209 value: false 6210 mirror: always 6211 6212- name: layers.draw-layer-info 6213 type: RelaxedAtomicBool 6214 value: false 6215 mirror: always 6216 6217- name: layers.dump 6218 type: RelaxedAtomicBool 6219 value: false 6220 mirror: always 6221 6222# If we're dumping layers, also dump the texture data 6223- name: layers.dump-texture 6224 type: RelaxedAtomicBool 6225 value: false 6226 mirror: always 6227 6228#ifdef MOZ_DUMP_PAINTING 6229- name: layers.dump-decision 6230 type: RelaxedAtomicBool 6231 value: false 6232 mirror: always 6233#endif 6234 6235- name: layers.dump-client-layers 6236 type: RelaxedAtomicBool 6237 value: false 6238 mirror: always 6239 6240- name: layers.dump-host-layers 6241 type: RelaxedAtomicBool 6242 value: false 6243 mirror: always 6244 6245- name: layers.compositing-tiles.width 6246 type: RelaxedAtomicInt32 6247 value: 1024 6248 mirror: always 6249 6250- name: layers.compositing-tiles.height 6251 type: RelaxedAtomicInt32 6252 value: 1024 6253 mirror: always 6254 6255# 0 is "no change" for contrast, positive values increase it, negative values 6256# decrease it until we hit mid gray at -1 contrast, after that it gets weird. 6257- name: layers.effect.contrast 6258 type: AtomicFloat 6259 value: 0.0f 6260 mirror: always 6261 6262- name: layers.effect.grayscale 6263 type: RelaxedAtomicBool 6264 value: false 6265 mirror: always 6266 6267- name: layers.effect.invert 6268 type: RelaxedAtomicBool 6269 value: false 6270 mirror: always 6271 6272- name: layers.enable-tiles 6273 type: bool 6274#if defined(XP_MACOSX) || defined (XP_OPENBSD) 6275 value: true 6276#else 6277 value: false 6278#endif 6279 mirror: once 6280 6281- name: layers.enable-tiles-if-skia-pomtp 6282 type: bool 6283#if defined(XP_WIN) 6284 value: true 6285#else 6286 value: false 6287#endif 6288 mirror: once 6289 6290- name: layers.flash-borders 6291 type: RelaxedAtomicBool 6292 value: false 6293 mirror: always 6294 6295# Force all possible layers to be always active layers. 6296- name: layers.force-active 6297 type: bool 6298 value: false 6299 mirror: always 6300 6301- name: layers.force-shmem-tiles 6302 type: bool 6303 value: false 6304 mirror: once 6305 6306- name: layers.draw-mask-debug 6307 type: RelaxedAtomicBool 6308 value: false 6309 mirror: always 6310 6311- name: layers.force-synchronous-resize 6312 type: RelaxedAtomicBool 6313 value: true 6314 mirror: always 6315 6316# Whether to enable arbitrary layer geometry for OpenGL compositor. 6317- name: layers.geometry.opengl.enabled 6318 type: RelaxedAtomicBool 6319 value: true 6320 mirror: always 6321 6322# Whether to enable arbitrary layer geometry for Basic compositor. 6323- name: layers.geometry.basic.enabled 6324 type: RelaxedAtomicBool 6325 value: true 6326 mirror: always 6327 6328 # Whether to enable arbitrary layer geometry for DirectX compositor. 6329- name: layers.geometry.d3d11.enabled 6330 type: RelaxedAtomicBool 6331 value: true 6332 mirror: always 6333 6334- name: layers.gpu-process.allow-software 6335 type: bool 6336#if defined(XP_WIN) 6337 value: true 6338#else 6339 value: false 6340#endif 6341 mirror: once 6342 6343- name: layers.gpu-process.enabled 6344 type: bool 6345#if defined(XP_WIN) 6346 value: true 6347#else 6348 value: false 6349#endif 6350 mirror: once 6351 6352- name: layers.gpu-process.force-enabled 6353 type: bool 6354 value: false 6355 mirror: once 6356 6357- name: layers.gpu-process.ipc_reply_timeout_ms 6358 type: int32_t 6359 value: 10000 6360 mirror: once 6361 6362# How many unstable GPU process restarts we allow for a given configuration. 6363- name: layers.gpu-process.max_restarts 6364 type: RelaxedAtomicInt32 6365#if defined(XP_WIN) || defined(MOZ_WIDGET_GTK) 6366 #if defined(NIGHTLY_BUILD) 6367 value: 6 6368 #else 6369 value: 3 6370 #endif 6371#else 6372 value: 1 6373#endif 6374 mirror: always 6375 6376# How many frames we must render before declaring the GPU process stable, and 6377# allow restarts without it counting against our maximum restarts. 6378- name: layers.gpu-process.stable.frame-threshold 6379 type: RelaxedAtomicUint32 6380 value: 10 6381 mirror: always 6382 6383# How many milliseconds the GPU process must have lived before we accept that 6384# it is stable, and allow restarts without it counting against our maximum 6385# restarts. 6386- name: layers.gpu-process.stable.min-uptime-ms 6387 type: RelaxedAtomicInt32 6388 value: 4 * 60000 6389 mirror: always 6390 6391# Note: This pref will only be used if it is less than layers.gpu-process.max_restarts. 6392- name: layers.gpu-process.max_restarts_with_decoder 6393 type: RelaxedAtomicInt32 6394 value: 0 6395 mirror: always 6396 6397- name: layers.gpu-process.startup_timeout_ms 6398 type: int32_t 6399 value: 5000 6400 mirror: once 6401 6402- name: layers.gpu-process.crash-also-crashes-browser 6403 type: bool 6404 value: false 6405 mirror: always 6406 6407- name: layers.low-precision-buffer 6408 type: RelaxedAtomicBool 6409 value: false 6410 mirror: always 6411 6412- name: layers.low-precision-opacity 6413 type: AtomicFloat 6414 value: 1.0f 6415 mirror: always 6416 6417- name: layers.low-precision-resolution 6418 type: AtomicFloat 6419 value: 0.25f 6420 mirror: always 6421 6422# Max number of layers per container. See Overwrite in mobile prefs. 6423- name: layers.max-active 6424 type: RelaxedAtomicInt32 6425 value: -1 6426 mirror: always 6427 6428 6429# Whether to animate simple opacity and transforms on the compositor. 6430- name: layers.offmainthreadcomposition.async-animations 6431 type: bool 6432 value: true 6433 mirror: always 6434 6435# Whether to log information about off main thread animations to stderr. 6436- name: layers.offmainthreadcomposition.log-animations 6437 type: bool 6438 value: false 6439 mirror: always 6440 6441- name: layers.offmainthreadcomposition.force-disabled 6442 type: bool 6443 value: false 6444 mirror: once 6445 6446# Compositor target frame rate. NOTE: If vsync is enabled the compositor 6447# frame rate will still be capped. 6448# -1 -> default (match layout.frame_rate or 60 FPS) 6449# 0 -> full-tilt mode: Recomposite even if not transaction occured. 6450- name: layers.offmainthreadcomposition.frame-rate 6451 type: RelaxedAtomicInt32 6452 value: -1 6453 mirror: always 6454 6455- name: layers.omtp.capture-limit 6456 type: uint32_t 6457 value: 25 * 1024 * 1024 6458 mirror: once 6459 6460- name: layers.omtp.dump-capture 6461 type: RelaxedAtomicBool 6462 value: false 6463 mirror: always 6464 6465- name: layers.omtp.paint-workers 6466 type: int32_t 6467 value: -1 6468 mirror: once 6469 6470- name: layers.omtp.release-capture-on-main-thread 6471 type: RelaxedAtomicBool 6472 value: false 6473 mirror: always 6474 6475- name: layers.orientation.sync.timeout 6476 type: RelaxedAtomicUint32 6477 value: (uint32_t)0 6478 mirror: always 6479 6480#ifdef XP_WIN 6481- name: layers.prefer-opengl 6482 type: bool 6483 value: false 6484 mirror: once 6485#endif 6486 6487- name: layers.progressive-paint 6488 type: RelaxedAtomicBool 6489 value: false 6490 mirror: always 6491 do_not_use_directly: true 6492 6493# Copy-on-write canvas. 6494- name: layers.shared-buffer-provider.enabled 6495 type: RelaxedAtomicBool 6496 value: true 6497 mirror: always 6498 6499- name: layers.single-tile.enabled 6500 type: RelaxedAtomicBool 6501 value: true 6502 mirror: always 6503 6504# We allow for configurable and rectangular tile size to avoid wasting memory 6505# on devices whose screen size does not align nicely to the default tile size. 6506# Although layers can be any size, they are often the same size as the screen, 6507# especially for width. 6508- name: layers.tile-width 6509 type: int32_t 6510 value: 512 6511 mirror: once 6512 6513- name: layers.tile-height 6514 type: int32_t 6515 value: 512 6516 mirror: once 6517 6518- name: layers.tile-initial-pool-size 6519 type: uint32_t 6520 value: (uint32_t)50 6521 mirror: once 6522 6523- name: layers.tile-pool-unused-size 6524 type: uint32_t 6525 value: (uint32_t)10 6526 mirror: once 6527 6528- name: layers.tile-pool-shrink-timeout 6529 type: uint32_t 6530 value: (uint32_t)50 6531 mirror: once 6532 6533- name: layers.tile-pool-clear-timeout 6534 type: uint32_t 6535 value: (uint32_t)5000 6536 mirror: once 6537 6538# If this is set the tile size will only be treated as a suggestion. 6539# On B2G we will round this to the stride of the underlying allocation. 6540# On any platform we may later use the screen size and ignore 6541# tile-width/tile-height entirely. Its recommended to turn this off 6542# if you change the tile size. 6543- name: layers.tiles.adjust 6544 type: bool 6545 value: true 6546 mirror: once 6547 6548- name: layers.tiles.edge-padding 6549 type: bool 6550 value: @IS_ANDROID@ 6551 mirror: once 6552 6553- name: layers.tiles.fade-in.enabled 6554 type: RelaxedAtomicBool 6555 value: false 6556 mirror: always 6557 6558- name: layers.tiles.fade-in.duration-ms 6559 type: RelaxedAtomicUint32 6560 value: 250 6561 mirror: always 6562 6563- name: layers.tiles.retain-back-buffer 6564 type: RelaxedAtomicBool 6565 value: true 6566 mirror: always 6567 6568- name: layers.transaction.warning-ms 6569 type: RelaxedAtomicUint32 6570 value: 200 6571 mirror: always 6572 6573- name: layers.uniformity-info 6574 type: bool 6575 value: false 6576 mirror: once 6577 6578- name: layers.use-image-offscreen-surfaces 6579 type: bool 6580 value: true 6581 mirror: once 6582 6583- name: layers.recycle-allocator-rdd 6584 type: bool 6585 value: true 6586 mirror: once 6587 6588- name: layers.iosurfaceimage.recycle-limit 6589 type: RelaxedAtomicUint32 6590 value: 15 6591 mirror: always 6592 6593#--------------------------------------------------------------------------- 6594# Prefs starting with "layout." 6595#--------------------------------------------------------------------------- 6596 6597# Debug-only pref to force enable the AccessibleCaret. If you want to 6598# control AccessibleCaret by mouse, you'll need to set 6599# "layout.accessiblecaret.hide_carets_for_mouse_input" to false. 6600- name: layout.accessiblecaret.enabled 6601 type: bool 6602 value: false 6603 mirror: always 6604 6605# Enable the accessible caret on platforms/devices 6606# that we detect have touch support. Note that this pref is an 6607# additional way to enable the accessible carets, rather than 6608# overriding the layout.accessiblecaret.enabled pref. 6609- name: layout.accessiblecaret.enabled_on_touch 6610 type: bool 6611 value: true 6612 mirror: always 6613 6614# By default, carets become tilt only when they are overlapping. 6615- name: layout.accessiblecaret.always_tilt 6616 type: bool 6617 value: false 6618 mirror: always 6619 6620# Show caret in cursor mode when long tapping on an empty content. This 6621# also changes the default update behavior in cursor mode, which is based 6622# on the emptiness of the content, into something more heuristic. See 6623# AccessibleCaretManager::UpdateCaretsForCursorMode() for the details. 6624- name: layout.accessiblecaret.caret_shown_when_long_tapping_on_empty_content 6625 type: bool 6626 value: false 6627 mirror: always 6628 6629# 0 = by default, always hide carets for selection changes due to JS calls. 6630# 1 = update any visible carets for selection changes due to JS calls, 6631# but don't show carets if carets are hidden. 6632# 2 = always show carets for selection changes due to JS calls. 6633- name: layout.accessiblecaret.script_change_update_mode 6634 type: int32_t 6635 value: 0 6636 mirror: always 6637 6638# Allow one caret to be dragged across the other caret without any limitation. 6639# This matches the built-in convention for all desktop platforms. 6640- name: layout.accessiblecaret.allow_dragging_across_other_caret 6641 type: bool 6642 value: true 6643 mirror: always 6644 6645# Optionally provide haptic feedback on long-press selection events. 6646- name: layout.accessiblecaret.hapticfeedback 6647 type: bool 6648 value: false 6649 mirror: always 6650 6651# Smart phone-number selection on long-press is not enabled by default. 6652- name: layout.accessiblecaret.extend_selection_for_phone_number 6653 type: bool 6654 value: false 6655 mirror: always 6656 6657# Keep the accessible carets hidden when the user is using mouse input (as 6658# opposed to touch/pen/etc.). 6659- name: layout.accessiblecaret.hide_carets_for_mouse_input 6660 type: bool 6661 value: true 6662 mirror: always 6663 6664# CSS attributes (width, height, margin-left) of the AccessibleCaret in CSS 6665# pixels. 6666- name: layout.accessiblecaret.width 6667 type: float 6668 value: 34.0f 6669 mirror: always 6670 6671- name: layout.accessiblecaret.height 6672 type: float 6673 value: 36.0f 6674 mirror: always 6675 6676- name: layout.accessiblecaret.margin-left 6677 type: float 6678 value: -18.5f 6679 mirror: always 6680 6681- name: layout.accessiblecaret.transition-duration 6682 type: float 6683 value: 250.0f 6684 mirror: always 6685 6686# Simulate long tap events to select words. Mainly used in manual testing 6687# with mouse. 6688- name: layout.accessiblecaret.use_long_tap_injector 6689 type: bool 6690 value: false 6691 mirror: always 6692 6693# Whether we should layerize all animated images (if otherwise possible). 6694- name: layout.animated-image-layers.enabled 6695 type: bool 6696 value: false 6697 mirror: always 6698 6699# One of several prefs affecting the maximum area to pre-render when animating 6700# a large element on the compositor. 6701# This pref enables transform (and transform like properties) animations on a 6702# large element run on the compositor with rendering partial area of the 6703# element on the main thread instead of rendering the whole area. Once the 6704# animation tried to composite out of the partial rendered area, the animation 6705# is rendered again with the latest visible partial area. 6706- name: layout.animation.prerender.partial 6707 type: RelaxedAtomicBool 6708 value: @IS_NIGHTLY_BUILD@ 6709 mirror: always 6710 6711# One of several prefs affecting the maximum area to pre-render when animating 6712# a large element on the compositor. 6713# This value is applied to both x and y axes and a perfect square contructed 6714# by the greater axis value which will be capped by the absolute limits is used 6715# for the partial pre-render area. 6716- name: layout.animation.prerender.viewport-ratio-limit 6717 type: AtomicFloat 6718 value: 1.125f 6719 mirror: always 6720 6721# One of several prefs affecting the maximum area to pre-render when animating 6722# a large element on the compositor. 6723- name: layout.animation.prerender.absolute-limit-x 6724 type: RelaxedAtomicUint32 6725 value: 4096 6726 mirror: always 6727 6728# One of several prefs affecting the maximum area to pre-render when animating 6729# a large element on the compositor. 6730- name: layout.animation.prerender.absolute-limit-y 6731 type: RelaxedAtomicUint32 6732 value: 4096 6733 mirror: always 6734 6735# Test-only pref, if this is true, partial pre-rendered transform animations 6736# get stuck when it reaches to the pre-rendered boundaries and the pre-render 6737# region is never updated. 6738- name: layout.animation.prerender.partial.jank 6739 type: RelaxedAtomicBool 6740 value: false 6741 mirror: always 6742 6743# Whether non-standard caption-side values are enabled 6744- name: layout.css.caption-side-non-standard.enabled 6745 type: RelaxedAtomicBool 6746 value: false 6747 mirror: always 6748 rust: true 6749 6750# Whether Constructable Stylesheets are enabled in script. 6751- name: layout.css.constructable-stylesheets.enabled 6752 type: bool 6753 value: false 6754 mirror: always 6755 6756# Should we look for counter ancestor scopes first? 6757- name: layout.css.counter-ancestor-scope.enabled 6758 type: bool 6759 value: true 6760 mirror: always 6761 6762# Whether we get notified of history queries for visited even if unvisited. 6763- name: layout.css.notify-of-unvisited 6764 type: RelaxedAtomicBool 6765 value: true 6766 mirror: always 6767 6768# Whether we always restyle / repaint as a result of a visited query 6769- name: layout.css.always-repaint-on-unvisited 6770 type: RelaxedAtomicBool 6771 value: true 6772 mirror: always 6773 6774# Make `zoom` a `transform` + `transform-origin` alias. 6775- name: layout.css.zoom-transform-hack.enabled 6776 type: RelaxedAtomicBool 6777 value: false 6778 mirror: always 6779 rust: true 6780 6781# Whether the `:autofill` pseudo-class is exposed to content. 6782- name: layout.css.autofill.enabled 6783 type: RelaxedAtomicBool 6784 value: true 6785 mirror: always 6786 rust: true 6787 6788# Whether the `:-moz-submit-invalid` pseudo-class is exposed to content. 6789- name: layout.css.moz-submit-invalid.enabled 6790 type: RelaxedAtomicBool 6791 value: false 6792 mirror: always 6793 rust: true 6794 6795# Whether the `-moz-control-character-visibility` property is exposed to 6796# content. 6797# 6798# Only for testing purposes. 6799- name: layout.css.moz-control-character-visibility.enabled 6800 type: RelaxedAtomicBool 6801 value: false 6802 mirror: always 6803 rust: true 6804 6805# Whether the `accent-color` css property is enabled. 6806- name: layout.css.accent-color.enabled 6807 type: RelaxedAtomicBool 6808 value: @IS_NIGHTLY_BUILD@ 6809 mirror: always 6810 rust: true 6811 6812# Whether the `aspect-ratio` in css-sizing-4 is enabled. 6813- name: layout.css.aspect-ratio.enabled 6814 type: bool 6815 value: true 6816 mirror: always 6817 rust: true 6818 6819# Is the codepath for using cached scrollbar styles enabled? 6820- name: layout.css.cached-scrollbar-styles.enabled 6821 type: bool 6822 value: true 6823 mirror: always 6824 6825# Is path() supported in clip-path? 6826- name: layout.css.clip-path-path.enabled 6827 type: RelaxedAtomicBool 6828 value: true 6829 mirror: always 6830 rust: true 6831 6832# Is the image-set() function enabled? 6833- name: layout.css.image-set.enabled 6834 type: RelaxedAtomicBool 6835 value: true 6836 mirror: always 6837 rust: true 6838 6839# Are implicit tracks in computed grid templates serialized? 6840- name: layout.css.serialize-grid-implicit-tracks 6841 type: RelaxedAtomicBool 6842 value: true 6843 mirror: always 6844 6845# Whether the bloom filter optimization is applied to attribute names too, not 6846# only classes / id / namespaces / etc. 6847- name: layout.css.bloom-filter-attribute-names.enabled 6848 type: RelaxedAtomicBool 6849 value: true 6850 mirror: always 6851 rust: true 6852 6853# Set the number of device pixels per CSS pixel. A value <= 0 means choose 6854# automatically based on user settings for the platform (e.g., "UI scale factor" 6855# on Mac). A positive value is used as-is. This effectively controls the size 6856# of a CSS "px". This is only used for windows on the screen, not for printing. 6857- name: layout.css.devPixelsPerPx 6858 type: AtomicFloat 6859 value: -1.0f 6860 mirror: always 6861 6862# Is support for CSS backdrop-filter enabled? 6863- name: layout.css.backdrop-filter.enabled 6864 type: bool 6865 value: false 6866 mirror: always 6867 6868# Should stray control characters be rendered visibly? 6869- name: layout.css.control-characters.visible 6870 type: RelaxedAtomicBool 6871 value: @IS_NOT_RELEASE_OR_BETA@ 6872 mirror: always 6873 rust: true 6874 6875# Is support for GeometryUtils.convert*FromNode enabled? 6876- name: layout.css.convertFromNode.enabled 6877 type: bool 6878 value: @IS_NOT_RELEASE_OR_BETA@ 6879 mirror: always 6880 6881- name: layout.css.cross-fade.enabled 6882 type: RelaxedAtomicBool 6883 value: false 6884 mirror: always 6885 rust: true 6886 6887# Is support for color-mix on content enabled? 6888- name: layout.css.color-mix.enabled 6889 type: RelaxedAtomicBool 6890 value: @IS_NIGHTLY_BUILD@ 6891 mirror: always 6892 rust: true 6893 6894# Is support for DOMMatrix enabled? 6895- name: layout.css.DOMMatrix.enabled 6896 type: RelaxedAtomicBool 6897 value: true 6898 mirror: always 6899 6900# Is support for DOMQuad enabled? 6901- name: layout.css.DOMQuad.enabled 6902 type: RelaxedAtomicBool 6903 value: true 6904 mirror: always 6905 6906# Is support for DOMPoint enabled? 6907- name: layout.css.DOMPoint.enabled 6908 type: RelaxedAtomicBool 6909 value: true 6910 mirror: always 6911 6912# Is support for d property for SVG path element? 6913- name: layout.css.d-property.enabled 6914 type: bool 6915 value: @IS_NIGHTLY_BUILD@ 6916 mirror: always 6917 6918# Are we emulating -moz-{inline}-box layout using CSS flexbox? 6919- name: layout.css.emulate-moz-box-with-flex 6920 type: bool 6921 value: false 6922 mirror: always 6923 6924# Is support for fit-content() enabled? 6925- name: layout.css.fit-content-function.enabled 6926 type: RelaxedAtomicBool 6927 value: false 6928 mirror: always 6929 rust: true 6930 6931# Is support for the font-display @font-face descriptor enabled? 6932- name: layout.css.font-display.enabled 6933 type: RelaxedAtomicBool 6934 value: true 6935 mirror: always 6936 rust: true 6937 6938# Is support for document.fonts enabled? 6939- name: layout.css.font-loading-api.enabled 6940 type: bool 6941 value: true 6942 mirror: always 6943 6944# Is support for the @font-face metrics override descriptors enabled? 6945- name: layout.css.font-metrics-overrides.enabled 6946 type: RelaxedAtomicBool 6947 value: true 6948 mirror: always 6949 rust: true 6950 6951# Is support for variation fonts enabled? 6952- name: layout.css.font-variations.enabled 6953 type: RelaxedAtomicBool 6954 value: true 6955 mirror: always 6956 rust: true 6957 6958# Is support for the size-adjust @font-face descriptor enabled? 6959- name: layout.css.size-adjust.enabled 6960 type: RelaxedAtomicBool 6961 value: @IS_NIGHTLY_BUILD@ 6962 mirror: always 6963 rust: true 6964 6965# Is the optional adjustment-basis value for font-size-adjust enabled? 6966- name: layout.css.font-size-adjust.basis.enabled 6967 type: RelaxedAtomicBool 6968 value: @IS_NIGHTLY_BUILD@ 6969 mirror: always 6970 rust: true 6971 6972# Visibility level of font families available to CSS font-matching: 6973# 1 - only base system fonts 6974# 2 - also fonts from optional language packs 6975# 3 - also user-installed fonts 6976- name: layout.css.font-visibility.level 6977 type: RelaxedAtomicInt32 6978 value: 3 6979 mirror: always 6980 6981# Is support for GeometryUtils.getBoxQuads enabled? 6982- name: layout.css.getBoxQuads.enabled 6983 type: bool 6984 value: @IS_NOT_RELEASE_OR_BETA@ 6985 mirror: always 6986 6987# Is support for CSS "grid-template-{columns,rows}: subgrid X" enabled? 6988- name: layout.css.grid-template-subgrid-value.enabled 6989 type: RelaxedAtomicBool 6990 value: true 6991 mirror: always 6992 rust: true 6993 6994# Is support for CSS masonry layout enabled? 6995- name: layout.css.grid-template-masonry-value.enabled 6996 type: RelaxedAtomicBool 6997 value: @IS_NIGHTLY_BUILD@ 6998 mirror: always 6999 rust: true 7000 7001# Is support for CSS individual transform enabled? 7002- name: layout.css.individual-transform.enabled 7003 type: bool 7004 value: true 7005 mirror: always 7006 7007# Is support for CSS initial-letter property enabled? 7008- name: layout.css.initial-letter.enabled 7009 type: bool 7010 value: false 7011 mirror: always 7012 7013# Pref to control whether line-height: -moz-block-height is exposed to content. 7014- name: layout.css.line-height-moz-block-height.content.enabled 7015 type: RelaxedAtomicBool 7016 value: false 7017 mirror: always 7018 rust: true 7019 7020# Is support for motion-path enabled? 7021- name: layout.css.motion-path.enabled 7022 type: bool 7023 value: true 7024 mirror: always 7025 7026# Is support for motion-path ray() enabled? 7027- name: layout.css.motion-path-ray.enabled 7028 type: RelaxedAtomicBool 7029 value: @IS_NIGHTLY_BUILD@ 7030 mirror: always 7031 rust: true 7032 7033# Pref to control whether the ::marker property restrictions defined in [1] 7034# apply. 7035# 7036# [1]: https://drafts.csswg.org/css-pseudo-4/#selectordef-marker 7037- name: layout.css.marker.restricted 7038 type: RelaxedAtomicBool 7039 value: true 7040 mirror: always 7041 rust: true 7042 7043# Is support for math-style enabled? 7044- name: layout.css.math-style.enabled 7045 type: RelaxedAtomicBool 7046 value: @IS_NIGHTLY_BUILD@ 7047 mirror: always 7048 rust: true 7049 7050# Is support for math-depth enabled? 7051# This must not be enabled until implementation is complete (see bug 1667090). 7052- name: layout.css.math-depth.enabled 7053 type: RelaxedAtomicBool 7054 value: false 7055 mirror: always 7056 rust: true 7057 7058# Pref to control whether @-moz-document rules are enabled in content pages. 7059- name: layout.css.moz-document.content.enabled 7060 type: RelaxedAtomicBool 7061 value: false 7062 mirror: always 7063 rust: true 7064 7065# Is -moz-osx-font-smoothing enabled? (Only supported in OSX builds) 7066- name: layout.css.osx-font-smoothing.enabled 7067 type: bool 7068#if defined(XP_MACOSX) 7069 value: true 7070#else 7071 value: false 7072#endif 7073 mirror: always 7074 7075# Is support for CSS overflow-clip-box enabled for non-UA sheets? 7076- name: layout.css.overflow-clip-box.enabled 7077 type: bool 7078 value: false 7079 mirror: always 7080 7081# Is support for overscroll-behavior enabled? 7082- name: layout.css.overscroll-behavior.enabled 7083 type: bool 7084 value: true 7085 mirror: always 7086 7087- name: layout.css.overflow-logical.enabled 7088 type: bool 7089 value: true 7090 mirror: always 7091 7092# Enables parsing size properties in page at-rules 7093- name: layout.css.page-size.enabled 7094 type: RelaxedAtomicBool 7095 value: false 7096 mirror: always 7097 rust: true 7098 7099# Dictates whether or not the prefers contrast media query will be 7100# usable. 7101# true: prefers-contrast will toggle based on OS and browser settings. 7102# false: prefers-contrast will only parse and toggle in the browser 7103# chrome and ua. 7104- name: layout.css.prefers-contrast.enabled 7105 type: RelaxedAtomicBool 7106 value: false 7107 mirror: always 7108 rust: true 7109 7110# Dictates whether or not the forced-colors media query is enabled. 7111- name: layout.css.forced-colors.enabled 7112 type: RelaxedAtomicBool 7113 value: true 7114 mirror: always 7115 rust: true 7116 7117# Is support for -moz-prefixed animation properties enabled? 7118- name: layout.css.prefixes.animations 7119 type: bool 7120 value: true 7121 mirror: always 7122 7123# Is support for -moz-border-image enabled? 7124- name: layout.css.prefixes.border-image 7125 type: bool 7126 value: true 7127 mirror: always 7128 7129# Is support for -moz-box-sizing enabled? 7130- name: layout.css.prefixes.box-sizing 7131 type: bool 7132 value: true 7133 mirror: always 7134 7135# Is support for -moz-prefixed multi-column properties (including column-gap) enabled? 7136- name: layout.css.prefixes.columns 7137 type: bool 7138 value: false 7139 mirror: always 7140 7141# Is support for -moz-prefixed font feature properties enabled? 7142- name: layout.css.prefixes.font-features 7143 type: bool 7144 value: true 7145 mirror: always 7146 7147# Is support for -moz-prefixed transform properties enabled? 7148- name: layout.css.prefixes.transforms 7149 type: bool 7150 value: true 7151 mirror: always 7152 7153# Is support for -moz-prefixed transition properties enabled? 7154- name: layout.css.prefixes.transitions 7155 type: bool 7156 value: true 7157 mirror: always 7158 7159# Is CSS error reporting enabled? 7160- name: layout.css.report_errors 7161 type: bool 7162 value: true 7163 mirror: always 7164 7165- name: layout.css.resizeobserver.enabled 7166 type: bool 7167 value: true 7168 mirror: always 7169 7170# Are inter-character ruby annotations enabled? 7171- name: layout.css.ruby.intercharacter.enabled 7172 type: bool 7173 value: false 7174 mirror: always 7175 7176- name: layout.css.scroll-behavior.damping-ratio 7177 type: AtomicFloat 7178 value: 1.0f 7179 mirror: always 7180 7181- name: layout.css.supports-selector.enabled 7182 type: RelaxedAtomicBool 7183 value: true 7184 mirror: always 7185 rust: true 7186 7187# Is CSSOM-View scroll-behavior and its MSD smooth scrolling enabled? 7188- name: layout.css.scroll-behavior.enabled 7189 type: RelaxedAtomicBool 7190 value: true 7191 mirror: always 7192 7193# Tuning of the smooth scroll motion used by CSSOM-View scroll-behavior. 7194# Spring-constant controls the strength of the simulated MSD 7195# (Mass-Spring-Damper). 7196- name: layout.css.scroll-behavior.spring-constant 7197 type: AtomicFloat 7198 value: 250.0f 7199 mirror: always 7200 7201# When selecting the snap point for CSS scroll snapping, the velocity of the 7202# scroll frame is clamped to this speed, in CSS pixels / s. 7203- name: layout.css.scroll-snap.prediction-max-velocity 7204 type: RelaxedAtomicInt32 7205 value: 2000 7206 mirror: always 7207 7208# When selecting the snap point for CSS scroll snapping, the velocity of the 7209# scroll frame is integrated over this duration, in seconds. The snap point 7210# best suited for this position is selected, enabling the user to perform fling 7211# gestures. 7212- name: layout.css.scroll-snap.prediction-sensitivity 7213 type: AtomicFloat 7214 value: 0.750f 7215 mirror: always 7216 7217# Set the threshold distance in CSS pixels below which scrolling will snap to 7218# an edge, when scroll snapping is set to "proximity". 7219- name: layout.css.scroll-snap.proximity-threshold 7220 type: RelaxedAtomicInt32 7221 value: 200 7222 mirror: always 7223 7224# Is steps(jump-*) supported in easing functions? 7225- name: layout.css.step-position-jump.enabled 7226 type: RelaxedAtomicBool 7227 value: true 7228 mirror: always 7229 rust: true 7230 7231# W3C touch-action css property (related to touch and pointer events) 7232# Note that we turn this on even on platforms/configurations where touch 7233# events are not supported (e.g. OS X, or Windows with e10s disabled). For 7234# those platforms we don't handle touch events anyway so it's conceptually 7235# a no-op. 7236- name: layout.css.touch_action.enabled 7237 type: RelaxedAtomicBool 7238 value: true 7239 mirror: always 7240 7241# Are counters for implemented CSS properties enabled? 7242- name: layout.css.use-counters.enabled 7243 type: bool 7244 value: true 7245 mirror: always 7246 7247# Are counters for unimplemented CSS properties enabled? 7248- name: layout.css.use-counters-unimplemented.enabled 7249 type: RelaxedAtomicBool 7250 value: true 7251 mirror: always 7252 rust: true 7253 7254# Should the :visited selector ever match (otherwise :link matches instead)? 7255- name: layout.css.visited_links_enabled 7256 type: bool 7257 value: true 7258 mirror: always 7259 7260- name: layout.css.xul-display-values.content.enabled 7261 type: RelaxedAtomicBool 7262 value: false 7263 mirror: always 7264 rust: true 7265 7266# Pref to control whether display: -moz-box and display: -moz-inline-box are 7267# parsed in content pages. 7268- name: layout.css.xul-box-display-values.content.enabled 7269 type: RelaxedAtomicBool 7270 value: false 7271 mirror: always 7272 rust: true 7273 7274# Whether to block large cursors intersecting UI. 7275- name: layout.cursor.block.enabled 7276 type: bool 7277 value: true 7278 mirror: always 7279 7280# The maximum width or height of the cursor we should allow when intersecting 7281# the UI, in CSS pixels. 7282- name: layout.cursor.block.max-size 7283 type: uint32_t 7284 value: 32 7285 mirror: always 7286 7287- name: layout.display-list.build-twice 7288 type: RelaxedAtomicBool 7289 value: false 7290 mirror: always 7291 7292# Toggle retaining display lists between paints. 7293- name: layout.display-list.retain 7294 type: RelaxedAtomicBool 7295 value: true 7296 mirror: always 7297 7298# Toggle retaining display lists between paints. 7299- name: layout.display-list.retain.chrome 7300 type: RelaxedAtomicBool 7301 value: true 7302 mirror: always 7303 7304# Set the maximum number of modified frames allowed before doing a full 7305# display list rebuild. 7306- name: layout.display-list.rebuild-frame-limit 7307 type: RelaxedAtomicUint32 7308 value: 500 7309 mirror: always 7310 7311# Pref to dump the display list to the log. Useful for debugging drawing. 7312- name: layout.display-list.dump 7313 type: RelaxedAtomicBool 7314 value: false 7315 mirror: always 7316 7317# Pref to dump the display list to the log. Useful for debugging drawing. 7318- name: layout.display-list.dump-content 7319 type: RelaxedAtomicBool 7320 value: false 7321 mirror: always 7322 7323# Pref to dump the display list to the log. Useful for debugging drawing. 7324- name: layout.display-list.dump-parent 7325 type: RelaxedAtomicBool 7326 value: false 7327 mirror: always 7328 7329- name: layout.display-list.show-rebuild-area 7330 type: RelaxedAtomicBool 7331 value: false 7332 mirror: always 7333 7334- name: layout.display-list.flatten-transform 7335 type: RelaxedAtomicBool 7336 value: true 7337 mirror: always 7338 7339- name: layout.display-list.improve-fragmentation 7340 type: RelaxedAtomicBool 7341 value: true 7342 mirror: always 7343 7344# Are dynamic reflow roots enabled? 7345- name: layout.dynamic-reflow-roots.enabled 7346 type: bool 7347 value: @IS_EARLY_BETA_OR_EARLIER@ 7348 mirror: always 7349 7350# Enables the <input type=search> custom layout frame with a clear icon. 7351# Still needs tests and a web-exposed way to remove that icon, see bug 1654288. 7352- name: layout.forms.input-type-search.enabled 7353 type: bool 7354 value: false 7355 mirror: always 7356 7357# Pref to control browser frame rate, in Hz. A value <= 0 means choose 7358# automatically based on knowledge of the platform (or 60Hz if no platform- 7359# specific information is available). 7360- name: layout.frame_rate 7361 type: RelaxedAtomicInt32 7362 value: -1 7363 mirror: always 7364 7365# If it has been this many frame periods since a refresh, assume that painting 7366# is quiescent (will not happen again soon). 7367- name: layout.idle_period.required_quiescent_frames 7368 type: uint32_t 7369 value: 2 7370 mirror: always 7371 7372# The amount of time (milliseconds) needed between an idle period's 7373# end and the start of the next tick to avoid jank. 7374- name: layout.idle_period.time_limit 7375 type: uint32_t 7376 value: 1 7377 mirror: always 7378 7379# The minimum amount of time (milliseconds) required to be remaining 7380# in the current vsync interval for us to attempt an extra tick, or 7381# <0 to disable extra ticks entirely. 7382- name: layout.extra-tick.minimum-ms 7383 type: int32_t 7384 value: 4 7385 mirror: always 7386 7387# Enable/disable interruptible reflow, which allows reflows to stop 7388# before completion (and display the partial results) when user events 7389# are pending. 7390- name: layout.interruptible-reflow.enabled 7391 type: bool 7392 value: true 7393 mirror: always 7394 7395- name: layout.min-active-layer-size 7396 type: int32_t 7397 value: 64 7398 mirror: always 7399 7400- name: layout.paint_rects_separately 7401 type: bool 7402 value: true 7403 mirror: once 7404 7405# On Android, don't synth mouse move events after scrolling, as they cause 7406# unexpected user-visible behaviour. Can remove this after bug 1633450 is 7407# satisfactorily resolved. 7408- name: layout.reflow.synthMouseMove 7409 type: bool 7410 value: @IS_NOT_ANDROID@ 7411 mirror: always 7412 7413# This pref is to be set by test code only. 7414- name: layout.scrollbars.always-layerize-track 7415 type: RelaxedAtomicBool 7416 value: false 7417 mirror: always 7418 7419# Controls caret style and word-delete during text selection. 7420# 0: Use platform default 7421# 1: Caret moves and blinks as when there is no selection; word 7422# delete deselects the selection and then deletes word. 7423# 2: Caret moves to selection edge and is not visible during selection; 7424# word delete deletes the selection (Mac and Linux default). 7425# 3: Caret moves and blinks as when there is no selection; word delete 7426# deletes the selection. 7427# Windows default is 1 for word delete behavior, the rest as for 2. 7428- name: layout.selection.caret_style 7429 type: int32_t 7430 value: 0 7431 mirror: always 7432 7433# If layout.show_previous_page is true then during loading of a new page we 7434# will draw the previous page if the new page has painting suppressed. 7435- name: layout.show_previous_page 7436 type: bool 7437 value: true 7438 mirror: always 7439 7440- name: layout.smaller-painted-layers 7441 type: RelaxedAtomicBool 7442 value: false 7443 mirror: always 7444 7445# Pref to stop overlay scrollbars from fading out, for testing purposes. 7446- name: layout.testing.overlay-scrollbars.always-visible 7447 type: bool 7448 value: false 7449 mirror: always 7450 7451- name: layout.lower_priority_refresh_driver_during_load 7452 type: bool 7453 value: true 7454 mirror: always 7455 7456# If > 0, nsRefreshDriver will keep ticking this amount of milliseconds after 7457# top level page load. 7458- name: layout.keep_ticking_after_load_ms 7459 type: uint32_t 7460 value: 1000 7461 mirror: always 7462 7463# Is layout of CSS outline-style:auto enabled? 7464- name: layout.css.outline-style-auto.enabled 7465 type: bool 7466 value: true 7467 mirror: always 7468 7469# Pref to control enabling scroll anchoring. 7470- name: layout.css.scroll-anchoring.enabled 7471 type: bool 7472 value: true 7473 mirror: always 7474 7475# Pref to control how many consecutive scroll-anchoring adjustments (since the 7476# most recent user scroll) we'll average, before we consider whether to 7477# automatically turn off scroll anchoring. When we hit this threshold, the 7478# actual decision to disable also depends on the 7479# min-average-adjustment-threshold pref, see below for more details. 7480# 7481# Zero disables the heuristic. 7482- name: layout.css.scroll-anchoring.max-consecutive-adjustments 7483 type: uint32_t 7484 value: 10 7485 mirror: always 7486 7487# Pref to control whether we should disable scroll anchoring on a scroller 7488# where at least max-consecutive-adjustments have happened, and which the 7489# average adjustment ends up being less than this number, in CSS pixels. 7490# 7491# So, for example, given max-consecutive-adjustments=10 and 7492# min-average-adjustment-treshold=3, we'll block scroll anchoring if there have 7493# been 10 consecutive adjustments without a user scroll or more, and the 7494# average offset difference between them amount to less than 3 CSS pixels. 7495- name: layout.css.scroll-anchoring.min-average-adjustment-threshold 7496 type: uint32_t 7497 value: 3 7498 mirror: always 7499 7500# Pref to control disabling scroll anchoring suppression triggers, see 7501# 7502# https://drafts.csswg.org/css-scroll-anchoring/#suppression-triggers 7503# 7504# Those triggers should be unnecessary after bug 1561450. 7505- name: layout.css.scroll-anchoring.suppressions.enabled 7506 type: bool 7507 value: true 7508 mirror: always 7509 7510- name: layout.css.scroll-anchoring.highlight 7511 type: bool 7512 value: false 7513 mirror: always 7514 7515# Are shared memory User Agent style sheets enabled? 7516- name: layout.css.shared-memory-ua-sheets.enabled 7517 type: bool 7518 value: true 7519 mirror: always 7520 7521# Is support for -webkit-line-clamp enabled? 7522- name: layout.css.webkit-line-clamp.enabled 7523 type: bool 7524 value: true 7525 mirror: always 7526 7527# Whether the computed value of line-height: normal returns the `normal` 7528# keyword rather than a pixel value based on the first available font. 7529# 7530# Only enabled on Nightly and early beta, at least for now. 7531# 7532# It'd be nice to make numbers compute also to themselves, but it looks like 7533# everybody agrees on turning them into pixels, see the discussion starting 7534# from [1]. 7535# 7536# [1]: https://github.com/w3c/csswg-drafts/issues/3749#issuecomment-477287453 7537- name: layout.css.line-height.normal-as-resolved-value.enabled 7538 type: bool 7539 value: true 7540 mirror: always 7541 7542# Whether :is() and :where() ignore errors inside their selector lists 7543# internally, rather than failing to parse altogether. 7544# 7545# See https://github.com/w3c/csswg-drafts/issues/3264 7546- name: layout.css.is-and-where-better-error-recovery.enabled 7547 type: RelaxedAtomicBool 7548 value: true 7549 mirror: always 7550 rust: true 7551 7552# Is 'content:none' supported on (non-pseudo) elements? 7553- name: layout.css.element-content-none.enabled 7554 type: RelaxedAtomicBool 7555 value: false 7556 mirror: always 7557 rust: true 7558 7559# Whether frame visibility tracking is enabled globally. 7560- name: layout.framevisibility.enabled 7561 type: bool 7562 value: true 7563 mirror: always 7564 7565# The fraction of the scrollport we allow to horizontally scroll by before we 7566# schedule an update of frame visibility. 7567- name: layout.framevisibility.amountscrollbeforeupdatehorizontal 7568 type: int32_t 7569 value: 2 7570 mirror: always 7571 7572# The fraction of the scrollport we allow to vertically scroll by before we 7573# schedule an update of frame visibility. 7574- name: layout.framevisibility.amountscrollbeforeupdatevertical 7575 type: int32_t 7576 value: 2 7577 mirror: always 7578 7579# The number of scrollports wide to expand when tracking frame visibility. 7580- name: layout.framevisibility.numscrollportwidths 7581 type: uint32_t 7582#ifdef ANDROID 7583 value: 1 7584#else 7585 value: 0 7586#endif 7587 mirror: always 7588 7589# The number of scrollports high to expand when tracking frame visibility. 7590- name: layout.framevisibility.numscrollportheights 7591 type: uint32_t 7592 value: 1 7593 mirror: always 7594 7595# Test only. 7596- name: layout.dynamic-toolbar-max-height 7597 type: RelaxedAtomicInt32 7598 value: 0 7599 mirror: always 7600 7601# Controls double click and Alt+Arrow word selection behavior. 7602- name: layout.word_select.eat_space_to_next_word 7603 type: bool 7604#ifdef XP_WIN 7605 value: true 7606#else 7607 value: false 7608#endif 7609 mirror: always 7610 7611- name: layout.word_select.stop_at_punctuation 7612 type: bool 7613 value: true 7614 mirror: always 7615 7616# Whether underscore should be treated as a word-breaking character for 7617# word selection/arrow-key movement purposes. 7618- name: layout.word_select.stop_at_underscore 7619 type: bool 7620 value: false 7621 mirror: always 7622 7623# Should deprecated plugin behavior fallback to normal behavior or use 7624# the experimental design. 7625- name: layout.use-plugin-fallback 7626 type: bool 7627 value: false 7628 mirror: always 7629 7630#--------------------------------------------------------------------------- 7631# Prefs starting with "mathml." 7632#--------------------------------------------------------------------------- 7633 7634# Whether to disable deprecated style attributes background, color, fontfamily, 7635# fontsize, fontstyle and fontweight. 7636- name: mathml.deprecated_style_attributes.disabled 7637 type: bool 7638 value: true 7639 mirror: always 7640 7641# Whether to disable deprecated "radical" notation for the menclose element. 7642- name: mathml.deprecated_menclose_notation_radical.disabled 7643 type: bool 7644 value: true 7645 mirror: always 7646 7647# Whether to disable legacy names "small", "normal" and "big" for the 7648# mathsize attribute. 7649- name: mathml.mathsize_names.disabled 7650 type: bool 7651 value: true 7652 mirror: always 7653 7654# Whether to disable legacy names "thickmathspace", "mediummathspace", 7655# "thickmathspace" etc for length attributes. 7656- name: mathml.mathspace_names.disabled 7657 type: bool 7658 value: @IS_NIGHTLY_BUILD@ 7659 mirror: always 7660 7661# Whether to disable the mfrac bevelled attribute. 7662- name: mathml.mfrac_bevelled_attribute.disabled 7663 type: bool 7664 value: true 7665 mirror: always 7666 7667# Whether to disable legacy names "thin", "thick" and "medium" for the 7668# linethickness attribute of the mfrac element. 7669- name: mathml.mfrac_linethickness_names.disabled 7670 type: bool 7671 value: true 7672 mirror: always 7673 7674# Whether to disable deprecated numalign/denomalign/align attributes 7675- name: mathml.deprecated_alignment_attributes.disabled 7676 type: bool 7677 value: true 7678 mirror: always 7679 7680# Whether to disable subscriptshift and superscriptshift attributes. 7681- name: mathml.script_shift_attributes.disabled 7682 type: bool 7683 value: true 7684 mirror: always 7685 7686# Whether to disable the scriptminsize attribute. 7687# Note that this only disables parsing, not the default effect when no attribute 7688# is unspecified. 7689- name: mathml.scriptminsize_attribute.disabled 7690 type: bool 7691 value: @IS_NIGHTLY_BUILD@ 7692 mirror: always 7693 7694# Whether to disable the scriptsizemultiplier attribute. 7695- name: mathml.scriptsizemultiplier_attribute.disabled 7696 type: bool 7697 value: @IS_NIGHTLY_BUILD@ 7698 mirror: always 7699 7700# Whether to disable support for XLink on MathML elements. 7701- name: mathml.xlink.disabled 7702 type: bool 7703 value: true 7704 mirror: always 7705 7706# Whether to disable support for stretching operators with STIXGeneral fonts. 7707# macos still has the deprecated STIXGeneral font pre-installed. 7708- name: mathml.stixgeneral_operator_stretching.disabled 7709 type: bool 7710#if defined(XP_MACOSX) 7711 value: @IS_NIGHTLY_BUILD@ 7712#else 7713 value: true 7714#endif 7715 mirror: always 7716 7717#--------------------------------------------------------------------------- 7718# Prefs starting with "media." 7719#--------------------------------------------------------------------------- 7720 7721 7722# This pref defines what the blocking policy would be used in blocking autoplay. 7723# 0 : use sticky activation (default) 7724# https://html.spec.whatwg.org/multipage/interaction.html#sticky-activation 7725# 1 : use transient activation (the transient activation duration can be 7726# adjusted by the pref `dom.user_activation.transient.timeout`) 7727# https://html.spec.whatwg.org/multipage/interaction.html#transient-activation 7728# 2 : user input depth (allow autoplay when the play is trigged by user input 7729# which is determined by the user input depth) 7730- name: media.autoplay.blocking_policy 7731 type: uint32_t 7732 value: 0 7733 mirror: always 7734 7735# File-backed MediaCache size. 7736- name: media.cache_size 7737 type: RelaxedAtomicUint32 7738 value: 512000 # Measured in KiB 7739 mirror: always 7740 7741# Size of file backed MediaCache while on a connection which is cellular (3G, 7742# etc), and thus assumed to be "expensive". 7743- name: media.cache_size.cellular 7744 type: RelaxedAtomicUint32 7745 value: 32768 # Measured in KiB 7746 mirror: always 7747 7748# Whether cubeb is sandboxed 7749- name: media.cubeb.sandbox 7750 type: bool 7751 mirror: always 7752#if defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID) 7753 value: true 7754#elif defined(XP_WIN) && !defined(_ARM64_) 7755 value: true 7756#else 7757 value: false 7758#endif 7759 7760# Whether or not to pass AUDCLNT_STREAMOPTIONS_RAW when initializing audio 7761# streams when using WASAPI. 7762# 0 - don't use RAW streams 7763# 1 - use RAW streams for input streams only 7764# 2 - use RAW streams for output streams only 7765# 3 - use RAW streams for input and output streams 7766#if defined (XP_WIN) 7767- name: media.cubeb.wasapi-raw 7768 type: RelaxedAtomicUint32 7769 mirror: always 7770 value: 0 7771#endif // XP_WIN 7772 7773# ClockDrift desired buffering in milliseconds 7774- name: media.clockdrift.buffering 7775 type: int32_t 7776 mirror: always 7777 value: 50 7778 7779# If a resource is known to be smaller than this size (in kilobytes), a 7780# memory-backed MediaCache may be used; otherwise the (single shared global) 7781# file-backed MediaCache is used. 7782- name: media.memory_cache_max_size 7783 type: uint32_t 7784 value: 8192 # Measured in KiB 7785 mirror: always 7786 7787# Don't create more memory-backed MediaCaches if their combined size would go 7788# above this absolute size limit. 7789- name: media.memory_caches_combined_limit_kb 7790 type: uint32_t 7791 value: 524288 7792 mirror: always 7793 7794# Don't create more memory-backed MediaCaches if their combined size would go 7795# above this relative size limit (a percentage of physical memory). 7796- name: media.memory_caches_combined_limit_pc_sysmem 7797 type: uint32_t 7798 value: 5 # A percentage 7799 mirror: always 7800 7801# When a network connection is suspended, don't resume it until the amount of 7802# buffered data falls below this threshold (in seconds). 7803- name: media.cache_resume_threshold 7804 type: RelaxedAtomicUint32 7805 value: 30 7806 mirror: always 7807- name: media.cache_resume_threshold.cellular 7808 type: RelaxedAtomicUint32 7809 value: 10 7810 mirror: always 7811 7812# Stop reading ahead when our buffered data is this many seconds ahead of the 7813# current playback position. This limit can stop us from using arbitrary 7814# amounts of network bandwidth prefetching huge videos. 7815- name: media.cache_readahead_limit 7816 type: RelaxedAtomicUint32 7817 value: 60 7818 mirror: always 7819- name: media.cache_readahead_limit.cellular 7820 type: RelaxedAtomicUint32 7821 value: 30 7822 mirror: always 7823 7824# MediaCapabilities 7825- name: media.mediacapabilities.drop-threshold 7826 type: RelaxedAtomicInt32 7827 value: 95 7828 mirror: always 7829 7830- name: media.mediacapabilities.from-database 7831 type: RelaxedAtomicBool 7832 value: @IS_NIGHTLY_BUILD@ 7833 mirror: always 7834 7835# AudioSink 7836- name: media.resampling.enabled 7837 type: RelaxedAtomicBool 7838 value: false 7839 mirror: always 7840 7841# libcubeb backend implements .get_preferred_channel_layout 7842- name: media.forcestereo.enabled 7843 type: RelaxedAtomicBool 7844#if defined(XP_WIN) || defined(XP_DARWIN) || defined(MOZ_PULSEAUDIO) 7845 value: false 7846#else 7847 value: true 7848#endif 7849 mirror: always 7850 7851# MediaSource 7852 7853# Whether to enable MediaSource support. 7854- name: media.mediasource.enabled 7855 type: RelaxedAtomicBool 7856 value: true 7857 mirror: always 7858 7859- name: media.mediasource.mp4.enabled 7860 type: RelaxedAtomicBool 7861 value: true 7862 mirror: always 7863 7864- name: media.mediasource.webm.enabled 7865 type: RelaxedAtomicBool 7866 value: true 7867 mirror: always 7868 7869# Check if vp9 is enabled by default in mediasource. False on Android. 7870# If disabled, vp9 will only be enabled under some conditions: 7871# - h264 HW decoding is not supported 7872# - mp4 is not enabled 7873# - Device was deemed fast enough to decode VP9 via the VP9Benchmark utility 7874# - A VP9 HW decoder is present. 7875- name: media.mediasource.vp9.enabled 7876 type: RelaxedAtomicBool 7877 value: @IS_NOT_ANDROID@ 7878 mirror: always 7879 7880- name: media.mediasource.webm.audio.enabled 7881 type: RelaxedAtomicBool 7882 value: true 7883 mirror: always 7884 7885# Whether to enable MediaSource v2 support. 7886- name: media.mediasource.experimental.enabled 7887 type: RelaxedAtomicBool 7888 value: false 7889 mirror: always 7890 7891# VideoSink 7892- name: media.ruin-av-sync.enabled 7893 type: RelaxedAtomicBool 7894 value: false 7895 mirror: always 7896 7897# Encrypted Media Extensions 7898- name: media.eme.enabled 7899 type: bool 7900#if defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID) 7901 # On Linux EME is visible but disabled by default. This is so that the "Play 7902 # DRM content" checkbox in the Firefox UI is unchecked by default. DRM 7903 # requires downloading and installing proprietary binaries, which users on an 7904 # open source operating systems didn't opt into. The first time a site using 7905 # EME is encountered, the user will be prompted to enable DRM, whereupon the 7906 # EME plugin binaries will be downloaded if permission is granted. 7907 value: false 7908#else 7909 value: true 7910#endif 7911 mirror: always 7912 7913# Whether we expose the functionality proposed in 7914# https://github.com/WICG/encrypted-media-encryption-scheme/blob/master/explainer.md 7915# I.e. if true, apps calling navigator.requestMediaKeySystemAccess() can pass 7916# an optional encryption scheme as part of MediaKeySystemMediaCapability 7917# objects. If a scheme is present when we check for support, we must ensure we 7918# support that scheme in order to provide key system access. 7919- name: media.eme.encrypted-media-encryption-scheme.enabled 7920 type: bool 7921 value: false 7922 mirror: always 7923 7924# Do we need explicit approval from the application to allow access to EME? 7925# If true, Gecko will ask for permission before allowing MediaKeySystemAccess. 7926# At time of writing this is aimed at GeckoView, and setting this to true 7927# outside of GeckoView or test environments will likely break EME. 7928- name: media.eme.require-app-approval 7929 type: bool 7930 value: false 7931 mirror: always 7932 7933- name: media.eme.audio.blank 7934 type: RelaxedAtomicBool 7935 value: false 7936 mirror: always 7937 7938- name: media.eme.video.blank 7939 type: RelaxedAtomicBool 7940 value: false 7941 mirror: always 7942 7943- name: media.eme.chromium-api.video-shmems 7944 type: RelaxedAtomicUint32 7945 value: 6 7946 mirror: always 7947 7948# Is support for MediaKeys.getStatusForPolicy enabled? 7949- name: media.eme.hdcp-policy-check.enabled 7950 type: bool 7951 value: false 7952 mirror: always 7953 7954- name: media.clearkey.persistent-license.enabled 7955 type: bool 7956 value: false 7957 mirror: always 7958 7959- name: media.cloneElementVisually.testing 7960 type: bool 7961 value: false 7962 mirror: always 7963 7964#if defined(XP_LINUX) && defined(MOZ_SANDBOX) 7965 # Whether to allow, on a Linux system that doesn't support the necessary 7966 # sandboxing features, loading Gecko Media Plugins unsandboxed. However, EME 7967 # CDMs will not be loaded without sandboxing even if this pref is changed. 7968- name: media.gmp.insecure.allow 7969 type: RelaxedAtomicBool 7970 value: false 7971 mirror: always 7972#endif 7973 7974#ifdef XP_MACOSX 7975 # These prefs control whether or not a universal build running on 7976 # an Apple Silicon machine will attempt to use an x64 Widevine or 7977 # OpenH264 plugin. This requires launching the GMP child process 7978 # executable in x64 mode. We expect to allow this for Widevine until 7979 # an arm64 version of Widevine is made available. We don't expect 7980 # to need to allow this for OpenH264. 7981 # 7982 # Allow a Widevine GMP x64 process to be executed on ARM builds. 7983- name: media.gmp-widevinecdm.allow-x64-plugin-on-arm64 7984 type: RelaxedAtomicBool 7985 value: true 7986 mirror: always 7987 7988 # Don't allow an OpenH264 GMP x64 process to be executed on ARM builds. 7989- name: media.gmp-gmpopenh264.allow-x64-plugin-on-arm64 7990 type: RelaxedAtomicBool 7991 value: false 7992 mirror: always 7993#endif 7994 7995# Specifies whether the PDMFactory can create a test decoder that just outputs 7996# blank frames/audio instead of actually decoding. The blank decoder works on 7997# all platforms. 7998- name: media.use-blank-decoder 7999 type: RelaxedAtomicBool 8000 value: false 8001 mirror: always 8002 8003- name: media.gpu-process-decoder 8004 type: RelaxedAtomicBool 8005#if defined(XP_WIN) 8006 value: true 8007#else 8008 value: false 8009#endif 8010 mirror: always 8011 8012- name: media.rdd-process.enabled 8013 type: RelaxedAtomicBool 8014#if defined(XP_WIN) 8015 value: true 8016#elif defined(XP_MACOSX) 8017 value: true 8018#elif defined(XP_LINUX) && !defined(ANDROID) 8019 value: true 8020#elif defined(XP_OPENBSD) 8021 value: true 8022#else 8023 value: false 8024#endif 8025 mirror: always 8026 8027- name: media.rdd-retryonfailure.enabled 8028 type: RelaxedAtomicBool 8029 value: true 8030 mirror: always 8031 8032- name: media.rdd-process.startup_timeout_ms 8033 type: RelaxedAtomicInt32 8034 value: 5000 8035 mirror: always 8036 8037#ifdef MOZ_FFMPEG 8038- name: media.rdd-ffmpeg.enabled 8039 type: RelaxedAtomicBool 8040 value: false 8041 mirror: always 8042#endif 8043 8044#ifdef MOZ_FFVPX 8045- name: media.rdd-ffvpx.enabled 8046 type: RelaxedAtomicBool 8047#if defined(XP_WIN) 8048 value: true 8049#elif defined(XP_MACOSX) 8050 value: true 8051#elif defined(XP_LINUX) && !defined(ANDROID) 8052 value: true 8053#elif defined(XP_OPENBSD) 8054 value: true 8055#else 8056 value: false 8057#endif 8058 mirror: always 8059#endif 8060 8061#ifdef MOZ_WMF 8062- name: media.rdd-wmf.enabled 8063 type: RelaxedAtomicBool 8064 value: true 8065 mirror: always 8066#endif 8067 8068#ifdef MOZ_APPLEMEDIA 8069- name: media.rdd-applemedia.enabled 8070 type: RelaxedAtomicBool 8071 value: true 8072 mirror: always 8073#endif 8074 8075- name: media.rdd-theora.enabled 8076 type: RelaxedAtomicBool 8077#if defined(XP_WIN) 8078 value: true 8079#elif defined(XP_MACOSX) 8080 value: true 8081#elif defined(XP_LINUX) && !defined(ANDROID) 8082 value: true 8083#elif defined(XP_OPENBSD) 8084 value: true 8085#else 8086 value: false 8087#endif 8088 mirror: always 8089 8090- name: media.rdd-vorbis.enabled 8091 type: RelaxedAtomicBool 8092#if defined(XP_WIN) 8093 value: true 8094#elif defined(XP_MACOSX) 8095 value: true 8096#elif defined(XP_LINUX) && !defined(ANDROID) 8097 value: true 8098#elif defined(XP_OPENBSD) 8099 value: true 8100#else 8101 value: false 8102#endif 8103 mirror: always 8104 8105- name: media.rdd-vpx.enabled 8106 type: RelaxedAtomicBool 8107#if defined(XP_WIN) 8108 value: true 8109#elif defined(XP_MACOSX) 8110 value: true 8111#elif defined(XP_LINUX) && !defined(ANDROID) 8112 value: true 8113#elif defined(XP_OPENBSD) 8114 value: true 8115#else 8116 value: false 8117#endif 8118 mirror: always 8119 8120- name: media.rdd-wav.enabled 8121 type: RelaxedAtomicBool 8122#if defined(XP_WIN) 8123 value: true 8124#elif defined(XP_MACOSX) 8125 value: true 8126#elif defined(XP_LINUX) && !defined(ANDROID) 8127 value: true 8128#elif defined(XP_OPENBSD) 8129 value: true 8130#else 8131 value: false 8132#endif 8133 mirror: always 8134 8135- name: media.rdd-opus.enabled 8136 type: RelaxedAtomicBool 8137#if defined(XP_WIN) 8138 value: true 8139#elif defined(XP_MACOSX) 8140 value: true 8141#elif defined(XP_LINUX) && !defined(ANDROID) 8142 value: true 8143#elif defined(XP_OPENBSD) 8144 value: true 8145#else 8146 value: false 8147#endif 8148 mirror: always 8149 8150- name: media.rdd-webaudio.batch.size 8151 type: RelaxedAtomicInt32 8152 value: 100 8153 mirror: always 8154 8155#ifdef ANDROID 8156 # Enable the MediaCodec PlatformDecoderModule by default. 8157- name: media.android-media-codec.enabled 8158 type: RelaxedAtomicBool 8159 value: true 8160 mirror: always 8161 8162- name: media.android-media-codec.preferred 8163 type: RelaxedAtomicBool 8164 value: true 8165 mirror: always 8166#endif # ANDROID 8167 8168#ifdef MOZ_OMX 8169- name: media.omx.enabled 8170 type: bool 8171 value: false 8172 mirror: always 8173#endif 8174 8175#ifdef MOZ_FFMPEG 8176- name: media.ffmpeg.enabled 8177 type: RelaxedAtomicBool 8178 #if defined(XP_MACOSX) 8179 value: false 8180 #else 8181 value: true 8182 #endif 8183 mirror: always 8184 8185- name: media.libavcodec.allow-obsolete 8186 type: bool 8187 value: false 8188 mirror: always 8189 8190#ifdef MOZ_WAYLAND 8191# Disable DMABuf for ffmpeg video textures on Linux 8192- name: media.ffmpeg.dmabuf-textures.disabled 8193 type: RelaxedAtomicBool 8194 value: false 8195 mirror: always 8196 8197# Use VA-API for ffmpeg video playback on Linux 8198- name: media.ffmpeg.vaapi.enabled 8199 type: RelaxedAtomicBool 8200 value: false 8201 mirror: always 8202 8203# Use DRM display for VA-API ffmpeg video decoding on Linux 8204- name: media.ffmpeg.vaapi-drm-display.enabled 8205 type: RelaxedAtomicBool 8206 value: true 8207 mirror: always 8208#endif # MOZ_WAYLAND 8209#endif # MOZ_FFMPEG 8210 8211- name: media.ffvpx.enabled 8212 type: RelaxedAtomicBool 8213#ifdef MOZ_FFVPX 8214 value: true 8215#else 8216 value: false 8217#endif 8218 mirror: always 8219 8220- name: media.ffvpx.mp3.enabled 8221 type: RelaxedAtomicBool 8222#ifdef MOZ_FFVPX 8223 value: true 8224#else 8225 value: false 8226#endif 8227 mirror: always 8228 8229# Set to true in marionette tests to disable the sanity test 8230# which would lead to unnecessary start of the RDD process. 8231- name: media.sanity-test.disabled 8232 type: RelaxedAtomicBool 8233 value: false 8234 mirror: always 8235 8236#ifdef MOZ_WMF 8237 8238- name: media.wmf.enabled 8239 type: RelaxedAtomicBool 8240 value: true 8241 mirror: always 8242 8243 # Whether DD should consider WMF-disabled a WMF failure, useful for testing. 8244- name: media.decoder-doctor.wmf-disabled-is-failure 8245 type: bool 8246 value: false 8247 mirror: always 8248 8249- name: media.wmf.dxva.d3d11.enabled 8250 type: RelaxedAtomicBool 8251 value: true 8252 mirror: always 8253 8254- name: media.wmf.dxva.max-videos 8255 type: RelaxedAtomicUint32 8256 value: 8 8257 mirror: always 8258 8259- name: media.wmf.use-nv12-format 8260 type: RelaxedAtomicBool 8261 value: true 8262 mirror: always 8263 8264- name: media.wmf.force.allow-p010-format 8265 type: RelaxedAtomicBool 8266 value: false 8267 mirror: always 8268 8269- name: media.wmf.use-sync-texture 8270 type: bool 8271 value: true 8272 mirror: once 8273 8274- name: media.wmf.low-latency.enabled 8275 type: RelaxedAtomicBool 8276 value: false 8277 mirror: always 8278 8279- name: media.wmf.low-latency.force-disabled 8280 type: RelaxedAtomicBool 8281 value: false 8282 mirror: always 8283 8284- name: media.wmf.skip-blacklist 8285 type: RelaxedAtomicBool 8286 value: false 8287 mirror: always 8288 8289- name: media.wmf.amd.highres.enabled 8290 type: RelaxedAtomicBool 8291 value: true 8292 mirror: always 8293 8294- name: media.wmf.allow-unsupported-resolutions 8295 type: RelaxedAtomicBool 8296 value: false 8297 mirror: always 8298 8299- name: media.wmf.vp9.enabled 8300 type: bool 8301 value: true 8302 mirror: once 8303 8304#endif # MOZ_WMF 8305 8306- name: media.decoder-doctor.testing 8307 type: bool 8308 value: false 8309 mirror: always 8310 8311- name: media.hardware-video-decoding.force-enabled 8312 type: bool 8313 value: false 8314 mirror: once 8315 8316# Whether to check the decoder supports recycling. 8317- name: media.decoder.recycle.enabled 8318 type: RelaxedAtomicBool 8319 value: @IS_ANDROID@ 8320 mirror: always 8321 8322# Should MFR try to skip to the next key frame? 8323- name: media.decoder.skip-to-next-key-frame.enabled 8324 type: RelaxedAtomicBool 8325 value: true 8326 mirror: always 8327 8328# When video continues later than the current media time for this period of 8329# time, then it will trigger skip-to-next-keyframe mechanism. As this aims to 8330# solve the drop frames issue where video decoding too slow for high 8331# resolution videos. eg. 4k+. Therefore, the value is is determined by the 8332# telemetry probe `video_inter_keyframe_max_ms` in the key of `AV,h>2160` which 8333# shows that 95% video's key frame interval are less than ~5000. We use its 8334# half value as a threashold to decide whether we should keep decoding in the 8335# current video position or jump to the next keyframe in order to decode future 8336# frames in advance. 8337- name: media.decoder.skip_when_video_too_slow_ms 8338 type: RelaxedAtomicInt32 8339 value: 2500 8340 mirror: always 8341 8342- name: media.gmp.decoder.enabled 8343 type: RelaxedAtomicBool 8344 value: false 8345 mirror: always 8346 8347# Whether to suspend decoding of videos in background tabs. 8348- name: media.suspend-bkgnd-video.enabled 8349 type: RelaxedAtomicBool 8350 value: true 8351 mirror: always 8352 8353# Delay, in ms, from time window goes to background to suspending 8354# video decoders. Defaults to 10 seconds. 8355- name: media.suspend-bkgnd-video.delay-ms 8356 type: RelaxedAtomicUint32 8357 value: 10000 8358 mirror: always 8359 8360- name: media.dormant-on-pause-timeout-ms 8361 type: RelaxedAtomicInt32 8362 value: 5000 8363 mirror: always 8364 8365# AudioTrack and VideoTrack support 8366- name: media.track.enabled 8367 type: bool 8368 value: false 8369 mirror: always 8370 8371# This pref disables the reception of RTCP. It is used for testing. 8372- name: media.webrtc.net.force_disable_rtcp_reception 8373 type: ReleaseAcquireAtomicBool 8374 value: false 8375 mirror: always 8376 8377# TextTrack WebVTT Region extension support. 8378- name: media.webvtt.regions.enabled 8379 type: bool 8380 value: true 8381 mirror: always 8382 8383# This pref controls whether dispatch testing-only events. 8384- name: media.webvtt.testing.events 8385 type: bool 8386 value: true 8387 mirror: always 8388 8389- name: media.webspeech.synth.force_global_queue 8390 type: bool 8391 value: false 8392 mirror: always 8393 8394- name: media.webspeech.test.enable 8395 type: bool 8396 value: false 8397 mirror: always 8398 8399- name: media.webspeech.test.fake_fsm_events 8400 type: bool 8401 value: false 8402 mirror: always 8403 8404- name: media.webspeech.test.fake_recognition_service 8405 type: bool 8406 value: false 8407 mirror: always 8408 8409#ifdef MOZ_WEBSPEECH 8410- name: media.webspeech.recognition.enable 8411 type: bool 8412 value: false 8413 mirror: always 8414#endif 8415 8416- name: media.webspeech.recognition.force_enable 8417 type: bool 8418 value: false 8419 mirror: always 8420 8421#ifdef MOZ_WEBSPEECH 8422- name: media.webspeech.synth.enabled 8423 type: bool 8424 value: false 8425 mirror: always 8426#endif # MOZ_WEBSPEECH 8427 8428- name: media.encoder.webm.enabled 8429 type: RelaxedAtomicBool 8430#if defined(MOZ_WEBM_ENCODER) 8431 value: true 8432#else 8433 value: false 8434#endif 8435 mirror: always 8436 8437- name: media.audio-max-decode-error 8438 type: uint32_t 8439#if defined(RELEASE_OR_BETA) 8440 value: 3 8441#else 8442 # Zero tolerance in pre-release builds to detect any decoder regression. 8443 value: 0 8444#endif 8445 mirror: always 8446 8447- name: media.video-max-decode-error 8448 type: uint32_t 8449#if defined(RELEASE_OR_BETA) 8450 value: 2 8451#else 8452 # Zero tolerance in pre-release builds to detect any decoder regression. 8453 value: 0 8454#endif 8455 mirror: always 8456 8457# Are video stats enabled? (Disabling can help prevent fingerprinting.) 8458- name: media.video_stats.enabled 8459 type: bool 8460 value: true 8461 mirror: always 8462 8463# Opus 8464- name: media.opus.enabled 8465 type: RelaxedAtomicBool 8466 value: true 8467 mirror: always 8468 8469# Wave 8470- name: media.wave.enabled 8471 type: RelaxedAtomicBool 8472 value: true 8473 mirror: always 8474 8475# Ogg 8476- name: media.ogg.enabled 8477 type: RelaxedAtomicBool 8478 value: true 8479 mirror: always 8480 8481# WebM 8482- name: media.webm.enabled 8483 type: RelaxedAtomicBool 8484 value: true 8485 mirror: always 8486 8487# AV1 8488- name: media.av1.enabled 8489 type: RelaxedAtomicBool 8490#if defined(XP_WIN) && !defined(_ARM64_) 8491 value: true 8492#elif defined(XP_MACOSX) 8493 value: true 8494#elif defined(MOZ_WIDGET_ANDROID) 8495 value: @IS_EARLY_BETA_OR_EARLIER@ 8496#elif defined(XP_UNIX) 8497 value: true 8498#else 8499 value: false 8500#endif 8501 mirror: always 8502 8503- name: media.av1.use-dav1d 8504 type: RelaxedAtomicBool 8505#if defined(XP_WIN) && !defined(_ARM64_) 8506 value: true 8507#elif defined(XP_MACOSX) 8508 value: true 8509#elif defined(XP_UNIX) 8510 value: true 8511#else 8512 value: false 8513#endif 8514 mirror: always 8515 8516- name: media.flac.enabled 8517 type: bool 8518 value: true 8519 mirror: always 8520 8521# Hls 8522- name: media.hls.enabled 8523 type: RelaxedAtomicBool 8524 value: @IS_ANDROID@ 8525 mirror: always 8526 8527# Max number of HLS players that can be created concurrently. Used only on 8528# Android and when "media.hls.enabled" is true. 8529#ifdef ANDROID 8530- name: media.hls.max-allocations 8531 type: uint32_t 8532 value: 20 8533 mirror: always 8534#endif 8535 8536- name: media.mp4.enabled 8537 type: RelaxedAtomicBool 8538#ifdef MOZ_FMP4 8539 value: true 8540#else 8541 value: false 8542#endif 8543 mirror: always 8544 8545# Error/warning handling, Decoder Doctor. 8546# 8547# Set to true to force demux/decode warnings to be treated as errors. 8548- name: media.playback.warnings-as-errors 8549 type: RelaxedAtomicBool 8550 value: false 8551 mirror: always 8552 8553# Resume video decoding when the cursor is hovering on a background tab to 8554# reduce the resume latency and improve the user experience. 8555- name: media.resume-bkgnd-video-on-tabhover 8556 type: bool 8557 value: true 8558 mirror: always 8559 8560- name: media.videocontrols.lock-video-orientation 8561 type: bool 8562 value: @IS_ANDROID@ 8563 mirror: always 8564 8565# Media Seamless Looping 8566- name: media.seamless-looping 8567 type: RelaxedAtomicBool 8568 value: true 8569 mirror: always 8570 8571- name: media.autoplay.block-event.enabled 8572 type: bool 8573 value: false 8574 mirror: always 8575 8576- name: media.media-capabilities.enabled 8577 type: RelaxedAtomicBool 8578 value: true 8579 mirror: always 8580 8581- name: media.media-capabilities.screen.enabled 8582 type: RelaxedAtomicBool 8583 value: false 8584 mirror: always 8585 8586- name: media.benchmark.vp9.fps 8587 type: RelaxedAtomicUint32 8588 value: 0 8589 mirror: always 8590 8591- name: media.benchmark.vp9.threshold 8592 type: RelaxedAtomicUint32 8593 value: 150 8594 mirror: always 8595 8596- name: media.benchmark.vp9.versioncheck 8597 type: RelaxedAtomicUint32 8598 value: 0 8599 mirror: always 8600 8601- name: media.benchmark.frames 8602 type: RelaxedAtomicUint32 8603 value: 300 8604 mirror: always 8605 8606- name: media.benchmark.timeout 8607 type: RelaxedAtomicUint32 8608 value: 1000 8609 mirror: always 8610 8611- name: media.test.video-suspend 8612 type: RelaxedAtomicBool 8613 value: false 8614 mirror: always 8615 8616# MediaCapture prefs follow 8617 8618# Enables navigator.mediaDevices and getUserMedia() support. See also 8619# media.peerconnection.enabled 8620- name: media.navigator.enabled 8621 type: bool 8622 value: true 8623 mirror: always 8624 8625# This pref turns off [SecureContext] on the navigator.mediaDevices object, for 8626# more compatible legacy behavior. 8627- name: media.devices.insecure.enabled 8628 type: bool 8629 value: false 8630 mirror: always 8631 8632# If the above pref is also enabled, this pref enabled getUserMedia() support 8633# in http, bypassing the instant NotAllowedError you get otherwise. 8634- name: media.getusermedia.insecure.enabled 8635 type: bool 8636 value: false 8637 mirror: always 8638 8639# Enable tab sharing 8640- name: media.getusermedia.browser.enabled 8641 type: RelaxedAtomicBool 8642 value: false 8643 mirror: always 8644 8645# The getDisplayMedia method is always SecureContext regardless of the above two 8646# prefs. But it is not implemented on android, and can be turned off elsewhere. 8647- name: media.getdisplaymedia.enabled 8648 type: bool 8649 value: @IS_NOT_ANDROID@ 8650 mirror: always 8651 8652# Turn off any cameras (but not mics) while in the background. This is desirable 8653# on mobile. 8654- name: media.getusermedia.camera.background.mute.enabled 8655 type: bool 8656 value: @IS_ANDROID@ 8657 mirror: always 8658 8659# WebRTC prefs follow 8660 8661# Enables RTCPeerConnection support. Note that, when true, this pref enables 8662# navigator.mediaDevices and getUserMedia() support as well. 8663# See also media.navigator.enabled 8664- name: media.peerconnection.enabled 8665 type: bool 8666 value: true 8667 mirror: always 8668 8669- name: media.peerconnection.dtmf.enabled 8670 type: bool 8671 value: true 8672 mirror: always 8673 8674- name: media.peerconnection.identity.enabled 8675 type: bool 8676 value: true 8677 mirror: always 8678 8679- name: media.peerconnection.rtpsourcesapi.enabled 8680 type: bool 8681 value: true 8682 mirror: always 8683 8684#ifdef MOZ_WEBRTC 8685 #ifdef ANDROID 8686- name: media.navigator.hardware.vp8_encode.acceleration_remote_enabled 8687 type: bool 8688 value: true 8689 mirror: always 8690 8691- name: media.navigator.hardware.vp8_encode.acceleration_enabled 8692 type: bool 8693 value: true 8694 mirror: never 8695 8696- name: media.navigator.hardware.vp8_decode.acceleration_enabled 8697 type: bool 8698 value: false 8699 mirror: never 8700 #endif # ANDROID 8701 8702 # Use MediaDataDecoder API for VP8/VP9 in WebRTC. This includes hardware 8703 # acceleration for decoding. 8704- name: media.navigator.mediadatadecoder_vpx_enabled 8705 type: RelaxedAtomicBool 8706#if defined(NIGHTLY_BUILD) 8707 value: true 8708#else 8709 value: false 8710#endif 8711 mirror: always 8712 8713 # Use MediaDataDecoder API for H264 in WebRTC. This includes hardware 8714 # acceleration for decoding. 8715- name: media.navigator.mediadatadecoder_h264_enabled 8716 type: RelaxedAtomicBool 8717 #if defined(_ARM64_) && defined(XP_WIN) 8718 value: false 8719 #else 8720 value: true 8721 #endif 8722 mirror: always 8723 8724#endif # MOZ_WEBRTC 8725 8726# HTMLMediaElement.allowedToPlay should be exposed to web content when 8727# block autoplay rides the trains to release. Until then, Nightly only. 8728- name: media.allowed-to-play.enabled 8729 type: bool 8730 value: @IS_NIGHTLY_BUILD@ 8731 mirror: always 8732 8733# Is support for MediaDevices.ondevicechange enabled? 8734- name: media.ondevicechange.enabled 8735 type: bool 8736 value: true 8737 mirror: always 8738 8739# Is support for HTMLMediaElement.seekToNextFrame enabled? 8740- name: media.seekToNextFrame.enabled 8741 type: bool 8742 value: true 8743 mirror: always 8744 8745# setSinkId will be enabled in bug 1498512. Till then the 8746# implementation will remain hidden behind this pref (Bug 1152401, Bug 934425). 8747- name: media.setsinkid.enabled 8748 type: bool 8749 value: false 8750 mirror: always 8751 8752# Turn on this pref can enable test-only events for media element. 8753- name: media.testing-only-events 8754 type: bool 8755 value: false 8756 mirror: always 8757 8758- name: media.useAudioChannelService.testing 8759 type: bool 8760 value: false 8761 mirror: always 8762 8763- name: media.audioFocus.management 8764 type: bool 8765#if defined(MOZ_WIDGET_ANDROID) 8766 value: true 8767#else 8768 value: false 8769#endif 8770 mirror: always 8771 8772- name: media.hardwaremediakeys.enabled 8773 type: bool 8774 value: true 8775 mirror: always 8776 8777# If this pref is on, then `media.mediacontrol.stopcontrol.timer.ms` would take 8778# effect and determine the timing to stop controlling media. 8779- name: media.mediacontrol.stopcontrol.timer 8780 type: bool 8781 value: true 8782 mirror: always 8783 8784# If media is being paused after a certain period, then we would think that 8785# media doesn't need to be controlled anymore. Therefore, that media would stop 8786# listening to the media control key events. The value of this pref is how long 8787# media would stop listening to the event after it's paused. The default value 8788# is set to 24 hrs (24*60*60*1000) 8789- name: media.mediacontrol.stopcontrol.timer.ms 8790 type: RelaxedAtomicUint32 8791 value: 86400000 8792 mirror: always 8793 8794# If this pref is on, we would stop controlling media after it reaches to the 8795# end. 8796- name: media.mediacontrol.stopcontrol.aftermediaends 8797 type: bool 8798 value: true 8799 mirror: always 8800 8801# We would only use media control to control media which duration is longer 8802# than this value. 8803- name: media.mediacontrol.eligible.media.duration.s 8804 type: AtomicFloat 8805 value: 3.0f 8806 mirror: always 8807 8808- name: media.webrtc.platformencoder 8809 type: bool 8810#if defined(MOZ_WIDGET_ANDROID) 8811 value: true 8812#else 8813 value: false 8814#endif 8815 mirror: always 8816 8817- name: media.block-autoplay-until-in-foreground 8818 type: bool 8819#if !defined(MOZ_WIDGET_ANDROID) 8820 value: true 8821#else 8822 value: false 8823#endif 8824 mirror: always 8825 8826- name: media.webrtc.hw.h264.enabled 8827 type: bool 8828#if defined(MOZ_WIDGET_ANDROID) 8829 value: true 8830#else 8831 value: false 8832#endif 8833 mirror: always 8834 8835 # If true, then we require explicit approval from the embedding app (ex. Fenix) 8836 # on GeckoView to know if we can allow audible, inaudible media or both kinds 8837 # of media to autoplay. 8838- name: media.geckoview.autoplay.request 8839 type: bool 8840 value: false 8841 mirror: always 8842 8843 # This is used in testing only, in order to skip the prompting process. This 8844 # pref works only when enabling the pref `media.geckoview.autoplay.request`. 8845 # 0=prompt as normal, 1=allow all, 2=deny all, 3=allow audible request, 8846 # 4=deny audible request, 5=allow inaudible request, 6=deny inaudible request. 8847 # 7=leave all requests pending. 8848- name: media.geckoview.autoplay.request.testing 8849 type: uint32_t 8850 value: 0 8851 mirror: always 8852 8853- name: media.mediacontrol.testingevents.enabled 8854 type: bool 8855 value: false 8856 mirror: always 8857 8858#if defined(XP_MACOSX) 8859- name: media.macos.screenrecording.oscheck.enabled 8860 type: bool 8861 value: true 8862 mirror: always 8863#endif 8864 8865#--------------------------------------------------------------------------- 8866# Prefs starting with "mousewheel." 8867#--------------------------------------------------------------------------- 8868 8869# This affects how line scrolls from wheel events will be accelerated. 8870# Factor to be multiplied for constant acceleration. 8871- name: mousewheel.acceleration.factor 8872 type: RelaxedAtomicInt32 8873 value: 10 8874 mirror: always 8875 8876# This affects how line scrolls from wheel events will be accelerated. 8877# Number of mousewheel clicks when acceleration starts. 8878# Acceleration can be turned off if pref is set to -1. 8879- name: mousewheel.acceleration.start 8880 type: RelaxedAtomicInt32 8881 value: -1 8882 mirror: always 8883 8884# Auto-dir is a feature which treats any single-wheel scroll as a scroll in the 8885# only one scrollable direction if the target has only one scrollable 8886# direction. For example, if the user scrolls a vertical wheel inside a target 8887# which is horizontally scrollable but vertical unscrollable, then the vertical 8888# scroll is converted to a horizontal scroll for that target. 8889# Note that auto-dir only takes effect for |mousewheel.*.action|s and 8890# |mousewheel.*.action.override_x|s whose values are 1. 8891- name: mousewheel.autodir.enabled 8892 type: bool 8893 value: false 8894 mirror: always 8895 8896# When a wheel scroll is converted due to auto-dir, which side the converted 8897# scroll goes towards is decided by one thing called "honoured target". If the 8898# content of the honoured target horizontally starts from right to left, then 8899# an upward scroll maps to a rightward scroll and a downward scroll maps to a 8900# leftward scroll; otherwise, an upward scroll maps to a leftward scroll and a 8901# downward scroll maps to a rightward scroll. 8902# If this pref is set to false, then consider the scrolling target as the 8903# honoured target. 8904# If set to true, then consider the root element in the document where the 8905# scrolling target is as the honoured target. But note that there's one 8906# exception: for targets in an HTML document, the real root element(I.e. the 8907# <html> element) is typically not considered as a root element, but the <body> 8908# element is typically considered as a root element. If there is no <body> 8909# element, then consider the <html> element instead. 8910- name: mousewheel.autodir.honourroot 8911 type: bool 8912 value: false 8913 mirror: always 8914 8915- name: mousewheel.system_scroll_override.enabled 8916 type: RelaxedAtomicBool 8917#if defined(XP_WIN) || defined(MOZ_WIDGET_GTK) 8918 value: true 8919#else 8920 value: false 8921#endif 8922 mirror: always 8923 8924# Prefs for overriding the system mouse wheel scrolling speed on 8925# content of the web pages. When 8926# "mousewheel.system_scroll_override.enabled" is true and the 8927# system scrolling speed isn't customized by the user, the content scrolling 8928# speed is multiplied by the following factors. The value will be used as 8929# 1/100. E.g., 200 means 2.00. 8930# NOTE: Even if "mousewheel.system_scroll_override.enabled" is 8931# true, when Gecko detects the user customized the system scrolling speed 8932# settings, the override isn't executed. 8933- name: mousewheel.system_scroll_override.horizontal.factor 8934 type: RelaxedAtomicInt32 8935 value: 200 8936 mirror: always 8937- name: mousewheel.system_scroll_override.vertical.factor 8938 type: RelaxedAtomicInt32 8939 value: 200 8940 mirror: always 8941 8942# Mouse wheel scroll transaction is held even if the mouse cursor is moved. 8943- name: mousewheel.transaction.ignoremovedelay 8944 type: RelaxedAtomicInt32 8945 value: 100 8946 mirror: always 8947 8948# Mouse wheel scroll transaction period of time (in milliseconds). 8949- name: mousewheel.transaction.timeout 8950 type: RelaxedAtomicInt32 8951 value: 1500 8952 mirror: always 8953 8954# Mouse wheel scroll position is determined by GetMessagePos rather than 8955# LPARAM msg value 8956- name: mousewheel.ignore_cursor_position_in_lparam 8957 type: RelaxedAtomicBool 8958 value: false 8959 mirror: always 8960 8961# If line-height is lower than this value (in device pixels), 1 line scroll 8962# scrolls this height. 8963- name: mousewheel.min_line_scroll_amount 8964 type: int32_t 8965 value: 5 8966 mirror: always 8967 8968#--------------------------------------------------------------------------- 8969# Prefs starting with "network." 8970#--------------------------------------------------------------------------- 8971 8972# Force less-secure NTLMv1 when needed (NTLMv2 is the default). 8973- name: network.auth.force-generic-ntlm-v1 8974 type: RelaxedAtomicBool 8975 value: false 8976 mirror: always 8977 8978# Sub-resources HTTP-authentication: 8979# 0 - don't allow sub-resources to open HTTP authentication credentials 8980# dialogs 8981# 1 - allow sub-resources to open HTTP authentication credentials dialogs, 8982# but don't allow it for cross-origin sub-resources 8983# 2 - allow the cross-origin authentication as well. 8984- name: network.auth.subresource-http-auth-allow 8985 type: uint32_t 8986 value: 2 8987 mirror: always 8988 8989# Sub-resources HTTP-authentication for cross-origin images: 8990# - true: It is allowed to present http auth. dialog for cross-origin images. 8991# - false: It is not allowed. 8992# If network.auth.subresource-http-auth-allow has values 0 or 1 this pref does 8993# not have any effect. 8994- name: network.auth.subresource-img-cross-origin-http-auth-allow 8995 type: bool 8996 value: false 8997 mirror: always 8998 8999# Resources that are triggered by some non-web-content: 9000# - true: They are allow to present http auth. dialog 9001# - false: They are not allow to present http auth. dialog. 9002- name: network.auth.non-web-content-triggered-resources-http-auth-allow 9003 type: bool 9004 value: false 9005 mirror: always 9006 9007# Whether to show anti-spoof confirmation prompts when navigating to a url 9008# with userinfo 9009- name: network.auth.confirmAuth.enabled 9010 type: bool 9011 value: true 9012 mirror: always 9013 9014# See the full list of values in nsICookieService.idl. 9015- name: network.cookie.cookieBehavior 9016 type: RelaxedAtomicInt32 9017 value: 0 # accept all cookies 9018 mirror: always 9019 9020# See the full list of values in nsICookieService.idl. 9021- name: network.cookie.rejectForeignWithExceptions.enabled 9022 type: bool 9023 value: false 9024 mirror: always 9025 9026# The cookieBehavior to be used in Private Browsing mode. 9027- name: network.cookie.cookieBehavior.pbmode 9028 type: RelaxedAtomicInt32 9029 value: 0 # accept all cookies 9030 mirror: always 9031 9032# Stale threshold for cookies in seconds. 9033- name: network.cookie.staleThreshold 9034 type: uint32_t 9035 value: 60 9036 mirror: always 9037 9038# Cookie lifetime policy. Possible values: 9039# 0 - accept all cookies 9040# 1 - deprecated. don't use it. 9041# 2 - accept as session cookies 9042# 3 - deprecated. don't use it. 9043- name: network.cookie.lifetimePolicy 9044 type: RelaxedAtomicInt32 9045 value: 0 9046 mirror: always 9047 9048- name: network.cookie.sameSite.laxByDefault 9049 type: bool 9050 value: @IS_NIGHTLY_BUILD@ 9051 mirror: always 9052 9053# lax-by-default 2 minutes tollerance for unsafe methods. The value is in seconds. 9054- name: network.cookie.sameSite.laxPlusPOST.timeout 9055 type: uint32_t 9056 value: 120 9057 mirror: always 9058 9059- name: network.cookie.sameSite.noneRequiresSecure 9060 type: bool 9061 value: @IS_NIGHTLY_BUILD@ 9062 mirror: always 9063 9064- name: network.cookie.sameSite.schemeful 9065 type: bool 9066 value: @IS_NIGHTLY_BUILD@ 9067 mirror: always 9068 9069- name: network.cookie.thirdparty.sessionOnly 9070 type: bool 9071 value: false 9072 mirror: always 9073 9074- name: network.cookie.thirdparty.nonsecureSessionOnly 9075 type: bool 9076 value: false 9077 mirror: always 9078 9079# If we should attempt to race the cache and network. 9080- name: network.http.rcwn.enabled 9081 type: bool 9082 value: true 9083 mirror: always 9084 9085- name: network.http.rcwn.cache_queue_normal_threshold 9086 type: uint32_t 9087 value: 8 9088 mirror: always 9089 9090- name: network.http.rcwn.cache_queue_priority_threshold 9091 type: uint32_t 9092 value: 2 9093 mirror: always 9094 9095# We might attempt to race the cache with the network only if a resource 9096# is smaller than this size. 9097- name: network.http.rcwn.small_resource_size_kb 9098 type: uint32_t 9099 value: 256 9100 mirror: always 9101 9102- name: network.http.rcwn.min_wait_before_racing_ms 9103 type: uint32_t 9104 value: 0 9105 mirror: always 9106 9107- name: network.http.rcwn.max_wait_before_racing_ms 9108 type: uint32_t 9109 value: 500 9110 mirror: always 9111 9112# false=real referer, true=spoof referer (use target URI as referer). 9113- name: network.http.referer.spoofSource 9114 type: bool 9115 value: false 9116 mirror: always 9117 9118# Check whether we need to hide referrer when leaving a .onion domain. 9119# false=allow onion referer, true=hide onion referer (use empty referer). 9120- name: network.http.referer.hideOnionSource 9121 type: bool 9122 value: false 9123 mirror: always 9124 9125# Include an origin header on non-GET and non-HEAD requests regardless of CORS. 9126# 0=never send, 1=send when same-origin only, 2=always send. 9127- name: network.http.sendOriginHeader 9128 type: uint32_t 9129 value: 2 9130 mirror: always 9131 9132# Prefs allowing granular control of referers. 9133# 0=don't send any, 1=send only on clicks, 2=send on image requests as well 9134- name: network.http.sendRefererHeader 9135 type: uint32_t 9136 value: 2 9137 mirror: always 9138 do_not_use_directly: true 9139 9140# The maximum allowed length for a referrer header - 4096 default. 9141# 0 means no limit. 9142- name: network.http.referer.referrerLengthLimit 9143 type: uint32_t 9144 value: 4096 9145 mirror: always 9146 9147# 0=always send, 1=send iff base domains match, 2=send iff hosts match. 9148- name: network.http.referer.XOriginPolicy 9149 type: uint32_t 9150 value: 0 9151 mirror: always 9152 do_not_use_directly: true 9153 9154# 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port. 9155- name: network.http.referer.trimmingPolicy 9156 type: uint32_t 9157 value: 0 9158 mirror: always 9159 do_not_use_directly: true 9160 9161# 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port. 9162- name: network.http.referer.XOriginTrimmingPolicy 9163 type: uint32_t 9164 value: 0 9165 mirror: always 9166 do_not_use_directly: true 9167 9168# Set the default Referrer Policy; to be used unless overriden by the site. 9169# 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin, 9170# 3=no-referrer-when-downgrade. 9171- name: network.http.referer.defaultPolicy 9172 type: uint32_t 9173 value: 2 9174 mirror: always 9175 9176# Set the default Referrer Policy applied to third-party trackers when the 9177# default cookie policy is set to reject third-party trackers, to be used 9178# unless overriden by the site. 9179# 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin, 9180# 3=no-referrer-when-downgrade. 9181# Trim referrers from trackers to origins by default. 9182- name: network.http.referer.defaultPolicy.trackers 9183 type: uint32_t 9184 value: 2 9185 mirror: always 9186 9187# Set the Private Browsing Default Referrer Policy, to be used 9188# unless overriden by the site. 9189# 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin, 9190# 3=no-referrer-when-downgrade. 9191- name: network.http.referer.defaultPolicy.pbmode 9192 type: uint32_t 9193 value: 2 9194 mirror: always 9195 9196# Set the Private Browsing Default Referrer Policy applied to third-party 9197# trackers when the default cookie policy is set to reject third-party 9198# trackers, to be used unless overriden by the site. 9199# 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin, 9200# 3=no-referrer-when-downgrade. 9201# No need to change this pref for trimming referrers from trackers since in 9202# private windows we already trim all referrers to origin only. 9203- name: network.http.referer.defaultPolicy.trackers.pbmode 9204 type: uint32_t 9205 value: 2 9206 mirror: always 9207 9208# Whether certain http header values should be censored out in logs. 9209# Specifically filters out "authorization" and "proxy-authorization". 9210- name: network.http.sanitize-headers-in-logs 9211 type: RelaxedAtomicBool 9212 value: true 9213 mirror: always 9214 9215# Whether or not we use Windows for SSO to Microsoft sites. 9216- name: network.http.windows-sso.enabled 9217 type: RelaxedAtomicBool 9218 value: false 9219 mirror: always 9220 9221# If set to true, IOService.offline depends on IOService.connectivity. 9222- name: network.offline-mirrors-connectivity 9223 type: RelaxedAtomicBool 9224 value: false 9225 mirror: always 9226 9227# Enables the predictive service. 9228- name: network.predictor.enabled 9229 type: bool 9230 value: true 9231 mirror: always 9232 9233# Set true to allow resolving proxy for localhost 9234- name: network.proxy.allow_hijacking_localhost 9235 type: RelaxedAtomicBool 9236 value: false 9237 mirror: always 9238 9239# Allow CookieJarSettings to be unblocked for channels without a document. 9240# This is for testing only. 9241- name: network.cookieJarSettings.unblocked_for_testing 9242 type: bool 9243 value: false 9244 mirror: always 9245 9246- name: network.predictor.enable-hover-on-ssl 9247 type: bool 9248 value: false 9249 mirror: always 9250 9251- name: network.predictor.enable-prefetch 9252 type: bool 9253 value: false 9254 mirror: always 9255 9256- name: network.predictor.page-degradation.day 9257 type: int32_t 9258 value: 0 9259 mirror: always 9260- name: network.predictor.page-degradation.week 9261 type: int32_t 9262 value: 5 9263 mirror: always 9264- name: network.predictor.page-degradation.month 9265 type: int32_t 9266 value: 10 9267 mirror: always 9268- name: network.predictor.page-degradation.year 9269 type: int32_t 9270 value: 25 9271 mirror: always 9272- name: network.predictor.page-degradation.max 9273 type: int32_t 9274 value: 50 9275 mirror: always 9276 9277- name: network.predictor.subresource-degradation.day 9278 type: int32_t 9279 value: 1 9280 mirror: always 9281- name: network.predictor.subresource-degradation.week 9282 type: int32_t 9283 value: 10 9284 mirror: always 9285- name: network.predictor.subresource-degradation.month 9286 type: int32_t 9287 value: 25 9288 mirror: always 9289- name: network.predictor.subresource-degradation.year 9290 type: int32_t 9291 value: 50 9292 mirror: always 9293- name: network.predictor.subresource-degradation.max 9294 type: int32_t 9295 value: 100 9296 mirror: always 9297 9298- name: network.predictor.prefetch-rolling-load-count 9299 type: int32_t 9300 value: 10 9301 mirror: always 9302 9303- name: network.predictor.prefetch-min-confidence 9304 type: int32_t 9305 value: 100 9306 mirror: always 9307- name: network.predictor.preconnect-min-confidence 9308 type: int32_t 9309 value: 90 9310 mirror: always 9311- name: network.predictor.preresolve-min-confidence 9312 type: int32_t 9313 value: 60 9314 mirror: always 9315 9316- name: network.predictor.prefetch-force-valid-for 9317 type: int32_t 9318 value: 10 9319 mirror: always 9320 9321- name: network.predictor.max-resources-per-entry 9322 type: int32_t 9323 value: 100 9324 mirror: always 9325 9326# This is selected in concert with max-resources-per-entry to keep memory 9327# usage low-ish. The default of the combo of the two is ~50k. 9328- name: network.predictor.max-uri-length 9329 type: uint32_t 9330 value: 500 9331 mirror: always 9332 9333# A testing flag. 9334- name: network.predictor.doing-tests 9335 type: bool 9336 value: false 9337 mirror: always 9338 9339# Enables `<link rel="preload">` tag and `Link: rel=preload` response header handling. 9340- name: network.preload 9341 type: RelaxedAtomicBool 9342 value: true 9343 mirror: always 9344 9345# Whether to use the network process or not 9346# Start a separate socket process. Performing networking on the socket process 9347# is control by a sepparate pref 9348# ("network.http.network_access_on_socket_process.enabled"). 9349# Changing these prefs requires a restart. 9350- name: network.process.enabled 9351 type: RelaxedAtomicBool 9352 mirror: always 9353#if defined(ANDROID) || defined(MOZ_THUNDERBIRD) 9354 value: false # see bug 1641427 9355#else 9356 value: @IS_EARLY_BETA_OR_EARLIER@ 9357#endif 9358 9359# Whether we can send OnDataAvailable to content process directly. 9360- name: network.send_ODA_to_content_directly 9361 type: RelaxedAtomicBool 9362 value: false 9363 mirror: always 9364 9365# Perform all network access on the socket process. 9366# The pref requires "network.process.enabled" to be true. 9367# Changing these prefs requires a restart. 9368- name: network.http.network_access_on_socket_process.enabled 9369 type: RelaxedAtomicBool 9370 mirror: always 9371 value: false 9372 9373# Telemetry of traffic categories. Whether or not to enable HttpTrafficAnalyzer. 9374- name: network.traffic_analyzer.enabled 9375 type: RelaxedAtomicBool 9376 value: true 9377 mirror: always 9378 9379# Whether DNS resolution is limited to literals and cached entries. 9380- name: network.dns.disabled 9381 type: RelaxedAtomicBool 9382 value: false 9383 mirror: always 9384 9385# Whether DNS resolution is limited to literals and cached entries. 9386- name: network.dns.skipTRR-when-parental-control-enabled 9387 type: RelaxedAtomicBool 9388 value: true 9389 mirror: always 9390 9391- name: network.dns.disablePrefetchFromHTTPS 9392 type: bool 9393 value: true 9394 mirror: always 9395 9396# Max time to shutdown the resolver threads 9397- name: network.dns.resolver_shutdown_timeout_ms 9398 type: uint32_t 9399 value: 2000 9400 mirror: always 9401 9402# When true on Windows DNS resolutions for single label domains 9403# (domains that don't contain a dot) will be resolved using the DnsQuery 9404# API instead of PR_GetAddrInfoByName 9405- name: network.dns.dns_query_single_label 9406 type: RelaxedAtomicBool 9407 value: false 9408 mirror: always 9409 9410# When this pref is true we enforce a 253 character limit on domains we try to 9411# resolve. See bug 1264117. If it doesn't cause any web-compat issues we can 9412# remove it in a few releases 9413- name: network.dns.limit_253_chars 9414 type: RelaxedAtomicBool 9415 value: true 9416 mirror: always 9417 9418# When this pref is true, we copy the host name to a fresh string before 9419# calling into getaddrinfo. 9420- name: network.dns.copy_string_before_call 9421 type: RelaxedAtomicBool 9422 value: true 9423 mirror: always 9424 9425# The proxy type. See nsIProtocolProxyService.idl 9426# PROXYCONFIG_DIRECT = 0 9427# PROXYCONFIG_MANUAL = 1 9428# PROXYCONFIG_PAC = 2 9429# PROXYCONFIG_WPAD = 4 9430# PROXYCONFIG_SYSTEM = 5 9431- name: network.proxy.type 9432 type: RelaxedAtomicUint32 9433 value: 5 9434 mirror: always 9435 9436# Whether the SOCKS proxy should be in charge of DNS resolution. 9437- name: network.proxy.socks_remote_dns 9438 type: RelaxedAtomicBool 9439 value: false 9440 mirror: always 9441 9442# When receiving a network change event, the time (in ms) we wait to reload the 9443# PAC url. 9444- name: network.proxy.reload_pac_delay 9445 type: RelaxedAtomicUint32 9446 value: 2000 9447 mirror: always 9448 9449# When parsing "SOCKS" in PAC string, the default version of SOCKS that will be 9450# used. 9451- name: network.proxy.default_pac_script_socks_version 9452 type: RelaxedAtomicUint32 9453 value: 4 9454 mirror: always 9455 9456# Whether to force failover to direct for system requests. 9457#ifdef MOZ_PROXY_DIRECT_FAILOVER 9458- name: network.proxy.failover_direct 9459 type: bool 9460 value: true 9461 mirror: always 9462#endif 9463 9464# Some requests during a page load are marked as "tail", mainly trackers, but not only. 9465# This pref controls whether such requests are put to the tail, behind other requests 9466# emerging during page loading process. 9467- name: network.http.tailing.enabled 9468 type: bool 9469 value: true 9470 mirror: always 9471 9472# Whether to run proxy checks when processing Alt-Svc headers. 9473- name: network.http.altsvc.proxy_checks 9474 type: bool 9475 value: true 9476 mirror: always 9477 9478- name: network.http.stale_while_revalidate.enabled 9479 type: RelaxedAtomicBool 9480 value: true 9481 mirror: always 9482 9483# Whether to cache SSL resumption tokens in necko. 9484- name: network.ssl_tokens_cache_enabled 9485 type: RelaxedAtomicBool 9486 value: @IS_NIGHTLY_BUILD@ 9487 mirror: always 9488 9489# Capacity of the above cache, in kilobytes. 9490- name: network.ssl_tokens_cache_capacity 9491 type: RelaxedAtomicUint32 9492 value: 2048 9493 mirror: always 9494 9495# The maximum allowed length for a URL - 1MB default. 9496- name: network.standard-url.max-length 9497 type: RelaxedAtomicUint32 9498 value: 1048576 9499 mirror: always 9500 9501# Default global TRR provider 9502- name: network.trr.default_provider_uri 9503 type: String 9504 value: "https://mozilla.cloudflare-dns.com/dns-query" 9505 mirror: never 9506 9507# Single TRR request timeout, in milliseconds 9508- name: network.trr.request_timeout_ms 9509 type: RelaxedAtomicUint32 9510 value: 1500 9511 mirror: always 9512 9513# Single TRR request timeout, in milliseconds for mode 3 9514- name: network.trr.request_timeout_mode_trronly_ms 9515 type: RelaxedAtomicUint32 9516 value: 30000 9517 mirror: always 9518 9519# The timeout of the TRR confirmation request 9520- name: network.trr.confirmation_timeout_ms 9521 type: RelaxedAtomicUint32 9522 value: 6000 9523 mirror: always 9524 9525# The timeout of the TRR confirmation request 9526- name: network.trr.confirmation_telemetry_enabled 9527 type: RelaxedAtomicBool 9528 value: true 9529 mirror: always 9530 9531# Whether to send the Accept-Language header for TRR requests 9532- name: network.trr.send_accept-language_headers 9533 type: RelaxedAtomicBool 9534 value: false 9535 mirror: always 9536 9537# Whether to send an empty Accept-Encoding header for TRR requests 9538- name: network.trr.send_empty_accept-encoding_headers 9539 type: RelaxedAtomicBool 9540 value: true 9541 mirror: always 9542 9543# Whether to send the User-Agent header for TRR requests 9544- name: network.trr.send_user-agent_headers 9545 type: RelaxedAtomicBool 9546 value: false 9547 mirror: always 9548 9549# This pref controls whether to use TRRServiceChannel off main thread. 9550- name: network.trr.fetch_off_main_thread 9551 type: RelaxedAtomicBool 9552 value: true 9553 mirror: always 9554 9555# If this pref is false, a task will be dispatched to remove the file from the 9556# disk and the pref will be set to true. 9557# It can probably be removed after a few releases. 9558- name: network.trr.blocklist_cleanup_done 9559 type: RelaxedAtomicBool 9560 value: false 9561 mirror: always 9562 9563# If we should wait for captive portal confirmation before enabling TRR 9564- name: network.trr.wait-for-portal 9565 type: RelaxedAtomicBool 9566 value: false 9567 mirror: always 9568 9569# If we should wait for TRR service confirmation to complete before enabling 9570# TRR for lookups when fallback is enabled. Confirmation is always skipped when 9571# global mode is TRR-only (no fallback). 9572- name: network.trr.wait-for-confirmation 9573 type: RelaxedAtomicBool 9574 value: false 9575 mirror: always 9576 9577# Normally when confirmation fails we wait for the confirmation to succeed 9578# before attempting to do TRR. When this pref is true, we optimistically 9579# assume the confirmation will succeed and might attempt TRR anyway. 9580# If network.trr.wait-for-confirmation is true, this pref is ignored. 9581- name: network.trr.attempt-when-retrying-confirmation 9582 type: RelaxedAtomicBool 9583 value: false 9584 mirror: always 9585 9586# Use GET (rather than POST) 9587- name: network.trr.useGET 9588 type: RelaxedAtomicBool 9589 value: false 9590 mirror: always 9591 9592# Allow RFC1918 address in responses? 9593- name: network.trr.allow-rfc1918 9594 type: RelaxedAtomicBool 9595 value: false 9596 mirror: always 9597 9598# When true, it only sends AAAA when the system has IPv6 connectivity 9599- name: network.trr.skip-AAAA-when-not-supported 9600 type: RelaxedAtomicBool 9601 value: true 9602 mirror: always 9603 9604# Whether to apply split horizon mitigations when using TRR. 9605# These include adding the DNS suffix to the excluded domains 9606- name: network.trr.split_horizon_mitigations 9607 type: RelaxedAtomicBool 9608 value: true 9609 mirror: always 9610 9611# Explicitly disable ECS (EDNS Client Subnet, RFC 7871) 9612- name: network.trr.disable-ECS 9613 type: RelaxedAtomicBool 9614 value: true 9615 mirror: always 9616 9617# When true, the DNS+TRR cache will be cleared when a relevant TRR pref 9618# changes. (uri, bootstrapAddress, excluded-domains) 9619- name: network.trr.clear-cache-on-pref-change 9620 type: RelaxedAtomicBool 9621 value: true 9622 mirror: always 9623 9624# After this many failed TRR requests in a row, consider TRR borked 9625- name: network.trr.max-fails 9626 type: RelaxedAtomicUint32 9627 value: 15 9628 mirror: always 9629 9630# When the TRR confirmation is set to CONFIRM_FAILED due to many failures in 9631# a row, we set a timer to retry. This has an exponential backoff up to 9632# 64 seconds. 9633- name: network.trr.retry-timeout-ms 9634 type: RelaxedAtomicUint32 9635 value: 125 9636 mirror: always 9637 9638# Retry with no TRR when the response contained only 0.0.0.0 or :: 9639- name: network.trr.fallback-on-zero-response 9640 type: RelaxedAtomicBool 9641 value: false 9642 mirror: always 9643 9644# If true we parse the /etc/hosts file and exclude any host names from TRR. 9645# Reading the file is only done once, when TRR is first enabled - this could be 9646# soon after startup or when the pref is flipped. 9647- name: network.trr.exclude-etc-hosts 9648 type: RelaxedAtomicBool 9649 value: true 9650 mirror: always 9651 9652# Whether to enable odoh. 9653- name: network.trr.odoh.enabled 9654 type: RelaxedAtomicBool 9655 value: false 9656 mirror: always 9657 9658# The uri of Oblivious Proxy. 9659- name: network.trr.odoh.proxy_uri 9660 type: String 9661 value: "" 9662 mirror: never 9663 9664# The host name of Oblivious Target. 9665- name: network.trr.odoh.target_host 9666 type: String 9667 value: "" 9668 mirror: never 9669 9670# The uri path of the odoh uri. 9671- name: network.trr.odoh.target_path 9672 type: String 9673 value: "" 9674 mirror: never 9675 9676# The minimum ttl of the DNS record that contains ODoHConfigs. 9677- name: network.trr.odoh.min_ttl 9678 type: RelaxedAtomicUint32 9679 value: 60 9680 mirror: always 9681 9682# The uri indicates where to get ODoHConfigs. 9683- name: network.trr.odoh.configs_uri 9684 type: String 9685 value: "" 9686 mirror: never 9687 9688# Whether to skip the NS check for the blocked host. 9689# Note this is used for test only. 9690- name: network.trr.skip-check-for-blocked-host 9691 type: RelaxedAtomicBool 9692 value: false 9693 mirror: always 9694 9695# Allow the network changed event to get sent when a network topology or setup 9696# change is noticed while running. 9697- name: network.notify.changed 9698 type: RelaxedAtomicBool 9699 value: true 9700 mirror: always 9701 9702# Allow network detection of IPv6 related changes (bug 1245059) 9703- name: network.notify.IPv6 9704 type: RelaxedAtomicBool 9705#ifdef XP_WIN 9706 value: false 9707#else 9708 value: true 9709#endif 9710 mirror: always 9711 9712# Whether to check the dnsSuffix on network changes 9713- name: network.notify.dnsSuffixList 9714 type: RelaxedAtomicBool 9715 value: true 9716 mirror: always 9717 9718# Whether to check the registry for proxies on network changes that indicate 9719# that TRR should not be used. 9720- name: network.notify.checkForProxies 9721 type: RelaxedAtomicBool 9722 value: true 9723 mirror: always 9724 9725# Whether to check the registry for NRPT rules on network changes that 9726# indicate that TRR should not be used. 9727- name: network.notify.checkForNRPT 9728 type: RelaxedAtomicBool 9729 value: true 9730 mirror: always 9731 9732# Whether NotifyIpInterfaceChange should be called immediately after 9733# registration in order to record the initial state of the network adapters. 9734- name: network.notify.initial_call 9735 type: RelaxedAtomicBool 9736 value: true 9737 mirror: always 9738 9739# Whether to check for DNS resolvers 9740- name: network.notify.resolvers 9741 type: RelaxedAtomicBool 9742 value: true 9743 mirror: always 9744 9745# Whether to use the rust implemented DefaultURI for unknown scheme types 9746- name: network.url.useDefaultURI 9747 type: RelaxedAtomicBool 9748 value: false 9749 mirror: always 9750 9751# Force remapping of remote port numbers to allow reaching local testing 9752# servers or port forwarders listening on non-standard ports. Note that 9753# this is not changing the origin URL in the addressbar, only internally 9754# the port number used. This is intended to be used along with the 9755# `network.dns.forceResolve` preference. 9756# 9757# The form is: 9758# "80,443,808-888=8080; 563=8081" 9759# this will remap ports for HTTP, HTTPS and the range of 808-888 included 9760# to use port 8080, and port 563 to go to 8081. 9761- name: network.socket.forcePort 9762 type: String 9763 value: "" 9764 mirror: never 9765 9766# Receive buffer size of QUIC socket 9767- name: network.http.http3.recvBufferSize 9768 type: RelaxedAtomicInt32 9769 value: 1048576 9770 mirror: always 9771 9772- name: network.http.http3.enable_qlog 9773 type: RelaxedAtomicBool 9774 value: false 9775 mirror: always 9776 9777- name: network.http.http3.enable_0rtt 9778 type: RelaxedAtomicBool 9779 value: true 9780 mirror: always 9781 9782# When a h3 transaction is inserted in the pending queue, the time (ms) we wait 9783# to create a TCP backup connection. 9784- name: network.http.http3.backup_timer_delay 9785 type: RelaxedAtomicUint32 9786 value: 100 9787 mirror: always 9788 9789# The global half open sockets allowed for creating a backup connection. 9790- name: network.http.http3.parallel_fallback_conn_limit 9791 type: RelaxedAtomicUint32 9792 value: 32 9793 mirror: always 9794 9795# When true, a http request will be upgraded to https when HTTPS RR is 9796# available. 9797- name: network.dns.upgrade_with_https_rr 9798 type: RelaxedAtomicBool 9799 value: @IS_EARLY_BETA_OR_EARLIER@ 9800 mirror: always 9801 9802# Whether to use HTTPS RR as AltSvc 9803- name: network.dns.use_https_rr_as_altsvc 9804 type: RelaxedAtomicBool 9805 value: @IS_EARLY_BETA_OR_EARLIER@ 9806 mirror: always 9807 9808# Whether to check for NAT64 using the system resolver 9809- name: network.connectivity-service.nat64-check 9810 type: bool 9811 value: true 9812 mirror: always 9813 9814# Manually enter the NAT64 prefix that will be used if IPv4 is unavailable. 9815# The value is formatted as IPv6 with the least significant bits to be dropped. 9816# For example, 64:ff9b:: is a common prefix. This will not disable 9817# the NAT64 check, although the value of this pref will be prioritized. 9818- name: network.connectivity-service.nat64-prefix 9819 type: String 9820 value: "" 9821 mirror: never 9822 9823# Whether to enable echconfig. 9824- name: network.dns.echconfig.enabled 9825 type: RelaxedAtomicBool 9826 value: false 9827 mirror: always 9828 9829# This pref needs to be worked together with network.dns.echconfig.enabled 9830# being true and there is no record without ECHConfig. 9831# When we try all records with ECHConfig in HTTPS RRs and still can't connect, 9832# this pref indicate whether we can fallback to the origin server. 9833- name: network.dns.echconfig.fallback_to_origin_when_all_failed 9834 type: RelaxedAtomicBool 9835 value: true 9836 mirror: always 9837 9838# When true, reset the exclusion list when all records are excluded. 9839- name: network.dns.httpssvc.reset_exclustion_list 9840 type: RelaxedAtomicBool 9841 value: true 9842 mirror: always 9843 9844# If the http3 connection cannot be ready after the timeout value here, the 9845# transaction will start another non-http3 conneciton. 9846# Setting this value to 0 indicates this feature is disabled. 9847- name: network.dns.httpssvc.http3_fast_fallback_timeout 9848 type: RelaxedAtomicUint32 9849 value: 50 9850 mirror: always 9851 9852# Whether to use https rr for speculative connections. 9853- name: network.dns.use_https_rr_for_speculative_connection 9854 type: RelaxedAtomicBool 9855 value: false 9856 mirror: always 9857 9858# Whether to force a transaction to wait https rr. 9859- name: network.dns.force_waiting_https_rr 9860 type: RelaxedAtomicBool 9861 value: @IS_NIGHTLY_BUILD@ 9862 mirror: always 9863 9864# The TTL for negative responses of TXT and HTTPS records. 9865- name: network.dns.negative_ttl_for_type_record 9866 type: RelaxedAtomicUint32 9867 value: 300 # 5 minutes (in seconds) 9868 mirror: always 9869 9870- name: network.cache.frecency_array_check_enabled 9871 type: RelaxedAtomicBool 9872 value: @IS_EARLY_BETA_OR_EARLIER@ 9873 mirror: always 9874 9875# This is used for a temporary workaround for a web-compat issue. If pref is 9876# true CORS preflight requests are allowed to send client certificates. 9877- name: network.cors_preflight.allow_client_cert 9878 type: RelaxedAtomicBool 9879 value: false 9880 mirror: always 9881 9882# Whether to record the telemetry event when a JAR channel is failed to load. 9883- name: network.jar.record_failure_reason 9884 type: RelaxedAtomicBool 9885 value: @IS_EARLY_BETA_OR_EARLIER@ 9886 mirror: always 9887 9888# Support http3 version1 9889- name: network.http.http3.support_version1 9890 type: RelaxedAtomicBool 9891 value: true 9892 mirror: always 9893 9894#--------------------------------------------------------------------------- 9895# Prefs starting with "nglayout." 9896#--------------------------------------------------------------------------- 9897 9898# Enable/disable display list invalidation logging --- useful for debugging. 9899- name: nglayout.debug.invalidation 9900 type: bool 9901 value: false 9902 mirror: always 9903 9904# Enable/disable widget update area flashing --- only supported with 9905# BasicLayers (other layer managers always update the entire widget area). 9906- name: nglayout.debug.widget_update_flashing 9907 type: RelaxedAtomicBool 9908 value: false 9909 mirror: always 9910 9911- name: nglayout.initialpaint.delay 9912 type: int32_t 9913 value: 5 9914 mirror: always 9915 9916- name: nglayout.initialpaint.delay_in_oopif 9917 type: int32_t 9918 value: 5 9919 mirror: always 9920 9921#--------------------------------------------------------------------------- 9922# Prefs starting with "page_load." 9923#--------------------------------------------------------------------------- 9924 9925# Time in milliseconds during which certain tasks are deprioritized during 9926# page load. 9927- name: page_load.deprioritization_period 9928 type: RelaxedAtomicUint32 9929 value: 5000 9930 mirror: always 9931 9932#--------------------------------------------------------------------------- 9933# Prefs starting with "permissions." 9934#--------------------------------------------------------------------------- 9935 9936# 1-Accept, 2-Deny, Any other value: Accept 9937- name: permissions.default.image 9938 type: RelaxedAtomicUint32 9939 value: 1 9940 mirror: always 9941 9942- name: permissions.delegation.enabled 9943 type: bool 9944 value: true 9945 mirror: always 9946 9947- name: permissions.isolateBy.userContext 9948 type: RelaxedAtomicBool 9949 value: false 9950 mirror: always 9951 9952- name: permissions.isolateBy.privateBrowsing 9953 type: RelaxedAtomicBool 9954 value: true 9955 mirror: always 9956 9957#--------------------------------------------------------------------------- 9958# Prefs starting with "plain_text." 9959#--------------------------------------------------------------------------- 9960 9961# When false, text in plaintext documents does not wrap long lines. 9962- name: plain_text.wrap_long_lines 9963 type: bool 9964 value: true 9965 mirror: always 9966 9967#--------------------------------------------------------------------------- 9968# Prefs starting with "plugin." 9969#--------------------------------------------------------------------------- 9970 9971- name: plugin.state.flash 9972 type: uint32_t 9973 # Flash is Click-to-Activate by default on all channels. Disabled for ARM builds. 9974#if defined(_ARM64_) && defined(XP_WIN) 9975 value: 0 9976#else 9977 value: 1 9978#endif 9979 mirror: always 9980 9981#--------------------------------------------------------------------------- 9982# Prefs starting with "plugins." 9983#--------------------------------------------------------------------------- 9984 9985- name: plugins.flashBlock.enabled 9986 type: bool 9987 value: false 9988 mirror: always 9989 9990- name: plugins.http_https_only 9991 type: bool 9992 value: true 9993 mirror: always 9994 9995#--------------------------------------------------------------------------- 9996# Prefs starting with "preferences." 9997#--------------------------------------------------------------------------- 9998 9999- name: preferences.allow.omt-write 10000 type: bool 10001 value: true 10002 mirror: never 10003 10004#ifdef DEBUG 10005 # If set to true, setting a Preference matched to a `Once` StaticPref will 10006 # assert that the value matches. Such assertion being broken is a clear flag 10007 # that the Once policy shouldn't be used. 10008- name: preferences.check.once.policy 10009 type: bool 10010 value: false 10011 mirror: always 10012 10013 # If set to true, StaticPrefs Once policy check will be skipped during 10014 # automation regression test. Use with care. This pref must be set back to 10015 # false as soon as specific test has completed. 10016- name: preferences.force-disable.check.once.policy 10017 type: bool 10018 value: false 10019 mirror: always 10020#endif 10021 10022#--------------------------------------------------------------------------- 10023# Prefs starting with "print." 10024#--------------------------------------------------------------------------- 10025 10026# Variation fonts can't always be embedded in certain output formats 10027# such as PDF. To work around this, draw the variation fonts using 10028# paths instead of using font embedding. 10029- name: print.font-variations-as-paths 10030 type: RelaxedAtomicBool 10031 value: true 10032 mirror: always 10033 10034# Whether we always print silently (without a print dialog). 10035- name: print.always_print_silent 10036 type: RelaxedAtomicBool 10037 value: false 10038 mirror: always 10039 10040# Whether tab_modal print UI is enabled. 10041# 10042# The tab modal print dialog is currently only for early beta or nightly. 10043- name: print.tab_modal.enabled 10044 type: RelaxedAtomicBool 10045 value: true 10046 mirror: always 10047 10048# Whether the pages per sheet print setting is enabled. 10049- name: print.pages_per_sheet.enabled 10050 type: RelaxedAtomicBool 10051 value: true 10052 mirror: always 10053 10054# Print via the parent process. This is only used when e10s is enabled. 10055- name: print.print_via_parent 10056 type: RelaxedAtomicBool 10057 value: @IS_NOT_ANDROID@ 10058 mirror: always 10059 10060# Whether we allow the print progress dialog to show up. 10061- name: print.show_print_progress 10062 type: RelaxedAtomicBool 10063 value: true 10064 mirror: always 10065 10066# Whether we attempt to generate links in Save As PDF output. 10067- name: print.save_as_pdf.links.enabled 10068 type: RelaxedAtomicBool 10069 value: true 10070 mirror: always 10071 10072# The default DPI for printing. 10073# 10074# For PDF-based output, DPI should ideally be irrelevant, but in fact it is not 10075# for multiple reasons: 10076# 10077# * Layout code that tries to respect device pixels (e.g. for snapping glyph 10078# positions and baselines, and especially for the "GDI Classic" 10079# rendering-mode threshold for certain fonts). 10080# 10081# * The limitations of the PDF format mean that we can't natively represent 10082# certain effects, such as filters, in PDF output, so we need to rasterize 10083# the parts of the document with these applied. 10084# 10085# * Other rasterized things like images and such are also affected by DPI 10086# (both in the output, and the images we select via srcset, for example). 10087# 10088# Therefore, using a high DPI is preferable. For now, we use 144dpi to match 10089# physical printer output on Windows, but higher (e.g. 300dpi) might be better 10090# if it does not lead to issues such as excessive memory use. 10091- name: print.default_dpi 10092 type: float 10093 value: 144.0f 10094 mirror: always 10095 10096# Whether support for monochrome printing is enabled for CUPS. 10097- name: print.cups.monochrome.enabled 10098 type: RelaxedAtomicBool 10099 value: true 10100 mirror: always 10101 10102#--------------------------------------------------------------------------- 10103# Prefs starting with "privacy." 10104#--------------------------------------------------------------------------- 10105 10106- name: privacy.file_unique_origin 10107 type: bool 10108 value: true 10109 mirror: always 10110 10111- name: privacy.fuzzyfox.clockgrainus 10112 type: RelaxedAtomicUint32 10113 value: 100 10114 mirror: always 10115 10116# Annotate trackers using the strict list. If set to false, the basic list will 10117# be used instead. 10118- name: privacy.annotate_channels.strict_list.enabled 10119 type: bool 10120 value: @IS_EARLY_BETA_OR_EARLIER@ 10121 mirror: always 10122 10123# First Party Isolation (double keying), disabled by default. 10124- name: privacy.firstparty.isolate 10125 type: RelaxedAtomicBool 10126 value: false 10127 mirror: always 10128 10129# If false, two windows in the same domain with different first party domains 10130# (top level URLs) can access resources through window.opener. This pref is 10131# effective only when "privacy.firstparty.isolate" is true. 10132- name: privacy.firstparty.isolate.restrict_opener_access 10133 type: RelaxedAtomicBool 10134 value: true 10135 mirror: always 10136 10137- name: privacy.firstparty.isolate.block_post_message 10138 type: RelaxedAtomicBool 10139 value: false 10140 mirror: always 10141 10142- name: privacy.firstparty.isolate.use_site 10143 type: RelaxedAtomicBool 10144 value: false 10145 mirror: always 10146 10147# Enforce tracking protection in all modes. 10148- name: privacy.trackingprotection.enabled 10149 type: bool 10150 value: false 10151 mirror: always 10152 10153# Enforce tracking protection in Private Browsing mode. 10154- name: privacy.trackingprotection.pbmode.enabled 10155 type: bool 10156 value: true 10157 mirror: always 10158 10159# Annotate channels based on the tracking protection list in all modes 10160- name: privacy.trackingprotection.annotate_channels 10161 type: bool 10162 value: true 10163 mirror: always 10164 10165# Block 3rd party fingerprinting resources. 10166- name: privacy.trackingprotection.fingerprinting.enabled 10167 type: bool 10168 value: false 10169 mirror: always 10170 10171# Block 3rd party cryptomining resources. 10172- name: privacy.trackingprotection.cryptomining.enabled 10173 type: bool 10174 value: false 10175 mirror: always 10176 10177# Block 3rd party socialtracking resources. 10178- name: privacy.trackingprotection.socialtracking.enabled 10179 type: bool 10180 value: false 10181 mirror: always 10182 10183# Consider socialtracking annotation as trackers (see ETP). 10184- name: privacy.socialtracking.block_cookies.enabled 10185 type: bool 10186 value: true 10187 mirror: always 10188 10189# Whether Origin Telemetry should be enabled. 10190# NOTE: if telemetry.origin_telemetry_test_mode.enabled is enabled, this pref 10191# won't have any effect. 10192- name: privacy.trackingprotection.origin_telemetry.enabled 10193 type: RelaxedAtomicBool 10194 value: @IS_NIGHTLY_BUILD@ 10195 mirror: always 10196 10197- name: privacy.trackingprotection.testing.report_blocked_node 10198 type: RelaxedAtomicBool 10199 value: false 10200 mirror: always 10201 10202# Whether to spoof user locale to English (used as part of Resist 10203# Fingerprinting). 10204# 0 - will prompt 10205# 1 - don't spoof 10206# 2 - spoof 10207- name: privacy.spoof_english 10208 type: RelaxedAtomicUint32 10209 value: 0 10210 mirror: always 10211 10212# Send "do not track" HTTP header, disabled by default. 10213- name: privacy.donottrackheader.enabled 10214 type: bool 10215 value: false 10216 mirror: always 10217 10218# Lower the priority of network loads for resources on the tracking protection 10219# list. Note that this requires the 10220# privacy.trackingprotection.annotate_channels pref to be on in order to have 10221# any effect. 10222- name: privacy.trackingprotection.lower_network_priority 10223 type: bool 10224 value: @IS_NIGHTLY_BUILD@ 10225 mirror: always 10226 10227# A subset of Resist Fingerprinting protections focused specifically on timers. 10228# This affects the Animation API, the performance APIs, Date.getTime, 10229# Event.timestamp, File.lastModified, audioContext.currentTime, 10230# canvas.captureStream.currentTime. 10231- name: privacy.reduceTimerPrecision 10232 type: RelaxedAtomicBool 10233 value: true 10234 mirror: always 10235 10236# If privacy.reduceTimerPrecision is false, this pref controls whether or not 10237# to clamp all timers at a fixed 20 microsconds. It should always be enabled, 10238# and is only specified as a pref to enable an emergency disabling in the event 10239# of catastrophic failure. 10240- name: privacy.reduceTimerPrecision.unconditional 10241 type: RelaxedAtomicBool 10242 value: true 10243 mirror: always 10244 10245# The resistFingerprinting variables are marked with 'Relaxed' memory ordering. 10246# We don't particurally care that threads have a percently consistent view of 10247# the values of these prefs. They are not expected to change often, and having 10248# an outdated view is not particurally harmful. They will eventually become 10249# consistent. 10250# 10251# The variables will, however, be read often (specifically .microseconds on 10252# each timer rounding) so performance is important. 10253 10254- name: privacy.resistFingerprinting 10255 type: RelaxedAtomicBool 10256 value: false 10257 mirror: always 10258 10259# We automatically decline canvas permission requests if they are not initiated 10260# from user input. Just in case that breaks something, we allow the user to 10261# revert this behavior with this obscure pref. We do not intend to support this 10262# long term. If you do set it, to work around some broken website, please file 10263# a bug with information so we can understand why it is needed. 10264- name: privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts 10265 type: bool 10266 value: true 10267 mirror: always 10268 10269# Whether canvas extraction should result in random data. If false, canvas 10270# extraction results in all-white, opaque pixel data. 10271- name: privacy.resistFingerprinting.randomDataOnCanvasExtract 10272 type: RelaxedAtomicBool 10273 value: true 10274 mirror: always 10275 10276# The log level for browser console messages logged in RFPHelper.jsm. Change to 10277# 'All' and restart to see the messages. 10278- name: privacy.resistFingerprinting.jsmloglevel 10279 type: String 10280 value: "Warn" 10281 mirror: never 10282 10283# Enable jittering the clock one precision value forward. 10284- name: privacy.resistFingerprinting.reduceTimerPrecision.jitter 10285 type: RelaxedAtomicBool 10286 value: true 10287 mirror: always 10288 10289# Dynamically tune the resolution of the timer reduction for 10290# `privacy.reduceTimerPrecision` and `privacy.resistFingerprinting`. 10291- name: privacy.resistFingerprinting.reduceTimerPrecision.microseconds 10292 type: RelaxedAtomicUint32 10293 value: 1000 10294 mirror: always 10295 10296- name: privacy.resistFingerprinting.target_video_res 10297 type: uint32_t 10298 value: 480 10299 mirror: always 10300 10301# Bitfield for selectively disabling RFP 10302# 0 for no new behavior 10303# 1 for disabling RFP if it's a WebExtension 10304# 2 for disabling RFP if we are not in PBM 10305# 4 for disabling RFP on specific domains (see privacy.resistFingerprinting.exemptedDomains) 10306- name: privacy.resistFingerprinting.testGranularityMask 10307 type: RelaxedAtomicUint32 10308 value: 0 10309 mirror: always 10310 10311# Anti-tracking permission expiration. 10312- name: privacy.restrict3rdpartystorage.expiration 10313 type: uint32_t 10314 value: 2592000 # 30 days (in seconds) 10315 mirror: always 10316 10317# Report Anti-tracking warnings to console lazily 10318- name: privacy.restrict3rdpartystorage.console.lazy 10319 type: bool 10320 value: true 10321 mirror: always 10322 10323# Enable the heuristic to allow storage access for windows opened using window.open() after user interaction 10324- name: privacy.restrict3rdpartystorage.heuristic.opened_window_after_interaction 10325 type: bool 10326 value: true 10327 mirror: always 10328 10329# Enable the heuristic to allow storage access for windows opened using window.open() 10330- name: privacy.restrict3rdpartystorage.heuristic.window_open 10331 type: bool 10332 value: true 10333 mirror: always 10334 10335# Enable the heuristic to allow storage access for windows opened using window.open() 10336- name: privacy.restrict3rdpartystorage.heuristic.redirect 10337 type: bool 10338 value: true 10339 mirror: always 10340 10341# Anti-tracking permission expiration. 10342- name: privacy.restrict3rdpartystorage.expiration_redirect 10343 type: uint32_t 10344 value: 900 # 15 minutes 10345 mirror: always 10346 10347# Anti-tracking user-interaction expiration. 10348- name: privacy.userInteraction.expiration 10349 type: uint32_t 10350 value: 3888000 # 45 days (in seconds) 10351 mirror: always 10352 10353# Anti-tracking user-interaction document interval. 10354- name: privacy.userInteraction.document.interval 10355 type: uint32_t 10356 value: 1800 # 30 minutes (in seconds) 10357 mirror: always 10358 10359# Enable Anti-tracking testing. When it enables, it will notify the observers 10360# when user-interaction permission or storage access permission is added. This 10361# is for testing only. 10362- name: privacy.antitracking.testing 10363 type: bool 10364 value: false 10365 mirror: always 10366 10367# Enable the heuristic to allow storage access for recent visited pages 10368- name: privacy.restrict3rdpartystorage.heuristic.recently_visited 10369 type: bool 10370 value: true 10371 mirror: always 10372 10373# Valid time gap since last visit 10374- name: privacy.restrict3rdpartystorage.heuristic.recently_visited_time 10375 type: uint32_t 10376 value: 600 # 10 minutes 10377 mirror: always 10378 10379# Recent visited pages redirection permission expiration. 10380- name: privacy.restrict3rdpartystorage.expiration_visited 10381 type: uint32_t 10382 value: 2592000 # 30 days (in seconds) 10383 mirror: always 10384 10385# Maximum client-side cookie life-time cap. Measured in seconds, set to 0 to 10386# disable. 10387- name: privacy.documentCookies.maxage 10388 type: uint32_t 10389 value: 0 10390 mirror: always 10391 10392- name: privacy.storagePrincipal.enabledForTrackers 10393 type: RelaxedAtomicBool 10394 value: false 10395 mirror: always 10396 10397- name: privacy.window.maxInnerWidth 10398 type: int32_t 10399 value: 1000 10400 mirror: always 10401 10402- name: privacy.window.maxInnerHeight 10403 type: int32_t 10404 value: 1000 10405 mirror: always 10406 10407- name: privacy.sanitize.sanitizeOnShutdown 10408 type: RelaxedAtomicBool 10409 value: false 10410 mirror: always 10411 10412- name: privacy.clearOnShutdown.cache 10413 type: RelaxedAtomicBool 10414 value: false 10415 mirror: always 10416 10417- name: privacy.dynamic_firstparty.limitForeign 10418 type: RelaxedAtomicBool 10419 value: false 10420 mirror: always 10421 10422- name: privacy.dynamic_firstparty.use_site 10423 type: RelaxedAtomicBool 10424 value: true 10425 mirror: always 10426 10427- name: privacy.partition.network_state 10428 type: RelaxedAtomicBool 10429 value: true 10430 mirror: always 10431 10432- name: privacy.partition.bloburl_per_agent_cluster 10433 type: RelaxedAtomicBool 10434 value: @IS_NIGHTLY_BUILD@ 10435 mirror: always 10436 10437- name: privacy.window.name.update.enabled 10438 type: bool 10439 value: true 10440 mirror: always 10441 10442# By default, the network state isolation is not active when there is a proxy 10443# setting. This pref forces the network isolation even in these scenarios. 10444- name: privacy.partition.network_state.connection_with_proxy 10445 type: bool 10446 value: false 10447 mirror: always 10448 10449# The global switch to control the URL query sting stripping which strips query 10450# parameters from loading URIs to prevent bounce (redirect) tracking. 10451- name: privacy.query_stripping.enabled 10452 type: RelaxedAtomicBool 10453 value: false 10454 mirror: always 10455 10456# The list which contains query parameters that are needed to be stripped from 10457# URIs. The query parameters are separated by a space. 10458- name: privacy.query_stripping.strip_list 10459 type: String 10460 value: "" 10461 mirror: never 10462 10463# This controls if we will do the query string stripping for redirects. 10464- name: privacy.query_stripping.redirect 10465 type: bool 10466 value: true 10467 mirror: always 10468 10469# the list which contains sites where should exempt from query stripping 10470- name: privacy.query_stripping.allow_list 10471 type: String 10472 value: "" 10473 mirror: never 10474 10475#--------------------------------------------------------------------------- 10476# Prefs starting with "prompts." 10477#--------------------------------------------------------------------------- 10478 10479# Prompt modal type prefs 10480# See nsIPromptService::MODAL_TYPE fields for possible values. 10481 10482# Insecure form submit warning. 10483- name: prompts.modalType.insecureFormSubmit 10484 type: int32_t 10485 value: 2 10486 mirror: always 10487 10488# nsHttpChannelAuthProvider#ConfirmAuth anti-phishing prompts. 10489- name: prompts.modalType.confirmAuth 10490 type: int32_t 10491 value: 2 10492 mirror: always 10493 10494#--------------------------------------------------------------------------- 10495# Prefs starting with "security." 10496#--------------------------------------------------------------------------- 10497 10498# Mochitests that need to load resource:// URIs not declared content-accessible 10499# in manifests should set this pref. 10500- name: security.all_resource_uri_content_accessible 10501 type: bool 10502 value: false 10503 mirror: always 10504 10505- name: security.bad_cert_domain_error.url_fix_enabled 10506 type: bool 10507 value: true 10508 mirror: always 10509 10510- name: security.csp.enable 10511 type: bool 10512 value: true 10513 mirror: always 10514 10515- name: security.csp.reporting.script-sample.max-length 10516 type: int32_t 10517 value: 40 10518 mirror: always 10519 10520- name: security.csp.truncate_blocked_uri_for_frame_navigations 10521 type: bool 10522 value: true 10523 mirror: always 10524 10525# If true, all toplevel data: URI navigations will be blocked. 10526# Please note that manually entering a data: URI in the 10527# URL-Bar will not be blocked when flipping this pref. 10528- name: security.data_uri.block_toplevel_data_uri_navigations 10529 type: bool 10530 value: true 10531 mirror: always 10532 10533# Whether window A is allowed to navigate cross-origin window B (that is not 10534# a descendant frame of A) to a URI that loads externally. 10535- name: security.allow_disjointed_external_uri_loads 10536 type: bool 10537 value: false 10538 mirror: always 10539 10540# Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but 10541# not allowed for Firefox Desktop in firefox.js 10542- name: security.allow_parent_unrestricted_js_loads 10543 type: RelaxedAtomicBool 10544 value: true 10545 mirror: always 10546 10547# Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but 10548# not allowed for Firefox Desktop in firefox.js 10549- name: security.allow_eval_with_system_principal 10550 type: RelaxedAtomicBool 10551 value: true 10552 mirror: always 10553 10554# Allowed by default so it doesn't affect Thunderbird/SeaMonkey, but 10555# not allowed for Firefox Desktop in firefox.js 10556- name: security.allow_eval_in_parent_process 10557 type: RelaxedAtomicBool 10558 value: true 10559 mirror: always 10560 10561# Disallowed by default, ensure not disallowed content is loaded in the parent 10562# process. 10563- name: security.allow_unsafe_parent_loads 10564 type: bool 10565 value: false 10566 mirror: always 10567 10568# Pref to block mixed scripts (fonts, plugin content, scripts, stylesheets, 10569# iframes, websockets, XHR). 10570- name: security.mixed_content.block_active_content 10571 type: bool 10572 value: @IS_ANDROID@ 10573 mirror: always 10574 10575# Pref to block sub requests that happen within an object. 10576- name: security.mixed_content.block_object_subrequest 10577 type: bool 10578 value: false 10579 mirror: always 10580 10581# Pref for mixed display content blocking (images, audio, video). 10582- name: security.mixed_content.block_display_content 10583 type: bool 10584 value: false 10585 mirror: always 10586 10587# Pref for mixed display content upgrading (images, audio, video). 10588- name: security.mixed_content.upgrade_display_content 10589 type: bool 10590 value: false 10591 mirror: always 10592 10593# Whether strict file origin policy is in effect. "False" is traditional. 10594- name: security.fileuri.strict_origin_policy 10595 type: RelaxedAtomicBool 10596 value: true 10597 mirror: always 10598 10599 10600# The level to which we sandbox the content process. firefox.js sets the 10601# default to different values on a per-OS basis, and has documentation 10602# on what the defaults are and what the numbers mean. 10603- name: security.sandbox.content.level 10604 type: int32_t 10605 value: 0 10606 mirror: always 10607 do_not_use_directly: true # Consumers should use SandboxSettings to ask. 10608 10609- name: security.sandbox.socket.process.level 10610 type: int32_t 10611 value: 0 10612 mirror: always 10613 do_not_use_directly: true # Consumers should use SandboxSettings to ask. 10614 10615 10616# Whether win32k is disabled for content processes. 10617# true means win32k system calls are not permitted. 10618# (This cannot be put behind the XP_WIN and MOZ_SANDBOX guards because 10619# "Nightly Experiments" has no way to filter options based on OS or other 10620# CPP defines, and it fails if the pref doesn't exist) 10621- name: security.sandbox.content.win32k-disable 10622 type: RelaxedAtomicBool 10623 value: false 10624 mirror: always 10625 10626#if defined(XP_WIN) && defined(MOZ_SANDBOX) 10627 # Note: win32k is currently _not_ disabled for GMP due to intermittent test 10628 # failures, where the GMP process fails very early. See bug 1449348. 10629- name: security.sandbox.gmp.win32k-disable 10630 type: RelaxedAtomicBool 10631 value: false 10632 mirror: always 10633 10634 # Whether win32k is disabled for socket processes. 10635 # true means win32k system calls are not permitted. 10636- name: security.sandbox.socket.win32k-disable 10637 type: RelaxedAtomicBool 10638 value: true 10639 mirror: always 10640 10641 # Whether CET Shadow Stacks Strict mode is enabled for the content processes. 10642- name: security.sandbox.content.shadow-stacks-strict 10643 type: RelaxedAtomicBool 10644 value: false 10645 mirror: always 10646 10647 # Whether CET Shadow Stacks Strict mode is enabled for the RDD processes. 10648- name: security.sandbox.rdd.shadow-stacks-strict 10649 type: RelaxedAtomicBool 10650 value: false 10651 mirror: always 10652 10653 # Whether CET Shadow Stacks Strict mode is enabled for the socket processes. 10654- name: security.sandbox.socket.shadow-stacks-strict 10655 type: RelaxedAtomicBool 10656 value: false 10657 mirror: always 10658 10659 # Whether CET Shadow Stacks Strict mode is enabled for the GPU processes. 10660- name: security.sandbox.gpu.shadow-stacks-strict 10661 type: RelaxedAtomicBool 10662 value: false 10663 mirror: always 10664 10665 # Whether CET Shadow Stacks Strict mode is enabled for the GMP processes. 10666- name: security.sandbox.gmp.shadow-stacks-strict 10667 type: RelaxedAtomicBool 10668 value: false 10669 mirror: always 10670 10671 # This controls the depth of stack trace that is logged when Windows sandbox 10672 # logging is turned on. This is only currently available for the content 10673 # process because the only other sandbox (for GMP) has too strict a policy to 10674 # allow stack tracing. This does not require a restart to take effect. 10675- name: security.sandbox.windows.log.stackTraceDepth 10676 type: RelaxedAtomicUint32 10677 value: 0 10678 mirror: always 10679#endif 10680 10681#if defined(XP_LINUX) && defined(MOZ_SANDBOX) 10682 # Run content processes in headless mode and disallow connections to 10683 # the X server. Experimental; breaks WebGL and Flash, and requires 10684 # `widget.non-native-theme.enabled` and `widget.remote-look-and-feel`. 10685 # Changing it requires a restart because sandbox policy information dependent 10686 # on it is cached. See bug 1640345 for details. 10687- name: security.sandbox.content.headless 10688 type: bool 10689 value: false 10690 mirror: once 10691#endif 10692 10693# Pref to show warning when submitting from secure to insecure. 10694- name: security.warn_submit_secure_to_insecure 10695 type: bool 10696 value: true 10697 mirror: always 10698 10699# Hardware Origin-bound Second Factor Support 10700- name: security.webauth.webauthn 10701 type: bool 10702 value: true 10703 mirror: always 10704 10705# Navigate-to CSP 3 directive 10706- name: security.csp.enableNavigateTo 10707 type: bool 10708 value: false 10709 mirror: always 10710 10711# No way to enable on Android, Bug 1552602 10712- name: security.webauth.u2f 10713 type: bool 10714 value: @IS_NOT_ANDROID@ 10715 mirror: always 10716 10717# Block Worker/SharedWorker scripts with wrong MIME type. 10718- name: security.block_Worker_with_wrong_mime 10719 type: bool 10720 value: true 10721 mirror: always 10722 10723# Cancel outgoing requests from SystemPrincipal 10724- name: security.cancel_non_local_loads_triggered_by_systemprincipal 10725 type: bool 10726 value: false 10727 mirror: always 10728 10729# Disable preloaded static key pins by default. 10730- name: security.cert_pinning.enforcement_level 10731 type: ReleaseAcquireAtomicUint32 10732 value: 0 10733 mirror: always 10734 do_not_use_directly: true 10735 10736#--------------------------------------------------------------------------- 10737# Prefs starting with "signon." 10738#--------------------------------------------------------------------------- 10739- name: signon.usernameOnlyForm.enabled 10740 type: bool 10741 value: @IS_EARLY_BETA_OR_EARLIER@ 10742 mirror: always 10743 10744#--------------------------------------------------------------------------- 10745# Prefs starting with "slider." 10746#--------------------------------------------------------------------------- 10747 10748# Scrollbar snapping region. 10749# - 0: off 10750# - 1 and higher: slider thickness multiple 10751- name: slider.snapMultiplier 10752 type: int32_t 10753#ifdef XP_WIN 10754 value: 6 10755#else 10756 value: 0 10757#endif 10758 mirror: once 10759 10760#--------------------------------------------------------------------------- 10761# Prefs starting with "storage." 10762#--------------------------------------------------------------------------- 10763 10764# Whether to use a non-exclusive VFS. 10765# By default we use the unix-excl VFS, for the following reasons: 10766# 1. It improves compatibility with NFS shares, whose implementation 10767# is incompatible with SQLite's locking requirements (reliable fcntl), and 10768# in particular with WAL journaling. 10769# Bug 433129 attempted to automatically identify such file-systems, 10770# but a reliable way was not found and the fallback locking is slower than 10771# POSIX locking, so we do not want to do it by default. 10772# 2. It allows wal mode to avoid the memory mapped -shm file, reducing the 10773# likelihood of SIGBUS failures when disk space is exhausted. 10774# 3. It provides some protection from third party database tampering while a 10775# connection is open. 10776# Note there's no win32-excl VFS, so this has no effect on Windows. 10777- name: storage.sqlite.exclusiveLock.enabled 10778 type: RelaxedAtomicBool 10779 value: @IS_NOT_ANDROID@ 10780 mirror: always 10781 10782#--------------------------------------------------------------------------- 10783# Prefs starting with "svg." 10784#--------------------------------------------------------------------------- 10785 10786# This pref controls whether the 'context-fill' and 'context-stroke' keywords 10787# can be used in SVG-as-an-image in the content processes to use the fill/ 10788# stroke specified on the element that embeds the image. (These keywords are 10789# always enabled in the chrome process, regardless of this pref.) Also, these 10790# keywords are currently not part of any spec, which is partly why we disable 10791# them for web content. 10792- name: svg.context-properties.content.enabled 10793 type: RelaxedAtomicBool 10794 value: false 10795 mirror: always 10796 10797# Enables the 'context-fill' and 'context-stroke' keywords for particular 10798# domains. We expect this list to be Mozilla-controlled properties, since the 10799# 'context-*' keywords are not part of any spec. We expect to remove this 10800# preference and the 'context-` keyword support entirely in the 10801# not-too-distant future when a standardized alternative ships. This preference 10802# is _not_ for allowing web content to use these keywords. For performance 10803# reasons, the list of domains in this preference should remain short in 10804# length. 10805- name: svg.context-properties.content.allowed-domains 10806 type: String 10807 value: "" 10808 mirror: never 10809 10810# Enable the use of display-lists for SVG hit-testing. 10811- name: svg.display-lists.hit-testing.enabled 10812 type: bool 10813 value: true 10814 mirror: always 10815 10816# Enable the use of display-lists for SVG painting. 10817- name: svg.display-lists.painting.enabled 10818 type: bool 10819 value: true 10820 mirror: always 10821 10822# Is support for the new getBBox method from SVG 2 enabled? 10823# See https://svgwg.org/svg2-draft/single-page.html#types-SVGBoundingBoxOptions 10824- name: svg.new-getBBox.enabled 10825 type: bool 10826 value: false 10827 mirror: always 10828 10829#--------------------------------------------------------------------------- 10830# Prefs starting with "telemetry." 10831#--------------------------------------------------------------------------- 10832 10833# Enable origin telemetry test mode or not 10834# NOTE: turning this on will override the 10835# privacy.trackingprotection.origin_telemetry.enabled pref. 10836- name: telemetry.origin_telemetry_test_mode.enabled 10837 type: RelaxedAtomicBool 10838 value: false 10839 mirror: always 10840 10841- name: telemetry.number_of_site_origin.min_interval 10842 type: uint32_t 10843 value: 300000 10844 mirror: always 10845 10846- name: telemetry.fog.test.localhost_port 10847 type: RelaxedAtomicInt32 10848 value: 0 10849 mirror: always 10850 rust: true 10851 10852- name: telemetry.fog.test.activity_limit 10853 type: RelaxedAtomicUint32 10854 value: 120 10855 mirror: always 10856 rust: true 10857 10858- name: telemetry.fog.test.inactivity_limit 10859 type: RelaxedAtomicUint32 10860 value: 1200 10861 mirror: always 10862 rust: true 10863 10864#--------------------------------------------------------------------------- 10865# Prefs starting with "test." 10866#--------------------------------------------------------------------------- 10867 10868- name: test.events.async.enabled 10869 type: RelaxedAtomicBool 10870 value: false 10871 mirror: always 10872 10873- name: test.mousescroll 10874 type: RelaxedAtomicBool 10875 value: false 10876 mirror: always 10877 10878#--------------------------------------------------------------------------- 10879# Prefs starting with "thread." 10880#--------------------------------------------------------------------------- 10881 10882- name: threads.medium_high_event_queue.enabled 10883 type: RelaxedAtomicBool 10884 value: true 10885 mirror: always 10886 10887# If control tasks aren't enabled, they get medium high priority. 10888- name: threads.control_event_queue.enabled 10889 type: RelaxedAtomicBool 10890 value: true 10891 mirror: always 10892 10893#--------------------------------------------------------------------------- 10894# Prefs starting with "timer." 10895#--------------------------------------------------------------------------- 10896 10897# Since our timestamp on macOS does not increment while the system is asleep, we 10898# should ignore sleep/wake notifications to make timer thread process timers. 10899- name: timer.ignore_sleep_wake_notifications 10900 type: RelaxedAtomicBool 10901#ifdef XP_MACOSX 10902 value: true 10903#else 10904 value: false 10905#endif 10906 mirror: always 10907 10908#--------------------------------------------------------------------------- 10909# Prefs starting with "toolkit." 10910#--------------------------------------------------------------------------- 10911 10912# Returns true if BHR is disabled. 10913- name: toolkit.content-background-hang-monitor.disabled 10914 type: bool 10915 value: false 10916 mirror: always 10917 10918- name: toolkit.scrollbox.horizontalScrollDistance 10919 type: RelaxedAtomicInt32 10920 value: 5 10921 mirror: always 10922 10923- name: toolkit.scrollbox.verticalScrollDistance 10924 type: RelaxedAtomicInt32 10925 value: 3 10926 mirror: always 10927 10928# The lateWriteChecksStage and fastShutdownStage below represent the stage 10929# of shutdown after which we (for lateWriteChecksStage) crash / gather 10930# telemetry data on file writes, or (for fastShutdownStage) we call _exit(0). 10931# Higher values are earlier during shutdown, and the full enumeration can 10932# be found in AppShutdown.h in the AppShutdownPhase enum. 10933- name: toolkit.shutdown.lateWriteChecksStage 10934 type: int32_t 10935#ifdef MOZ_CODE_COVERAGE 10936 value: 0 10937#else 10938 value: 3 10939#endif 10940 mirror: always 10941 10942# See the comment above toolkit.shutdown.lateWriteChecksStage. A higher value 10943# for this pref means we call _exit(0) earlier during shutdown. 10944- name: toolkit.shutdown.fastShutdownStage 10945 type: int32_t 10946#if !defined(DEBUG) && !defined(MOZ_ASAN) && !defined(MOZ_TSAN) && !defined(MOZ_CODE_COVERAGE) && !defined(MOZ_VALGRIND) && !defined(MOZ_PROFILE_GENERATE) && !defined(JS_STRUCTURED_SPEW) 10947 value: 1 10948#else 10949 value: 0 10950#endif 10951 mirror: always 10952 10953# Sending each remote accumulation immediately places undue strain on the IPC 10954# subsystem. Batch the remote accumulations for a period of time before sending 10955# them all at once. This value was chosen as a balance between data timeliness 10956# and performance (see bug 1218576). 10957- name: toolkit.telemetry.ipcBatchTimeout 10958 type: uint32_t 10959 value: 2000 10960 mirror: always 10961 10962- name: toolkit.telemetry.geckoview.batchDurationMS 10963 type: RelaxedAtomicUint32 10964 value: 5000 10965 mirror: always 10966 10967- name: toolkit.telemetry.geckoview.maxBatchStalenessMS 10968 type: RelaxedAtomicUint32 10969 value: 60000 10970 mirror: always 10971 10972- name: toolkit.telemetry.geckoview.streaming 10973 type: RelaxedAtomicBool 10974 value: false 10975 mirror: always 10976 10977- name: toolkit.telemetry.testing.overrideProductsCheck 10978 type: RelaxedAtomicBool 10979 value: false 10980 mirror: always 10981 10982#--------------------------------------------------------------------------- 10983# Prefs starting with "ui." 10984#--------------------------------------------------------------------------- 10985 10986- name: ui.key.generalAccessKey 10987 type: int32_t 10988 value: -1 10989 mirror: always 10990 10991# Only used if generalAccessKey is -1. 10992- name: ui.key.chromeAccess 10993 type: int32_t 10994#ifdef XP_MACOSX 10995 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 3 = ctrl+shift, 8 = Meta 10996 value: 2 10997#else 10998 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 5 = Alt+Shift, 10999 # 8 = Meta, 16 = Win 11000 value: 4 11001#endif 11002 mirror: always 11003 11004# Only used if generalAccessKey is -1. 11005- name: ui.key.contentAccess 11006 type: int32_t 11007#ifdef XP_MACOSX 11008 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 3 = ctrl+shift, 8 = Meta 11009 value: 6 11010#else 11011 # 0 = disabled, 1 = Shift, 2 = Ctrl, 4 = Alt, 5 = Alt+Shift, 11012 # 8 = Meta, 16 = Win 11013 value: 5 11014#endif 11015 mirror: always 11016 11017# Does the access key by itself focus the menu bar? 11018- name: ui.key.menuAccessKeyFocuses 11019 type: bool 11020#if defined(XP_WIN) || defined(MOZ_WIDGET_GTK) 11021 # On Windows and Linux, we now default to showing the menu bar only when alt 11022 # is pressed. 11023 value: true 11024#else 11025 value: false 11026#endif 11027 mirror: always 11028 11029# Duration of timeout of incremental search in menus (ms). 0 means infinite. 11030- name: ui.menu.incremental_search.timeout 11031 type: uint32_t 11032 value: 1000 11033 mirror: always 11034 11035# If true, all popups won't hide automatically on blur 11036- name: ui.popup.disable_autohide 11037 type: RelaxedAtomicBool 11038 value: false 11039 mirror: always 11040 11041# Negate scroll, true will make the mouse scroll wheel move the screen the 11042# same direction as with most desktops or laptops. 11043- name: ui.scrolling.negate_wheel_scroll 11044 type: RelaxedAtomicBool 11045 value: @IS_ANDROID@ 11046 mirror: always 11047 11048# If the user puts a finger down on an element and we think the user might be 11049# executing a pan gesture, how long do we wait before tentatively deciding the 11050# gesture is actually a tap and activating the target element? 11051- name: ui.touch_activation.delay_ms 11052 type: int32_t 11053 value: 100 11054 mirror: always 11055 11056# If the user has clicked an element, how long do we keep the :active state 11057# before it is cleared by the mouse sequences fired after a 11058# touchstart/touchend. 11059- name: ui.touch_activation.duration_ms 11060 type: int32_t 11061 value: 10 11062 mirror: always 11063 11064# Prevent system colors from being exposed to CSS or canvas. 11065- name: ui.use_standins_for_native_colors 11066 type: RelaxedAtomicBool 11067 value: false 11068 mirror: always 11069 11070# Disable page loading activity cursor by default. 11071- name: ui.use_activity_cursor 11072 type: bool 11073 value: false 11074 mirror: always 11075 11076# Whether context menus should only appear on mouseup instead of mousedown, 11077# on OSes where they normally appear on mousedown (macOS, *nix). 11078# Note: ignored on Windows (context menus always use mouseup). 11079- name: ui.context_menus.after_mouseup 11080 type: bool 11081 value: false 11082 mirror: always 11083 11084# Whether click-hold context menus are enabled. 11085- name: ui.click_hold_context_menus 11086 type: RelaxedAtomicBool 11087 value: false 11088 mirror: always 11089 11090# How long to wait for a drag gesture before displaying click-hold context menu, 11091# in milliseconds. 11092- name: ui.click_hold_context_menus.delay 11093 type: RelaxedAtomicInt32 11094 value: 500 11095 mirror: always 11096 11097# When enabled, the touch.radius and mouse.radius prefs allow events to be 11098# dispatched to nearby elements that are sensitive to the event. See 11099# PositionedEventTargeting.cpp. The 'mm' prefs define a rectangle around the 11100# nominal event target point within which we will search for suitable elements. 11101# 'visitedWeight' is a percentage weight; a value > 100 makes a visited link be 11102# treated as further away from the event target than it really is, while a 11103# value < 100 makes a visited link be treated as closer to the event target 11104# than it really is. 11105 11106- name: ui.touch.radius.enabled 11107 type: bool 11108 value: @IS_ANDROID@ 11109 mirror: always 11110 11111- name: ui.touch.radius.topmm 11112 type: uint32_t 11113#ifdef ANDROID 11114 value: 5 11115#else 11116 value: 12 11117#endif 11118 mirror: always 11119 11120- name: ui.touch.radius.rightmm 11121 type: uint32_t 11122#ifdef ANDROID 11123 value: 3 11124#else 11125 value: 8 11126#endif 11127 mirror: always 11128 11129- name: ui.touch.radius.bottommm 11130 type: uint32_t 11131#ifdef ANDROID 11132 value: 2 11133#else 11134 value: 4 11135#endif 11136 mirror: always 11137 11138- name: ui.touch.radius.leftmm 11139 type: uint32_t 11140#ifdef ANDROID 11141 value: 3 11142#else 11143 value: 8 11144#endif 11145 mirror: always 11146 11147- name: ui.touch.radius.visitedWeight 11148 type: uint32_t 11149 value: 120 11150 mirror: always 11151 11152- name: ui.mouse.radius.enabled 11153 type: bool 11154 value: @IS_ANDROID@ 11155 mirror: always 11156 11157- name: ui.mouse.radius.topmm 11158 type: uint32_t 11159#ifdef ANDROID 11160 value: 5 11161#else 11162 value: 12 11163#endif 11164 mirror: always 11165 11166- name: ui.mouse.radius.rightmm 11167 type: uint32_t 11168#ifdef ANDROID 11169 value: 3 11170#else 11171 value: 8 11172#endif 11173 mirror: always 11174 11175- name: ui.mouse.radius.bottommm 11176 type: uint32_t 11177#ifdef ANDROID 11178 value: 2 11179#else 11180 value: 4 11181#endif 11182 mirror: always 11183 11184- name: ui.mouse.radius.leftmm 11185 type: uint32_t 11186#ifdef ANDROID 11187 value: 3 11188#else 11189 value: 8 11190#endif 11191 mirror: always 11192 11193- name: ui.mouse.radius.visitedWeight 11194 type: uint32_t 11195 value: 120 11196 mirror: always 11197 11198- name: ui.mouse.radius.reposition 11199 type: bool 11200 value: @IS_ANDROID@ 11201 mirror: always 11202 11203# When true, the ui.mouse.radius.* prefs will only affect simulated mouse 11204# events generated by touch input. When false, the prefs will be used for all 11205# mouse events. 11206- name: ui.mouse.radius.inputSource.touchOnly 11207 type: bool 11208 value: true 11209 mirror: always 11210 11211#--------------------------------------------------------------------------- 11212# Prefs starting with "urlclassifier." 11213#--------------------------------------------------------------------------- 11214 11215# Update server response timeout for Safe Browsing. 11216- name: urlclassifier.update.response_timeout_ms 11217 type: uint32_t 11218 value: 30000 11219 mirror: always 11220 11221# Download update timeout for Safe Browsing. 11222- name: urlclassifier.update.timeout_ms 11223 type: uint32_t 11224 value: 90000 11225 mirror: always 11226 11227#--------------------------------------------------------------------------- 11228# Prefs starting with "view_source." 11229#--------------------------------------------------------------------------- 11230 11231- name: view_source.editor.external 11232 type: bool 11233 value: false 11234 mirror: always 11235 11236- name: view_source.wrap_long_lines 11237 type: bool 11238 value: @IS_ANDROID@ 11239 mirror: always 11240 11241- name: view_source.syntax_highlight 11242 type: bool 11243 value: true 11244 mirror: always 11245 11246- name: view_source.tab_size 11247 type: int32_t 11248 value: 4 11249 mirror: always 11250 11251#--------------------------------------------------------------------------- 11252# Prefs starting with "webgl." (for pref access from Worker threads) 11253#--------------------------------------------------------------------------- 11254 11255- name: webgl.1.allow-core-profiles 11256 type: RelaxedAtomicBool 11257#ifdef XP_MACOSX 11258 value: true 11259#else 11260 value: false 11261#endif 11262 mirror: always 11263 11264- name: webgl.all-angle-options 11265 type: RelaxedAtomicBool 11266 value: false 11267 mirror: always 11268 11269- name: webgl.angle.force-d3d11 11270 type: RelaxedAtomicBool 11271 value: false 11272 mirror: always 11273 11274- name: webgl.angle.try-d3d11 11275 type: RelaxedAtomicBool 11276#ifdef XP_WIN 11277 value: true 11278#else 11279 value: false 11280#endif 11281 mirror: always 11282 11283- name: webgl.angle.force-warp 11284 type: RelaxedAtomicBool 11285 value: false 11286 mirror: always 11287 11288- name: webgl.can-lose-context-in-foreground 11289 type: RelaxedAtomicBool 11290 value: true 11291 mirror: always 11292 11293- name: webgl.cgl.multithreaded 11294 type: RelaxedAtomicBool 11295 value: true 11296 mirror: always 11297 11298- name: webgl.debug.incomplete-tex-color 11299 type: RelaxedAtomicUint32 11300 value: 0 11301 mirror: always 11302 11303- name: webgl.default-antialias 11304 type: RelaxedAtomicBool 11305 value: @IS_NOT_ANDROID@ 11306 mirror: always 11307 11308- name: webgl.default-no-alpha 11309 type: RelaxedAtomicBool 11310 value: false 11311 mirror: always 11312 11313- name: webgl.disable-angle 11314 type: RelaxedAtomicBool 11315 value: false 11316 mirror: always 11317 11318- name: webgl.disable-wgl 11319 type: RelaxedAtomicBool 11320 value: false 11321 mirror: always 11322 11323- name: webgl.dxgl.enabled 11324 type: RelaxedAtomicBool 11325#ifdef XP_WIN 11326 value: true 11327#else 11328 value: false 11329#endif 11330 mirror: always 11331 11332- name: webgl.dxgl.needs-finish 11333 type: RelaxedAtomicBool 11334 value: false 11335 mirror: always 11336 11337- name: webgl.disable-fail-if-major-performance-caveat 11338 type: RelaxedAtomicBool 11339 value: true 11340 mirror: always 11341 11342- name: webgl.disable-DOM-blit-uploads 11343 type: RelaxedAtomicBool 11344 value: false 11345 mirror: always 11346 11347- name: webgl.disabled 11348 type: RelaxedAtomicBool 11349 value: false 11350 mirror: always 11351 11352- name: webgl.enable-debug-renderer-info 11353 type: RelaxedAtomicBool 11354 value: true 11355 mirror: always 11356 11357- name: webgl.enable-draft-extensions 11358 type: RelaxedAtomicBool 11359 value: false 11360 mirror: always 11361 11362- name: webgl.enable-privileged-extensions 11363 type: RelaxedAtomicBool 11364 value: false 11365 mirror: always 11366 11367- name: webgl.enable-surface-texture 11368 type: RelaxedAtomicBool 11369 value: true 11370 mirror: always 11371 11372- name: webgl.enable-ahardwarebuffer 11373 type: RelaxedAtomicBool 11374 value: false 11375 mirror: always 11376 11377- name: webgl.enable-webgl2 11378 type: RelaxedAtomicBool 11379 value: true 11380 mirror: always 11381 11382- name: webgl.force-enabled 11383 type: RelaxedAtomicBool 11384 value: false 11385 mirror: always 11386 11387- name: webgl.force-layers-readback 11388 type: RelaxedAtomicBool 11389 value: false 11390 mirror: always 11391 11392- name: webgl.force-index-validation 11393 type: RelaxedAtomicInt32 11394 value: 0 11395 mirror: always 11396 11397- name: webgl.lose-context-on-memory-pressure 11398 type: RelaxedAtomicBool 11399 value: false 11400 mirror: always 11401 11402- name: webgl.max-contexts 11403 type: RelaxedAtomicUint32 11404 value: 1000 11405 mirror: always 11406 11407- name: webgl.max-contexts-per-principal 11408 type: RelaxedAtomicUint32 11409 value: 300 11410 mirror: always 11411 11412- name: webgl.max-warnings-per-context 11413 type: RelaxedAtomicUint32 11414 value: 32 11415 mirror: always 11416 11417- name: webgl.min_capability_mode 11418 type: RelaxedAtomicBool 11419 value: false 11420 mirror: always 11421 11422- name: webgl.msaa-force 11423 type: RelaxedAtomicBool 11424 value: false 11425 mirror: always 11426 11427- name: webgl.msaa-samples 11428 type: RelaxedAtomicUint32 11429 value: 4 11430 mirror: always 11431 11432- name: webgl.out-of-process 11433 type: RelaxedAtomicBool 11434#if defined(XP_MACOSX) || defined(XP_WIN) 11435 value: true 11436#else 11437 value: false 11438#endif 11439 mirror: always 11440 11441- name: webgl.out-of-process.force 11442 type: RelaxedAtomicBool 11443 value: false 11444 mirror: always 11445 11446- name: webgl.out-of-process.shmem-size 11447 type: RelaxedAtomicUint32 11448 value: 100000 # 100KB 11449 mirror: always 11450 11451- name: webgl.power-preference-override 11452 type: RelaxedAtomicInt32 11453 value: 0 11454 mirror: always 11455 11456- name: webgl.prefer-16bpp 11457 type: RelaxedAtomicBool 11458 value: false 11459 mirror: always 11460 11461- name: webgl.allow-immediate-queries 11462 type: RelaxedAtomicBool 11463 value: false 11464 mirror: always 11465 11466- name: webgl.allow-fb-invalidation 11467 type: RelaxedAtomicBool 11468 value: false 11469 mirror: always 11470 11471 11472- name: webgl.perf.max-warnings 11473 type: RelaxedAtomicInt32 11474 value: 0 11475 mirror: always 11476 11477- name: webgl.perf.max-acceptable-fb-status-invals 11478 type: RelaxedAtomicInt32 11479 value: 0 11480 mirror: always 11481 11482- name: webgl.perf.spew-frame-allocs 11483 type: RelaxedAtomicBool 11484 value: true 11485 mirror: always 11486 11487#--------------------------------------------------------------------------- 11488# Prefs starting with "widget." 11489#--------------------------------------------------------------------------- 11490 11491# Global user preference for disabling native theme in content processes. 11492# 11493# NOTE(emilio): When changing this make sure to update the non_native_theme 11494# entry in python/mozbuild/mozbuild/mozinfo.py and test_fission_autostart.py 11495- name: widget.non-native-theme.enabled 11496 type: RelaxedAtomicBool 11497 value: true 11498 mirror: always 11499 11500# The size in CSS pixels at full zoom of the minimum scrollbar width. 11501- name: widget.non-native-theme.scrollbar.size 11502 type: uint32_t 11503#if defined(MOZ_WIDGET_GTK) 11504 value: 12 11505#else 11506 value: 17 11507#endif 11508 mirror: always 11509 11510# Whether the active thumb color should always use the themed colors, even if 11511# dark scrollbars are in use. 11512- name: widget.non-native-theme.scrollbar.active-always-themed 11513 type: bool 11514 value: true 11515 mirror: always 11516 11517# Whether we use the Windows CSS scrollbar sizes, or the scrollbar sizes 11518# defined above. 11519- name: widget.non-native-theme.win.scrollbar.use-system-size 11520 type: bool 11521 value: true 11522 mirror: always 11523 11524# The amount of space that the thumb should fill the scrollbar, from zero to 11525# one. 11526- name: widget.non-native-theme.gtk.scrollbar.thumb-size 11527 type: float 11528 value: 0.75 11529 mirror: always 11530 11531# The minimum size of the scroll thumb, in the scrollbar direction. 11532- name: widget.non-native-theme.gtk.scrollbar.thumb-cross-size 11533 type: uint32_t 11534 value: 40 11535 mirror: always 11536 11537# Whether the thumb should be rounded for the non-native scrollbars. 11538- name: widget.non-native-theme.gtk.scrollbar.round-thumb 11539 type: bool 11540 value: true 11541 mirror: always 11542 11543# Whether buttons shouldn't be suppressed for non-native scrollbars. 11544- name: widget.non-native-theme.gtk.scrollbar.allow-buttons 11545 type: bool 11546 value: false 11547 mirror: always 11548 11549# Whether we should use the default accent color or the theme-provided one. 11550# 11551# TODO(emilio): This should probably do the right thing in most other 11552# platforms, but stick to the standard colors on those. 11553- name: widget.non-native-theme.use-theme-accent 11554 type: bool 11555#if defined(MOZ_WIDGET_GTK) || defined(XP_MACOSX) 11556 value: true 11557#else 11558 value: false 11559#endif 11560 mirror: always 11561 11562# Whether we should try to use WebRender to render widgets. 11563- name: widget.non-native-theme.webrender 11564 type: bool 11565#if defined(XP_MACOSX) 11566 # Disabled on macOS release / beta because of a suspected AMD driver bug (see 11567 # bug 1715452). 11568 value: @IS_NIGHTLY_BUILD@ 11569#else 11570 value: true 11571#endif 11572 mirror: always 11573 11574# Preference to disable dark scrollbar implementation. 11575# This is mainly for testing because dark scrollbars have to be semi- 11576# transparent, but many reftests expect scrollbars to look identical 11577# among different backgrounds. 11578# However, some users may want to disable this as well. 11579- name: widget.disable-dark-scrollbar 11580 type: bool 11581 value: false 11582 mirror: always 11583 11584- name: widget.window-transforms.disabled 11585 type: RelaxedAtomicBool 11586 value: false 11587 mirror: always 11588 11589#ifdef XP_MACOSX 11590- name: widget.macos.native-context-menus 11591 type: RelaxedAtomicBool 11592 value: true 11593 mirror: always 11594 11595- name: widget.macos.enable-pre-bigsur-workaround-for-dark-mode-context-menus 11596 type: RelaxedAtomicBool 11597 value: true 11598 mirror: always 11599 11600- name: widget.macos.support-dark-appearance 11601 type: RelaxedAtomicBool 11602 value: true 11603 mirror: always 11604#endif 11605 11606# Whether to allow gtk dark themes in content. 11607- name: widget.content.allow-gtk-dark-theme 11608 type: bool 11609 value: false 11610 mirror: always 11611 11612# Whether widget follows the firefox theme in order to choose a light / dark 11613# appearance. 11614- name: widget.gtk.follow-firefox-theme 11615 type: RelaxedAtomicBool 11616 value: true 11617 mirror: always 11618 11619# Whether we try to extract dark theme GTK colors. 11620# 11621# For now, needed for follow-firefox-theme. In the future will also be needed 11622# for the color-scheme CSS property / meta tag / etc. 11623- name: widget.gtk.alt-theme.dark 11624 type: bool 11625 value: true 11626 mirror: always 11627 11628# Whether selection colors for the non-system theme get passed from the system 11629# GTK theme. 11630- name: widget.gtk.alt-theme.selection 11631 type: bool 11632 value: true 11633 mirror: always 11634 11635# Whether form control accent colors for the non-system theme get passed from 11636# the system GTK theme. 11637- name: widget.gtk.alt-theme.accent 11638 type: bool 11639 value: true 11640 mirror: always 11641 11642# Whether the scrollbar thumb active color from the non-system theme gets 11643# passed from the system GTK theme. 11644- name: widget.gtk.alt-theme.scrollbar_active 11645 type: bool 11646 value: true 11647 mirror: always 11648 11649# Whether other scrollbar colors get passed from the real GTK theme. 11650# 11651# This is default false because light scrollbars usually match better websites, 11652# and we have automatic scrollbar darkening. 11653- name: widget.gtk.alt-theme.scrollbar 11654 type: bool 11655 value: false 11656 mirror: always 11657 11658# Whether to use gtk high contrast themes to disable content styling like on 11659# windows high contrast mode. 11660- name: widget.content.gtk-high-contrast.enabled 11661 type: bool 11662 value: true 11663 mirror: always 11664 11665# Whether to pause the compositor when a native window is minimized. 11666- name: widget.pause-compositor-when-minimized 11667 type: bool 11668 value: true 11669 mirror: always 11670 11671#ifdef MOZ_WAYLAND 11672# Whether to override the DMABuf blocklist. 11673- name: widget.dmabuf.force-enabled 11674 type: bool 11675 value: false 11676 mirror: once 11677 11678#ifdef NIGHTLY_BUILD 11679# Keep those pref hidden on non-nightly builds to avoid people accidentally 11680# turning it on. 11681 11682# Use DMABuf for content textures. 11683# For testing purposes only. 11684- name: widget.dmabuf-textures.enabled 11685 type: RelaxedAtomicBool 11686 value: false 11687 mirror: always 11688#endif 11689 11690# Smooth rendering mode for Wayland basic compositor. 11691# 0 - direct draw 11692# 1 - basic caching 11693# 2 - all caching 11694- name: widget.wayland-smooth-rendering 11695 type: RelaxedAtomicUint32 11696 value: 1 11697 mirror: always 11698 11699# Use DMABuf backend for WebGL. 11700- name: widget.dmabuf-webgl.enabled 11701 type: RelaxedAtomicBool 11702 value: true 11703 mirror: always 11704 11705# Force fractional scaling using wp_viewporter. Valid values: 0.5 - 8 11706- name: widget.wayland.fractional_buffer_scale 11707 type: float 11708 value: 0.0f 11709 mirror: once 11710 11711- name: widget.wayland.multi-buffer-software-backend.enabled 11712 type: bool 11713 value: false 11714 mirror: once 11715 11716# Use opaque region for MozContainer wl_surface 11717- name: widget.wayland.opaque-region.enabled 11718 type: bool 11719 value: true 11720 mirror: once 11721 11722# Use frame callback based vsync 11723- name: widget.wayland.vsync.enabled 11724 type: bool 11725 value: true 11726 mirror: once 11727#endif 11728 11729#--------------------------------------------------------------------------- 11730# Prefs starting with "xul." 11731#--------------------------------------------------------------------------- 11732 11733# Pref to control whether arrow-panel animations are enabled or not. 11734# Transitions are currently disabled on Linux due to rendering issues on 11735# certain configurations. 11736- name: xul.panel-animations.enabled 11737 type: bool 11738#ifdef MOZ_WIDGET_GTK 11739 value: false 11740#else 11741 value: true 11742#endif 11743 mirror: always 11744 11745#--------------------------------------------------------------------------- 11746# Prefs starting with "zoom." 11747#--------------------------------------------------------------------------- 11748 11749- name: zoom.maxPercent 11750 type: uint32_t 11751#ifdef ANDROID 11752 value: 400 11753#else 11754 value: 500 11755#endif 11756 mirror: always 11757 11758- name: zoom.minPercent 11759 type: uint32_t 11760#ifdef ANDROID 11761 value: 20 11762#else 11763 value: 30 11764#endif 11765 mirror: always 11766 11767#--------------------------------------------------------------------------- 11768# End of prefs 11769#--------------------------------------------------------------------------- 11770