Source code

Revision control

Other Tools

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
#ifdef MOZILLA_OFFICIAL
147
#define IS_NOT_MOZILLA_OFFICIAL false
148
#else
149
#define IS_NOT_MOZILLA_OFFICIAL true
150
#endif
151
152
#ifdef EARLY_BETA_OR_EARLIER
153
#define IS_EARLY_BETA_OR_EARLIER true
154
#else
155
#define IS_EARLY_BETA_OR_EARLIER false
156
#endif
157
158
#ifdef ANDROID
159
#define IS_ANDROID true
160
#define IS_NOT_ANDROID false
161
#else
162
#define IS_ANDROID false
163
#define IS_NOT_ANDROID true
164
#endif
165
166
#---------------------------------------------------------------------------
167
# Prefs starting with "accessibility."
168
#---------------------------------------------------------------------------
169
170
- name: accessibility.monoaudio.enable
171
type: RelaxedAtomicBool
172
value: false
173
mirror: always
174
175
- name: accessibility.browsewithcaret
176
type: RelaxedAtomicBool
177
value: false
178
mirror: always
179
180
- name: accessibility.AOM.enabled
181
type: bool
182
value: false
183
mirror: always
184
185
#ifdef ANDROID
186
#---------------------------------------------------------------------------
187
# Prefs starting with "android."
188
#---------------------------------------------------------------------------
189
190
# On Android, we want an opaque background to be visible under the page,
191
# so layout should not force a default background.
192
- name: android.widget_paints_background
193
type: bool
194
value: true
195
mirror: always
196
#endif
197
198
#---------------------------------------------------------------------------
199
# Prefs starting with "apz."
200
# The apz prefs are explained in AsyncPanZoomController.cpp
201
#---------------------------------------------------------------------------
202
203
- name: apz.allow_double_tap_zooming
204
type: RelaxedAtomicBool
205
value: true
206
mirror: always
207
208
- name: apz.allow_immediate_handoff
209
type: RelaxedAtomicBool
210
value: false
211
mirror: always
212
213
- name: apz.allow_zooming
214
type: RelaxedAtomicBool
215
value: @IS_ANDROID@
216
mirror: always
217
218
- name: apz.android.chrome_fling_physics.enabled
219
type: RelaxedAtomicBool
220
value: true
221
mirror: always
222
223
- name: apz.android.chrome_fling_physics.friction
224
type: AtomicFloat
225
value: 0.015f
226
mirror: always
227
228
- name: apz.android.chrome_fling_physics.inflexion
229
type: AtomicFloat
230
value: 0.35f
231
mirror: always
232
233
- name: apz.android.chrome_fling_physics.stop_threshold
234
type: AtomicFloat
235
value: 0.1f
236
mirror: always
237
238
- name: apz.autoscroll.enabled
239
type: RelaxedAtomicBool
240
value: true
241
mirror: always
242
243
- name: apz.axis_lock.breakout_angle
244
type: AtomicFloat
245
value: float(M_PI / 8.0) # 22.5 degrees
246
mirror: always
247
include: <cmath>
248
249
- name: apz.axis_lock.breakout_threshold
250
type: AtomicFloat
251
value: 1.0f / 32.0f
252
mirror: always
253
254
- name: apz.axis_lock.direct_pan_angle
255
type: AtomicFloat
256
value: float(M_PI / 3.0) # 60 degrees
257
mirror: always
258
include: <cmath>
259
260
- name: apz.axis_lock.lock_angle
261
type: AtomicFloat
262
value: float(M_PI / 6.0) # 30 degrees
263
mirror: always
264
include: <cmath>
265
266
# Whether to lock touch scrolling to one axis at a time.
267
# 0 = FREE (No locking at all)
268
# 1 = STANDARD (Once locked, remain locked until scrolling ends)
269
# 2 = STICKY (Allow lock to be broken, with hysteresis)
270
- name: apz.axis_lock.mode
271
type: RelaxedAtomicInt32
272
value: 0
273
mirror: always
274
275
- name: apz.content_response_timeout
276
type: RelaxedAtomicInt32
277
value: 400
278
mirror: always
279
280
- name: apz.danger_zone_x
281
type: RelaxedAtomicInt32
282
value: 50
283
mirror: always
284
285
- name: apz.danger_zone_y
286
type: RelaxedAtomicInt32
287
value: 100
288
mirror: always
289
290
- name: apz.disable_for_scroll_linked_effects
291
type: RelaxedAtomicBool
292
value: false
293
mirror: always
294
295
- name: apz.displayport_expiry_ms
296
type: RelaxedAtomicUint32
297
value: 15000
298
mirror: always
299
300
- name: apz.drag.enabled
301
type: RelaxedAtomicBool
302
value: true
303
mirror: always
304
305
- name: apz.drag.initial.enabled
306
type: RelaxedAtomicBool
307
value: true
308
mirror: always
309
310
- name: apz.drag.touch.enabled
311
type: RelaxedAtomicBool
312
value: true
313
mirror: always
314
315
- name: apz.enlarge_displayport_when_clipped
316
type: RelaxedAtomicBool
317
value: @IS_ANDROID@
318
mirror: always
319
320
# Test only.
321
- name: apz.fixed-margin-override.enabled
322
type: RelaxedAtomicBool
323
value: false
324
mirror: always
325
326
# Test only.
327
- name: apz.fixed-margin-override.bottom
328
type: RelaxedAtomicInt32
329
value: 0
330
mirror: always
331
332
# Test only.
333
- name: apz.fixed-margin-override.top
334
type: RelaxedAtomicInt32
335
value: 0
336
mirror: always
337
338
- name: apz.fling_accel_base_mult
339
type: AtomicFloat
340
value: 1.0f
341
mirror: always
342
343
- name: apz.fling_accel_interval_ms
344
type: RelaxedAtomicInt32
345
value: 500
346
mirror: always
347
348
- name: apz.fling_accel_supplemental_mult
349
type: AtomicFloat
350
value: 1.0f
351
mirror: always
352
353
- name: apz.fling_accel_min_velocity
354
type: AtomicFloat
355
value: 1.5f
356
mirror: always
357
358
- name: apz.fling_curve_function_x1
359
type: float
360
value: 0.0f
361
mirror: once
362
363
- name: apz.fling_curve_function_x2
364
type: float
365
value: 1.0f
366
mirror: once
367
368
- name: apz.fling_curve_function_y1
369
type: float
370
value: 0.0f
371
mirror: once
372
373
- name: apz.fling_curve_function_y2
374
type: float
375
value: 1.0f
376
mirror: once
377
378
- name: apz.fling_curve_threshold_inches_per_ms
379
type: AtomicFloat
380
value: -1.0f
381
mirror: always
382
383
- name: apz.fling_friction
384
type: AtomicFloat
385
value: 0.002f
386
mirror: always
387
388
- name: apz.fling_min_velocity_threshold
389
type: AtomicFloat
390
value: 0.5f
391
mirror: always
392
393
- name: apz.fling_stop_on_tap_threshold
394
type: AtomicFloat
395
value: 0.05f
396
mirror: always
397
398
- name: apz.fling_stopped_threshold
399
type: AtomicFloat
400
value: 0.01f
401
mirror: always
402
403
- name: apz.frame_delay.enabled
404
type: RelaxedAtomicBool
405
value: true
406
mirror: always
407
408
- name: apz.touch_acceleration_factor_x
409
type: float
410
value: 1.0f
411
mirror: always
412
413
- name: apz.touch_acceleration_factor_y
414
type: float
415
value: 1.0f
416
mirror: always
417
418
#ifdef MOZ_WIDGET_GTK
419
- name: apz.gtk.kinetic_scroll.enabled
420
type: RelaxedAtomicBool
421
value: true
422
mirror: always
423
#endif
424
425
- name: apz.keyboard.enabled
426
type: bool
427
value: @IS_NOT_ANDROID@
428
mirror: once
429
430
- name: apz.keyboard.passive-listeners
431
type: RelaxedAtomicBool
432
value: @IS_NOT_ANDROID@
433
mirror: always
434
435
- name: apz.max_tap_time
436
type: RelaxedAtomicInt32
437
value: 300
438
mirror: always
439
440
- name: apz.max_velocity_inches_per_ms
441
type: AtomicFloat
442
value: -1.0f
443
mirror: always
444
445
- name: apz.max_velocity_queue_size
446
type: uint32_t
447
value: 5
448
mirror: once
449
450
- name: apz.min_skate_speed
451
type: AtomicFloat
452
value: 1.0f
453
mirror: always
454
455
- name: apz.minimap.enabled
456
type: RelaxedAtomicBool
457
value: false
458
mirror: always
459
460
- name: apz.one_touch_pinch.enabled
461
type: RelaxedAtomicBool
462
value: true
463
mirror: always
464
465
- name: apz.overscroll.enabled
466
type: RelaxedAtomicBool
467
value: false
468
mirror: always
469
470
- name: apz.overscroll.min_pan_distance_ratio
471
type: AtomicFloat
472
value: 1.0f
473
mirror: always
474
475
- name: apz.overscroll.stop_distance_threshold
476
type: AtomicFloat
477
value: 5.0f
478
mirror: always
479
480
- name: apz.paint_skipping.enabled
481
type: RelaxedAtomicBool
482
value: true
483
mirror: always
484
485
- name: apz.peek_messages.enabled
486
type: RelaxedAtomicBool
487
value: true
488
mirror: always
489
490
# Fetch displayport updates early from the message queue.
491
- name: apz.pinch_lock.mode
492
type: RelaxedAtomicInt32
493
value: 1
494
mirror: always
495
496
- name: apz.pinch_lock.scroll_lock_threshold
497
type: AtomicFloat
498
value: 1.0f / 32.0f # 1/32 inches
499
mirror: always
500
501
- name: apz.pinch_lock.span_breakout_threshold
502
type: AtomicFloat
503
value: 1.0f / 32.0f # 1/32 inches
504
mirror: always
505
506
- name: apz.pinch_lock.span_lock_threshold
507
type: AtomicFloat
508
value: 1.0f / 32.0f # 1/32 inches
509
mirror: always
510
511
- name: apz.pinch_lock.buffer_max_age
512
type: int32_t
513
value: 50 # milliseconds
514
mirror: once
515
516
- name: apz.popups.enabled
517
type: RelaxedAtomicBool
518
value: false
519
mirror: always
520
521
# Whether to print the APZC tree for debugging.
522
- name: apz.printtree
523
type: RelaxedAtomicBool
524
value: false
525
mirror: always
526
527
- name: apz.record_checkerboarding
528
type: RelaxedAtomicBool
529
value: @IS_NIGHTLY_BUILD@
530
mirror: always
531
532
- name: apz.second_tap_tolerance
533
type: AtomicFloat
534
value: 0.5f
535
mirror: always
536
537
- name: apz.test.fails_with_native_injection
538
type: RelaxedAtomicBool
539
value: false
540
mirror: always
541
542
- name: apz.test.logging_enabled
543
type: RelaxedAtomicBool
544
value: false
545
mirror: always
546
547
- name: apz.touch_move_tolerance
548
type: AtomicFloat
549
value: 0.1f
550
mirror: always
551
552
- name: apz.touch_start_tolerance
553
type: AtomicFloat
554
value: 0.1f
555
mirror: always
556
557
- name: apz.velocity_bias
558
type: AtomicFloat
559
value: 0.0f
560
mirror: always
561
562
- name: apz.velocity_relevance_time_ms
563
type: RelaxedAtomicUint32
564
value: 150
565
mirror: always
566
567
- name: apz.x_skate_highmem_adjust
568
type: AtomicFloat
569
value: 0.0f
570
mirror: always
571
572
- name: apz.x_skate_size_multiplier
573
type: AtomicFloat
574
value: 1.25f
575
mirror: always
576
577
- name: apz.x_stationary_size_multiplier
578
type: AtomicFloat
579
value: 1.5f
580
mirror: always
581
582
- name: apz.y_skate_highmem_adjust
583
type: AtomicFloat
584
value: 0.0f
585
mirror: always
586
587
- name: apz.y_skate_size_multiplier
588
type: AtomicFloat
589
#if defined(MOZ_WIDGET_ANDROID)
590
value: 1.5f
591
#else
592
value: 3.5f
593
#endif
594
mirror: always
595
596
- name: apz.y_stationary_size_multiplier
597
type: AtomicFloat
598
#if defined(MOZ_WIDGET_ANDROID)
599
value: 1.5f
600
#else
601
value: 3.5f
602
#endif
603
mirror: always
604
605
- name: apz.zoom_animation_duration_ms
606
type: RelaxedAtomicInt32
607
value: 250
608
mirror: always
609
610
- name: apz.scale_repaint_delay_ms
611
type: RelaxedAtomicInt32
612
value: 500
613
mirror: always
614
615
- name: apz.relative-update.enabled
616
type: RelaxedAtomicBool
617
value: true
618
mirror: always
619
620
#---------------------------------------------------------------------------
621
# Prefs starting with "beacon."
622
#---------------------------------------------------------------------------
623
624
# Is support for Navigator.sendBeacon enabled?
625
- name: beacon.enabled
626
type: bool
627
value: true
628
mirror: always
629
630
#---------------------------------------------------------------------------
631
# Prefs starting with "bidi."
632
#---------------------------------------------------------------------------
633
634
# Whether delete and backspace should immediately delete characters not
635
# visually adjacent to the caret, or adjust the visual position of the caret
636
# on the first keypress and delete the character on a second keypress
637
- name: bidi.edit.delete_immediately
638
type: bool
639
value: true
640
mirror: always
641
642
#---------------------------------------------------------------------------
643
# Prefs starting with "browser."
644
#---------------------------------------------------------------------------
645
646
- name: browser.active_color
647
type: String
648
value: "#EE0000"
649
mirror: never
650
- name: browser.anchor_color
651
type: String
652
value: "#0000EE"
653
mirror: never
654
656
- name: browser.autofocus
657
type: bool
658
value: true
659
mirror: always
660
661
- name: browser.cache.offline.enable
662
type: bool
663
value: true
664
mirror: always
665
666
- name: browser.cache.offline.storage.enable
667
type: bool
668
#ifdef EARLY_BETA_OR_EARLIER
669
value: false
670
#else
671
value: true
672
#endif
673
mirror: always
674
675
- name: browser.cache.disk.enable
676
type: RelaxedAtomicBool
677
value: true
678
mirror: always
679
680
- name: browser.cache.memory.enable
681
type: RelaxedAtomicBool
682
value: true
683
mirror: always
684
685
# Limit of recent metadata we keep in memory for faster access, in KB.
686
- name: browser.cache.disk.metadata_memory_limit
687
type: RelaxedAtomicUint32
688
value: 250 # 0.25 MB
689
mirror: always
690
691
# Does the user want smart-sizing?
692
- name: browser.cache.disk.smart_size.enabled
693
type: RelaxedAtomicBool
694
value: true
695
mirror: always
696
697
# Enable/Disable Origin based cache isolation
698
- name: browser.cache.cache_isolation
699
type: RelaxedAtomicBool
700
value: false
701
mirror: always
702
703
# -1 = determine dynamically, 0 = none, n = memory capacity in kilobytes.
704
- name: browser.cache.memory.capacity
705
type: RelaxedAtomicInt32
706
#ifdef ANDROID
707
value: 1024
708
#else
709
value: -1
710
#endif
711
mirror: always
712
713
# When smartsizing is disabled we could potentially fill all disk space by
714
# cache data when the disk capacity is not set correctly. To avoid that we
715
# check the free space every time we write some data to the cache. The free
716
# space is checked against two limits. Once the soft limit is reached we start
717
# evicting the least useful entries, when we reach the hard limit writing to
718
# the entry fails.
719
- name: browser.cache.disk.free_space_soft_limit
720
type: RelaxedAtomicUint32
721
value: 5 * 1024 # 5MB
722
mirror: always
723
724
- name: browser.cache.disk.free_space_hard_limit
725
type: RelaxedAtomicUint32
726
value: 1024 # 1MB
727
mirror: always
728
729
# The number of chunks we preload ahead of read. One chunk currently has
730
# 256kB.
731
- name: browser.cache.disk.preload_chunk_count
732
type: RelaxedAtomicUint32
733
value: 4 # 1 MB of read ahead
734
mirror: always
735
736
# Max-size (in KB) for entries in disk cache. Set to -1 for no limit.
737
# (Note: entries bigger than 1/8 of disk-cache are never cached)
738
- name: browser.cache.disk.max_entry_size
739
type: RelaxedAtomicUint32
740
value: 50 * 1024 # 50 MB
741
mirror: always
742
743
# Max-size (in KB) for entries in memory cache. Set to -1 for no limit.
744
# (Note: entries bigger than than 90% of the mem-cache are never cached.)
745
- name: browser.cache.memory.max_entry_size
746
type: RelaxedAtomicInt32
747
value: 5 * 1024
748
mirror: always
749
750
# Memory limit (in kB) for new cache data not yet written to disk. Writes to
751
# the cache are buffered and written to disk on background with low priority.
752
# With a slow persistent storage these buffers may grow when data is coming
753
# fast from the network. When the amount of unwritten data is exceeded, new
754
# writes will simply fail. We have two buckets, one for important data
755
# (priority) like html, css, fonts and js, and one for other data like images,
756
# video, etc.
757
# Note: 0 means no limit.
758
- name: browser.cache.disk.max_chunks_memory_usage
759
type: RelaxedAtomicUint32
760
value: 40 * 1024
761
mirror: always
762
- name: browser.cache.disk.max_priority_chunks_memory_usage
763
type: RelaxedAtomicUint32
764
value: 40 * 1024
765
mirror: always
766
767
# Number of seconds the cache spends writing pending data and closing files
768
# after shutdown has been signalled. Past that time data is not written and
769
# files are left open for the OS to clean up.
770
- name: browser.cache.max_shutdown_io_lag
771
type: RelaxedAtomicUint32
772
value: 2
773
mirror: always
774
775
- name: browser.contentblocking.database.enabled
776
type: bool
777
value: false
778
mirror: always
779
780
# How many recent block/unblock actions per origins we remember in the
781
# Content Blocking log for each top-level window.
782
- name: browser.contentblocking.originlog.length
783
type: uint32_t
784
value: 32
785
mirror: always
786
787
- name: browser.display.background_color
788
type: String
789
value: "#FFFFFF"
790
mirror: never
791
792
# 0 = default: always, except in high contrast mode
793
# 1 = always
794
# 2 = never
795
- name: browser.display.document_color_use
796
type: RelaxedAtomicUint32
797
value: 0
798
mirror: always
799
rust: true
800
801
# This pref dictates whether or not backplates and background images
802
# are to be drawn, when in high-contrast mode:
803
# false: do not draw backplates or render background images
804
# true: render background images and draw backplates
805
# This condition is only considered when high-contrast mode is enabled
806
# in Firefox, ie. when the user has:
807
# (1) mUseAccessibilityMode set to true (Widows high-contrast mode is on)
808
# AND browser.display.document_color_use set to 0
809
# (only with high-contrast themes) OR
810
# (2) browser.display.document_color_use set to 2 (always)
811
- name: browser.display.permit_backplate
812
type: RelaxedAtomicBool
813
value: true
814
mirror: always
815
rust: true
816
817
- name: browser.display.focus_ring_on_anything
818
type: bool
819
value: false
820
mirror: always
821
822
- name: browser.display.focus_ring_width
823
type: uint32_t
824
value: 1
825
mirror: always
826
827
- name: browser.display.focus_background_color
828
type: String
829
value: "#117722"
830
mirror: never
831
832
# Focus ring border style.
833
# 0 = solid border, 1 = dotted border
834
- name: browser.display.focus_ring_style
835
type: uint32_t
836
value: 1
837
mirror: always
838
839
- name: browser.display.focus_text_color
840
type: String
841
value: "#ffffff"
842
mirror: never
843
- name: browser.display.foreground_color
844
type: String
845
value: "#000000"
846
mirror: never
847
848
- name: browser.display.show_focus_rings
849
type: bool
850
# Focus rings are not shown on Mac or Android by default.
851
#if defined(XP_MACOSX) || defined(ANDROID)
852
value: false
853
#else
854
value: true
855
#endif
856
mirror: always
857
858
# In theory: 0 = never, 1 = quick, 2 = always, though we always just use it as
859
# a bool!
860
- name: browser.display.use_document_fonts
861
type: RelaxedAtomicInt32
862
value: 1
863
mirror: always
864
rust: true
865
866
- name: browser.display.use_focus_colors
867
type: bool
868
value: false
869
mirror: always
870
871
- name: browser.display.use_system_colors
872
type: bool
873
value: false
874
mirror: always
875
876
- name: browser.dom.window.dump.enabled
877
type: RelaxedAtomicBool
878
value: @IS_NOT_MOZILLA_OFFICIAL@
879
mirror: always
880
881
# Fix up common scheme typos?
882
- name: browser.fixup.typo.scheme
883
type: bool
884
value: true
885
mirror: always
886
887
- name: browser.fixup.dns_first_for_single_words
888
type: bool
889
value: false
890
mirror: always
891
892
# Render animations and videos as a solid color
893
- name: browser.measurement.render_anims_and_video_solid
894
type: RelaxedAtomicBool
895
value: false
896
mirror: always
897
898
# Indicates if about:newtab shows content (enabled) or just blank.
899
- name: browser.newtabpage.enabled
900
type: bool
901
value: true
902
mirror: always
903
904
# Blocked plugin content
905
- name: browser.safebrowsing.blockedURIs.enabled
906
type: bool
907
value: true
908
mirror: always
909
910
# Malware protection
911
- name: browser.safebrowsing.malware.enabled
912
type: bool
913
value: true
914
mirror: always
915
916
# Password protection
917
- name: browser.safebrowsing.passwords.enabled
918
type: bool
919
value: false
920
mirror: always
921
922
# Phishing protection
923
- name: browser.safebrowsing.phishing.enabled
924
type: bool
925
value: true
926
mirror: always
927
928
# Maximum size for an array to store the safebrowsing prefixset.
929
- name: browser.safebrowsing.prefixset_max_array_size
930
type: RelaxedAtomicUint32
931
value: 512*1024
932
mirror: always
933
934
# ContentSessionStore prefs
935
# Maximum number of bytes of DOMSessionStorage data we collect per origin.
936
- name: browser.sessionstore.dom_storage_limit
937
type: uint32_t
938
value: 2048
939
mirror: always
940
941
# If set, use DocumentChannel with nsDocShell in place of HttpChannel.
942
- name: browser.tabs.documentchannel
943
type: bool
944
#if defined(ANDROID)
945
value: false # See bug 1589982.
946
#else
947
value: true
948
#endif
949
mirror: always
950
951
- name: browser.tabs.remote.desktopbehavior
952
type: bool
953
value: false
954
mirror: always
955
956
- name: browser.tabs.remote.force-paint
957
type: bool
958
value: true
959
mirror: always
960
961
# When this pref is enabled document loads with a mismatched
962
# Cross-Origin-Embedder-Policy header will fail to load
963
- name: browser.tabs.remote.useCrossOriginEmbedderPolicy
964
type: RelaxedAtomicBool
965
#if !defined(ANDROID)
966
value: @IS_NIGHTLY_BUILD@
967
#else
968
value: false # Blocked by DocumentChannel, see Bug 1589982.
969
#endif
970
mirror: always
971
972
# When this pref is enabled top level loads with a mismatched
973
# Cross-Origin-Opener-Policy header will be loaded in a separate process.
974
- name: browser.tabs.remote.useCrossOriginOpenerPolicy
975
type: RelaxedAtomicBool
976
#if !defined(ANDROID)
977
value: @IS_NIGHTLY_BUILD@
978
#else
979
value: false # Blocked by DocumentChannel, see Bug 1589982.
980
#endif
981
mirror: always
982
983
# When this pref is enabled, the browser will check no-cors responses that
984
# have the Cross-Origin-Resource-Policy header and will fail the request if
985
# the origin of the resource's loading document doesn't match the origin
986
# (or base domain) of the loaded resource.
987
- name: browser.tabs.remote.useCORP
988
type: bool
989
value: true
990
mirror: always
991
992
# The percentage of the screen that needs to be scrolled before toolbar
993
# manipulation is allowed.
994
- name: browser.ui.scroll-toolbar-threshold
995
type: RelaxedAtomicInt32
996
value: 10
997
mirror: always
998
999
# When true, zooming will be enabled on all sites, even ones that declare
1000
# user-scalable=no.
1001
- name: browser.ui.zoom.force-user-scalable
1002
type: RelaxedAtomicBool
1003
value: false
1004
mirror: always
1005
1006
- name: browser.underline_anchors
1007
type: bool
1008
value: true
1009
mirror: always
1010
1011
- name: browser.viewport.desktopWidth
1012
type: RelaxedAtomicInt32
1013
value: 980
1014
mirror: always
1015
1016
- name: browser.visited_color
1017
type: String
1018
value: "#551A8B"
1019
mirror: never
1020
1021
# Enable xul error pages.
1022
- name: browser.xul.error_pages.enabled
1023
type: bool
1024
value: true
1025
mirror: always
1026
1027
#---------------------------------------------------------------------------
1028
# Prefs starting with "canvas."
1029
#---------------------------------------------------------------------------
1030
1031
# Limit for the canvas image cache. 0 means unlimited.
1032
- name: canvas.image.cache.limit
1033
type: int32_t
1034
value: 0
1035
mirror: always
1036
1037
# Add support for canvas path objects
1038
- name: canvas.path.enabled
1039
type: bool
1040
value: true
1041
mirror: always
1042
1043
- name: canvas.capturestream.enabled
1044
type: bool
1045
value: true
1046
mirror: always
1047
1048
# Is support for CanvasRenderingContext2D.filter enabled?
1049
- name: canvas.filters.enabled
1050
type: bool
1051
value: true
1052
mirror: always
1053
1054
# Provide ability to turn on support for canvas focus rings.
1055
- name: canvas.focusring.enabled
1056
type: bool
1057
value: true
1058
mirror: always
1059
1060
# Is support for CanvasRenderingContext2D's hitRegion APIs enabled?
1061
- name: canvas.hitregions.enabled
1062
type: bool
1063
value: false
1064
mirror: always
1065
1066
# Provide ability to turn on support for canvas mozGetAsFile API.
1067
- name: canvas.mozgetasfile.enabled
1068
type: bool
1069
value: false
1070
mirror: always
1071
1072
#---------------------------------------------------------------------------
1073
# Prefs starting with "channelclassifier."
1074
#---------------------------------------------------------------------------
1075
1076
- name: channelclassifier.allowlist_example
1077
type: bool
1078
value: false
1079
mirror: always
1080
1081
#---------------------------------------------------------------------------
1082
# Prefs starting with "clipboard."
1083
#---------------------------------------------------------------------------
1084
1085
# Clipboard behavior.
1086
- name: clipboard.autocopy
1087
type: bool
1088
#if !defined(ANDROID) && !defined(XP_MACOSX) && defined(XP_UNIX)
1089
value: true
1090
#else
1091
value: false
1092
#endif
1093
mirror: always
1094
1095
#---------------------------------------------------------------------------
1096
# Prefs starting with "consoleservice."
1097
#---------------------------------------------------------------------------
1098
1099
#if defined(ANDROID)
1100
# Disable sending console to logcat on release builds.
1101
- name: consoleservice.logcat
1102
type: RelaxedAtomicBool
1103
value: @IS_NOT_RELEASE_OR_BETA@
1104
mirror: always
1105
#endif
1106
1107
#---------------------------------------------------------------------------
1108
# Prefs starting with "content."
1109
#---------------------------------------------------------------------------
1110
1111
- name: content.cors.disable
1112
type: bool
1113
value: false
1114
mirror: always
1115
1116
# Back off timer notification after count.
1117
# -1 means never.
1118
- name: content.notify.backoffcount
1119
type: int32_t
1120
value: -1
1121
mirror: always
1122
1123
# Notification interval in microseconds.
1124
# The notification interval has a dramatic effect on how long it takes to
1125
# initially display content for slow connections. The current value
1126
# provides good incremental display of content without causing an increase
1127
# in page load time. If this value is set below 1/10 of a second it starts
1128
# to impact page load performance.
1129
# See bugzilla bug 72138 for more info.
1130
- name: content.notify.interval
1131
type: int32_t
1132
value: 120000
1133
mirror: always
1134
1135
# Do we notify based on time?
1136
- name: content.notify.ontimer
1137
type: bool
1138
value: true
1139
mirror: always
1140
1141
# How many times to deflect in interactive mode.
1142
- name: content.sink.interactive_deflect_count
1143
type: int32_t
1144
value: 0
1145
mirror: always
1146
1147
# How many times to deflect in perf mode.
1148
- name: content.sink.perf_deflect_count
1149
type: int32_t
1150
value: 200
1151
mirror: always
1152
1153
# Parse mode for handling pending events.
1154
# 0 = don't check for pending events
1155
# 1 = don't deflect if there are pending events
1156
# 2 = bail if there are pending events
1157
- name: content.sink.pending_event_mode
1158
type: int32_t
1159
# ifdef XP_WIN
1160
value: 1
1161
# else
1162
value: 0
1163
# endif
1164
mirror: always
1165
1166
# How often to probe for pending events. 1 = every token.
1167
- name: content.sink.event_probe_rate
1168
type: int32_t
1169
value: 1
1170
mirror: always
1171
1172
# How long to stay off the event loop in interactive mode.
1173
- name: content.sink.interactive_parse_time
1174
type: int32_t
1175
value: 3000
1176
mirror: always
1177
1178
# How long to stay off the event loop in perf mode.
1179
- name: content.sink.perf_parse_time
1180
type: int32_t
1181
value: 360000
1182
mirror: always
1183
1184
# How long to be in interactive mode after an event.
1185
- name: content.sink.interactive_time
1186
type: uint32_t
1187
value: 750000
1188
mirror: always
1189
1190
# How long to stay in perf mode after initial loading.
1191
- name: content.sink.initial_perf_time
1192
type: uint32_t
1193
value: 2000000
1194
mirror: always
1195
1196
# Should we switch between perf-mode and interactive-mode?
1197
# 0 = Switch
1198
# 1 = Interactive mode
1199
# 2 = Perf mode
1200
- name: content.sink.enable_perf_mode
1201
type: int32_t
1202
value: 0
1203
mirror: always
1204
1205
#---------------------------------------------------------------------------
1206
# Prefs starting with "datareporting."
1207
#---------------------------------------------------------------------------
1208
1209
- name: datareporting.healthreport.uploadEnabled
1210
type: RelaxedAtomicBool
1211
value: false
1212
mirror: always
1213
rust: true
1214
1215
#---------------------------------------------------------------------------
1216
# Prefs starting with "device."
1217
#---------------------------------------------------------------------------
1218
1219
# Is support for the device sensors API enabled?
1220
- name: device.sensors.enabled
1221
type: bool
1222
value: true
1223
mirror: always
1224
1225
- name: device.sensors.ambientLight.enabled
1226
type: bool
1227
value: false
1228
mirror: always
1229
1230
- name: device.sensors.motion.enabled
1231
type: bool
1232
value: true
1233
mirror: always
1234
1235
- name: device.sensors.orientation.enabled
1236
type: bool
1237
value: true
1238
mirror: always
1239
1240
- name: device.sensors.proximity.enabled
1241
type: bool
1242
value: false
1243
mirror: always
1244
1245
- name: device.sensors.test.events
1246
type: bool
1247
value: false
1248
mirror: always
1249
1250
#---------------------------------------------------------------------------
1251
# Prefs starting with "devtools."
1252
#---------------------------------------------------------------------------
1253
1254
# Tells if DevTools have been explicitely enabled by the user. This pref
1255
# allows to disable all features related to DevTools for users that never use
1256
# them. Until bug 1361080 lands, we always consider them enabled.
1257
- name: devtools.enabled
1258
type: RelaxedAtomicBool
1259
value: true
1260
mirror: always
1261
1262
- name: devtools.console.stdout.chrome
1263
type: RelaxedAtomicBool
1264
value: @IS_NOT_MOZILLA_OFFICIAL@
1265
mirror: always
1266
1267
- name: devtools.console.stdout.content
1268
type: RelaxedAtomicBool
1269
value: false
1270
mirror: always
1271
1272
- name: devtools.toolbox.force-chrome-prefs
1273
type: RelaxedAtomicBool
1274
value: true
1275
mirror: always
1276
1277
#---------------------------------------------------------------------------
1278
# Prefs starting with "docshell."
1279
#---------------------------------------------------------------------------
1280
1281
# Used to indicate whether session history listeners should be notified
1282
# about content viewer eviction. Used only for testing.
1283
- name: docshell.shistory.testing.bfevict
1284
type: bool
1285
value: false
1286
mirror: always
1287
1288
#---------------------------------------------------------------------------
1289
# Prefs starting with "dom."
1290
#---------------------------------------------------------------------------
1291
1292
# Whether window.mozPaintCount is exposed to the web.
1293
- name: dom.mozPaintCount.enabled
1294
type: bool
1295
value: false
1296
mirror: always
1297
1298
# Allow cut/copy
1299
- name: dom.allow_cut_copy
1300
type: bool
1301
value: true
1302
mirror: always
1303
1304
- name: dom.allow_XUL_XBL_for_file
1305
type: bool
1306
value: false
1307
mirror: always
1308
1309
# Is support for automatically removing replaced filling animations enabled?
1310
- name: dom.animations-api.autoremove.enabled
1311
type: bool
1312
value: @IS_NOT_RELEASE_OR_BETA@
1313
mirror: always
1314
1315
# Is support for composite operations from the Web Animations API enabled?
1316
- name: dom.animations-api.compositing.enabled
1317
type: bool
1318
value: @IS_NOT_RELEASE_OR_BETA@
1319
mirror: always
1320
1321
# Is support for the core interfaces of Web Animations API enabled?
1322
- name: dom.animations-api.core.enabled
1323
type: bool
1324
value: true
1325
mirror: always
1326
1327
# Is support for Document.getAnimations() and Element.getAnimations()
1328
# supported?
1329
#
1330
# Before enabling this by default, make sure also CSSPseudoElement interface
1331
# has been spec'ed properly, or we should add a separate pref for
1332
# CSSPseudoElement interface. See Bug 1174575 for further details.
1333
- name: dom.animations-api.getAnimations.enabled
1334
type: bool
1335
value: @IS_NOT_RELEASE_OR_BETA@
1336
mirror: always
1337
1338
# Is support for animations from the Web Animations API without 0%/100%
1339
# keyframes enabled?
1340
- name: dom.animations-api.implicit-keyframes.enabled
1341
type: bool
1342
value: @IS_NOT_RELEASE_OR_BETA@
1343
mirror: always
1344
1345
# Is support for timelines from the Web Animations API enabled?
1346
- name: dom.animations-api.timelines.enabled
1347
type: bool
1348
value: @IS_NOT_RELEASE_OR_BETA@
1349
mirror: always
1350
1351
# Is support for AudioWorklet enabled?
1352
- name: dom.audioworklet.enabled
1353
type: bool
1354
value: false
1355
mirror: always
1356
1357
# Is support for Navigator.getBattery enabled?
1358
- name: dom.battery.enabled
1359
type: bool
1360
value: true
1361
mirror: always
1362
1363
# Block multiple external protocol URLs in iframes per single event.
1364
- name: dom.block_external_protocol_in_iframes
1365
type: bool
1366
value: true
1367
mirror: always
1368
1369
# Block multiple window.open() per single event.
1370
- name: dom.block_multiple_popups
1371
type: bool
1372
value: true
1373
mirror: always
1374
1375
# The maximum number of popup that is allowed to be opened. Set to -1 for no
1376
# limit.
1377
- name: dom.popup_maximum
1378
type: int32_t
1379
value: 20
1380
mirror: always
1381
1382
# Whether window.location.reload() and window.history.go(0) should be blocked
1383
# if called directly from a window resize event handler.
1384
#
1385
# This used to be necessary long ago to prevent terrible UX when using stuff
1386
# like TypeAheadFind (bug 258917), but it also causes compat issues on mobile
1387
# (bug 1570566).
1388
#
1389
# So for now disable it on Android and Desktop Nightly, to see if we have any
1390
# desktop regression before removing it completely. Note that this means that
1391
# non-nightly RDM behaves different than Android in this case.
1392
- name: dom.block_reload_from_resize_event_handler
1393
type: bool
1394
#if defined(MOZ_WIDGET_ANDROID) || defined(NIGHTLY_BUILD)
1395
value: false
1396
#else
1397
value: true
1398
#endif
1399
mirror: always
1400
1401
# SW Cache API
1402
- name: dom.caches.enabled
1403
type: RelaxedAtomicBool
1404
value: true
1405
mirror: always
1406
1407
- name: dom.caches.testing.enabled
1408
type: RelaxedAtomicBool
1409
value: false
1410
mirror: always
1411
1412
# Disable capture attribute for input elements; only supported on GeckoView.
1413
- name: dom.capture.enabled
1414
type: bool
1415
value: false
1416
mirror: always
1417
1418
# Whether Mozilla specific "text" event should be dispatched only in the
1419
# system group or not in content.
1420
- name: dom.compositionevent.text.dispatch_only_system_group_in_content
1421
type: bool
1422
value: true
1423
mirror: always
1424
1425
# Any how many seconds we allow external protocol URLs in iframe when not in
1426
# single events
1427
- name: dom.delay.block_external_protocol_in_iframes
1428
type: uint32_t
1429
value: 10 # in seconds
1430
mirror: always
1431
1432
# HTML <dialog> element
1433
- name: dom.dialog_element.enabled
1434
type: bool
1435
value: false
1436
mirror: always
1437
1438
# Only propagate the open window click permission if the setTimeout() is equal
1439
# to or less than this value.
1440
- name: dom.disable_open_click_delay
1441
type: int32_t
1442
value: 1000
1443
mirror: always
1444
1445
- name: dom.disable_open_during_load
1446
type: bool
1447
value: false
1448
mirror: always
1449
1450
- name: dom.enable_window_print
1451
type: bool
1452
value: @IS_NOT_ANDROID@
1453
mirror: always
1454
1455
- name: dom.element.transform-getters.enabled
1456
type: bool
1457
value: false
1458
mirror: always
1459
1460
# Is support for Performance.mozMemory enabled?
1461
- name: dom.enable_memory_stats
1462
type: bool
1463
value: false
1464
mirror: always
1465
1466
# Enable Performance API
1467
# Whether nonzero values can be returned from performance.timing.*
1468
- name: dom.enable_performance
1469
type: RelaxedAtomicBool
1470
value: true
1471
mirror: always
1472
1473
# Enable Performance Observer API
1474
- name: dom.enable_performance_observer
1475
type: RelaxedAtomicBool
1476
value: true
1477
mirror: always
1478
1479
# Whether resource timing will be gathered and returned by performance.GetEntries*
1480
- name: dom.enable_resource_timing
1481
type: bool
1482
value: true
1483
mirror: always
1484
1485
# Whether performance.GetEntries* will contain an entry for the active document
1486
- name: dom.enable_performance_navigation_timing
1487
type: bool
1488
value: true
1489
mirror: always
1490
1491
# If this is true, it's allowed to fire "cut", "copy" and "paste" events.
1492
# Additionally, "input" events may expose clipboard content when inputType
1493
# is "insertFromPaste" or something.
1494
- name: dom.event.clipboardevents.enabled
1495
type: bool
1496
value: true
1497
mirror: always
1498
1499
# Whether touch event listeners are passive by default.
1500
- name: dom.event.default_to_passive_touch_listeners
1501
type: bool
1502
value: true
1503
mirror: always
1504
1505
# Whether wheel listeners are passive by default.
1506
- name: dom.event.default_to_passive_wheel_listeners
1507
type: bool
1508
value: @IS_NIGHTLY_BUILD@
1509
mirror: always
1510
1511
# Enable clipboard readText() and writeText() by default
1512
- name: dom.events.asyncClipboard
1513
type: bool
1514
value: true
1515
mirror: always
1516
1517
# Disable clipboard read() and write() by default
1518
- name: dom.events.asyncClipboard.dataTransfer
1519
type: bool
1520
value: false
1521
mirror: always
1522
1523
# This pref controls whether or not the `protected` dataTransfer state is
1524
# enabled. If the `protected` dataTransfer stae is disabled, then the
1525
# DataTransfer will be read-only whenever it should be protected, and will not
1526
# be disconnected after a drag event is completed.
1527
- name: dom.events.dataTransfer.protected.enabled
1528
type: bool
1529
value: false
1530
mirror: always
1531
1532
# User interaction timer interval, in ms
1533
- name: dom.events.user_interaction_interval
1534
type: uint32_t
1535
value: 5000
1536
mirror: always
1537
1538
# Whether to expose test interfaces of various sorts
1539
- name: dom.expose_test_interfaces
1540
type: bool
1541
value: false
1542
mirror: always
1543
1544
- name: dom.fetchObserver.enabled
1545
type: RelaxedAtomicBool
1546
value: false
1547
mirror: always
1548
1549
# Allow the content process to create a File from a path. This is allowed just
1550
# on parent process, on 'file' Content process, or for testing.
1551
- name: dom.file.createInChild
1552
type: RelaxedAtomicBool
1553
value: false
1554
mirror: always
1555
1556
# Enable formData event
1557
- name: dom.formdata.event.enabled
1558
type: bool
1559
value: true
1560
mirror: always
1561
1562
# Support @autocomplete values for form autofill feature.
1563
- name: dom.forms.autocomplete.formautofill
1564
type: bool
1565
value: false
1566
mirror: always
1567
1568
# This pref just controls whether we format the number with grouping separator
1569
# characters when the internal value is set or updated. It does not stop the
1570
# user from typing in a number and using grouping separators.
1571
- name: dom.forms.number.grouping
1572
type: bool
1573
value: false
1574
mirror: always
1575
1576
# Whether the form.requestSubmit API is enabled
1577
- name: dom.forms.requestsubmit.enabled
1578
type: bool
1579
value: @IS_NIGHTLY_BUILD@
1580
mirror: always
1581
1582
# Whether the Gamepad API is enabled
1583
- name: dom.gamepad.enabled
1584
type: bool
1585
value: true
1586
mirror: always
1587
1588
# Is Gamepad Extension API enabled?
1589
- name: dom.gamepad.extensions.enabled
1590
type: bool
1591
value: true
1592
mirror: always
1593
1594
# Is LightIndicator API enabled in Gamepad Extension API?
1595
- name: dom.gamepad.extensions.lightindicator
1596
type: bool
1597
value: false
1598
mirror: always
1599
1600
# Is MultiTouch API enabled in Gamepad Extension API?
1601
- name: dom.gamepad.extensions.multitouch
1602
type: bool
1603
value: false
1604
mirror: always
1605
1606
# Is Gamepad vibrate haptic feedback function enabled?
1607
- name: dom.gamepad.haptic_feedback.enabled
1608
type: bool
1609
value: true
1610
mirror: always
1611
1612
- name: dom.gamepad.non_standard_events.enabled
1613
type: bool
1614
value: @IS_NOT_RELEASE_OR_BETA@
1615
mirror: always
1616
1617
- name: dom.gamepad.test.enabled
1618
type: bool
1619
value: false
1620
mirror: always
1621
1622
# W3C draft ImageCapture API
1623
- name: dom.imagecapture.enabled
1624
type: bool
1625
value: false
1626
mirror: always
1627
1628
# <img loading="lazy">
1629
#
1631
- name: dom.image-lazy-loading.enabled
1632
type: bool
1633
value: false
1634
mirror: always
1635
1636
# Enable passing the "storage" option to indexedDB.open.
1637
- name: dom.indexedDB.storageOption.enabled
1638
type: RelaxedAtomicBool
1639
value: false
1640
mirror: always
1641
1642
- name: dom.input_events.beforeinput.enabled
1643
type: bool
1644
value: false
1645
mirror: always
1646
1647
# Whether we conform to Input Events Level 1 or Input Events Level 2.
1648
# true: conforming to Level 1
1649
# false: conforming to Level 2
1650
- name: dom.input_events.conform_to_level_1
1651
type: bool
1652
value: true
1653
mirror: always
1654
1655
# Enable not moving the cursor to end when a text input or textarea has .value
1656
# set to the value it already has. By default, enabled.
1657
- name: dom.input.skip_cursor_move_for_same_value_set
1658
type: bool
1659
value: true
1660
mirror: always
1661
1662
- name: dom.IntersectionObserver.enabled
1663
type: bool
1664
value: true
1665
mirror: always
1666
1667
- name: dom.ipc.cancel_content_js_when_navigating
1668
type: bool
1669
value: true
1670
mirror: always
1671
1672
# How often to check for CPOW timeouts (ms). CPOWs are only timed
1673
# out by the hang monitor.
1674
- name: dom.ipc.cpow.timeout
1675
type: uint32_t
1676
value: 500
1677
mirror: always
1678
1679
# Allow Flash async drawing mode in 64-bit release builds.
1680
- name: dom.ipc.plugins.asyncdrawing.enabled
1681
type: RelaxedAtomicBool
1682
value: true
1683
mirror: always
1684
1685
# How long we wait before unloading an idle plugin process.
1686
- name: dom.ipc.plugins.unloadTimeoutSecs
1687
type: RelaxedAtomicUint32
1688
value: 30
1689
mirror: always
1690
1691
- name: dom.ipc.plugins.allow_dxgi_surface
1692
type: bool
1693
value: true
1694
mirror: always
1695
1696
# Enable e10s hang monitoring (slow script checking and plugin hang detection).
1697
- name: dom.ipc.processHangMonitor
1698
type: bool
1699
value: true
1700
mirror: once
1701
1702
# Whether we report such process hangs
1703
- name: dom.ipc.reportProcessHangs
1704
type: RelaxedAtomicBool
1705
# Don't report hangs in DEBUG builds. They're too slow and often a
1706
# debugger is attached.
1707
#ifdef DEBUG
1708
value: false
1709
#else
1710
value: true
1711
#endif
1712
mirror: always
1713
1714
- name: dom.ipc.tabs.disabled
1715
type: bool
1716
value: false
1717
mirror: always
1718
1719
# Process launch delay (im milliseconds).
1720
- name: dom.ipc.processPrelaunch.delayMs
1721
type: uint32_t
1722
# This number is fairly arbitrary ... the intention is to put off
1723
# launching another app process until the last one has finished
1724
# loading its content, to reduce CPU/memory/IO contention.
1725
value: 1000
1726
mirror: always
1727
1728
- name: dom.ipc.processPriorityManager.enabled
1729
type: bool
1730
value: false
1731
mirror: always
1732
1733
- name: dom.ipc.processPriorityManager.testMode
1734
type: bool
1735
value: false
1736
mirror: always
1737
1738
- name: dom.ipc.processPriorityManager.backgroundPerceivableGracePeriodMS
1739
type: uint32_t
1740
value: 0
1741
mirror: always
1742
1743
- name: dom.ipc.processPriorityManager.backgroundGracePeriodMS
1744
type: uint32_t
1745
value: 0
1746
mirror: always
1747
1748
# Is support for input type=date and type=time enabled?
1749
- name: dom.forms.datetime
1750
type: bool
1751
value: true
1752
mirror: always
1753
1754
# Is support for HTMLInputElement.inputMode enabled?
1755
- name: dom.forms.inputmode
1756
type: bool
1757
value: @IS_NOT_RELEASE_OR_BETA@
1758
mirror: always
1759
1760
# Enable Directory API. By default, disabled.
1761
- name: dom.input.dirpicker
1762
type: bool
1763
value: false
1764
mirror: always
1765
1766
# Is support for InputEvent.data enabled?
1767
- name: dom.inputevent.data.enabled
1768
type: bool
1769
value: true
1770
mirror: always
1771
1772
# Is support for InputEvent.dataTransfer enabled?
1773
- name: dom.inputevent.datatransfer.enabled
1774
type: bool
1775
value: true
1776
mirror: always
1777
1778
# Is support for InputEvent.inputType enabled?
1779
- name: dom.inputevent.inputtype.enabled
1780
type: bool
1781
value: true
1782
mirror: always
1783
1784
# How long a content process can take before closing its IPC channel
1785
# after shutdown is initiated. If the process exceeds the timeout,
1786
# we fear the worst and kill it.
1787
- name: dom.ipc.tabs.shutdownTimeoutSecs
1788
type: RelaxedAtomicUint32
1789
#if !defined(DEBUG) && !defined(MOZ_ASAN) && !defined(MOZ_VALGRIND) && !defined(MOZ_TSAN)
1790
value: 5
1791
#else
1792
value: 0
1793
#endif
1794
mirror: always
1795
1796
- name: dom.ipc.cpows.forbid-unsafe-from-browser
1797
type: bool
1798
value: false
1799
mirror: always
1800
1801
- name: dom.ipc.cpows.log.enabled
1802
type: bool
1803
value: false
1804
mirror: always
1805
1806
- name: dom.ipc.cpows.log.stack
1807
type: bool
1808
value: false
1809
mirror: always
1810
1811
# Whether a native event loop should be used in the content process.
1812
- name: dom.ipc.useNativeEventProcessing.content
1813
type: RelaxedAtomicBool
1814
#if defined(XP_WIN) || defined(XP_MACOSX)
1815
value: false
1816
#else
1817
value: true
1818
#endif
1819
mirror: always
1820
1821
# If this is true, TextEventDispatcher dispatches keydown and keyup events
1822
# even during composition (keypress events are never fired during composition
1823
# even if this is true).
1824
- name: dom.keyboardevent.dispatch_during_composition
1825
type: bool
1826
value: true
1827
mirror: always
1828
1829
# If this is true, keypress events for non-printable keys are dispatched only
1830
# for event listeners of the system event group in web content.
1831
- name: dom.keyboardevent.keypress.dispatch_non_printable_keys_only_system_group_in_content
1832
type: bool
1833
value: true
1834
mirror: always
1835
1836
# If this is true, "keypress" event's keyCode value and charCode value always
1837
# become same if the event is not created/initialized by JS.
1838
- name: dom.keyboardevent.keypress.set_keycode_and_charcode_to_same_value
1839
type: bool
1840
value: true
1841
mirror: always
1842
1843
- name: dom.largeAllocation.forceEnable
1844
type: bool
1845
value: false
1846
mirror: always
1847
1848
- name: dom.largeAllocation.testing.allHttpLoads
1849
type: bool
1850
value: false
1851
mirror: always
1852
1853
# Whether the disabled attribute in HTMLLinkElement disables the sheet loading
1854
# altogether, or forwards to the inner stylesheet method without attribute
1855
# reflection.
1856
#
1857
# Historical behavior is the second, the first is being discussed at:
1859
- name: dom.link.disabled_attribute.enabled
1860
type: bool
1861
value: true
1862
mirror: always
1863
1864
# Whether "W3C Web Manifest" processing is enabled
1865
- name: dom.manifest.enabled
1866
type: bool
1867
value: false
1868
mirror: always
1869
1870
# Whether window.onappinstalled from "W3C Web Manifest" is enabled
1871
- name: dom.manifest.onappinstalled
1872
type: bool
1873
value: false
1874
mirror: always
1875
1876
# Enable mapped array buffer by default.
1877
- name: dom.mapped_arraybuffer.enabled
1878
type: bool
1879
value: true
1880
mirror: always
1881
1882
# This pref is used to enable/disable the `document.autoplayPolicy` API which
1883
# returns a enum string which presents current autoplay policy and can change
1884
# overtime based on user session activity.
1885
- name: dom.media.autoplay.autoplay-policy-api
1886
type: bool
1887
value: false
1888
mirror: always
1889
1890
# Media Session API
1891
- name: dom.media.mediasession.enabled
1892
type: bool
1893
value: false
1894
mirror: always
1895
1896
# Enable meta-viewport support in remote APZ-enabled frames.
1897
- name: dom.meta-viewport.enabled
1898
type: RelaxedAtomicBool
1899
value: false
1900
mirror: always
1901
1902
# Timeout clamp in ms for timeouts we clamp.
1903
- name: dom.min_timeout_value
1904
type: int32_t
1905
value: 4
1906
mirror: always
1907
1908
# Timeout clamp in ms for background windows.
1909
- name: dom.min_background_timeout_value
1910
type: int32_t
1911
value: 1000
1912
mirror: always
1913
1914
# Are missing-property use counters for certain DOM attributes enabled?
1915
- name: dom.missing_prop_counters.enabled
1916
type: bool
1917
value: true
1918
mirror: always
1919
1920
# Is support for module scripts (<script type="module">) enabled for content?
1921
- name: dom.moduleScripts.enabled
1922
type: bool
1923
value: true
1924
mirror: always
1925
1926
# Is support for mozBrowser frames enabled?
1927
- name: dom.mozBrowserFramesEnabled
1928
type: bool
1929
value: false
1930
mirror: always
1931
1932
# Whether we disable triggering mutation events for changes to style
1933
# attribute via CSSOM.
1934
# NOTE: This preference is used in unit tests. If it is removed or its default
1935
# value changes, please update test_sharedMap_var_caches.js accordingly.
1936
- name: dom.mutation-events.cssom.disabled
1937
type: bool
1938
value: true
1939
mirror: always
1940
1941
# Network Information API
1942
- name: dom.netinfo.enabled
1943
type: RelaxedAtomicBool
1944
value: @IS_ANDROID@
1945
mirror: always
1946
1947
# Is support for Window.paintWorklet enabled?
1948
- name: dom.paintWorklet.enabled
1949
type: bool
1950
value: false
1951
mirror: always
1952
1953
# Enable/disable the PaymentRequest API
1954
- name: dom.payments.request.enabled
1955
type: bool
1956
value: false
1957
mirror: always
1958
1959
# Whether a user gesture is required to call PaymentRequest.prototype.show().
1960
- name: dom.payments.request.user_interaction_required
1961
type: bool
1962
value: true
1963
mirror: always
1964
1965
# Time in milliseconds for PaymentResponse to wait for
1966
# the Web page to call complete().
1967
- name: dom.payments.response.timeout
1968
type: uint32_t
1969
value: 5000
1970
mirror: always
1971
1972
# Enable printing performance marks/measures to log
1973
- name: dom.performance.enable_user_timing_logging
1974
type: RelaxedAtomicBool
1975
value: false
1976
mirror: always
1977
1978
- name: dom.performance.children_results_ipc_timeout
1979
type: uint32_t
1980
value: 1000
1981
mirror: always
1982
1983
# Enable notification of performance timing
1984
- name: dom.performance.enable_notify_performance_timing
1985
type: bool
1986
value: false
1987
mirror: always
1988
1989
# Is support for PerformanceTiming.timeToContentfulPaint enabled?
1990
- name: dom.performance.time_to_contentful_paint.enabled
1991
type: bool
1992
value: false
1993
mirror: always
1994
1995
# Is support for PerformanceTiming.timeToDOMContentFlushed enabled?
1996
- name: dom.performance.time_to_dom_content_flushed.enabled
1997
type: bool
1998
value: false
1999
mirror: always
2000
2001
# Is support for PerformanceTiming.timeToFirstInteractive enabled?
2002
- name: dom.performance.time_to_first_interactive.enabled
2003
type: bool
2004
value: false
2005
mirror: always
2006
2007
# Is support for PerformanceTiming.timeToNonBlankPaint enabled?
2008
- name: dom.performance.time_to_non_blank_paint.enabled
2009
type: bool
2010
value: false
2011
mirror: always
2012
2013
# Is support for Permissions.revoke enabled?
2014
- name: dom.permissions.revoke.enable
2015
type: bool
2016
value: false
2017
mirror: always
2018
2019
# Whether we should show the placeholder when the element is focused but empty.
2020
- name: dom.placeholder.show_on_focus
2021
type: bool
2022
value: true
2023
mirror: always
2024
2025
# Is support for Element.requestPointerLock enabled?
2026
# This is added for accessibility purpose. When user has no way to exit
2027
# pointer lock (e.g. no keyboard available), they can use this pref to
2028
# disable the Pointer Lock API altogether.
2029
- name: dom.pointer-lock.enabled
2030
type: bool
2031
value: true
2032
mirror: always
2033
2034
# re-SAB: Whether to allow postMessage of a SharedArrayBuffer if various
2035
# preconditions related to COOP and COEP are met
2036
- name: dom.postMessage.sharedArrayBuffer.withCOOP_COEP
2037
type: RelaxedAtomicBool
2038
#if !defined(ANDROID)
2039
value: @IS_NIGHTLY_BUILD@
2040
#else
2041
value: false # Blocked by DocumentChannel, see Bug 1589982.
2042
#endif
2043
mirror: always
2044
2045
# Overridden in all.js on RELEASE_OR_BETA in order to add the locked attribute.
2046
- name: dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled
2047
type: RelaxedAtomicBool
2048
value: false
2049
mirror: always
2050
2051
# Presentation API
2052
- name: dom.presentation.enabled
2053
type: bool
2054
#if defined(ANDROID)
2055
value: @IS_NOT_RELEASE_OR_BETA@
2056
#else
2057
value: false
2058
#endif
2059
mirror: always
2060
2061
- name: dom.presentation.controller.enabled
2062
type: bool
2063
#if defined(ANDROID)
2064
value: @IS_NOT_RELEASE_OR_BETA@
2065
#else
2066
value: false
2067
#endif
2068
mirror: always
2069
2070
- name: dom.presentation.receiver.enabled
2071
type: bool
2072
#if defined(ANDROID)
2073
value: @IS_NOT_RELEASE_OR_BETA@
2074
#else
2075
value: false
2076
#endif
2077
mirror: always
2078
2079
- name: dom.presentation.testing.simulate-receiver
2080
type: bool
2081
value: false
2082
mirror: always
2083
2084
# This currently only affects XHTML. For XUL the cache is always allowed.
2085
- name: dom.prototype_document_cache.enabled
2086
type: bool
2087
value: true
2088
mirror: always
2089
2090
# Push
2091
- name: dom.push.enabled
2092
type: RelaxedAtomicBool
2093
value: false
2094
mirror: always
2095
2096
2097
# Should we try to load origin information from the cache?
2098
# See bug 1563023 for more details.
2099
- name: dom.quotaManager.loadQuotaFromCache
2100
type: RelaxedAtomicBool
2101
value: true
2102
mirror: always
2103
2104
# Preference that users can set to override temporary storage smart limit
2105
# calculation.
2106
- name: dom.quotaManager.temporaryStorage.fixedLimit
2107
type: RelaxedAtomicInt32
2108
value: -1
2109
mirror: always
2110
2111
# Preference that users can set to override temporary storage smart limit
2112
# calculation.
2113
- name: dom.quotaManager.temporaryStorage.chunkSize
2114
type: RelaxedAtomicUint32
2115
value: 10 * 1024
2116
mirror: always
2117
2118
# A pref that is used to enable testing features.
2119
- name: dom.quotaManager.testing
2120
type: SequentiallyConsistentAtomicBool
2121
value: false
2122
mirror: always
2123
2124
# Is support for Navigator.registerContentHandler enabled?
2125
- name: dom.registerContentHandler.enabled
2126
type: bool
2127
value: false
2128
mirror: always
2129
2130
# Reporting API.
2131
- name: dom.reporting.enabled
2132
type: RelaxedAtomicBool
2133
value: @IS_NIGHTLY_BUILD@
2134
mirror: always
2135
2136
- name: dom.reporting.testing.enabled
2137
type: RelaxedAtomicBool
2138
value: false
2139
mirror: always
2140
2141
- name: dom.reporting.featurePolicy.enabled
2142
type: RelaxedAtomicBool
2143
value: @IS_NIGHTLY_BUILD@
2144
mirror: always
2145
2146
- name: dom.reporting.header.enabled
2147
type: RelaxedAtomicBool
2148
value: false
2149
mirror: always
2150
2151
# In seconds. The timeout to remove not-active report-to endpoints.
2152
- name: dom.reporting.cleanup.timeout
2153
type: uint32_t
2154
value: 3600
2155
mirror: always
2156
2157
# Any X seconds the reports are dispatched to endpoints.
2158
- name: dom.reporting.delivering.timeout
2159
type: uint32_t
2160
value: 5
2161
mirror: always
2162
2163
# How many times the delivering of a report should be tried.
2164
- name: dom.reporting.delivering.maxFailures
2165
type: uint32_t
2166
value: 3
2167
mirror: always
2168
2169
# How many reports should be stored in the report queue before being delivered.
2170
- name: dom.reporting.delivering.maxReports
2171
type: uint32_t
2172
value: 100
2173
mirror: always
2174
2175
# Enable requestIdleCallback API
2176
- name: dom.requestIdleCallback.enabled
2177
type: bool
2178
value: true
2179
mirror: always
2180
2181
#ifdef JS_BUILD_BINAST
2182
- name: dom.script_loader.binast_encoding.domain.restrict
2183
type: bool
2184
value: true
2185
mirror: always
2186
2187
- name: dom.script_loader.binast_encoding.enabled
2188
type: RelaxedAtomicBool
2189
value: false
2190
mirror: always
2191
#endif
2192
2193
# Whether to enable the JavaScript start-up cache. This causes one of the first
2194
# execution to record the bytecode of the JavaScript function used, and save it
2195
# in the existing cache entry. On the following loads of the same script, the
2196
# bytecode would be loaded from the cache instead of being generated once more.
2197
- name: dom.script_loader.bytecode_cache.enabled
2198
type: bool
2199
value: true
2200
mirror: always
2201
2202
# Ignore the heuristics of the bytecode cache, and always record on the first
2203
# visit. (used for testing purposes).
2204
2205
# Choose one strategy to use to decide when the bytecode should be encoded and
2206
# saved. The following strategies are available right now:
2207
# * -2 : (reader mode) The bytecode cache would be read, but it would never
2208
# be saved.
2209
# * -1 : (eager mode) The bytecode would be saved as soon as the script is
2210
# seen for the first time, independently of the size or last access
2211
# time.
2212
# * 0 : (default) The bytecode would be saved in order to minimize the
2213
# page-load time.
2214
#
2215
# Other values might lead to experimental strategies. For more details, have a
2216
# look at: ScriptLoader::ShouldCacheBytecode function.
2217
- name: dom.script_loader.bytecode_cache.strategy
2218
type: int32_t
2219
value: 0
2220
mirror: always
2221
2222
# Is support for decoding external (non-inline) classic or module DOM scripts
2223
# (i.e. anything but workers) as UTF-8, then directly compiling without
2224
# inflating to UTF-16, enabled?
2225
- name: dom.script_loader.external_scripts.utf8_parsing.enabled
2226
type: bool
2227
value: true
2228
mirror: always
2229
2230
- name: dom.securecontext.whitelist_onions
2231
type: bool
2232
value: false
2233
mirror: always
2234
2235
# This pref enables FeaturePolicy logic and the parsing of 'allow' attribute in
2236
# HTMLIFrameElement objects.
2237
- name: dom.security.featurePolicy.enabled
2238
type: bool
2239
value: @IS_EARLY_BETA_OR_EARLIER@
2240
mirror: always
2241
2242
# This pref enables the featurePolicy header support.
2243
- name: dom.security.featurePolicy.header.enabled
2244
type: bool
2245
value: @IS_NIGHTLY_BUILD@
2246
mirror: always
2247
2248
- name: dom.security.respect_document_nosniff
2249
type: RelaxedAtomicBool
2250
value: true
2251
mirror: always
2252
2253
- name: dom.security.featurePolicy.experimental.enabled
2254
type: bool
2255
value: false
2256
mirror: always
2257
2258
# Expose the 'policy' attribute in document and HTMLIFrameElement
2259
- name: dom.security.featurePolicy.webidl.enabled
2260
type: bool
2261
value: @IS_NIGHTLY_BUILD@
2262
mirror: always
2263
2264
# For testing purposes only: Flipping this pref to true allows
2265
# to skip the allowlist for about: pages and do not ship with a
2266
# CSP and NS_ASSERT right away.
2267
- name: dom.security.skip_about_page_csp_allowlist_and_assert
2268
type: RelaxedAtomicBool
2269
value: false
2270
mirror: always
2271
2272
# For testing purposes only: Flipping this pref to true allows
2273
# to skip the assertion that every about page ships with a CSP.
2274
- name: dom.security.skip_about_page_has_csp_assert
2275
type: RelaxedAtomicBool
2276
value: false
2277
mirror: always
2278
2279
# For testing purposes only: Flipping this pref to true allows
2280
# to skip the assertion that HTML fragments (e.g. innerHTML) can
2281
# not be used within chrome code or about: pages.
2282
- name: dom.security.skip_html_fragment_assertion
2283
type: RelaxedAtomicBool
2284
value: false
2285
mirror: always
2286
2287
# For testing purposes only; Flipping this pref to true allows
2288
# to skip the assertion that remote scripts can not be loaded
2289
# in system privileged contexts.
2290
- name: dom.security.skip_remote_script_assertion_in_system_priv_context
2291
type: RelaxedAtomicBool
2292
value: false
2293
mirror: always
2294
2295
# Is support for selection event APIs enabled?
2296
- name: dom.select_events.enabled
2297
type: bool
2298
value: true
2299
mirror: always
2300
2301
- name: dom.separate_event_queue_for_post_message.enabled
2302
type: bool
2303
value: true
2304
mirror: always
2305
2306
- name: dom.serviceWorkers.enabled
2307
type: RelaxedAtomicBool
2308
value: false
2309
mirror: always
2310
2311
# If true. then the service worker interception and the ServiceWorkerManager
2312
# will live in the parent process. This only takes effect on browser start.
2313
# Note, this is not currently safe to use for normal browsing yet.
2314
- name: dom.serviceWorkers.parent_intercept
2315
type: bool
2316
value: true
2317
mirror: never
2318
2319
- name: dom.serviceWorkers.testing.enabled
2320
type: RelaxedAtomicBool
2321
value: false
2322
mirror: always
2323
2324
# External.AddSearchProvider is deprecated and it will be removed in the next
2325
# cycles.
2326
- name: dom.sidebar.enabled
2327
type: bool
2328
value: true
2329
mirror: always
2330
2331
# Whether automatic storage access granting heuristics should be turned on.
2332
- name: dom.storage_access.auto_grants
2333
type: bool
2334
value: true
2335
mirror: always
2336
2337
- name: dom.storage_access.auto_grants.delayed
2338
type: bool
2339
value: true
2340
mirror: always
2341
2342
# Storage-access API.
2343
- name: dom.storage_access.enabled
2344
type: bool
2345
value: false
2346
mirror: always
2347
2348
# The maximum number of origins that a given third-party tracker is allowed
2349
# to have concurrent access to before the user is presented with a storage
2350
# access prompt. Only effective when the auto_grants pref is turned on.
2351
- name: dom.storage_access.max_concurrent_auto_grants
2352
type: int32_t
2353
value: 5
2354
mirror: always
2355
2356
# Enable Storage API for all platforms except Android.
2357
- name: dom.storageManager.enabled
2358
type: RelaxedAtomicBool
2359
value: @IS_NOT_ANDROID@
2360
mirror: always
2361
2362
# Should we abort LocalStorage requests when a sync message from parent is
2363
# detected?
2364
#
2365
# LocalStorage is a synchronous API involving sync IPC from the child to the
2366
# parent. Accessibility interfaces currently also involve different forms of
2367
# synchronous parent-to-child communication. (See bug 1516136 comment 11 and
2368
# comment 15.) Although LocalStorage NextGen no longer needs to consult the
2369
# main thread, thereby eliminating the possibility of deadlock, the browser is
2370
# very complex and so we have retained a fail-safe mechanism that will cause
2371
# blocking LocalStorage operations to abort on synchronous IPC from the parent
2372
# to the child.
2373
#
2374
# We are disabling this fail-safe mechanism because it is fundamentally visible
2375
# to content when activated. When we abort the synchronous LocalStorage
2376
# operation we throw an error which has the potential to break web content.
2377
# This is not a hypothetical. In bug 1574569 content broke due to accessibility
2378
# path aborting the LS call, but the LS call didn't need to abort because it
2379
# was not at risk of deadlock.
2380
#
2381
# But we are retaining the preference in the event that regressions occur
2382
# anywhere in the code-base that could cause a cascade that would result in
2383
# deadlock. (There have been logic bugs in components that resulted in
2384
# PBackground synchronously blocking in a way that could result in deadlock.)
2385
# This allows us to re-enable the fail-safe with only a pref flip.
2386
- name: dom.storage.abort_on_sync_parent_to_child_messages
2387
type: bool
2388
value: false
2389
mirror: always
2390
2391
# LocalStorage data limit as determined by summing up the lengths of all string
2392
# keys and values. This is consistent with the legacy implementation and other
2393
# browser engines. This value should really only ever change in unit testing
2394
# where being able to lower it makes it easier for us to test certain edge
2395
# cases. Measured in KiBs.
2396
- name: dom.storage.default_quota
2397
type: RelaxedAtomicUint32
2398
# Only allow relatively small amounts of data since performance of the
2399
# synchronous IO is very bad. We are enforcing simple per-origin quota only.
2400
value: 5 * 1024
2401
mirror: always
2402
2403
# Is support for Storage test APIs enabled?
2404
- name: dom.storage.testing
2405
type: bool
2406
value: false
2407
mirror: always
2408
2409
# For area and anchor elements with target=_blank and no rel set to
2410
# opener/noopener.
2411
- name: dom.targetBlankNoOpener.enabled
2412
type: bool
2413
value: @IS_EARLY_BETA_OR_EARLIER@
2414
mirror: always
2415
2416
# Is support for Selection.GetRangesForInterval enabled?
2417
- name: dom.testing.selection.GetRangesForInterval
2418
type: bool
2419
value: false
2420
mirror: always
2421
2422
- name: dom.testing.structuredclonetester.enabled
2423
type: RelaxedAtomicBool
2424
value: false
2425
mirror: always
2426
2427
- name: dom.testing.sync-content-blocking-notifications
2428
type: bool
2429
value: false
2430
mirror: always
2431
2432
- name: dom.textMetrics.actualBoundingBox.enabled
2433
type: bool
2434
value: true
2435
mirror: always
2436
2437
- name: dom.textMetrics.baselines.enabled
2438
type: bool
2439
value: false
2440
mirror: always
2441
2442
- name: dom.textMetrics.emHeight.enabled
2443
type: bool
2444
value: false
2445
mirror: always
2446
2447
- name: dom.textMetrics.fontBoundingBox.enabled
2448
type: bool
2449
value: false
2450
mirror: always
2451
2452
# Time (in ms) that it takes to regenerate 1ms.
2453
- name: dom.timeout.background_budget_regeneration_rate
2454
type: int32_t
2455
value: 100
2456
mirror: always
2457
2458
# Time (in ms) that it takes to regenerate 1ms.
2459
- name: dom.timeout.foreground_budget_regeneration_rate
2460
type: int32_t
2461
value: 1
2462
mirror: always
2463
2464
# Maximum value (in ms) for the background budget. Only valid for
2465
# values greater than 0.
2466
- name: dom.timeout.background_throttling_max_budget
2467
type: int32_t
2468
value: 50
2469
mirror: always
2470
2471
# Maximum value (in ms) for the foreground budget. Only valid for
2472
# values greater than 0.
2473
- name: dom.timeout.foreground_throttling_max_budget
2474
type: int32_t
2475
value: -1
2476
mirror: always
2477
2478
# The maximum amount a timeout can be delayed by budget throttling.
2479
- name: dom.timeout.budget_throttling_max_delay
2480
type: int32_t
2481
value: 15000
2482
mirror: always
2483
2484
# Turn on budget throttling by default.
2485
- name: dom.timeout.enable_budget_timer_throttling
2486
type: bool
2487
value: true
2488
mirror: always
2489
2490
# Should we defer timeouts and intervals while loading a page. Released
2491
# on Idle or when the page is loaded.
2492
- name: dom.timeout.defer_during_load
2493
type: bool
2494
value: true
2495
mirror: always
2496
2497
# Maximum amount of time in milliseconds consecutive setTimeout()/setInterval()
2498
# callback are allowed to run before yielding the event loop.
2499
- name: dom.timeout.max_consecutive_callbacks_ms
2500
type: uint32_t
2501
value: 4
2502
mirror: always
2503
2504
# Maximum deferral time for setTimeout/Interval in milliseconds
2505
- name: dom.timeout.max_idle_defer_ms
2506
type: uint32_t
2507
value: 10*1000
2508
mirror: always
2509
2510
# Delay in ms from document load until we start throttling background timeouts.
2511
- name: dom.timeout.throttling_delay
2512
type: int32_t
2513
value: 30000
2514
mirror: always
2515
2516
# UDPSocket API
2517
- name: dom.udpsocket.enabled
2518
type: bool
2519
value: false
2520
mirror: always
2521
2522
# Time limit, in milliseconds, for user gesture transient activation.
2523
- name: dom.user_activation.transient.timeout
2524
type: uint32_t
2525
value: 5000
2526
mirror: always
2527
2528
# Is support for Window.visualViewport enabled?
2529
- name: dom.visualviewport.enabled
2530
type: bool
2531
value: false
2532
mirror: always
2533
2534
# Is support for WebVR APIs enabled?
2535
# Enabled by default in beta and release for Windows and OS X and for all
2536
# platforms in nightly and aurora.
2537
- name: dom.vr.enabled
2538
type: RelaxedAtomicBool
2539
#if defined(XP_WIN) || defined(XP_DARWIN) || !defined(RELEASE_OR_BETA)
2540
value: true
2541
#else
2542
value: false
2543
#endif
2544
mirror: always
2545
2546
# Should VR sessions always be reported as supported, without first
2547
# checking for VR runtimes? This will prevent permission prompts
2548
# from being suppressed on machines without VR runtimes and cause
2549
# navigatior.xr.isSessionSupported to always report that immersive-vr
2550
# is supported.
2551
- name: dom.vr.always_support_vr
2552
type: RelaxedAtomicBool
2553
value: false
2554
mirror: always
2555
2556
# Should AR sessions always be reported as supported, without first
2557
# checking for AR runtimes? This will prevent permission prompts
2558
# from being suppressed on machines without AR runtimes and cause
2559
# navigatior.xr.isSessionSupported to always report that immersive-ar
2560
# is supported.
2561
- name: dom.vr.always_support_ar
2562
type: RelaxedAtomicBool
2563
value: false
2564
mirror: always
2565
2566
# It is often desirable to automatically start vr presentation when
2567
# a user puts on the VR headset. This is done by emitting the
2568
# Window.vrdisplayactivate event when the headset's sensors detect it
2569
# being worn. This can result in WebVR content taking over the headset
2570
# when the user is using it outside the browser or inadvertent start of
2571
# presentation due to the high sensitivity of the proximity sensor in some
2572
# headsets, so it is off b