Backed out 4 changesets (bug 1879154) for causing bustage on nsUserCharacteristics...
[gecko.git] / modules / libpref / init / all.js
blobe089705f175d3e5c2e1dec8283160d9bc200a5a5
1 // -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
2 // This Source Code Form is subject to the terms of the Mozilla Public
3 // License, v. 2.0. If a copy of the MPL was not distributed with this
4 // file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 // The prefs in this file are shipped with the GRE and should apply to all
7 // embedding situations. Application-specific preferences belong somewhere
8 // else, such as browser/app/profile/firefox.js or
9 // mobile/android/app/geckoview-prefs.js.
11 // NOTE: Not all prefs should be defined in this (or any other) data file.
12 // Static prefs are defined in StaticPrefList.yaml. Those prefs should *not*
13 // appear in this file.
15 // For the syntax used by this file, consult the comments at the top of
16 // modules/libpref/parser/src/lib.rs.
18 // Please indent all prefs defined within #ifdef/#ifndef conditions. This
19 // improves readability, particular for conditional blocks that exceed a single
20 // screen.
22 pref("security.tls.insecure_fallback_hosts", "");
24 pref("security.default_personal_cert",   "Ask Every Time");
25 pref("security.remember_cert_checkbox_default_setting", true);
27 // This preference controls what signature algorithms are accepted for signed
28 // apps (i.e. add-ons). The number is interpreted as a bit mask with the
29 // following semantic:
30 // The lowest order bit determines which PKCS#7 algorithms are accepted.
31 // xxx_0_: SHA-1 and/or SHA-256 PKCS#7 allowed
32 // xxx_1_: SHA-256 PKCS#7 allowed
33 // The next two bits determine whether COSE is required and PKCS#7 is allowed
34 // x_00_x: COSE disabled, ignore files, PKCS#7 must verify
35 // x_01_x: COSE is verified if present, PKCS#7 must verify
36 // x_10_x: COSE is required, PKCS#7 must verify if present
37 // x_11_x: COSE is required, PKCS#7 disabled (fail when present)
38 pref("security.signed_app_signatures.policy", 2);
40 pref("security.xfocsp.errorReporting.enabled", true);
41 pref("security.xfocsp.errorReporting.automatic", false);
43 // Issuer we use to detect MitM proxies. Set to the issuer of the cert of the
44 // Firefox update service. The string format is whatever NSS uses to print a DN.
45 // This value is set and cleared automatically.
46 pref("security.pki.mitm_canary_issuer", "");
47 // Pref to disable the MitM proxy checks.
48 pref("security.pki.mitm_canary_issuer.enabled", true);
50 // It is set to true when a non-built-in root certificate is detected on a
51 // Firefox update service's connection.
52 // This value is set automatically.
53 // The difference between security.pki.mitm_canary_issuer and this pref is that
54 // here the root is trusted but not a built-in, whereas for
55 // security.pki.mitm_canary_issuer.enabled, the root is not trusted.
56 pref("security.pki.mitm_detected", false);
58 // Intermediate CA Preloading settings
59 pref("security.remote_settings.intermediates.enabled", true);
60 pref("security.remote_settings.intermediates.downloads_per_poll", 5000);
61 pref("security.remote_settings.intermediates.parallel_downloads", 8);
63 #if defined(EARLY_BETA_OR_EARLIER) && !defined(MOZ_WIDGET_ANDROID)
64   pref("security.remote_settings.crlite_filters.enabled", true);
65 #else
66   pref("security.remote_settings.crlite_filters.enabled", false);
67 #endif
69 pref("security.osreauthenticator.blank_password", false);
70 pref("security.osreauthenticator.password_last_changed_lo", 0);
71 pref("security.osreauthenticator.password_last_changed_hi", 0);
73 pref("security.crash_tracking.js_load_1.prevCrashes", 0);
74 pref("security.crash_tracking.js_load_1.maxCrashes", 1);
76 pref("general.useragent.compatMode.firefox", false);
78 pref("general.config.obscure_value", 13); // for MCD .cfg files
80 #ifndef MOZ_BUILD_APP_IS_BROWSER
81 pref("general.warnOnAboutConfig", true);
82 #endif
84 // Whether middle button click with a modifier key starts to autoscroll or
85 // does nothing.
86 pref("general.autoscroll.prevent_to_start.shiftKey", true); // Shift
87 pref("general.autoscroll.prevent_to_start.ctrlKey", false); // Control
88 pref("general.autoscroll.prevent_to_start.altKey", false);  // Alt
89 // Command on macOS, Windows key on Windows or Super key on Linux
90 pref("general.autoscroll.prevent_to_start.metaKey", false);
92 // When this pref is set to true, middle click on non-editable content keeps
93 // selected range rather than collapsing selection at the clicked position.
94 // This behavior is incompatible with Chrome, so enabling this could cause
95 // breaking some web apps.
96 // Note that this pref is ignored when "general.autoScroll" is set to false
97 // or "middlemouse.paste" is set to true.  For the former case, there is no
98 // reason do be incompatible with Chrome.  For the latter case, the selection
99 // change is important for "paste" event listeners even if it's non-editable
100 // content.
101 pref("general.autoscroll.prevent_to_collapse_selection_by_middle_mouse_down", false);
103 // maximum number of dated backups to keep at any time
104 pref("browser.bookmarks.max_backups",       5);
106 pref("browser.cache.disk_cache_ssl",        true);
107 // The half life used to re-compute cache entries frecency in hours.
108 pref("browser.cache.frecency_half_life_hours", 6);
110 // Don't show "Open with" option on download dialog if true.
111 pref("browser.download.forbid_open_with", false);
113 // Enable indexedDB logging.
114 pref("dom.indexedDB.logging.enabled", true);
115 // Detailed output in log messages.
116 pref("dom.indexedDB.logging.details", true);
117 // Enable profiler marks for indexedDB events.
118 pref("dom.indexedDB.logging.profiler-marks", false);
120 // The number of workers per domain allowed to run concurrently.
121 // We're going for effectively infinite, while preventing abuse.
122 pref("dom.workers.maxPerDomain", 512);
124 // The amount of time (milliseconds) service workers keep running after each event.
125 pref("dom.serviceWorkers.idle_timeout", 30000);
127 // The amount of time (milliseconds) service workers can be kept running using waitUntil promises
128 // or executing "long-running" JS after the "idle_timeout" period has expired.
129 pref("dom.serviceWorkers.idle_extended_timeout", 30000);
131 // The amount of time (milliseconds) an update request is delayed when triggered
132 // by a service worker that doesn't control any clients.
133 pref("dom.serviceWorkers.update_delay", 1000);
135 // Enable test for 24 hours update, service workers will always treat last update check time is over 24 hours
136 pref("dom.serviceWorkers.testUpdateOverOneDay", false);
138 // Blacklist of domains of web apps which are not aware of strict keypress
139 // dispatching behavior.  This is comma separated list.  If you need to match
140 // all sub-domains, you can specify it as "*.example.com".  Additionally, you
141 // can limit the path.  E.g., "example.com/foo" means "example.com/foo*".  So,
142 // if you need to limit under a directory, the path should end with "/" like
143 // "example.com/foo/".  Note that this cannot limit port number for now.
144 pref("dom.keyboardevent.keypress.hack.dispatch_non_printable_keys", "www.icloud.com");
145 // Pref for end-users and policy to add additional values.
146 pref("dom.keyboardevent.keypress.hack.dispatch_non_printable_keys.addl", "");
148 // Blacklist of domains of web apps which handle keyCode and charCode of
149 // keypress events with a path only for Firefox (i.e., broken if we set
150 // non-zero keyCode or charCode value to the other).  The format is exactly
151 // same as "dom.keyboardevent.keypress.hack.dispatch_non_printable_keys". So,
152 // check its explanation for the detail.
153 pref("dom.keyboardevent.keypress.hack.use_legacy_keycode_and_charcode", "*.collabserv.com,*.gov.online.office365.us,*.officeapps-df.live.com,*.officeapps.live.com,*.online.office.de,*.partner.officewebapps.cn,*.scniris.com");
154 // Pref for end-users and policy to add additional values.
155 pref("dom.keyboardevent.keypress.hack.use_legacy_keycode_and_charcode.addl", "");
157 // Text recognition is a platform dependent feature, so even if this preference is
158 // enabled here, the feature may not be visible in all browsers.
159 pref("dom.text-recognition.enabled", true);
161 // Fastback caching - if this pref is negative, then we calculate the number
162 // of content viewers to cache based on the amount of available memory.
163 pref("browser.sessionhistory.max_total_viewers", -1);
165 // See http://whatwg.org/specs/web-apps/current-work/#ping
166 pref("browser.send_pings", false);
167 pref("browser.send_pings.max_per_link", 1);           // limit the number of pings that are sent per link click
168 pref("browser.send_pings.require_same_host", false);  // only send pings to the same host if this is true
170 pref("browser.helperApps.neverAsk.saveToDisk", "");
171 pref("browser.helperApps.neverAsk.openFile", "");
172 pref("browser.helperApps.deleteTempFileOnExit", false);
174 pref("browser.triple_click_selects_paragraph", true);
176 // Enable fillable forms in the PDF viewer.
177 pref("pdfjs.annotationMode", 2);
179 // Enable editing in the PDF viewer.
180 pref("pdfjs.annotationEditorMode", 0);
182 // Enable JavaScript support in the PDF viewer.
183 pref("pdfjs.enableScripting", true);
185 // Enable XFA form support in the PDF viewer.
186 pref("pdfjs.enableXfa", true);
188 // Enable adding an image in a pdf.
189 pref("pdfjs.enableStampEditor", true);
191 // Enable adding an image in a pdf.
192 #if defined(EARLY_BETA_OR_EARLIER)
193   pref("pdfjs.enableHighlightEditor", true);
194 #else
195   pref("pdfjs.enableHighlightEditor", false);
196 #endif
198 // Disable support for MathML
199 pref("mathml.disabled",    false);
201 // Enable scale transform for stretchy MathML operators. See bug 414277.
202 pref("mathml.scale_stretchy_operators.enabled", true);
204 // We'll throttle the download if the download rate is throttle-factor times
205 // the estimated playback rate, AND we satisfy the cache readahead_limit
206 // above. The estimated playback rate is time_duration/length_in_bytes.
207 // This means we'll only throttle the download if there's no concern that
208 // throttling would cause us to stop and buffer.
209 pref("media.throttle-factor", 2);
211 // Master HTML5 media volume scale.
212 pref("media.volume_scale", "1.0");
214 // Whether we should play videos opened in a "video document", i.e. videos
215 // opened as top-level documents, as opposed to inside a media element.
216 pref("media.play-stand-alone", true);
218 #ifdef MOZ_WMF
219   pref("media.wmf.dxva.enabled", true);
220   pref("media.wmf.play-stand-alone", true);
221 #endif
223 // GMP storage version number. At startup we check the version against
224 // media.gmp.storage.version.observed, and if the versions don't match,
225 // we clear storage and set media.gmp.storage.version.observed=expected.
226 // This provides a mechanism to clear GMP storage when non-compatible
227 // changes are made.
228 pref("media.gmp.storage.version.expected", 1);
230 // Filter what triggers user notifications.
231 // See DecoderDoctorDocumentWatcher::ReportAnalysis for details.
232 #ifdef NIGHTLY_BUILD
233   pref("media.decoder-doctor.notifications-allowed", "MediaWMFNeeded,MediaWidevineNoWMF,MediaCannotInitializePulseAudio,MediaCannotPlayNoDecoders,MediaUnsupportedLibavcodec,MediaPlatformDecoderNotFound,MediaDecodeError");
234 #else
235   pref("media.decoder-doctor.notifications-allowed", "MediaWMFNeeded,MediaWidevineNoWMF,MediaCannotInitializePulseAudio,MediaCannotPlayNoDecoders,MediaUnsupportedLibavcodec,MediaPlatformDecoderNotFound");
236 #endif
237 pref("media.decoder-doctor.decode-errors-allowed", "");
238 pref("media.decoder-doctor.decode-warnings-allowed", "");
239 // Whether we report partial failures.
240 pref("media.decoder-doctor.verbose", false);
241 // URL to report decode issues
242 pref("media.decoder-doctor.new-issue-endpoint", "https://webcompat.com/issues/new");
244 pref("media.videocontrols.picture-in-picture.enabled", false);
245 pref("media.videocontrols.picture-in-picture.display-text-tracks.enabled", true);
246 pref("media.videocontrols.picture-in-picture.video-toggle.enabled", false);
247 pref("media.videocontrols.picture-in-picture.video-toggle.always-show", false);
248 pref("media.videocontrols.picture-in-picture.video-toggle.min-video-secs", 45);
249 pref("media.videocontrols.picture-in-picture.video-toggle.position", "right");
250 pref("media.videocontrols.picture-in-picture.video-toggle.has-used", false);
251 pref("media.videocontrols.picture-in-picture.display-text-tracks.toggle.enabled", true);
252 pref("media.videocontrols.picture-in-picture.display-text-tracks.size", "medium");
253 pref("media.videocontrols.picture-in-picture.improved-video-controls.enabled", true);
254 pref("media.videocontrols.picture-in-picture.respect-disablePictureInPicture", true);
255 pref("media.videocontrols.keyboard-tab-to-all-controls", true);
257 #ifdef MOZ_WEBRTC
258   pref("media.navigator.video.enabled", true);
259   pref("media.navigator.video.default_fps",30);
260   pref("media.navigator.video.use_remb", true);
261   pref("media.navigator.video.use_transport_cc", true);
262   pref("media.peerconnection.video.use_rtx", true);
263   pref("media.peerconnection.video.use_rtx.blocklist", "doxy.me,*.doxy.me");
264   pref("media.navigator.video.use_tmmbr", false);
265   pref("media.navigator.audio.use_fec", true);
266   pref("media.navigator.video.offer_rtcp_rsize", true);
268   #ifdef NIGHTLY_BUILD
269     pref("media.peerconnection.sdp.parser", "sipcc");
270     pref("media.peerconnection.sdp.alternate_parse_mode", "parallel");
271     pref("media.peerconnection.sdp.strict_success", false);
272     pref("media.navigator.video.red_ulpfec_enabled", true);
273   #else
274     pref("media.peerconnection.sdp.parser", "sipcc");
275     pref("media.peerconnection.sdp.alternate_parse_mode", "never");
276     pref("media.peerconnection.sdp.strict_success", false);
277     pref("media.navigator.video.red_ulpfec_enabled", true);
278   #endif
280   pref("media.peerconnection.sdp.disable_stereo_fmtp", false);
281   pref("media.webrtc.debug.log_file", "");
283   pref("media.navigator.video.default_width",0);  // adaptive default
284   pref("media.navigator.video.default_height",0); // adaptive default
285   pref("media.navigator.video.max_fs", 12288); // Enough for 2048x1536
286   pref("media.navigator.video.max_fr", 60);
287   pref("media.navigator.video.h264.level", 31); // 0x42E01f - level 3.1
288   pref("media.navigator.video.h264.max_br", 0);
289   pref("media.navigator.video.h264.max_mbps", 0);
290   pref("media.peerconnection.video.vp9_enabled", true);
291   pref("media.peerconnection.video.vp9_preferred", false);
292   pref("media.getusermedia.channels", 0);
293   #if defined(ANDROID)
294     pref("media.getusermedia.camera.off_while_disabled.enabled", false);
295     pref("media.getusermedia.microphone.off_while_disabled.enabled", false);
296   #else
297     pref("media.getusermedia.camera.off_while_disabled.enabled", true);
298     pref("media.getusermedia.microphone.off_while_disabled.enabled", false);
299   #endif
300   pref("media.getusermedia.camera.off_while_disabled.delay_ms", 3000);
301   pref("media.getusermedia.microphone.off_while_disabled.delay_ms", 3000);
302   // Desktop is typically VGA capture or more; and qm_select will not drop resolution
303   // below 1/2 in each dimension (or so), so QVGA (320x200) is the lowest here usually.
304   pref("media.peerconnection.video.min_bitrate", 0);
305   pref("media.peerconnection.video.start_bitrate", 0);
306   pref("media.peerconnection.video.max_bitrate", 0);
307   pref("media.peerconnection.video.min_bitrate_estimate", 0);
308   pref("media.peerconnection.video.denoising", false);
309   pref("media.navigator.audio.fake_frequency", 1000);
310   pref("media.navigator.permission.disabled", false);
311   pref("media.navigator.streams.fake", false);
312   pref("media.peerconnection.default_iceservers", "[]");
313   pref("media.peerconnection.allow_old_setParameters", true);
314   pref("media.peerconnection.ice.loopback", false); // Set only for testing in offline environments.
315   pref("media.peerconnection.ice.tcp", true);
316   pref("media.peerconnection.ice.tcp_so_sock_count", 0); // Disable SO gathering
317   pref("media.peerconnection.ice.link_local", false); // Set only for testing IPV6 in networks that don't assign IPV6 addresses
318   pref("media.peerconnection.ice.force_interface", ""); // Limit to only a single interface
319   pref("media.peerconnection.ice.relay_only", false); // Limit candidates to TURN
320   pref("media.peerconnection.use_document_iceservers", true);
322   pref("media.peerconnection.identity.timeout", 10000);
323   pref("media.peerconnection.ice.stun_client_maximum_transmits", 7);
324   pref("media.peerconnection.ice.trickle_grace_period", 5000);
325   pref("media.peerconnection.ice.no_host", false);
326   pref("media.peerconnection.ice.default_address_only", false);
327   // See Bug 1581947 for Android hostname obfuscation
328   #if defined(MOZ_WIDGET_ANDROID)
329     pref("media.peerconnection.ice.obfuscate_host_addresses", false);
330   #else
331     pref("media.peerconnection.ice.obfuscate_host_addresses", true);
332   #endif
333   pref("media.peerconnection.ice.obfuscate_host_addresses.blocklist", "");
334   pref("media.peerconnection.ice.proxy_only_if_behind_proxy", false);
335   pref("media.peerconnection.ice.proxy_only", false);
336   pref("media.peerconnection.ice.proxy_only_if_pbmode", false);
337   pref("media.peerconnection.turn.disable", false);
339   // 770 = DTLS 1.0, 771 = DTLS 1.2, 772 = DTLS 1.3
340 pref("media.peerconnection.dtls.version.min", 771);
341 #ifdef NIGHTLY_BUILD
342   pref("media.peerconnection.dtls.version.max", 772);
343 #else
344   pref("media.peerconnection.dtls.version.max", 771);
345 #endif
347   // These values (aec, agc, and noise) are from:
348   // third_party/libwebrtc/modules/audio_processing/include/audio_processing.h
349   pref("media.getusermedia.aec_enabled", true);
350   pref("media.getusermedia.aec", 1); // kModerateSuppression
351   pref("media.getusermedia.use_aec_mobile", false);
352   pref("media.getusermedia.noise_enabled", true);
353   pref("media.getusermedia.noise", 2); // kHigh
354   pref("media.getusermedia.agc_enabled", true);
355   pref("media.getusermedia.agc", 1); // kAdaptiveDigital
356   pref("media.getusermedia.agc2_forced", true);
357   pref("media.getusermedia.hpf_enabled", true);
358   pref("media.getusermedia.transient_enabled", true);
359 #endif // MOZ_WEBRTC
361 #if !defined(ANDROID)
362   pref("media.getusermedia.screensharing.enabled", true);
363 #endif
365 pref("media.getusermedia.audiocapture.enabled", false);
367 // WebVTT debug logging.
368 pref("media.webvtt.debug.logging", false);
370 // Whether to allow recording of AudioNodes with MediaRecorder
371 pref("media.recorder.audio_node.enabled", false);
373 // Whether MediaRecorder's video encoder should allow dropping frames in order
374 // to keep up under load. Useful for tests but beware of memory consumption!
375 pref("media.recorder.video.frame_drops", true);
377 // The default number of decoded video frames that are enqueued in
378 // MediaDecoderReader's mVideoQueue.
379 pref("media.video-queue.default-size", 10);
381 // The maximum number of queued frames to send to the compositor.
382 // By default, send all of them.
383 pref("media.video-queue.send-to-compositor-size", 9999);
385 pref("media.cubeb.output_voice_routing", true);
387 // APZ preferences. For documentation/details on what these prefs do, check
388 // gfx/layers/apz/src/AsyncPanZoomController.cpp.
389 pref("apz.overscroll.stop_velocity_threshold", "0.01");
390 pref("apz.overscroll.stretch_factor", "0.35");
392 pref("apz.zoom-to-focused-input.enabled", true);
394 pref("formhelper.autozoom.force-disable.test-only", false);
396 #ifdef XP_MACOSX
397   // Whether to run in native HiDPI mode on machines with "Retina"/HiDPI
398   // display.
399   //   <= 0 : hidpi mode disabled, display will just use pixel-based upscaling.
400   //   == 1 : hidpi supported if all screens share the same backingScaleFactor.
401   //   >= 2 : hidpi supported even with mixed backingScaleFactors (somewhat
402   //          broken).
403   pref("gfx.hidpi.enabled", 2);
404 #endif
406 pref("gfx.downloadable_fonts.enabled", true);
407 pref("gfx.downloadable_fonts.fallback_delay", 3000);
408 pref("gfx.downloadable_fonts.fallback_delay_short", 100);
410 // disable downloadable font cache so that behavior is consistently
411 // the uncached load behavior across pages (useful for testing reflow problems)
412 pref("gfx.downloadable_fonts.disable_cache", false);
414 #ifdef XP_WIN
415   pref("gfx.font_rendering.directwrite.use_gdi_table_loading", true);
416 #endif
418 #if defined(XP_WIN)
419   // comma separated list of backends to use in order of preference
420   // e.g., pref("gfx.canvas.azure.backends", "direct2d,skia");
421   pref("gfx.canvas.azure.backends", "direct2d1.1,skia");
422 #elif defined(XP_MACOSX)
423   pref("gfx.canvas.azure.backends", "skia");
424 #else
425   pref("gfx.canvas.azure.backends", "skia");
426 #endif
427 pref("gfx.content.azure.backends", "skia");
429 #ifdef XP_WIN
430   pref("gfx.webrender.flip-sequential", false);
431   pref("gfx.webrender.dcomp-win.enabled", true);
432   pref("gfx.webrender.triple-buffering.enabled", true);
433 #endif
435 // WebRender debugging utilities.
436 pref("gfx.webrender.debug.texture-cache", false);
437 pref("gfx.webrender.debug.texture-cache.clear-evicted", true);
438 pref("gfx.webrender.debug.render-targets", false);
439 pref("gfx.webrender.debug.gpu-cache", false);
440 pref("gfx.webrender.debug.alpha-primitives", false);
441 pref("gfx.webrender.debug.profiler", false);
442 pref("gfx.webrender.debug.gpu-time-queries", false);
443 pref("gfx.webrender.debug.gpu-sample-queries", false);
444 pref("gfx.webrender.debug.disable-batching", false);
445 pref("gfx.webrender.debug.epochs", false);
446 pref("gfx.webrender.debug.echo-driver-messages", false);
447 pref("gfx.webrender.debug.show-overdraw", false);
448 pref("gfx.webrender.debug.slow-frame-indicator", false);
449 pref("gfx.webrender.debug.picture-caching", false);
450 pref("gfx.webrender.debug.force-picture-invalidation", false);
451 pref("gfx.webrender.debug.primitives", false);
452 pref("gfx.webrender.debug.small-screen", false);
453 pref("gfx.webrender.debug.obscure-images", false);
454 pref("gfx.webrender.debug.glyph-flashing", false);
455 pref("gfx.webrender.debug.capture-profiler", false);
456 pref("gfx.webrender.debug.profiler-ui", "Default");
457 pref("gfx.webrender.debug.window-visibility", false);
459 pref("gfx.webrender.multithreading", true);
460 #ifdef XP_WIN
461 pref("gfx.webrender.pbo-uploads", false);
462 pref("gfx.webrender.batched-texture-uploads", true);
463 pref("gfx.webrender.draw-calls-for-texture-copy", true);
464 #else
465 pref("gfx.webrender.pbo-uploads", true);
466 pref("gfx.webrender.batched-texture-uploads", false);
467 pref("gfx.webrender.draw-calls-for-texture-copy", false);
468 #endif
471 pref("accessibility.warn_on_browsewithcaret", true);
473 pref("accessibility.browsewithcaret_shortcut.enabled", true);
475 #ifndef XP_MACOSX
476   // Tab focus model bit field:
477   // 1 focuses text controls, 2 focuses other form elements, 4 adds links.
478   // Most users will want 1, 3, or 7.
479   // On OS X, we use Full Keyboard Access system preference,
480   // unless accessibility.tabfocus is set by the user.
481   pref("accessibility.tabfocus", 7);
482   pref("accessibility.tabfocus_applies_to_xul", false);
483 #else
484   // Only on mac tabfocus is expected to handle UI widgets as well as web
485   // content.
486   pref("accessibility.tabfocus_applies_to_xul", true);
487 #endif
489 // We follow the "Click in the scrollbar to:" system preference on OS X and
490 // "gtk-primary-button-warps-slider" property with GTK (since 2.24 / 3.6),
491 // unless this preference is explicitly set.
492 #if !defined(XP_MACOSX) && !defined(MOZ_WIDGET_GTK)
493   pref("ui.scrollToClick", 0);
494 #endif
496 // These are some selection-related colors which have no per platform
497 // implementation.
498 #if !defined(XP_MACOSX)
499 pref("ui.textSelectDisabledBackground", "#b0b0b0");
500 #endif
502 // This makes the selection stand out when typeaheadfind is on.
503 // Used with nsISelectionController::SELECTION_ATTENTION
504 pref("ui.textSelectAttentionBackground", "#38d878");
505 pref("ui.textSelectAttentionForeground", "#ffffff");
507 // This makes the matched text stand out when findbar highlighting is on.
508 // Used with nsISelectionController::SELECTION_FIND
509 pref("ui.textHighlightBackground", "#ef0fff");
510 // The foreground color for the matched text in findbar highlighting
511 // Used with nsISelectionController::SELECTION_FIND
512 pref("ui.textHighlightForeground", "#ffffff");
513 // The background color for :autofill-ed inputs.
515 // In the past, we used the following `filter` to paint autofill backgrounds:
517 //   grayscale(21%) brightness(88%) contrast(161%) invert(10%) sepia(40%) saturate(206%);
519 // but there are some pages where using `filter` caused issues because it
520 // changes the z-order (see bug 1687682, bug 1727950).
522 // The color is chosen so that you get the same final color on a white
523 // background as the filter above (#fffcc8), but with some alpha so as to
524 // prevent fully illegible text.
525 pref("ui.-moz-autofill-background", "rgba(255, 249, 145, .5)");
527 // We want the ability to forcibly disable platform a11y, because
528 // some non-a11y-related components attempt to bring it up.  See bug
529 // 538530 for details about Windows; we have a pref here that allows it
530 // to be disabled for performance and testing resons.
531 // See bug 761589 for the crossplatform aspect.
533 // This pref is checked only once, and the browser needs a restart to
534 // pick up any changes.
536 // Values are -1 always on. 1 always off, 0 is auto as some platform perform
537 // further checks.
538 pref("accessibility.force_disabled", 0);
540 pref("focusmanager.testmode", false);
542 // Type Ahead Find
543 pref("accessibility.typeaheadfind", true);
544 // Enable FAYT by pressing / or "
545 pref("accessibility.typeaheadfind.manual", true);
546 pref("accessibility.typeaheadfind.autostart", true);
547 // casesensitive: controls the find bar's case-sensitivity
548 //     0 - "never"  (case-insensitive)
549 //     1 - "always" (case-sensitive)
550 // other - "auto"   (case-sensitive for mixed-case input, insensitive otherwise)
551 pref("accessibility.typeaheadfind.casesensitive", 0);
552 pref("accessibility.typeaheadfind.linksonly", true);
553 pref("accessibility.typeaheadfind.startlinksonly", false);
554 // timeout: controls the delay in milliseconds after which the quick-find dialog will close
555 //          if no further keystrokes are pressed
556 //              set to a zero or negative value to keep dialog open until it's manually closed
557 pref("accessibility.typeaheadfind.timeout", 4000);
558 pref("accessibility.typeaheadfind.soundURL", "beep");
559 pref("accessibility.typeaheadfind.enablesound", true);
560 #ifdef XP_MACOSX
561   pref("accessibility.typeaheadfind.prefillwithselection", false);
562 #else
563   pref("accessibility.typeaheadfind.prefillwithselection", true);
564 #endif
565 pref("accessibility.typeaheadfind.matchesCountLimit", 1000);
566 pref("findbar.highlightAll", false);
567 pref("findbar.entireword", false);
568 pref("findbar.iteratorTimeout", 100);
569 // matchdiacritics: controls the find bar's diacritic matching
570 //     0 - "never"  (ignore diacritics)
571 //     1 - "always" (match diacritics)
572 // other - "auto"   (match diacritics if input has diacritics, ignore otherwise)
573 pref("findbar.matchdiacritics", 0);
574 pref("findbar.modalHighlight", false);
576 // use Mac OS X Appearance panel text smoothing setting when rendering text, disabled by default
577 pref("gfx.use_text_smoothing_setting", false);
579 // Number of characters to consider emphasizing for rich autocomplete results
580 pref("toolkit.autocomplete.richBoundaryCutoff", 200);
582 pref("toolkit.scrollbox.scrollIncrement", 20);
583 pref("toolkit.scrollbox.clickToScroll.scrollDelay", 150);
585 pref("toolkit.shopping.ohttpConfigURL", "https://prod.ohttp-gateway.prod.webservices.mozgcp.net/ohttp-configs");
586 pref("toolkit.shopping.ohttpRelayURL", "https://mozilla-ohttp-fakespot.fastly-edge.com/");
587 pref("toolkit.shopping.environment", "prod");
589 // Controls logging for Sqlite.sys.mjs.
590 pref("toolkit.sqlitejsm.loglevel", "Error");
592 pref("toolkit.tabbox.switchByScrolling", false);
594 // Telemetry settings.
595 // Server to submit telemetry pings to.
596 pref("toolkit.telemetry.server", "https://incoming.telemetry.mozilla.org");
597 // Telemetry server owner. Please change if you set toolkit.telemetry.server to a different server
598 pref("toolkit.telemetry.server_owner", "Mozilla");
599 // Determines whether full SQL strings are returned when they might contain sensitive info
600 // i.e. dynamically constructed SQL strings or SQL executed by addons against addon DBs
601 pref("toolkit.telemetry.debugSlowSql", false);
602 // Whether to use the unified telemetry behavior, requires a restart.
603 pref("toolkit.telemetry.unified", true);
605 // DAP related preferences
606 pref("toolkit.telemetry.dap_enabled", false);
607 // Verification tasks
608 pref("toolkit.telemetry.dap_task1_enabled", false);
609 pref("toolkit.telemetry.dap_task1_taskid", "");
610 // URL visit counting
611 pref("toolkit.telemetry.dap_visit_counting_enabled", false);
612 // Note: format of patterns is "<proto>://<host>/<path>"
613 // See https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Match_patterns
614 pref("toolkit.telemetry.dap_visit_counting_experiment_list", "[]");
615 // Leader endpoint for the DAP protocol
616 pref("toolkit.telemetry.dap_leader", "https://dap-07-1.api.divviup.org/");
617 // Not used for anything. Just additional information.
618 pref("toolkit.telemetry.dap_leader_owner", "ISRG");
619 // Second DAP server. Only two are currently supported.
620 pref("toolkit.telemetry.dap_helper", "https://dap.services.mozilla.com");
621 pref("toolkit.telemetry.dap_helper_owner", "Mozilla");
622 pref("toolkit.telemetry.dap.logLevel", "Warn");
624 // AsyncShutdown delay before crashing in case of shutdown freeze
625 // ASan, TSan and code coverage builds can be considerably slower. Extend the
626 // grace period for both the asyncshutdown and the terminator.
627 #if defined(MOZ_ASAN)
628   pref("toolkit.asyncshutdown.crash_timeout", 300000); // 5 minutes
629 #elif defined(MOZ_TSAN)
630   pref("toolkit.asyncshutdown.crash_timeout", 360000); // 6 minutes
631 #elif defined(MOZ_CODE_COVERAGE)
632   pref("toolkit.asyncshutdown.crash_timeout", 180000); // 3 minutes
633 #else
634   pref("toolkit.asyncshutdown.crash_timeout", 60000); // 1 minute
635 #endif // !defined(MOZ_ASAN) && !defined(MOZ_TSAN)
636 // Extra logging for AsyncShutdown barriers and phases
637 pref("toolkit.asyncshutdown.log", false);
639 // Enable JS dump() function.
640 // IMPORTANT: These prefs must be here even though they're also defined in
641 // StaticPrefList.yaml. They are required because MOZILLA_OFFICIAL is false in
642 // local full builds but true in artifact builds. Without these definitions
643 // here, dumping is disabled in artifact builds (see Bug 1490412).
644 #ifdef MOZILLA_OFFICIAL
645   pref("browser.dom.window.dump.enabled", false, sticky);
646   pref("devtools.console.stdout.chrome", false, sticky);
647 #else
648   pref("browser.dom.window.dump.enabled", true, sticky);
649   pref("devtools.console.stdout.chrome", true, sticky);
650 #endif
652 pref("devtools.console.stdout.content", false, sticky);
654 // Controls whether EventEmitter module throws dump message on each emit
655 pref("toolkit.dump.emit", false);
657 // Preferences for the new performance panel. Note that some preferences are duplicated
658 // with a ".remote" postfix. This is because we have one set of preference for local
659 // profiling, and a second set for remote profiling.
661 // This pref configures the base URL for the profiler.firefox.com instance to
662 // use. This is useful so that a developer can change it while working on
663 // profiler.firefox.com, or in tests. This isn't exposed directly to the user.
664 pref("devtools.performance.recording.ui-base-url", "https://profiler.firefox.com");
665 // When gathering profiles from child processes, this is the longest time (in
666 // seconds) allowed between two responses. 0 = Use internal default.
667 pref("devtools.performance.recording.child.timeout_s", 0);
668 // The popup is only enabled by default on Nightly, Dev Edition, and debug buildsd since
669 // it's a developer focused item. It can still be enabled by going to profiler.firefox.com,
670 // but by default it is off on Release and Beta. Note that this only adds it to the
671 // the customization palette, not to the navbar.
672 #if defined(NIGHTLY_BUILD) || defined(MOZ_DEV_EDITION) || defined(DEBUG)
673   pref("devtools.performance.popup.feature-flag", true);
674 #else
675   pref("devtools.performance.popup.feature-flag", false);
676 #endif
677 // The preset to use for the recording settings. If set to "custom" then the pref
678 // values below will be used.
679 #if defined(NIGHTLY_BUILD) || !defined(MOZILLA_OFFICIAL)
680   // Use a more advanced preset on Nightly and local builds.
681   pref("devtools.performance.recording.preset", "firefox-platform");
682   pref("devtools.performance.recording.preset.remote", "firefox-platform");
683 #else
684   pref("devtools.performance.recording.preset", "web-developer");
685   pref("devtools.performance.recording.preset.remote", "web-developer");
686 #endif
687 // The profiler's active tab view has a few issues. Disable it in most
688 // environments until the issues are ironed out.
689 #if defined(NIGHTLY_BUILD)
690   pref("devtools.performance.recording.active-tab-view.enabled", true);
691 #else
692   pref("devtools.performance.recording.active-tab-view.enabled", false);
693 #endif
694 // Profiler buffer size. It is the maximum number of 8-bytes entries in the
695 // profiler's buffer. 10000000 is ~80mb.
696 pref("devtools.performance.recording.entries", 10000000);
697 pref("devtools.performance.recording.entries.remote", 10000000);
698 // Profiler interval in microseconds. 1000µs is 1ms
699 pref("devtools.performance.recording.interval", 1000);
700 pref("devtools.performance.recording.interval.remote", 1000);
701 // Profiler duration of entries in the profiler's buffer in seconds.
702 // `0` means no time limit for the markers, they roll off naturally from the
703 // circular buffer.
704 pref("devtools.performance.recording.duration", 0);
705 pref("devtools.performance.recording.duration.remote", 0);
706 // Profiler feature set. See tools/profiler/core/platform.cpp for features and
707 // explanations. Remote profiling also includes the java feature by default.
708 // If the remote debuggee isn't an Android phone, then this feature will
709 // be ignored.
710 pref("devtools.performance.recording.features", "[\"js\",\"stackwalk\",\"cpu\",\"screenshots\"]");
711 pref("devtools.performance.recording.features.remote", "[\"js\",\"stackwalk\",\"cpu\",\"screenshots\",\"java\"]");
712 // Threads to be captured by the profiler.
713 pref("devtools.performance.recording.threads", "[\"GeckoMain\",\"Compositor\",\"Renderer\"]");
714 pref("devtools.performance.recording.threads.remote", "[\"GeckoMain\",\"Compositor\",\"Renderer\"]");
715 // A JSON array of strings, where each string is a file path to an objdir on
716 // the host machine. This is used in order to look up symbol information from
717 // build artifacts of local builds.
718 pref("devtools.performance.recording.objdirs", "[]");
719 pref("devtools.performance.recording.power.external-url", "");
720 // The popup will display some introductory text the first time it is displayed.
721 pref("devtools.performance.popup.intro-displayed", false);
723 // Compatibility preferences
724 // Stringified array of target browsers that users investigate.
725 pref("devtools.inspector.compatibility.target-browsers", "");
727 // view source
728 pref("view_source.editor.path", "");
729 // allows to add further arguments to the editor; use the %LINE% placeholder
730 // for jumping to a specific line (e.g. "/line:%LINE%" or "--goto %LINE%")
731 pref("view_source.editor.args", "");
733 // whether or not to draw images while dragging
734 pref("nglayout.enable_drag_images", true);
736 // URI fixup prefs
737 pref("browser.fixup.alternate.prefix", "www.");
738 pref("browser.fixup.alternate.protocol", "https");
739 pref("browser.fixup.alternate.suffix", ".com");
740 pref("browser.fixup.fallback-to-https", true);
742 // NOTE: On most platforms we save print settins to prefs with the name of the
743 // printer in the pref name (Android being the notable exception, where prefs
744 // are saved "globally" without a printer name in the pref name).  For those
745 // platforms, the prefs below simply act as default values for when we
746 // encounter a printer for the first time, but only a subset of prefs will be
747 // used in this case.  See nsPrintSettingsService::InitPrintSettingsFromPrefs
748 // for the restrictions on which prefs can act as defaults.
750 // Whether we directly use the system print dialog to collect the user's print
751 // settings rather than using the tab-modal print preview dialog.
752 // Note: `print.always_print_silent` overrides this.
753 pref("print.prefer_system_dialog", false);
755 // Print/Preview Shrink-To-Fit won't shrink below 20% for text-ish documents.
756 pref("print.shrink-to-fit.scale-limit-percent", 20);
758 // Whether or not to force the Page Setup submenu of the File menu to shown
759 pref("print.show_page_setup_menu", false);
761 // Print header customization
762 // Use the following codes:
763 // &T - Title
764 // &U - Document URL
765 // &D - Date/Time
766 // &P - Page Number
767 // &PT - Page Number "of" Page total
768 // Set each header to a string containing zero or one of these codes
769 // and the code will be replaced in that string by the corresponding data
770 pref("print.print_headerleft", "&T");
771 pref("print.print_headercenter", "");
772 pref("print.print_headerright", "&U");
773 pref("print.print_footerleft", "&PT");
774 pref("print.print_footercenter", "");
775 pref("print.print_footerright", "&D");
777 // A list of comma separated key:value pairs, so:
779 //   key1:value1,key2:value2
781 // Which allows testing extra CUPS-related printer settings for monochrome
782 // printing.
783 pref("print.cups.monochrome.extra_settings", "");
785 // xxxbsmedberg: more toolkit prefs
787 // Save the Printings after each print job
788 pref("print.save_print_settings", true);
790 // Enables the "more settings" in Print Preview to match previous
791 // configuration.
792 pref("print.more-settings.open", false);
794 // Enables you to specify a user unwriteable margin, if a printer's actual
795 // unwriteable margin is greater than this the printer one will be used.
796 // This is used by both Printing and Print Preview
797 // Units are in 1/100ths of an inch.
798 pref("print.print_edge_top", 0);
799 pref("print.print_edge_left", 0);
800 pref("print.print_edge_right", 0);
801 pref("print.print_edge_bottom", 0);
803 // Should this just be checking for MOZ_WIDGET_GTK?
804 #if defined(ANDROID) || defined(XP_UNIX) && !defined(XP_MACOSX)
805   pref("print.print_reversed", false);
806   // This is the default. Probably just remove this.
807   pref("print.print_in_color", true);
808 #endif
810 // Scripts & Windows prefs
811 pref("dom.beforeunload_timeout_ms",         1000);
812 pref("dom.disable_window_flip",             false);
813 pref("dom.disable_window_move_resize",      false);
815 pref("dom.allow_scripts_to_close_windows",          false);
817 pref("dom.popup_allowed_events", "change click dblclick auxclick mousedown mouseup pointerdown pointerup notificationclick reset submit touchend contextmenu");
819 pref("dom.serviceWorkers.disable_open_click_delay", 1000);
821 pref("dom.storage.shadow_writes", false);
822 pref("dom.storage.snapshot_prefill", 16384);
823 pref("dom.storage.snapshot_gradual_prefill", 4096);
824 pref("dom.storage.snapshot_reusing", true);
825 pref("dom.storage.client_validation", true);
827 // Enable time picker UI. By default, disabled.
828 pref("dom.forms.datetime.timepicker", false);
830 // Enable search in <select> dropdowns (more than 40 options)
831 pref("dom.forms.selectSearch", false);
832 // Allow for webpages to provide custom styling for <select>
833 // popups.
835 // Disabled on GTK (originally due to bug 1338283, but not enabled since, and
836 // native appearance might be preferred).
837 // Disabled on macOS because native appearance is preferred, see bug 1703866.
838 #if defined(MOZ_WIDGET_GTK) || defined(XP_MACOSX)
839   pref("dom.forms.select.customstyling", false);
840 #else
841   pref("dom.forms.select.customstyling", true);
842 #endif
844 pref("dom.cycle_collector.incremental", true);
846 // List of domains exempted from RFP. The list is comma separated domain list.
847 pref("privacy.resistFingerprinting.exemptedDomains", "*.example.invalid");
849 // If privacy.fingerprintingProtection is enabled, this pref can be used to add
850 // or remove features from its effects
851 pref("privacy.fingerprintingProtection.overrides", "");
853 // If privacy.fingerprintingProtection is enabled, this pref can be used to add
854 // or remove features on a domain granular level.
855 pref("privacy.fingerprintingProtection.granularOverrides", "");
857 // Fix cookie blocking breakage by providing ephemeral Paritioned LocalStorage
858 // for a list of hosts when detected as trackers.
859 // (See nsICookieService::BEHAVIOR_REJECT_TRACKER cookie behavior)
860 // See: Bug 1505212, Bug 1659394, Bug 1631811, Bug 1665035.
861 pref("privacy.restrict3rdpartystorage.partitionedHosts", "accounts.google.com/o/oauth2/,d35nw2lg0ahg0v.cloudfront.net/,datastudio.google.com/embed/reporting/,d3qlaywcwingl6.cloudfront.net/");
863 // If a host is contained in this pref list, user-interaction is required
864 // before granting the storage access permission.
865 pref("privacy.restrict3rdpartystorage.userInteractionRequiredForHosts", "");
867 // The url decoration tokens used to for stripping document referrers based on.
868 // A list separated by spaces.  This pref isn't meant to be changed by users.
869 pref("privacy.restrict3rdpartystorage.url_decorations", "");
871 // Excessive reporting of blocked popups can be a DOS vector,
872 // by overloading the main process as popups get blocked and when
873 // users try to restore all popups, which is the most visible
874 // option in our UI at the time of writing.
875 // We will invisibly drop any popups from a page that has already
876 // opened more than this number of popups.
877 pref("privacy.popups.maxReported", 100);
879 // Purging first-party tracking cookies.
880 pref("privacy.purge_trackers.enabled", true);
881 #ifdef NIGHTLY_BUILD
882   pref("privacy.purge_trackers.logging.level", "Warn");
883 #else
884   pref("privacy.purge_trackers.logging.level", "Error");
885 #endif
887 // Allowable amount of cookies to purge in a batch.
888 pref("privacy.purge_trackers.max_purge_count", 100);
890 // Whether purging should not clear data from domains
891 // that are associated with other domains which have
892 // user interaction (even if they don't have user
893 // interaction directly).
894 pref("privacy.purge_trackers.consider_entity_list", false);
896 pref("dom.event.contextmenu.enabled",       true);
898 pref("javascript.enabled",                  true);
899 pref("javascript.options.wasm",                   true);
900 pref("javascript.options.wasm_trustedprincipals", true);
901 pref("javascript.options.wasm_verbose",           false);
902 pref("javascript.options.wasm_baselinejit",       true);
904 pref("javascript.options.asyncstack", true);
905 // Broadly capturing async stack data adds overhead that is only advisable for
906 // developers, so we only enable it when the devtools are open, by default.
907 pref("javascript.options.asyncstack_capture_debuggee_only", true);
909 // This preference instructs the JS engine to discard the
910 // source of any privileged JS after compilation. This saves
911 // memory, but makes things like Function.prototype.toSource()
912 // fail.
913 pref("javascript.options.discardSystemSource", false);
915 // Many of the the following preferences tune the SpiderMonkey GC, if you
916 // change the defaults here please also consider changing them in
917 // js/src/jsgc.cpp.  They're documented in js/src/jsapi.h.
919 // JSGC_MAX_BYTES
920 // SpiderMonkey defaults to 2^32-1 bytes, but this is measured in MB so that
921 // cannot be represented directly in order to show it in about:config.
922 pref("javascript.options.mem.max", -1);
924 // JSGC_MIN_NURSERY_BYTES / JSGC_MAX_NURSERY_BYTES
925 pref("javascript.options.mem.nursery.min_kb", 256);
926 pref("javascript.options.mem.nursery.max_kb", 16384);
928 // JSGC_MODE
929 pref("javascript.options.mem.gc_per_zone", true);
930 pref("javascript.options.mem.gc_incremental", true);
932 // JSGC_INCREMENTAL_WEAKMAP_ENABLED
933 pref("javascript.options.mem.incremental_weakmap", true);
935 // JSGC_SLICE_TIME_BUDGET_MS
936 // Override the shell's default of unlimited slice time.
937 pref("javascript.options.mem.gc_incremental_slice_ms", 5);
939 // JSGC_COMPACTING_ENABLED
940 pref("javascript.options.mem.gc_compacting", true);
942 // JSGC_PARALLEL_MARKING_ENABLED
943 // This only applies to the main runtime and does not affect workers.
944 #ifndef ANDROID
945 pref("javascript.options.mem.gc_parallel_marking", true);
946 #else
947 pref("javascript.options.mem.gc_parallel_marking", false);
948 #endif
950 // JSGC_PARALLEL_MARKING_THRESHOLD_MB
951 // Minimum heap size at which to use parallel marking, if enabled.
952 #if defined(XP_WIN)
953 pref("javascript.options.mem.gc_parallel_marking_threshold_mb", 8);
954 #elif defined(XP_MACOSX)
955 pref("javascript.options.mem.gc_parallel_marking_threshold_mb", 4);
956 #elif defined(ANDROID)
957 pref("javascript.options.mem.gc_parallel_marking_threshold_mb", 16);
958 #elif defined(XP_UNIX)
959 pref("javascript.options.mem.gc_parallel_marking_threshold_mb", 16);
960 #endif
962 // JSGC_HIGH_FREQUENCY_TIME_LIMIT
963 pref("javascript.options.mem.gc_high_frequency_time_limit_ms", 1000);
965 // JSGC_SMALL_HEAP_SIZE_MAX
966 pref("javascript.options.mem.gc_small_heap_size_max_mb", 100);
968 // JSGC_LARGE_HEAP_SIZE_MIN
969 pref("javascript.options.mem.gc_large_heap_size_min_mb", 500);
971 // JSGC_HIGH_FREQUENCY_SMALL_HEAP_GROWTH
972 pref("javascript.options.mem.gc_high_frequency_small_heap_growth", 300);
974 // JSGC_HIGH_FREQUENCY_LARGE_HEAP_GROWTH
975 pref("javascript.options.mem.gc_high_frequency_large_heap_growth", 150);
977 // JSGC_LOW_FREQUENCY_HEAP_GROWTH
978 pref("javascript.options.mem.gc_low_frequency_heap_growth", 150);
980 // JSGC_BALANCED_HEAP_LIMITS_ENABLED
981 pref("javascript.options.mem.gc_balanced_heap_limits", false);
983 // JSGC_HEAP_GROWTH_FACTOR
984 pref("javascript.options.mem.gc_heap_growth_factor", 50);
986 // JSGC_ALLOCATION_THRESHOLD
987 pref("javascript.options.mem.gc_allocation_threshold_mb", 27);
989 // JSGC_MALLOC_THRESHOLD_BASE
990 pref("javascript.options.mem.gc_malloc_threshold_base_mb", 38);
992 // JSGC_SMALL_HEAP_INCREMENTAL_LIMIT
993 pref("javascript.options.mem.gc_small_heap_incremental_limit", 150);
995 // JSGC_LARGE_HEAP_INCREMENTAL_LIMIT
996 pref("javascript.options.mem.gc_large_heap_incremental_limit", 110);
998 // JSGC_URGENT_THRESHOLD_MB
999 pref("javascript.options.mem.gc_urgent_threshold_mb", 16);
1001 // JSGC_MIN_EMPTY_CHUNK_COUNT
1002 pref("javascript.options.mem.gc_min_empty_chunk_count", 1);
1004 // JSGC_MAX_EMPTY_CHUNK_COUNT
1005 pref("javascript.options.mem.gc_max_empty_chunk_count", 30);
1007 // JSGC_HELPER_THREAD_RATIO
1008 pref("javascript.options.mem.gc_helper_thread_ratio", 50);
1010 // JSGC_MAX_HELPER_THREADS
1011 pref("javascript.options.mem.gc_max_helper_threads", 8);
1013 // Eager nursery collection parameters:
1014 // JSGC_NURSERY_EAGER_COLLECTION_THRESHOLD_KB
1015 pref("javascript.options.mem.nursery_eager_collection_threshold_kb", 256);
1016 // JSGC_NURSERY_EAGER_COLLECTION_THRESHOLD_PERCENT
1017 pref("javascript.options.mem.nursery_eager_collection_threshold_percent", 25);
1018 // JSGC_NURSERY_EAGER_COLLECTION_TIMEOUT_MS
1019 pref("javascript.options.mem.nursery_eager_collection_timeout_ms", 5000);
1021 pref("javascript.options.shared_memory", true);
1023 pref("javascript.options.throw_on_debuggee_would_run", false);
1024 pref("javascript.options.dump_stack_on_debuggee_would_run", false);
1026 // advanced prefs
1027 pref("image.animation_mode",                "normal");
1029 // If this pref is true, prefs in the logging.config branch will be cleared on
1030 // startup. This is done so that setting a log-file and log-modules at runtime
1031 // doesn't persist across restarts leading to huge logfile and low disk space.
1032 pref("logging.config.clear_on_startup", true);
1034 // If there is ever a security firedrill that requires
1035 // us to block certian ports global, this is the pref
1036 // to use.  Is is a comma delimited list of port numbers
1037 // for example:
1038 //   pref("network.security.ports.banned", "1,2,3,4,5");
1039 // prevents necko connecting to ports 1-5 unless the protocol
1040 // overrides.
1042 // Transmit UDP busy-work to the LAN when anticipating low latency
1043 // network reads and on wifi to mitigate 802.11 Power Save Polling delays
1044 pref("network.tickle-wifi.enabled", false);
1045 pref("network.tickle-wifi.duration", 400);
1046 pref("network.tickle-wifi.delay", 16);
1048 // Default action for unlisted external protocol handlers
1049 pref("network.protocol-handler.external-default", true);      // OK to load
1050 pref("network.protocol-handler.warn-external-default", true); // warn before load
1052 // Prevent using external protocol handlers for these schemes
1053 pref("network.protocol-handler.external.hcp", false);
1054 pref("network.protocol-handler.external.vbscript", false);
1055 pref("network.protocol-handler.external.javascript", false);
1056 pref("network.protocol-handler.external.data", false);
1057 pref("network.protocol-handler.external.ie.http", false);
1058 pref("network.protocol-handler.external.iehistory", false);
1059 pref("network.protocol-handler.external.ierss", false);
1060 pref("network.protocol-handler.external.mk", false);
1061 pref("network.protocol-handler.external.ms-cxh", false);
1062 pref("network.protocol-handler.external.ms-cxh-full", false);
1063 pref("network.protocol-handler.external.ms-help", false);
1064 pref("network.protocol-handler.external.ms-msdt", false);
1065 pref("network.protocol-handler.external.res", false);
1066 pref("network.protocol-handler.external.search", false);
1067 pref("network.protocol-handler.external.search-ms", false);
1068 pref("network.protocol-handler.external.shell", false);
1069 pref("network.protocol-handler.external.vnd.ms.radio", false);
1070 #ifdef XP_MACOSX
1071   pref("network.protocol-handler.external.help", false);
1072 #endif
1073 pref("network.protocol-handler.external.disk", false);
1074 pref("network.protocol-handler.external.disks", false);
1075 pref("network.protocol-handler.external.afp", false);
1076 pref("network.protocol-handler.external.moz-icon", false);
1077 pref("network.protocol-handler.external.firefox-bridge", false);
1078 pref("network.protocol-handler.external.firefox-private-bridge", false);
1080 // Don't allow  external protocol handlers for common typos
1081 pref("network.protocol-handler.external.ttp", false);  // http
1082 pref("network.protocol-handler.external.htp", false);  // http
1083 pref("network.protocol-handler.external.ttps", false); // https
1084 pref("network.protocol-handler.external.tps", false);  // https
1085 pref("network.protocol-handler.external.ps", false);   // https
1086 pref("network.protocol-handler.external.htps", false); // https
1087 pref("network.protocol-handler.external.ile", false);  // file
1088 pref("network.protocol-handler.external.le", false);   // file
1090 // An exposed protocol handler is one that can be used in all contexts.  A
1091 // non-exposed protocol handler is one that can only be used internally by the
1092 // application.  For example, a non-exposed protocol would not be loaded by the
1093 // application in response to a link click or a X-remote openURL command.
1094 // Instead, it would be deferred to the system's external protocol handler.
1095 // Only internal/built-in protocol handlers can be marked as exposed.
1097 // This pref controls the default settings.  Per protocol settings can be used
1098 // to override this value.
1099 pref("network.protocol-handler.expose-all", true);
1101 // Example: make IMAP an exposed protocol
1102 // pref("network.protocol-handler.expose.imap", true);
1104 // Whether IOService.connectivity and NS_IsOffline depends on connectivity status
1105 pref("network.manage-offline-status", true);
1107 // <http>
1108 pref("network.http.version", "1.1");      // default
1109 // pref("network.http.version", "1.0");   // uncomment this out in case of problems
1110 // pref("network.http.version", "0.9");   // it'll work too if you're crazy
1111 // keep-alive option is effectively obsolete. Nevertheless it'll work with
1112 // some older 1.0 servers:
1114 pref("network.http.proxy.version", "1.1");    // default
1115 // pref("network.http.proxy.version", "1.0"); // uncomment this out in case of problems
1116                                               // (required if using junkbuster proxy)
1118 // Whether we should respect the BE_CONSERVATIVE (aka nsIHttpChannelInternal.beConservative)
1119 // flag when connecting to a proxy.  If the configured proxy accepts only TLS 1.3, system
1120 // requests like updates will not pass through.  Setting this pref to false will fix that
1121 // problem.
1122 // Default at true to preserve the behavior we had before for backward compat.
1123 pref("network.http.proxy.respect-be-conservative", true);
1125 // this preference can be set to override the socket type used for normal
1126 // HTTP traffic.  an empty value indicates the normal TCP/IP socket type.
1127 pref("network.http.default-socket-type", "");
1129 // There is a problem with some IIS7 servers that don't close the connection
1130 // properly after it times out (bug #491541). Default timeout on IIS7 is
1131 // 120 seconds. We need to reuse or drop the connection within this time.
1132 // We set the timeout a little shorter to keep a reserve for cases when
1133 // the packet is lost or delayed on the route.
1134 pref("network.http.keep-alive.timeout", 115);
1136 // Timeout connections if an initial response is not received after 5 mins.
1137 pref("network.http.response.timeout", 300);
1139 // Limit the absolute number of http connections.
1140 // Note: the socket transport service will clamp the number below this if the OS
1141 // cannot allocate that many FDs
1142 #ifdef ANDROID
1143   pref("network.http.max-connections", 40);
1144 #else
1145   pref("network.http.max-connections", 900);
1146 #endif
1148 // If NOT connecting via a proxy, then
1149 // a new connection will only be attempted if the number of active persistent
1150 // connections to the server is less then max-persistent-connections-per-server.
1151 pref("network.http.max-persistent-connections-per-server", 6);
1153 // Number of connections that we can open beyond the standard parallelism limit defined
1154 // by max-persistent-connections-per-server/-proxy to handle urgent-start marked requests
1155 pref("network.http.max-urgent-start-excessive-connections-per-host", 3);
1157 // If connecting via a proxy, then a
1158 // new connection will only be attempted if the number of active persistent
1159 // connections to the proxy is less then max-persistent-connections-per-proxy.
1160 pref("network.http.max-persistent-connections-per-proxy", 32);
1162 // amount of time (in seconds) to suspend pending requests, before spawning a
1163 // new connection, once the limit on the number of persistent connections per
1164 // host has been reached.  however, a new connection will not be created if
1165 // max-connections or max-connections-per-server has also been reached.
1166 pref("network.http.request.max-start-delay", 10);
1168 // If a connection is reset, we will retry it max-attempts times.
1169 pref("network.http.request.max-attempts", 10);
1171 // Maximum number of consecutive redirects before aborting.
1172 pref("network.http.redirection-limit", 20);
1174 // Enable http compression: comment this out in case of problems with 1.1
1175 // NOTE: support for "compress" has been disabled per bug 196406.
1176 // NOTE: separate values with comma+space (", "): see bug 576033
1177 pref("network.http.accept-encoding", "gzip, deflate");
1178 pref("network.http.accept-encoding.secure", "gzip, deflate, br");
1180 // Prompt for redirects resulting in unsafe HTTP requests
1181 pref("network.http.prompt-temp-redirect", false);
1183 // If true generate CORRUPTED_CONTENT errors for entities that
1184 // contain an invalid Assoc-Req response header
1185 pref("network.http.assoc-req.enforce", false);
1187 // On networks deploying QoS, it is recommended that these be lockpref()'d,
1188 // since inappropriate marking can easily overwhelm bandwidth reservations
1189 // for certain services (i.e. EF for VoIP, AF4x for interactive video,
1190 // AF3x for broadcast/streaming video, etc)
1192 // default value for HTTP
1193 // in a DSCP environment this should be 40 (0x28, or AF11), per RFC-4594,
1194 // Section 4.8 "High-Throughput Data Service Class"
1195 pref("network.http.qos", 0);
1197 // The number of milliseconds after sending a SYN for an HTTP connection,
1198 // to wait before trying a different connection. 0 means do not use a second
1199 // connection.
1200 pref("network.http.connection-retry-timeout", 250);
1202 // The number of seconds after sending initial SYN for an HTTP connection
1203 // to give up if the OS does not give up first
1204 pref("network.http.connection-timeout", 90);
1206 // Close a connection if tls handshake does not finish in given number of
1207 // seconds.
1208 pref("network.http.tls-handshake-timeout", 30);
1210 // The number of seconds after which we time out a connection of a retry (fallback)
1211 // socket when a certain IP family is already preferred.  This shorter connection
1212 // timeout allows us to find out more quickly that e.g. an IPv6 host is no longer
1213 // available and let us try an IPv4 address, if provided for the host name.
1214 // Set to '0' to use the default connection timeout.
1215 pref("network.http.fallback-connection-timeout", 5);
1217 // The number of seconds to allow active connections to prove that they have
1218 // traffic before considered stalled, after a network change has been detected
1219 // and signalled.
1220 pref("network.http.network-changed.timeout", 5);
1222 // The maximum number of current global half open sockets allowable
1223 // when starting a new speculative connection.
1224 pref("network.http.speculative-parallel-limit", 6);
1226 // Whether or not to block requests for non head js/css items (e.g. media)
1227 // while those elements load.
1228 pref("network.http.rendering-critical-requests-prioritization", true);
1230 // Disable IPv6 for backup connections to workaround problems about broken
1231 // IPv6 connectivity.
1232 pref("network.http.fast-fallback-to-IPv4", true);
1234 // Http3 qpack table size.
1235 pref("network.http.http3.default-qpack-table-size", 65536); // 64k
1236 // Maximal number of streams that can be blocked on waiting for qpack
1237 // instructions.
1238 pref("network.http.http3.default-max-stream-blocked", 20);
1241 // This is only for testing!
1242 // This adds alt-svc mapping and it has a form of <host-name>;<alt-svc-header>
1243 // Example: example1.com;h3-29=":443",example2.com;h3-29=":443"
1244 pref("network.http.http3.alt-svc-mapping-for-testing", "");
1246 // alt-svc allows separation of transport routing from
1247 // the origin host without using a proxy.
1248 pref("network.http.altsvc.enabled", true);
1249 pref("network.http.altsvc.oe", false);
1251 // the origin extension impacts h2 coalescing
1252 pref("network.http.originextension", true);
1254 pref("network.http.diagnostics", false);
1256 pref("network.http.pacing.requests.enabled", true);
1257 pref("network.http.pacing.requests.min-parallelism", 6);
1258 pref("network.http.pacing.requests.hz", 80);
1259 pref("network.http.pacing.requests.burst", 10);
1261 // TCP Keepalive config for HTTP connections.
1262 pref("network.http.tcp_keepalive.short_lived_connections", true);
1263 // Max time from initial request during which conns are considered short-lived.
1264 pref("network.http.tcp_keepalive.short_lived_time", 60);
1265 // Idle time of TCP connection until first keepalive probe sent.
1266 pref("network.http.tcp_keepalive.short_lived_idle_time", 10);
1268 pref("network.http.tcp_keepalive.long_lived_connections", true);
1269 pref("network.http.tcp_keepalive.long_lived_idle_time", 600);
1271 pref("network.http.enforce-framing.http1", false); // should be named "strict"
1272 pref("network.http.enforce-framing.soft", true);
1273 pref("network.http.enforce-framing.strict_chunked_encoding", true);
1275 // Max size, in bytes, for received HTTP response header.
1276 pref("network.http.max_response_header_size", 393216);
1278 // The ratio of the transaction count for the focused window and the count of
1279 // all available active connections.
1280 pref("network.http.focused_window_transaction_ratio", "0.9");
1282 // This is the size of the flow control window (KB) (i.e., the amount of data
1283 // that the parent can send to the child before getting an ack). 0 for disable
1284 // the flow control.
1285 pref("network.http.send_window_size", 1024);
1287 // Whether or not we give more priority to active tab.
1288 // Note that this requires restart for changes to take effect.
1289 #ifdef ANDROID
1290   // disabled because of bug 1382274
1291   pref("network.http.active_tab_priority", false);
1292 #else
1293   pref("network.http.active_tab_priority", true);
1294 #endif
1296 // By default the Accept header sent for documents loaded over HTTP(S) is derived
1297 // by DocumentAcceptHeader() in nsHttpHandler.cpp. If set, this pref overrides it.
1298 // There is also image.http.accept which works in scope of image.
1299 pref("network.http.accept", "");
1301 // The max time to spend on xpcom events between two polls in ms.
1302 pref("network.sts.max_time_for_events_between_two_polls", 100);
1304 // The number of seconds we don't let poll() handing indefinitely after network
1305 // link change has been detected so we can detect breakout of the pollable event.
1306 // Expected in seconds, 0 to disable.
1307 pref("network.sts.poll_busy_wait_period", 50);
1309 // The number of seconds we cap poll() timeout to during the network link change
1310 // detection period.
1311 // Expected in seconds, 0 to disable.
1312 pref("network.sts.poll_busy_wait_period_timeout", 7);
1314 // During shutdown we limit PR_Close calls. If time exceeds this pref (in ms)
1315 // let sockets just leak.
1316 pref("network.sts.max_time_for_pr_close_during_shutdown", 5000);
1318 // When the polling socket pair we use to wake poll() up on demand doesn't
1319 // get signalled (is not readable) within this timeout, we try to repair it.
1320 // This timeout can be disabled by setting this pref to 0.
1321 // The value is expected in seconds.
1322 pref("network.sts.pollable_event_timeout", 6);
1324 // 2147483647 == PR_INT32_MAX == ~2 GB
1325 pref("network.websocket.max-message-size", 2147483647);
1327 // the number of seconds to wait for websocket connection to be opened
1328 pref("network.websocket.timeout.open", 20);
1330 // the number of seconds to wait for a clean close after sending the client
1331 // close message
1332 pref("network.websocket.timeout.close", 20);
1334 // the number of seconds of idle read activity to sustain before sending a
1335 // ping probe. 0 to disable.
1336 pref("network.websocket.timeout.ping.request", 0);
1338 // the deadline, expressed in seconds, for some read activity to occur after
1339 // generating a ping. If no activity happens then an error and unclean close
1340 // event is sent to the javascript websockets application
1341 pref("network.websocket.timeout.ping.response", 10);
1343 // Defines whether or not to try to negotiate the permessage compression
1344 // extension with the websocket server.
1345 pref("network.websocket.extensions.permessage-deflate", true);
1347 // the maximum number of concurrent websocket sessions. By specification there
1348 // is never more than one handshake oustanding to an individual host at
1349 // one time.
1350 pref("network.websocket.max-connections", 200);
1352 // by default scripts loaded from a https:// origin can only open secure
1353 // (i.e. wss://) websockets.
1354 pref("network.websocket.allowInsecureFromHTTPS", false);
1356 // by default we delay websocket reconnects to same host/port if previous
1357 // connection failed, per RFC 6455 section 7.2.3
1358 pref("network.websocket.delay-failed-reconnects", true);
1360 // </ws>
1362 // Server-Sent Events
1363 // Equal to the DEFAULT_RECONNECTION_TIME_VALUE value in nsEventSource.cpp
1364 pref("dom.server-events.default-reconnection-time", 5000); // in milliseconds
1366 // TLDs are treated as IDN-unsafe and punycode will be used for displaying them
1367 // in the UI (e.g. URL bar), unless they conform to one of the profiles
1368 // specified in
1369 // https://www.unicode.org/reports/tr39/#Restriction_Level_Detection
1370 // If "network.IDN.restriction_profile" is "high", the Highly Restrictive
1371 // profile is used.
1372 // If "network.IDN.restriction_profile" is "moderate", the Moderately
1373 // Restrictive profile is used.
1374 // In all other cases, the ASCII-Only profile is used.
1375 // Note that these preferences are referred to ONLY when
1376 // "network.IDN_show_punycode" is false. In other words, all IDNs will be shown
1377 // in punycode if "network.IDN_show_punycode" is true.
1378 pref("network.IDN.restriction_profile", "high");
1380 // If a domain includes any of the blocklist characters, it may be a spoof
1381 // attempt and so we always display the domain name as punycode.
1382 // For a complete list of the blocked IDN characters see:
1383 //   netwerk/dns/IDNCharacterBlocklist.inc
1385 // This pref may contain characters that will override the hardcoded blocklist,
1386 // so their presence in a domain name will not cause it to be displayed as
1387 // punycode.
1388 // Note that this only removes the characters from the blocklist, but there may
1389 // be other rules in place that cause it to be displayed as punycode.
1390 pref("network.IDN.extra_allowed_chars", "");
1391 // This pref may contain additional blocklist characters
1392 pref("network.IDN.extra_blocked_chars", "");
1394 // This preference specifies a list of domains for which DNS lookups will be
1395 // IPv4 only. Works around broken DNS servers which can't handle IPv6 lookups
1396 // and/or allows the user to disable IPv6 on a per-domain basis. See bug 68796.
1397 pref("network.dns.ipv4OnlyDomains", "");
1399 // This is the number of dns cache entries allowed
1400 pref("network.dnsCacheEntries", 400);
1402 // In the absence of OS TTLs, the DNS cache TTL value
1403 pref("network.dnsCacheExpiration", 60);
1405 // Get TTL; not supported on all platforms; nop on the unsupported ones.
1406 pref("network.dns.get-ttl", true);
1408 // For testing purposes! Makes the native resolver resolve IPv4 "localhost"
1409 // instead of the actual given name.
1410 pref("network.dns.native-is-localhost", false);
1412 // The grace period allows the DNS cache to use expired entries, while kicking off
1413 // a revalidation in the background.
1414 pref("network.dnsCacheExpirationGracePeriod", 60);
1416 // This preference can be used to turn off DNS prefetch.
1417 pref("network.dns.disablePrefetch", false);
1419 // This preference controls whether .onion hostnames are
1420 // rejected before being given to DNS. RFC 7686
1421 pref("network.dns.blockDotOnion", true);
1423 // These domains are treated as localhost equivalent
1424 pref("network.dns.localDomains", "");
1426 // When non empty all non-localhost DNS queries (including IP addresses)
1427 // resolve to this value. The value can be a name or an IP address.
1428 // domains mapped to localhost with localDomains stay localhost.
1429 pref("network.dns.forceResolve", "");
1431 // Contols whether or not "localhost" should resolve when offline
1432 pref("network.dns.offline-localhost", true);
1434 // Defines how much longer resolver threads should stay idle before are shut down.
1435 // A negative value will keep the thread alive forever.
1436 pref("network.dns.resolver-thread-extra-idle-time-seconds", 60);
1438 // enables the prefetch service (i.e., prefetching of <link rel="next"> and
1439 // <link rel="prefetch"> URLs).
1440 pref("network.prefetch-next", true);
1442 // The following prefs pertain to the negotiate-auth extension (see bug 17578),
1443 // which provides transparent Kerberos or NTLM authentication using the SPNEGO
1444 // protocol.  Each pref is a comma-separated list of keys, where each key has
1445 // the format:
1446 //   [scheme "://"] [host [":" port]]
1447 // For example, "foo.com" would match "http://www.foo.com/bar", etc.
1449 // This list controls which URIs can use the negotiate-auth protocol.  This
1450 // list should be limited to the servers you know you'll need to login to.
1451 pref("network.negotiate-auth.trusted-uris", "");
1452 // This list controls which URIs can support delegation.
1453 pref("network.negotiate-auth.delegation-uris", "");
1455 // Do not allow SPNEGO by default when challenged by a local server.
1456 pref("network.negotiate-auth.allow-non-fqdn", false);
1458 // Allow SPNEGO by default when challenged by a proxy server.
1459 pref("network.negotiate-auth.allow-proxies", true);
1461 // Path to a specific gssapi library
1462 pref("network.negotiate-auth.gsslib", "");
1464 // Specify if the gss lib comes standard with the OS
1465 pref("network.negotiate-auth.using-native-gsslib", true);
1467 #ifdef XP_WIN
1468   // Default to using the SSPI intead of GSSAPI on windows
1469   pref("network.auth.use-sspi", true);
1470 #endif
1472 // Controls which NTLM authentication implementation we default to. True forces
1473 // the use of our generic (internal) NTLM authentication implementation vs. any
1474 // native implementation provided by the os. This pref is for diagnosing issues
1475 // with native NTLM. (See bug 520607 for details.) Using generic NTLM authentication
1476 // can expose the user to reflection attack vulnerabilities. Do not change this
1477 // unless you know what you're doing!
1478 // This pref should be removed 6 months after the release of firefox 3.6.
1479 pref("network.auth.force-generic-ntlm", false);
1481 // The following prefs are used to enable automatic use of the operating
1482 // system's NTLM implementation to silently authenticate the user with their
1483 // Window's domain logon.  The trusted-uris pref follows the format of the
1484 // trusted-uris pref for negotiate authentication.
1485 pref("network.automatic-ntlm-auth.allow-proxies", true);
1486 pref("network.automatic-ntlm-auth.allow-non-fqdn", false);
1487 pref("network.automatic-ntlm-auth.trusted-uris", "");
1489 // The string to return to the server as the 'workstation' that the
1490 // user is using.  Bug 1046421 notes that the previous default, of the
1491 // system hostname, could be used for user fingerprinting.
1493 // However, in some network environments where allowedWorkstations is in use
1494 // to provide a level of host-based access control, it must be set to a string
1495 // that is listed in allowedWorkstations for the user's account in their
1496 // AD Domain.
1497 pref("network.generic-ntlm-auth.workstation", "WORKSTATION");
1499 // This preference controls whether to allow sending default credentials (SSO) to
1500 // NTLM/Negotiate servers allowed in the "trusted uri" list when navigating them
1501 // in a Private Browsing window.
1502 // If set to false, Private Browsing windows will not use default credentials and ask
1503 // for credentials from the user explicitly.
1504 // If set to true, and a server URL conforms other conditions for sending default
1505 // credentials, those will be sent automatically in Private Browsing windows.
1507 // This preference has no effect when the browser is set to "Never Remember History",
1508 // in that case default credentials will always be used.
1509 pref("network.auth.private-browsing-sso", false);
1511 // Control how throttling of http responses works - number of ms that each
1512 // suspend and resume period lasts (prefs named appropriately)
1513 // This feature is occasionally causing visible regressions (download too slow for
1514 // too long time, jitter in video/audio in background tabs...)
1515 pref("network.http.throttle.enable", false);
1516 pref("network.http.throttle.version", 1);
1518 // V1 prefs
1519 pref("network.http.throttle.suspend-for", 900);
1520 pref("network.http.throttle.resume-for", 100);
1522 // V2 prefs
1523 pref("network.http.throttle.read-limit-bytes", 8000);
1524 pref("network.http.throttle.read-interval-ms", 500);
1526 // Common prefs
1527 // Delay we resume throttled background responses after the last unthrottled
1528 // response has finished.  Prevents resuming too soon during an active page load
1529 // at which sub-resource reqeusts quickly come and go.
1530 pref("network.http.throttle.hold-time-ms", 800);
1531 // After the last transaction activation or last data chunk response we only
1532 // throttle for this period of time.  This prevents comet and unresponsive
1533 // http requests to engage long-standing throttling.
1534 pref("network.http.throttle.max-time-ms", 500);
1536 // Give higher priority to requests resulting from a user interaction event
1537 // like click-to-play, image fancy-box zoom, navigation.
1538 pref("network.http.on_click_priority", true);
1540 // When the page load has not yet reached DOMContentLoaded point, tail requestes are delayed
1541 // by (non-tailed requests count + 1) * delay-quantum milliseconds.
1542 pref("network.http.tailing.delay-quantum", 600);
1543 // The same as above, but applied after the document load reached DOMContentLoaded event.
1544 pref("network.http.tailing.delay-quantum-after-domcontentloaded", 100);
1545 // Upper limit for the calculated delay, prevents long standing and comet-like requests
1546 // tail forever.  This is in milliseconds as well.
1547 pref("network.http.tailing.delay-max", 6000);
1548 // Total limit we delay tailed requests since a page load beginning.
1549 pref("network.http.tailing.total-max", 45000);
1551 pref("network.proxy.http",                  "");
1552 pref("network.proxy.http_port",             0);
1553 pref("network.proxy.ssl",                   "");
1554 pref("network.proxy.ssl_port",              0);
1555 pref("network.proxy.socks",                 "");
1556 pref("network.proxy.socks_port",            0);
1557 pref("network.proxy.socks_version",         5);
1558 pref("network.proxy.proxy_over_tls",        true);
1559 pref("network.proxy.no_proxies_on",         "");
1560 pref("network.proxy.failover_timeout",      1800); // 30 minutes
1561 pref("network.online",                      true); //online/offline
1563 // This pref contains the list of hostnames (such as
1564 // "mozilla.org,example.net"). For these hosts, firefox will treat
1565 // SameSite=None if nothing else is specified, even if
1566 // network.cookie.sameSite.laxByDefault if set to true.
1567 // To know the correct syntax, see nsContentUtils::IsURIInList()
1568 pref("network.cookie.sameSite.laxByDefault.disabledHosts", "");
1570 pref("network.cookie.maxNumber", 3000);
1571 pref("network.cookie.maxPerHost", 180);
1572 // Cookies quota for each host. If cookies exceed the limit maxPerHost,
1573 // (maxPerHost - quotaPerHost) cookies will be evicted.
1574 pref("network.cookie.quotaPerHost", 150);
1576 // The PAC file to load.  Ignored unless network.proxy.type is 2.
1577 pref("network.proxy.autoconfig_url", "");
1578 // Strip off paths when sending URLs to PAC scripts
1579 pref("network.proxy.autoconfig_url.include_path", false);
1581 // If we cannot load the PAC file, then try again (doubling from interval_min
1582 // until we reach interval_max or the PAC file is successfully loaded).
1583 pref("network.proxy.autoconfig_retry_interval_min", 5);    // 5 seconds
1584 pref("network.proxy.autoconfig_retry_interval_max", 300);  // 5 minutes
1585 pref("network.proxy.enable_wpad_over_dhcp", true);
1587 // Use the HSTS preload list by default
1588 pref("network.stricttransportsecurity.preloadlist", true);
1590 pref("converter.html2txt.structs",          true); // Output structured phrases (strong, em, code, sub, sup, b, i, u)
1591 pref("converter.html2txt.header_strategy",  1); // 0 = no indention; 1 = indention, increased with header level; 2 = numbering and slight indention
1593 pref("intl.accept_languages",               "chrome://global/locale/intl.properties");
1594 pref("intl.menuitems.alwaysappendaccesskeys","chrome://global/locale/intl.properties");
1595 pref("intl.menuitems.insertseparatorbeforeaccesskeys","chrome://global/locale/intl.properties");
1596 pref("intl.ellipsis",                       "chrome://global-platform/locale/intl.properties");
1597 // this pref allows user to request that all internationalization formatters
1598 // like date/time formatting, unit formatting, calendars etc. should use
1599 // OS locale set instead of the app locale set.
1600 pref("intl.regional_prefs.use_os_locales",  false);
1601 pref("font.language.group",                 "chrome://global/locale/intl.properties");
1602 pref("font.cjk_pref_fallback_order",        "zh-cn,zh-hk,zh-tw,ja,ko");
1604 // This pref controls pseudolocales for testing localization.
1605 // See https://firefox-source-docs.mozilla.org/l10n/fluent/tutorial.html#manually-testing-ui-with-pseudolocalization
1606 pref("intl.l10n.pseudo", "");
1608 // use en-US hyphenation by default for content tagged with plain lang="en"
1609 pref("intl.hyphenation-alias.en", "en-us");
1610 // and for other subtags of en-*, if no specific patterns are available
1611 pref("intl.hyphenation-alias.en-*", "en-us");
1613 pref("intl.hyphenation-alias.af-*", "af");
1614 pref("intl.hyphenation-alias.bg-*", "bg");
1615 pref("intl.hyphenation-alias.bn-*", "bn");
1616 pref("intl.hyphenation-alias.ca-*", "ca");
1617 pref("intl.hyphenation-alias.cy-*", "cy");
1618 pref("intl.hyphenation-alias.da-*", "da");
1619 pref("intl.hyphenation-alias.eo-*", "eo");
1620 pref("intl.hyphenation-alias.es-*", "es");
1621 pref("intl.hyphenation-alias.et-*", "et");
1622 pref("intl.hyphenation-alias.fi-*", "fi");
1623 pref("intl.hyphenation-alias.fr-*", "fr");
1624 pref("intl.hyphenation-alias.gl-*", "gl");
1625 pref("intl.hyphenation-alias.gu-*", "gu");
1626 pref("intl.hyphenation-alias.hi-*", "hi");
1627 pref("intl.hyphenation-alias.hr-*", "hr");
1628 pref("intl.hyphenation-alias.hsb-*", "hsb");
1629 pref("intl.hyphenation-alias.hu-*", "hu");
1630 pref("intl.hyphenation-alias.ia-*", "ia");
1631 pref("intl.hyphenation-alias.is-*", "is");
1632 pref("intl.hyphenation-alias.it-*", "it");
1633 pref("intl.hyphenation-alias.kmr-*", "kmr");
1634 pref("intl.hyphenation-alias.kn-*", "kn");
1635 pref("intl.hyphenation-alias.la-*", "la");
1636 pref("intl.hyphenation-alias.lt-*", "lt");
1637 pref("intl.hyphenation-alias.ml-*", "ml");
1638 pref("intl.hyphenation-alias.mn-*", "mn");
1639 pref("intl.hyphenation-alias.nl-*", "nl");
1640 pref("intl.hyphenation-alias.or-*", "or");
1641 pref("intl.hyphenation-alias.pa-*", "pa");
1642 pref("intl.hyphenation-alias.pl-*", "pl");
1643 pref("intl.hyphenation-alias.pt-*", "pt");
1644 pref("intl.hyphenation-alias.ru-*", "ru");
1645 pref("intl.hyphenation-alias.sl-*", "sl");
1646 pref("intl.hyphenation-alias.sv-*", "sv");
1647 pref("intl.hyphenation-alias.ta-*", "ta");
1648 pref("intl.hyphenation-alias.te-*", "te");
1649 pref("intl.hyphenation-alias.tr-*", "tr");
1650 pref("intl.hyphenation-alias.uk-*", "uk");
1652 // Assamese and Marathi use the same patterns as Bengali and Hindi respectively
1653 pref("intl.hyphenation-alias.as", "bn");
1654 pref("intl.hyphenation-alias.as-*", "bn");
1655 pref("intl.hyphenation-alias.mr", "hi");
1656 pref("intl.hyphenation-alias.mr-*", "hi");
1658 // use reformed (1996) German patterns by default unless specifically tagged as de-1901
1659 // (these prefs may soon be obsoleted by better BCP47-based tag matching, but for now...)
1660 pref("intl.hyphenation-alias.de", "de-1996");
1661 pref("intl.hyphenation-alias.de-*", "de-1996");
1662 pref("intl.hyphenation-alias.de-AT-1901", "de-1901");
1663 pref("intl.hyphenation-alias.de-DE-1901", "de-1901");
1664 pref("intl.hyphenation-alias.de-CH-*", "de-CH");
1666 // patterns from TeX are tagged as "sh" (Serbo-Croatian) macrolanguage;
1667 // alias "sr" (Serbian) and "bs" (Bosnian) to those patterns
1668 // (Croatian has its own separate patterns).
1669 pref("intl.hyphenation-alias.sr", "sh");
1670 pref("intl.hyphenation-alias.bs", "sh");
1671 pref("intl.hyphenation-alias.sh-*", "sh");
1672 pref("intl.hyphenation-alias.sr-*", "sh");
1673 pref("intl.hyphenation-alias.bs-*", "sh");
1675 // Norwegian has two forms, BokmÃ¥l and Nynorsk, with "no" as a macrolanguage encompassing both.
1676 // For "no", we'll alias to "nb" (BokmÃ¥l) as that is the more widely used written form.
1677 pref("intl.hyphenation-alias.no", "nb");
1678 pref("intl.hyphenation-alias.no-*", "nb");
1679 pref("intl.hyphenation-alias.nb-*", "nb");
1680 pref("intl.hyphenation-alias.nn-*", "nn");
1682 // In German and Finnish, we allow hyphenation of capitalized words; otherwise not.
1683 // (Should this be extended to other languages? Should the default be changed?)
1684 pref("intl.hyphenate-capitalized.de-1996", true);
1685 pref("intl.hyphenate-capitalized.de-1901", true);
1686 pref("intl.hyphenate-capitalized.de-CH", true);
1687 pref("intl.hyphenate-capitalized.fi", true);
1689 // All prefs of default font should be "auto".
1690 pref("font.name.serif.ar", "");
1691 pref("font.name.sans-serif.ar", "");
1692 pref("font.name.monospace.ar", "");
1693 pref("font.name.cursive.ar", "");
1695 pref("font.name.serif.el", "");
1696 pref("font.name.sans-serif.el", "");
1697 pref("font.name.monospace.el", "");
1698 pref("font.name.cursive.el", "");
1700 pref("font.name.serif.he", "");
1701 pref("font.name.sans-serif.he", "");
1702 pref("font.name.monospace.he", "");
1703 pref("font.name.cursive.he", "");
1705 pref("font.name.serif.ja", "");
1706 pref("font.name.sans-serif.ja", "");
1707 pref("font.name.monospace.ja", "");
1708 pref("font.name.cursive.ja", "");
1710 pref("font.name.serif.ko", "");
1711 pref("font.name.sans-serif.ko", "");
1712 pref("font.name.monospace.ko", "");
1713 pref("font.name.cursive.ko", "");
1715 pref("font.name.serif.th", "");
1716 pref("font.name.sans-serif.th", "");
1717 pref("font.name.monospace.th", "");
1718 pref("font.name.cursive.th", "");
1720 pref("font.name.serif.x-cyrillic", "");
1721 pref("font.name.sans-serif.x-cyrillic", "");
1722 pref("font.name.monospace.x-cyrillic", "");
1723 pref("font.name.cursive.x-cyrillic", "");
1725 pref("font.name.serif.x-unicode", "");
1726 pref("font.name.sans-serif.x-unicode", "");
1727 pref("font.name.monospace.x-unicode", "");
1728 pref("font.name.cursive.x-unicode", "");
1730 pref("font.name.serif.x-western", "");
1731 pref("font.name.sans-serif.x-western", "");
1732 pref("font.name.monospace.x-western", "");
1733 pref("font.name.cursive.x-western", "");
1735 pref("font.name.serif.zh-CN", "");
1736 pref("font.name.sans-serif.zh-CN", "");
1737 pref("font.name.monospace.zh-CN", "");
1738 pref("font.name.cursive.zh-CN", "");
1740 pref("font.name.serif.zh-TW", "");
1741 pref("font.name.sans-serif.zh-TW", "");
1742 pref("font.name.monospace.zh-TW", "");
1743 pref("font.name.cursive.zh-TW", "");
1745 pref("font.name.serif.zh-HK", "");
1746 pref("font.name.sans-serif.zh-HK", "");
1747 pref("font.name.monospace.zh-HK", "");
1748 pref("font.name.cursive.zh-HK", "");
1750 pref("font.name.serif.x-devanagari", "");
1751 pref("font.name.sans-serif.x-devanagari", "");
1752 pref("font.name.monospace.x-devanagari", "");
1753 pref("font.name.cursive.x-devanagari", "");
1755 pref("font.name.serif.x-tamil", "");
1756 pref("font.name.sans-serif.x-tamil", "");
1757 pref("font.name.monospace.x-tamil", "");
1758 pref("font.name.cursive.x-tamil", "");
1760 pref("font.name.serif.x-armn", "");
1761 pref("font.name.sans-serif.x-armn", "");
1762 pref("font.name.monospace.x-armn", "");
1763 pref("font.name.cursive.x-armn", "");
1765 pref("font.name.serif.x-beng", "");
1766 pref("font.name.sans-serif.x-beng", "");
1767 pref("font.name.monospace.x-beng", "");
1768 pref("font.name.cursive.x-beng", "");
1770 pref("font.name.serif.x-cans", "");
1771 pref("font.name.sans-serif.x-cans", "");
1772 pref("font.name.monospace.x-cans", "");
1773 pref("font.name.cursive.x-cans", "");
1775 pref("font.name.serif.x-ethi", "");
1776 pref("font.name.sans-serif.x-ethi", "");
1777 pref("font.name.monospace.x-ethi", "");
1778 pref("font.name.cursive.x-ethi", "");
1780 pref("font.name.serif.x-geor", "");
1781 pref("font.name.sans-serif.x-geor", "");
1782 pref("font.name.monospace.x-geor", "");
1783 pref("font.name.cursive.x-geor", "");
1785 pref("font.name.serif.x-gujr", "");
1786 pref("font.name.sans-serif.x-gujr", "");
1787 pref("font.name.monospace.x-gujr", "");
1788 pref("font.name.cursive.x-gujr", "");
1790 pref("font.name.serif.x-guru", "");
1791 pref("font.name.sans-serif.x-guru", "");
1792 pref("font.name.monospace.x-guru", "");
1793 pref("font.name.cursive.x-guru", "");
1795 pref("font.name.serif.x-khmr", "");
1796 pref("font.name.sans-serif.x-khmr", "");
1797 pref("font.name.monospace.x-khmr", "");
1798 pref("font.name.cursive.x-khmr", "");
1800 pref("font.name.serif.x-mlym", "");
1801 pref("font.name.sans-serif.x-mlym", "");
1802 pref("font.name.monospace.x-mlym", "");
1803 pref("font.name.cursive.x-mlym", "");
1805 pref("font.name.serif.x-orya", "");
1806 pref("font.name.sans-serif.x-orya", "");
1807 pref("font.name.monospace.x-orya", "");
1808 pref("font.name.cursive.x-orya", "");
1810 pref("font.name.serif.x-telu", "");
1811 pref("font.name.sans-serif.x-telu", "");
1812 pref("font.name.monospace.x-telu", "");
1813 pref("font.name.cursive.x-telu", "");
1815 pref("font.name.serif.x-knda", "");
1816 pref("font.name.sans-serif.x-knda", "");
1817 pref("font.name.monospace.x-knda", "");
1818 pref("font.name.cursive.x-knda", "");
1820 pref("font.name.serif.x-sinh", "");
1821 pref("font.name.sans-serif.x-sinh", "");
1822 pref("font.name.monospace.x-sinh", "");
1823 pref("font.name.cursive.x-sinh", "");
1825 pref("font.name.serif.x-tibt", "");
1826 pref("font.name.sans-serif.x-tibt", "");
1827 pref("font.name.monospace.x-tibt", "");
1828 pref("font.name.cursive.x-tibt", "");
1830 pref("font.name.serif.x-math", "");
1831 pref("font.name.sans-serif.x-math", "");
1832 pref("font.name.monospace.x-math", "");
1833 pref("font.name.cursive.x-math", "");
1835 pref("font.name-list.serif.x-math", "Latin Modern Math, STIX Two Math, XITS Math, Cambria Math, Libertinus Math, DejaVu Math TeX Gyre, TeX Gyre Bonum Math, TeX Gyre Pagella Math, TeX Gyre Schola, TeX Gyre Termes Math, STIX Math, Asana Math, STIXGeneral, DejaVu Serif, DejaVu Sans, serif");
1836 pref("font.name-list.sans-serif.x-math", "sans-serif");
1837 pref("font.name-list.monospace.x-math", "monospace");
1839 // Some CJK fonts have bad underline offset, their CJK character glyphs are overlapped (or adjoined)  to its underline.
1840 // These fonts are ignored the underline offset, instead of it, the underline is lowered to bottom of its em descent.
1841 pref("font.blacklist.underline_offset", "FangSong,Gulim,GulimChe,MingLiU,MingLiU-ExtB,MingLiU_HKSCS,MingLiU-HKSCS-ExtB,MS Gothic,MS Mincho,MS PGothic,MS PMincho,MS UI Gothic,PMingLiU,PMingLiU-ExtB,SimHei,SimSun,SimSun-ExtB,Hei,Kai,Apple LiGothic,Apple LiSung,Osaka");
1843 // security-sensitive dialogs should delay button enabling. In milliseconds.
1844 pref("security.dialog_enable_delay", 1000);
1845 pref("security.notification_enable_delay", 500);
1847 #ifdef EARLY_BETA_OR_EARLIER
1848   // Disallow web documents loaded with the SystemPrincipal
1849   pref("security.disallow_non_local_systemprincipal_in_tests", false);
1850 #endif
1852 // Insecure Form Field Warning
1853 pref("security.insecure_field_warning.ignore_local_ip_address", true);
1855 // Remote settings preferences
1856 pref("services.settings.poll_interval", 86400); // 24H
1858 // The percentage of clients who will report uptake telemetry as
1859 // events instead of just a histogram. This only applies on Release;
1860 // other channels always report events.
1861 pref("services.common.uptake.sampleRate", 1);   // 1%
1863 pref("extensions.abuseReport.enabled", false);
1864 // Whether abuse report originated from AMO should use the Firefox integrated dialog.
1865 pref("extensions.abuseReport.amWebAPI.enabled", false);
1866 pref("extensions.abuseReport.url", "https://services.addons.mozilla.org/api/v4/abuse/report/addon/");
1867 pref("extensions.abuseReport.amoDetailsURL", "https://services.addons.mozilla.org/api/v4/addons/addon/");
1868 // Whether Firefox integrated abuse reporting feature should be opening the new abuse report form hosted on AMO.
1869 pref("extensions.abuseReport.amoFormEnabled", false);
1870 pref("extensions.abuseReport.amoFormURL", "https://addons.mozilla.org/%LOCALE%/%APP%/feedback/addon/%addonID%/");
1872 // Blocklist preferences
1873 pref("extensions.blocklist.enabled", true);
1874 pref("extensions.blocklist.detailsURL", "https://blocked.cdn.mozilla.net/");
1875 pref("extensions.blocklist.itemURL", "https://blocked.cdn.mozilla.net/%blockID%.html");
1876 pref("extensions.blocklist.addonItemURL", "https://addons.mozilla.org/%LOCALE%/%APP%/blocked-addon/%addonID%/%addonVersion%/");
1877 // Controls what level the blocklist switches from warning about items to forcibly
1878 // blocking them.
1879 pref("extensions.blocklist.level", 2);
1880 // Whether event pages should be enabled for "manifest_version: 2" extensions.
1881 pref("extensions.eventPages.enabled", true);
1882 // Whether MV3 restrictions for actions popup urls should be extended to MV2 extensions
1883 // (only allowing same extension urls to be used as action popup urls).
1884 pref("extensions.manifestV2.actionsPopupURLRestricted", false);
1885 // Whether "manifest_version: 3" extensions should be allowed to install successfully.
1886 pref("extensions.manifestV3.enabled", true);
1887 #ifndef MOZ_WEBEXT_WEBIDL_ENABLED
1888   // Defined in StaticPrefList.yaml but overridden here to lock it.
1889   pref("extensions.backgroundServiceWorker.enabled", false, locked);
1890 #endif
1891 // Whether to enable the updated openPopup API.
1892 #ifdef NIGHTLY_BUILD
1893   pref("extensions.openPopupWithoutUserGesture.enabled", true);
1894 #else
1895   pref("extensions.openPopupWithoutUserGesture.enabled", false);
1896 #endif
1897 // Install origins restriction.
1898 pref("extensions.install_origins.enabled", false);
1900 // TODO: bug 1830712: remove prefs related to browser_style deprecation.
1901 pref("extensions.browser_style_mv3.supported", false);
1902 pref("extensions.browser_style_mv3.same_as_mv2", false);
1904 // Middle-mouse handling
1905 pref("middlemouse.paste", false);
1906 pref("middlemouse.contentLoadURL", false);
1907 pref("middlemouse.scrollbarPosition", false);
1909 #if defined(XP_WIN) || defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK)
1910   // Setting false you can disable 4th button and/or 5th button of your mouse.
1911   // 4th button is typically mapped to "Back" and 5th button is typically mapped
1912   // to "Forward" button.
1913   pref("mousebutton.4th.enabled", true);
1914   pref("mousebutton.5th.enabled", true);
1915 #endif
1917 // mousewheel.*.action can specify the action when you use mosue wheel.
1918 // When no modifier keys are pressed or two or more modifires are pressed,
1919 // .default is used.
1920 // 0: Nothing happens
1921 // 1: Scrolling contents
1922 // 2: Go back or go forward, in your history
1923 // 3: Zoom in or out (reflowing zoom).
1924 // 4: Treat vertical wheel as horizontal scroll
1925 //      This treats vertical wheel operation (i.e., deltaY) as horizontal
1926 //      scroll.  deltaX and deltaZ are always ignored.  So, only
1927 //      "delta_multiplier_y" pref affects the scroll speed.
1928 // 5: Zoom in or out (pinch zoom).
1929 pref("mousewheel.default.action", 1);
1930 pref("mousewheel.with_alt.action", 2);
1931 pref("mousewheel.with_control.action", 3);
1932 // Command key on Mac, Windows log key on Windows and Linux
1933 pref("mousewheel.with_meta.action", 1);
1934 pref("mousewheel.with_shift.action", 4);
1936 // mousewheel.*.action.override_x will override the action
1937 // when the mouse wheel is rotated along the x direction.
1938 // -1: Don't override the action.
1939 // 0 to 3: Override the action with the specified value.
1940 // Note that 4 isn't available because it doesn't make sense to apply the
1941 // default action only for y direction to this pref.
1942 pref("mousewheel.default.action.override_x", -1);
1943 pref("mousewheel.with_alt.action.override_x", -1);
1944 pref("mousewheel.with_control.action.override_x", -1);
1945 // Command key on Mac, Windows log key on Windows and Linux
1946 pref("mousewheel.with_meta.action.override_x", -1);
1947 pref("mousewheel.with_shift.action.override_x", -1);
1949 // mousewheel.*.delta_multiplier_* can specify the value muliplied by the delta
1950 // value.  The values will be used after divided by 100.  I.e., 100 means 1.0,
1951 // -100 means -1.0.  If the values were negative, the direction would be
1952 // reverted.  The absolue value must be 100 or larger.
1953 pref("mousewheel.default.delta_multiplier_x", 100);
1954 pref("mousewheel.default.delta_multiplier_y", 100);
1955 pref("mousewheel.default.delta_multiplier_z", 100);
1956 pref("mousewheel.with_alt.delta_multiplier_x", 100);
1957 pref("mousewheel.with_alt.delta_multiplier_y", 100);
1958 pref("mousewheel.with_alt.delta_multiplier_z", 100);
1959 pref("mousewheel.with_control.delta_multiplier_x", 100);
1960 pref("mousewheel.with_control.delta_multiplier_y", 100);
1961 pref("mousewheel.with_control.delta_multiplier_z", 100);
1962 // Command key on Mac, Windows log key on Windows and Linux
1963 pref("mousewheel.with_meta.delta_multiplier_x", 100);
1964 pref("mousewheel.with_meta.delta_multiplier_y", 100);
1965 pref("mousewheel.with_meta.delta_multiplier_z", 100);
1966 pref("mousewheel.with_shift.delta_multiplier_x", 100);
1967 pref("mousewheel.with_shift.delta_multiplier_y", 100);
1968 pref("mousewheel.with_shift.delta_multiplier_z", 100);
1970 // enable single finger gesture input (win7+ tablets)
1971 pref("gestures.enable_single_finger_input", true);
1973 pref("dom.use_watchdog", true);
1975 // Stop all scripts in a compartment when the "stop script" dialog is used.
1976 pref("dom.global_stop_script", true);
1978 // Support the input event queue on the main thread of content process
1979 pref("input_event_queue.supported", true);
1981 // Enable multi by default.
1982 #if !defined(MOZ_ASAN) && !defined(MOZ_TSAN)
1983   pref("dom.ipc.processCount", 8);
1984 #elif defined(FUZZING_SNAPSHOT)
1985   pref("dom.ipc.processCount", 1);
1986 #else
1987   pref("dom.ipc.processCount", 4);
1988 #endif
1990 // Default to allow only one file:// URL content process.
1991 pref("dom.ipc.processCount.file", 1);
1993 // WebExtensions only support a single extension process.
1994 pref("dom.ipc.processCount.extension", 1);
1996 // The privileged about process only supports a single content process.
1997 pref("dom.ipc.processCount.privilegedabout", 1);
1999 // Limit the privileged mozilla process to a single instance only
2000 // to avoid multiple of these content processes
2001 pref("dom.ipc.processCount.privilegedmozilla", 1);
2003 // Maximum number of isolated content processes per-origin.
2004 #ifdef ANDROID
2005 pref("dom.ipc.processCount.webIsolated", 1);
2006 #else
2007 pref("dom.ipc.processCount.webIsolated", 4);
2008 #endif
2010 // Keep a single privileged about process alive for performance reasons.
2011 // e.g. we do not want to throw content processes out every time we navigate
2012 // away from about:newtab.
2013 pref("dom.ipc.keepProcessesAlive.privilegedabout", 1);
2015 // Disable support for SVG
2016 pref("svg.disabled", false);
2018 // This pref will cause assertions when a remoteType triggers a process switch
2019 // to a new remoteType it should not be able to trigger.
2020 pref("browser.tabs.remote.enforceRemoteTypeRestrictions", false);
2022 // Pref to control whether we use a separate privileged content process
2023 // for about: pages. This pref name did not age well: we will have multiple
2024 // types of privileged content processes, each with different privileges.
2025 pref("browser.tabs.remote.separatePrivilegedContentProcess", false);
2027 // The domains we will isolate into the Mozilla Content Process. Comma-separated
2028 // full domains: any subdomains of the domains listed will also be allowed.
2029 pref("browser.tabs.remote.separatedMozillaDomains", "addons.mozilla.org,accounts.firefox.com");
2031 // Default font types and sizes by locale
2032 pref("font.default.ar", "sans-serif");
2033 pref("font.minimum-size.ar", 0);
2034 pref("font.size.variable.ar", 16);
2035 pref("font.size.monospace.ar", 13);
2037 pref("font.default.el", "serif");
2038 pref("font.minimum-size.el", 0);
2039 pref("font.size.variable.el", 16);
2040 pref("font.size.monospace.el", 13);
2042 pref("font.default.he", "sans-serif");
2043 pref("font.minimum-size.he", 0);
2044 pref("font.size.variable.he", 16);
2045 pref("font.size.monospace.he", 13);
2047 pref("font.default.ja", "sans-serif");
2048 pref("font.minimum-size.ja", 0);
2049 pref("font.size.variable.ja", 16);
2050 pref("font.size.monospace.ja", 16);
2052 pref("font.default.ko", "sans-serif");
2053 pref("font.minimum-size.ko", 0);
2054 pref("font.size.variable.ko", 16);
2055 pref("font.size.monospace.ko", 16);
2057 pref("font.default.th", "sans-serif");
2058 pref("font.minimum-size.th", 0);
2059 pref("font.size.variable.th", 16);
2060 pref("font.size.monospace.th", 13);
2062 pref("font.default.x-cyrillic", "serif");
2063 pref("font.minimum-size.x-cyrillic", 0);
2064 pref("font.size.variable.x-cyrillic", 16);
2065 pref("font.size.monospace.x-cyrillic", 13);
2067 pref("font.default.x-devanagari", "serif");
2068 pref("font.minimum-size.x-devanagari", 0);
2069 pref("font.size.variable.x-devanagari", 16);
2070 pref("font.size.monospace.x-devanagari", 13);
2072 pref("font.default.x-tamil", "serif");
2073 pref("font.minimum-size.x-tamil", 0);
2074 pref("font.size.variable.x-tamil", 16);
2075 pref("font.size.monospace.x-tamil", 13);
2077 pref("font.default.x-armn", "serif");
2078 pref("font.minimum-size.x-armn", 0);
2079 pref("font.size.variable.x-armn", 16);
2080 pref("font.size.monospace.x-armn", 13);
2082 pref("font.default.x-beng", "serif");
2083 pref("font.minimum-size.x-beng", 0);
2084 pref("font.size.variable.x-beng", 16);
2085 pref("font.size.monospace.x-beng", 13);
2087 pref("font.default.x-cans", "serif");
2088 pref("font.minimum-size.x-cans", 0);
2089 pref("font.size.variable.x-cans", 16);
2090 pref("font.size.monospace.x-cans", 13);
2092 pref("font.default.x-ethi", "serif");
2093 pref("font.minimum-size.x-ethi", 0);
2094 pref("font.size.variable.x-ethi", 16);
2095 pref("font.size.monospace.x-ethi", 13);
2097 pref("font.default.x-geor", "serif");
2098 pref("font.minimum-size.x-geor", 0);
2099 pref("font.size.variable.x-geor", 16);
2100 pref("font.size.monospace.x-geor", 13);
2102 pref("font.default.x-gujr", "serif");
2103 pref("font.minimum-size.x-gujr", 0);
2104 pref("font.size.variable.x-gujr", 16);
2105 pref("font.size.monospace.x-gujr", 13);
2107 pref("font.default.x-guru", "serif");
2108 pref("font.minimum-size.x-guru", 0);
2109 pref("font.size.variable.x-guru", 16);
2110 pref("font.size.monospace.x-guru", 13);
2112 pref("font.default.x-khmr", "serif");
2113 pref("font.minimum-size.x-khmr", 0);
2114 pref("font.size.variable.x-khmr", 16);
2115 pref("font.size.monospace.x-khmr", 13);
2117 pref("font.default.x-mlym", "serif");
2118 pref("font.minimum-size.x-mlym", 0);
2119 pref("font.size.variable.x-mlym", 16);
2120 pref("font.size.monospace.x-mlym", 13);
2122 pref("font.default.x-orya", "serif");
2123 pref("font.minimum-size.x-orya", 0);
2124 pref("font.size.variable.x-orya", 16);
2125 pref("font.size.monospace.x-orya", 13);
2127 pref("font.default.x-telu", "serif");
2128 pref("font.minimum-size.x-telu", 0);
2129 pref("font.size.variable.x-telu", 16);
2130 pref("font.size.monospace.x-telu", 13);
2132 pref("font.default.x-knda", "serif");
2133 pref("font.minimum-size.x-knda", 0);
2134 pref("font.size.variable.x-knda", 16);
2135 pref("font.size.monospace.x-knda", 13);
2137 pref("font.default.x-sinh", "serif");
2138 pref("font.minimum-size.x-sinh", 0);
2139 pref("font.size.variable.x-sinh", 16);
2140 pref("font.size.monospace.x-sinh", 13);
2142 pref("font.default.x-tibt", "serif");
2143 pref("font.minimum-size.x-tibt", 0);
2144 pref("font.size.variable.x-tibt", 16);
2145 pref("font.size.monospace.x-tibt", 13);
2147 pref("font.default.x-unicode", "serif");
2148 pref("font.minimum-size.x-unicode", 0);
2149 pref("font.size.variable.x-unicode", 16);
2150 pref("font.size.monospace.x-unicode", 13);
2152 pref("font.default.x-western", "serif");
2153 pref("font.minimum-size.x-western", 0);
2154 pref("font.size.variable.x-western", 16);
2155 pref("font.size.monospace.x-western", 13);
2157 pref("font.default.zh-CN", "sans-serif");
2158 pref("font.minimum-size.zh-CN", 0);
2159 pref("font.size.variable.zh-CN", 16);
2160 pref("font.size.monospace.zh-CN", 16);
2162 pref("font.default.zh-HK", "sans-serif");
2163 pref("font.minimum-size.zh-HK", 0);
2164 pref("font.size.variable.zh-HK", 16);
2165 pref("font.size.monospace.zh-HK", 16);
2167 pref("font.default.zh-TW", "sans-serif");
2168 pref("font.minimum-size.zh-TW", 0);
2169 pref("font.size.variable.zh-TW", 16);
2170 pref("font.size.monospace.zh-TW", 16);
2172 // mathml.css sets font-size to "inherit" and font-family to "serif" so only
2173 // font.name.*.x-math and font.minimum-size.x-math are really relevant.
2174 pref("font.default.x-math", "serif");
2175 pref("font.minimum-size.x-math", 0);
2176 pref("font.size.variable.x-math", 16);
2177 pref("font.size.monospace.x-math", 13);
2179 #ifdef XP_WIN
2181   pref("font.name-list.emoji", "Segoe UI Emoji, Twemoji Mozilla");
2183   pref("font.name-list.serif.ar", "Times New Roman");
2184   pref("font.name-list.sans-serif.ar", "Segoe UI, Tahoma, Arial");
2185   pref("font.name-list.monospace.ar", "Consolas");
2186   pref("font.name-list.cursive.ar", "Comic Sans MS");
2188   pref("font.name-list.serif.el", "Times New Roman");
2189   pref("font.name-list.sans-serif.el", "Arial");
2190   pref("font.name-list.monospace.el", "Consolas");
2191   pref("font.name-list.cursive.el", "Comic Sans MS");
2193   pref("font.name-list.serif.he", "Narkisim, David");
2194   pref("font.name-list.sans-serif.he", "Arial");
2195   pref("font.name-list.monospace.he", "Fixed Miriam Transparent, Miriam Fixed, Rod, Consolas, Courier New");
2196   pref("font.name-list.cursive.he", "Guttman Yad, Ktav, Arial");
2198   pref("font.name-list.serif.ja", "Yu Mincho, MS PMincho, MS Mincho, Meiryo, Yu Gothic, MS PGothic, MS Gothic");
2199   pref("font.name-list.sans-serif.ja", "Meiryo, Yu Gothic, MS PGothic, MS Gothic, Yu Mincho, MS PMincho, MS Mincho");
2200   pref("font.name-list.monospace.ja", "MS Gothic, MS Mincho, Meiryo, Yu Gothic, Yu Mincho, MS PGothic, MS PMincho");
2202   pref("font.name-list.serif.ko", "Batang, Gulim");
2203   pref("font.name-list.sans-serif.ko", "Malgun Gothic, Gulim");
2204   pref("font.name-list.monospace.ko", "GulimChe");
2205   pref("font.name-list.cursive.ko", "Gungsuh");
2207   pref("font.name-list.serif.th", "Tahoma");
2208   pref("font.name-list.sans-serif.th", "Tahoma");
2209   pref("font.name-list.monospace.th", "Tahoma");
2210   pref("font.name-list.cursive.th", "Tahoma");
2212   pref("font.name-list.serif.x-cyrillic", "Times New Roman");
2213   pref("font.name-list.sans-serif.x-cyrillic", "Arial");
2214   pref("font.name-list.monospace.x-cyrillic", "Consolas");
2215   pref("font.name-list.cursive.x-cyrillic", "Comic Sans MS");
2217   pref("font.name-list.serif.x-unicode", "Times New Roman");
2218   pref("font.name-list.sans-serif.x-unicode", "Arial");
2219   pref("font.name-list.monospace.x-unicode", "Consolas");
2220   pref("font.name-list.cursive.x-unicode", "Comic Sans MS");
2222   pref("font.name-list.serif.x-western", "Times New Roman");
2223   pref("font.name-list.sans-serif.x-western", "Arial");
2224   pref("font.name-list.monospace.x-western", "Consolas");
2225   pref("font.name-list.cursive.x-western", "Comic Sans MS");
2227   pref("font.name-list.serif.zh-CN", "SimSun, MS Song, SimSun-ExtB");
2228   pref("font.name-list.sans-serif.zh-CN", "Microsoft YaHei, SimHei");
2229   pref("font.name-list.monospace.zh-CN", "SimSun, MS Song, SimSun-ExtB");
2230   pref("font.name-list.cursive.zh-CN", "KaiTi, KaiTi_GB2312");
2232   // Per Taiwanese users' demand. They don't want to use TC fonts for
2233   // rendering Latin letters. (bug 88579)
2234   pref("font.name-list.serif.zh-TW", "Times New Roman, PMingLiu, MingLiU, MingLiU-ExtB");
2235   #ifdef EARLY_BETA_OR_EARLIER
2236     pref("font.name-list.sans-serif.zh-TW", "Arial, Microsoft JhengHei, PMingLiU, MingLiU, MingLiU-ExtB");
2237   #else
2238     pref("font.name-list.sans-serif.zh-TW", "Arial, PMingLiU, MingLiU, MingLiU-ExtB, Microsoft JhengHei");
2239   #endif
2240   pref("font.name-list.monospace.zh-TW", "MingLiU, MingLiU-ExtB");
2241   pref("font.name-list.cursive.zh-TW", "DFKai-SB");
2243   // hkscsm3u.ttf (HKSCS-2001) :  http://www.microsoft.com/hk/hkscs
2244   // Hong Kong users have the same demand about glyphs for Latin letters (bug 88579)
2245   pref("font.name-list.serif.zh-HK", "Times New Roman, MingLiu_HKSCS, Ming(for ISO10646), MingLiU, MingLiU_HKSCS-ExtB, Microsoft JhengHei");
2246   pref("font.name-list.sans-serif.zh-HK", "Arial, MingLiU_HKSCS, Ming(for ISO10646), MingLiU, MingLiU_HKSCS-ExtB, Microsoft JhengHei");
2247   pref("font.name-list.monospace.zh-HK", "MingLiU_HKSCS, Ming(for ISO10646), MingLiU, MingLiU_HKSCS-ExtB, Microsoft JhengHei");
2248   pref("font.name-list.cursive.zh-HK", "DFKai-SB");
2250   pref("font.name-list.serif.x-devanagari", "Kokila, Raghindi");
2251   pref("font.name-list.sans-serif.x-devanagari", "Nirmala UI, Mangal");
2252   pref("font.name-list.monospace.x-devanagari", "Mangal, Nirmala UI");
2254   pref("font.name-list.serif.x-tamil", "Latha");
2255   pref("font.name-list.monospace.x-tamil", "Latha");
2257   // http://www.alanwood.net/unicode/fonts.html
2259   pref("font.name-list.serif.x-armn", "Sylfaen");
2260   pref("font.name-list.sans-serif.x-armn", "Arial AMU");
2261   pref("font.name-list.monospace.x-armn", "Arial AMU");
2263   pref("font.name-list.serif.x-beng", "Vrinda, Akaash, Likhan, Ekushey Punarbhaba");
2264   pref("font.name-list.sans-serif.x-beng", "Vrinda, Akaash, Likhan, Ekushey Punarbhaba");
2265   pref("font.name-list.monospace.x-beng", "Mitra Mono, Likhan, Mukti Narrow");
2267   pref("font.name-list.serif.x-cans", "Aboriginal Serif, BJCree Uni");
2268   pref("font.name-list.sans-serif.x-cans", "Aboriginal Sans");
2269   pref("font.name-list.monospace.x-cans", "Aboriginal Sans, OskiDakelh, Pigiarniq, Uqammaq");
2271   pref("font.name-list.serif.x-ethi", "Visual Geez Unicode, Visual Geez Unicode Agazian");
2272   pref("font.name-list.sans-serif.x-ethi", "GF Zemen Unicode");
2273   pref("font.name-list.monospace.x-ethi", "Ethiopia Jiret");
2274   pref("font.name-list.cursive.x-ethi", "Visual Geez Unicode Title");
2276   pref("font.name-list.serif.x-geor", "Sylfaen, BPG Paata Khutsuri U, TITUS Cyberbit Basic");
2277   pref("font.name-list.sans-serif.x-geor", "BPG Classic 99U");
2278   pref("font.name-list.monospace.x-geor", "BPG Classic 99U");
2280   pref("font.name-list.serif.x-gujr", "Shruti");
2281   pref("font.name-list.sans-serif.x-gujr", "Shruti");
2282   pref("font.name-list.monospace.x-gujr", "Shruti");
2284   pref("font.name-list.serif.x-guru", "Raavi, Saab");
2285   pref("font.name-list.sans-serif.x-guru", "");
2286   pref("font.name-list.monospace.x-guru", "Raavi, Saab");
2288   pref("font.name-list.serif.x-khmr", "PhnomPenh OT,.Mondulkiri U GR 1.5, Khmer OS");
2289   pref("font.name-list.sans-serif.x-khmr", "Khmer OS");
2290   pref("font.name-list.monospace.x-khmr", "Khmer OS, Khmer OS System");
2292   pref("font.name-list.serif.x-mlym", "Rachana_w01, AnjaliOldLipi, Kartika, ThoolikaUnicode");
2293   pref("font.name-list.sans-serif.x-mlym", "Rachana_w01, AnjaliOldLipi, Kartika, ThoolikaUnicode");
2294   pref("font.name-list.monospace.x-mlym", "Rachana_w01, AnjaliOldLipi, Kartika, ThoolikaUnicode");
2296   pref("font.name-list.serif.x-orya", "ori1Uni, Kalinga");
2297   pref("font.name-list.sans-serif.x-orya", "ori1Uni, Kalinga");
2298   pref("font.name-list.monospace.x-orya", "ori1Uni, Kalinga");
2300   pref("font.name-list.serif.x-telu", "Gautami, Akshar Unicode");
2301   pref("font.name-list.sans-serif.x-telu", "Gautami, Akshar Unicode");
2302   pref("font.name-list.monospace.x-telu", "Gautami, Akshar Unicode");
2304   pref("font.name-list.serif.x-knda", "Tunga, AksharUnicode");
2305   pref("font.name-list.sans-serif.x-knda", "Tunga, AksharUnicode");
2306   pref("font.name-list.monospace.x-knda", "Tunga, AksharUnicode");
2308   pref("font.name-list.serif.x-sinh", "Iskoola Pota, AksharUnicode");
2309   pref("font.name-list.sans-serif.x-sinh", "Iskoola Pota, AksharUnicode");
2310   pref("font.name-list.monospace.x-sinh", "Iskoola Pota, AksharUnicode");
2312   pref("font.name-list.serif.x-tibt", "Tibetan Machine Uni, Jomolhari, Microsoft Himalaya");
2313   pref("font.name-list.sans-serif.x-tibt", "Tibetan Machine Uni, Jomolhari, Microsoft Himalaya");
2314   pref("font.name-list.monospace.x-tibt", "Tibetan Machine Uni, Jomolhari, Microsoft Himalaya");
2316   pref("font.minimum-size.th", 10);
2318   pref("font.default.x-devanagari", "sans-serif");
2320   pref("font.name-list.serif.x-math", "Latin Modern Math, STIX Two Math, XITS Math, Cambria Math, Libertinus Math, DejaVu Math TeX Gyre, TeX Gyre Bonum Math, TeX Gyre Pagella Math, TeX Gyre Schola, TeX Gyre Termes Math, STIX Math, Asana Math, STIXGeneral, DejaVu Serif, DejaVu Sans, Times New Roman");
2321   pref("font.name-list.sans-serif.x-math", "Arial");
2322   pref("font.name-list.monospace.x-math", "Consolas");
2323   pref("font.name-list.cursive.x-math", "Comic Sans MS");
2325   // ClearType tuning parameters for directwrite/d2d.
2326   //
2327   // Allows overriding of underlying registry values in:
2328   //   HKCU/Software/Microsoft/Avalon.Graphics/<display> (contrast and level)
2329   //   HKLM/Software/Microsoft/Avalon.Graphics/<display> (gamma, pixel structure)
2330   // and selection of the ClearType/antialiasing mode.
2331   //
2332   // A value of -1 implies use the default value, otherwise value ranges
2333   // follow registry settings:
2334   //   gamma [1000, 2200]  default: based on screen, typically 2200 (== 2.2)
2335   //   enhanced contrast [0, 1000] default: 50
2336   //   cleartype level [0, 100] default: 100
2337   //   pixel structure [0, 2] default: 0 (flat/RGB/BGR)
2338   //   rendering mode [0, 5] default: 0
2339   //     0 = use default for font & size;
2340   //     1 = aliased;
2341   //     2 = GDI Classic;
2342   //     3 = GDI Natural Widths;
2343   //     4 = Natural;
2344   //     5 = Natural Symmetric
2345   //
2346   // See:
2347   //   http://msdn.microsoft.com/en-us/library/aa970267.aspx
2348   //   http://msdn.microsoft.com/en-us/library/dd368190%28v=VS.85%29.aspx
2349   // Note: DirectWrite uses the "Enhanced Contrast Level" value rather than the
2350   // "Text Contrast Level" value
2352   pref("gfx.font_rendering.cleartype_params.gamma", -1);
2353   pref("gfx.font_rendering.cleartype_params.enhanced_contrast", -1);
2354   pref("gfx.font_rendering.cleartype_params.cleartype_level", -1);
2355   pref("gfx.font_rendering.cleartype_params.pixel_structure", -1);
2356   pref("gfx.font_rendering.cleartype_params.rendering_mode", -1);
2358   // A comma-separated list of font family names. Fonts in these families will
2359   // be forced to use "GDI Classic" ClearType mode, provided the value
2360   // of gfx.font_rendering.cleartype_params.rendering_mode is -1
2361   // (i.e. a specific rendering_mode has not been explicitly set).
2362   // Currently we apply this setting to the sans-serif Microsoft "core Web fonts".
2363   pref("gfx.font_rendering.cleartype_params.force_gdi_classic_for_families",
2364        "Arial,Consolas,Courier New,Microsoft Sans Serif,Segoe UI,Tahoma,Trebuchet MS,Verdana");
2365   // The maximum size at which we will force GDI classic mode using
2366   // force_gdi_classic_for_families.
2367   pref("gfx.font_rendering.cleartype_params.force_gdi_classic_max_size", 15);
2369   // Switch the keyboard layout per window
2370   pref("intl.keyboard.per_window_layout", false);
2372   // If composition_font is set, Gecko sets the font to IME.  IME may use
2373   // the fonts on their window like candidate window.  If they are empty,
2374   // Gecko uses the system default font which is set to the IM context.
2375   // The font name must not start with '@'.  When the writing mode is vertical,
2376   // Gecko inserts '@' to the start of the font name automatically.
2377   // FYI: Changing these prefs requires to restart.
2378   pref("intl.imm.composition_font", "");
2380   // Japanist 2003's candidate window is broken if the font is "@System" which
2381   // is default composition font for vertical writing mode.
2382   // You can specify font to use on candidate window of Japanist 2003.
2383   // This value must not start with '@'.
2384   // FYI: Changing this pref requires to restart.
2385   pref("intl.imm.composition_font.japanist_2003", "MS PGothic");
2387   // Even if IME claims that they support vertical writing mode but it may not
2388   // support vertical writing mode for its candidate window.  This pref allows
2389   // to ignore the claim.
2390   // FYI: Changing this pref requires to restart.
2391   pref("intl.imm.vertical_writing.always_assume_not_supported", false);
2393   // We cannot retrieve active IME name with IMM32 API if a TIP of TSF is
2394   // active. This pref can specify active IME name when Japanese TIP is active.
2395   // For example:
2396   //   Google Japanese Input: "Google æ—¥æœ¬èªžå…¥åŠ› IMM32 ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«"
2397   //   ATOK 2011: "ATOK 2011" (similarly, e.g., ATOK 2013 is "ATOK 2013")
2398   pref("intl.imm.japanese.assume_active_tip_name_as", "");
2400   // See bug 448927, on topmost panel, some IMEs are not usable on Windows.
2401   pref("ui.panel.default_level_parent", false);
2403   // Enable system settings cache for mouse wheel message handling.
2404   // Note that even if this pref is set to true, Gecko may not cache the system
2405   // settings if Gecko detects that the cache won't be refreshed properly when
2406   // the settings are changed.
2407   pref("mousewheel.system_settings_cache.enabled", true);
2409   // This is a pref to test system settings cache for mouse wheel message
2410   // handling.  If this is set to true, Gecko forcibly use the cache.
2411   pref("mousewheel.system_settings_cache.force_enabled", false);
2413   // If your mouse drive sends WM_*SCROLL messages when you turn your mouse
2414   // wheel, set this to true.  Then, gecko processes them as mouse wheel
2415   // messages.
2416   pref("mousewheel.emulate_at_wm_scroll", false);
2418   // Some odd touchpad utils give focus to window under cursor when user tries
2419   // to scroll.  If this is true, Gecko tries to emulate such odd behavior.
2420   // Don't make this true unless you want to debug.  Enabling this pref causes
2421   // making damage to the performance.
2422   pref("mousewheel.debug.make_window_under_cursor_foreground", false);
2424   // Enables or disabled the TrackPoint hack, -1 is autodetect, 0 is off,
2425   // and 1 is on.  Set this to 1 if TrackPoint scrolling is not working.
2426   pref("ui.trackpoint_hack.enabled", -1);
2428   // Setting this to a non-empty string overrides the Win32 "window class" used
2429   // for "normal" windows. Setting this to MozillaUIWindowClass might make
2430   // some trackpad drivers behave better.
2431   pref("ui.window_class_override", "");
2433   // Enables or disables the Elantech gesture hacks.  -1 is autodetect, 0 is
2434   // off, and 1 is on.  Set this to 1 if three-finger swipe gestures do not
2435   // cause page back/forward actions, or if pinch-to-zoom does not work.
2436   pref("ui.elantech_gesture_hacks.enabled", -1);
2438   // Show the Windows on-screen keyboard (osk.exe) when a text field is focused.
2439   pref("ui.osk.enabled", true);
2440   // Only show the on-screen keyboard if there are no physical keyboards
2441   // attached to the device.
2442   pref("ui.osk.detect_physical_keyboard", true);
2443   // Path to TabTip.exe on local machine. Cached for performance reasons.
2444   pref("ui.osk.on_screen_keyboard_path", "");
2445   // This pref stores the "reason" that the on-screen keyboard was either
2446   // shown or not shown when focus is moved to an editable text field. It is
2447   // used to help debug why the keyboard is either not appearing when expected
2448   // or appearing when it is not expected.
2449   pref("ui.osk.debug.keyboardDisplayReason", "");
2451 #endif // XP_WIN
2453 #ifdef XP_MACOSX
2454   // Mac specific preference defaults
2455   pref("browser.drag_out_of_frame_style", 1);
2457   // default fonts (in UTF8 and using canonical names)
2458   // to determine canonical font names, use a debug build and
2459   // enable NSPR logging for module fontInfoLog:5
2460   // canonical names immediately follow '(fontinit) family:' in the log
2462   // For some scripts there is no commonly-installed monospace font, so we just use
2463   // the same as serif/sans-serif, but we prefix the list with Menlo so that at least
2464   // Latin text will be monospaced if it occurs when that lang code is in effect.
2466   pref("font.name-list.emoji", "Apple Color Emoji");
2468   pref("font.name-list.serif.ar", "Al Bayan");
2469   pref("font.name-list.sans-serif.ar", "Geeza Pro");
2470   pref("font.name-list.monospace.ar", "Menlo, Geeza Pro");
2471   pref("font.name-list.cursive.ar", "DecoType Naskh");
2472   pref("font.name-list.fantasy.ar", "KufiStandardGK");
2474   pref("font.name-list.serif.el", "Times, Times New Roman");
2475   pref("font.name-list.sans-serif.el", "Helvetica, Lucida Grande");
2476   pref("font.name-list.monospace.el", "Menlo");
2477   pref("font.name-list.cursive.el", "Lucida Grande, Times");
2478   pref("font.name-list.fantasy.el", "Lucida Grande, Times");
2480   pref("font.name-list.serif.he", "Times New Roman");
2481   pref("font.name-list.sans-serif.he", "Arial");
2482   pref("font.name-list.monospace.he", "Menlo, Courier New");
2483   pref("font.name-list.cursive.he", "Times New Roman");
2484   pref("font.name-list.fantasy.he", "Times New Roman");
2486   pref("font.name-list.serif.ja", "Hiragino Mincho ProN, Hiragino Mincho Pro");
2487   pref("font.name-list.sans-serif.ja", "Hiragino Kaku Gothic ProN, Hiragino Kaku Gothic Pro, Hiragino Sans");
2488   pref("font.name-list.monospace.ja", "Osaka-Mono, Menlo, Hiragino Kaku Gothic ProN, Hiragino Sans");
2490   pref("font.name-list.serif.ko", "AppleMyungjo");
2491   pref("font.name-list.sans-serif.ko", "Apple SD Gothic Neo, AppleGothic");
2492   pref("font.name-list.monospace.ko", "Menlo, Apple SD Gothic Neo, AppleGothic");
2494   pref("font.name-list.serif.th", "Thonburi");
2495   pref("font.name-list.sans-serif.th", "Thonburi");
2496   pref("font.name-list.monospace.th", "Menlo, Ayuthaya");
2498   pref("font.name-list.serif.x-armn", "Mshtakan");
2499   pref("font.name-list.sans-serif.x-armn", "Mshtakan");
2500   pref("font.name-list.monospace.x-armn", "Menlo, Mshtakan");
2502   // SolaimanLipi, Rupali http://ekushey.org/?page/mac_download
2503   pref("font.name-list.serif.x-beng", "Bangla MN");
2504   pref("font.name-list.sans-serif.x-beng", "Bangla Sangam MN");
2505   pref("font.name-list.monospace.x-beng", "Menlo, Bangla Sangam MN");
2507   pref("font.name-list.serif.x-cans", "Euphemia UCAS");
2508   pref("font.name-list.sans-serif.x-cans", "Euphemia UCAS");
2509   pref("font.name-list.monospace.x-cans", "Menlo, Euphemia UCAS");
2511   pref("font.name-list.serif.x-cyrillic", "Times, Times New Roman");
2512   pref("font.name-list.sans-serif.x-cyrillic", "Helvetica, Arial");
2513   pref("font.name-list.monospace.x-cyrillic", "Menlo");
2514   pref("font.name-list.cursive.x-cyrillic", "Geneva");
2515   pref("font.name-list.fantasy.x-cyrillic", "Charcoal CY");
2517   pref("font.name-list.serif.x-devanagari", "Devanagari MT");
2518   pref("font.name-list.sans-serif.x-devanagari", "Devanagari Sangam MN, Devanagari MT");
2519   pref("font.name-list.monospace.x-devanagari", "Menlo, Devanagari Sangam MN, Devanagari MT");
2521   // Abyssinica SIL http://scripts.sil.org/AbyssinicaSIL_Download
2522   pref("font.name-list.serif.x-ethi", "Kefa, Abyssinica SIL");
2523   pref("font.name-list.sans-serif.x-ethi", "Kefa, Abyssinica SIL");
2524   pref("font.name-list.monospace.x-ethi", "Menlo, Kefa, Abyssinica SIL");
2526   // no suitable fonts for georgian ship with mac os x
2527   // however some can be freely downloaded
2528   // TITUS Cyberbit Basic http://titus.fkidg1.uni-frankfurt.de/unicode/tituut.asp
2529   // Zuzumbo http://homepage.mac.com/rsiradze/FileSharing91.html
2530   pref("font.name-list.serif.x-geor", "TITUS Cyberbit Basic");
2531   pref("font.name-list.sans-serif.x-geor", "Zuzumbo");
2532   pref("font.name-list.monospace.x-geor", "Menlo, Zuzumbo");
2534   pref("font.name-list.serif.x-gujr", "Gujarati MT");
2535   pref("font.name-list.sans-serif.x-gujr", "Gujarati Sangam MN, Gujarati MT");
2536   pref("font.name-list.monospace.x-gujr", "Menlo, Gujarati Sangam MN, Gujarati MT");
2538   pref("font.name-list.serif.x-guru", "Gurmukhi MT");
2539   pref("font.name-list.sans-serif.x-guru", "Gurmukhi MT");
2540   pref("font.name-list.monospace.x-guru", "Menlo, Gurmukhi MT");
2542   pref("font.name-list.serif.x-khmr", "Khmer MN");
2543   pref("font.name-list.sans-serif.x-khmr", "Khmer Sangam MN");
2544   pref("font.name-list.monospace.x-khmr", "Menlo, Khmer Sangam MN");
2546   pref("font.name-list.serif.x-mlym", "Malayalam MN");
2547   pref("font.name-list.sans-serif.x-mlym", "Malayalam Sangam MN");
2548   pref("font.name-list.monospace.x-mlym", "Menlo, Malayalam Sangam MN");
2550   pref("font.name-list.serif.x-orya", "Oriya MN");
2551   pref("font.name-list.sans-serif.x-orya", "Oriya Sangam MN");
2552   pref("font.name-list.monospace.x-orya", "Menlo, Oriya Sangam MN");
2554   // Pothana http://web.nickshanks.com/typography/telugu/
2555   pref("font.name-list.serif.x-telu", "Telugu MN, Pothana");
2556   pref("font.name-list.sans-serif.x-telu", "Telugu Sangam MN, Pothana");
2557   pref("font.name-list.monospace.x-telu", "Menlo, Telugu Sangam MN, Pothana");
2559   // Kedage http://web.nickshanks.com/typography/kannada/
2560   pref("font.name-list.serif.x-knda", "Kannada MN, Kedage");
2561   pref("font.name-list.sans-serif.x-knda", "Kannada Sangam MN, Kedage");
2562   pref("font.name-list.monospace.x-knda", "Menlo, Kannada Sangam MN, Kedage");
2564   pref("font.name-list.serif.x-sinh", "Sinhala MN");
2565   pref("font.name-list.sans-serif.x-sinh", "Sinhala Sangam MN");
2566   pref("font.name-list.monospace.x-sinh", "Menlo, Sinhala Sangam MN");
2568   pref("font.name-list.serif.x-tamil", "InaiMathi");
2569   pref("font.name-list.sans-serif.x-tamil", "InaiMathi");
2570   pref("font.name-list.monospace.x-tamil", "Menlo, InaiMathi");
2572   // Kailasa ships with mac os x >= 10.5
2573   pref("font.name-list.serif.x-tibt", "Kailasa");
2574   pref("font.name-list.sans-serif.x-tibt", "Kailasa");
2575   pref("font.name-list.monospace.x-tibt", "Menlo, Kailasa");
2577   pref("font.name-list.serif.x-unicode", "Times");
2578   pref("font.name-list.sans-serif.x-unicode", "Helvetica");
2579   pref("font.name-list.monospace.x-unicode", "Menlo");
2580   pref("font.name-list.cursive.x-unicode", "Apple Chancery");
2581   pref("font.name-list.fantasy.x-unicode", "Papyrus");
2583   pref("font.name-list.serif.x-western", "Times, Times New Roman");
2584   pref("font.name-list.sans-serif.x-western", "Helvetica, Arial");
2585   pref("font.name-list.monospace.x-western", "Menlo");
2586   pref("font.name-list.cursive.x-western", "Apple Chancery");
2587   pref("font.name-list.fantasy.x-western", "Papyrus");
2589   pref("font.name-list.serif.zh-CN", "Times New Roman, Songti SC, STSong, Heiti SC");
2590   pref("font.name-list.sans-serif.zh-CN", "Arial, PingFang SC, STHeiti, Heiti SC");
2591   pref("font.name-list.monospace.zh-CN", "Menlo, PingFang SC, STHeiti, Heiti SC");
2592   pref("font.name-list.cursive.zh-CN", "Kaiti SC");
2594   pref("font.name-list.serif.zh-TW", "Times New Roman, Songti TC, LiSong Pro, Heiti TC");
2595   pref("font.name-list.sans-serif.zh-TW", "Arial, PingFang TC, Heiti TC, LiHei Pro");
2596   pref("font.name-list.monospace.zh-TW", "Menlo, PingFang TC, Heiti TC, LiHei Pro");
2597   pref("font.name-list.cursive.zh-TW", "Kaiti TC");
2599   pref("font.name-list.serif.zh-HK", "Times New Roman, Songti TC, LiSong Pro, Heiti TC");
2600   pref("font.name-list.sans-serif.zh-HK", "Arial, PingFang TC, Heiti TC, LiHei Pro");
2601   pref("font.name-list.monospace.zh-HK", "Menlo, PingFang TC, Heiti TC, LiHei Pro");
2602   pref("font.name-list.cursive.zh-HK", "Kaiti TC");
2604   // XP_MACOSX changes to default font sizes
2605   pref("font.minimum-size.th", 10);
2607   // Apple's Symbol is Unicode so use it
2608   pref("font.name-list.serif.x-math", "Latin Modern Math, STIX Two Math, XITS Math, Cambria Math, Libertinus Math, DejaVu Math TeX Gyre, TeX Gyre Bonum Math, TeX Gyre Pagella Math, TeX Gyre Schola, TeX Gyre Termes Math, STIX Math, Asana Math, STIXGeneral, DejaVu Serif, DejaVu Sans, Symbol, Times");
2609   pref("font.name-list.sans-serif.x-math", "Helvetica");
2610   pref("font.name-list.monospace.x-math", "Menlo");
2611   pref("font.name-list.cursive.x-math", "Apple Chancery");
2612   pref("font.name-list.fantasy.x-math", "Papyrus");
2614   // Individual font faces to be treated as independent families,
2615   // listed as <Postscript name of face:Owning family name>
2616   pref("font.single-face-list", "Osaka-Mono:Osaka");
2618   // optimization hint for fonts with localized names to be read in at startup, otherwise read in at lookup miss
2619   // names are canonical family names (typically English names)
2620   pref("font.preload-names-list", "Hiragino Kaku Gothic ProN,Hiragino Mincho ProN,STSong");
2622   // Override font-weight values for some problematic families Apple ships
2623   // (see bug 931426).
2624   // The name here is the font's PostScript name, which can be checked in
2625   // the Font Book utility or other tools.
2626   pref("font.weight-override.AppleSDGothicNeo-Thin", 100); // Ensure Thin < UltraLight < Light
2627   pref("font.weight-override.AppleSDGothicNeo-UltraLight", 200);
2628   pref("font.weight-override.AppleSDGothicNeo-Light", 300);
2629   pref("font.weight-override.AppleSDGothicNeo-Heavy", 900); // Ensure Heavy > ExtraBold (800)
2631   pref("font.weight-override.Avenir-Book", 300); // Ensure Book < Roman (400)
2632   pref("font.weight-override.Avenir-BookOblique", 300);
2633   pref("font.weight-override.Avenir-MediumOblique", 500); // Harmonize MediumOblique with Medium
2634   pref("font.weight-override.Avenir-Black", 900); // Ensure Black > Heavy (800)
2635   pref("font.weight-override.Avenir-BlackOblique", 900);
2637   pref("font.weight-override.AvenirNext-MediumItalic", 500); // Harmonize MediumItalic with Medium
2638   pref("font.weight-override.AvenirNextCondensed-MediumItalic", 500);
2640   pref("font.weight-override.HelveticaNeue-Light", 300); // Ensure Light > Thin (200)
2641   pref("font.weight-override.HelveticaNeue-LightItalic", 300);
2643   // See bug 404131, topmost <panel> element wins to Dashboard on MacOSX.
2644   pref("ui.panel.default_level_parent", false);
2646   // Macbook touchpad two finger pixel scrolling
2647   pref("mousewheel.enable_pixel_scrolling", true);
2649 #endif // XP_MACOSX
2651 #ifdef ANDROID
2652   // Handled differently under Mac/Windows
2653   pref("network.protocol-handler.warn-external.file", false);
2654   pref("browser.drag_out_of_frame_style", 1);
2656   // Middle-mouse handling
2657   pref("middlemouse.paste", true);
2658   pref("middlemouse.scrollbarPosition", true);
2660   // Tab focus model bit field:
2661   // 1 focuses text controls, 2 focuses other form elements, 4 adds links.
2662   // Leave this at the default, 7, to match mozilla1.0-era user expectations.
2663   // pref("accessibility.tabfocus", 1);
2665   pref("helpers.global_mime_types_file", "/etc/mime.types");
2666   pref("helpers.global_mailcap_file", "/etc/mailcap");
2667   pref("helpers.private_mime_types_file", "~/.mime.types");
2668   pref("helpers.private_mailcap_file", "~/.mailcap");
2670   // Setting default_level_parent to true makes the default level for popup
2671   // windows "top" instead of "parent".  On GTK2 platform, this is implemented
2672   // with override-redirect windows which is the normal way to implement
2673   // temporary popup windows.  Setting this to false would make the default
2674   // level "parent" which is implemented with managed windows.
2675   // A problem with using managed windows is that metacity sometimes deactivates
2676   // the parent window when the managed popup is shown.
2677   pref("ui.panel.default_level_parent", true);
2679 #endif // ANDROID
2681 #if !defined(ANDROID) && !defined(XP_MACOSX) && defined(XP_UNIX)
2682   // Handled differently under Mac/Windows
2683   pref("network.protocol-handler.warn-external.file", false);
2684   pref("browser.drag_out_of_frame_style", 1);
2686   // Middle-mouse handling
2687   pref("middlemouse.paste", true);
2688   pref("middlemouse.scrollbarPosition", true);
2690   // Tab focus model bit field:
2691   // 1 focuses text controls, 2 focuses other form elements, 4 adds links.
2692   // Leave this at the default, 7, to match mozilla1.0-era user expectations.
2693   // pref("accessibility.tabfocus", 1);
2695   pref("helpers.global_mime_types_file", "/etc/mime.types");
2696   pref("helpers.global_mailcap_file", "/etc/mailcap");
2697   pref("helpers.private_mime_types_file", "~/.mime.types");
2698   pref("helpers.private_mailcap_file", "~/.mailcap");
2700   // font names
2702   // fontconfig doesn't support emoji yet
2703   // https://lists.freedesktop.org/archives/fontconfig/2016-October/005842.html
2704   pref("font.name-list.emoji", "Twemoji Mozilla");
2706   pref("font.name-list.serif.ar", "serif");
2707   pref("font.name-list.sans-serif.ar", "sans-serif");
2708   pref("font.name-list.monospace.ar", "monospace");
2709   pref("font.name-list.cursive.ar", "cursive");
2710   pref("font.size.monospace.ar", 12);
2712   pref("font.name-list.serif.el", "serif");
2713   pref("font.name-list.sans-serif.el", "sans-serif");
2714   pref("font.name-list.monospace.el", "monospace");
2715   pref("font.name-list.cursive.el", "cursive");
2716   pref("font.size.monospace.el", 12);
2718   pref("font.name-list.serif.he", "serif");
2719   pref("font.name-list.sans-serif.he", "sans-serif");
2720   pref("font.name-list.monospace.he", "monospace");
2721   pref("font.name-list.cursive.he", "cursive");
2722   pref("font.size.monospace.he", 12);
2724   pref("font.name-list.serif.ja", "serif");
2725   pref("font.name-list.sans-serif.ja", "sans-serif");
2726   pref("font.name-list.monospace.ja", "monospace");
2727   pref("font.name-list.cursive.ja", "cursive");
2729   pref("font.name-list.serif.ko", "serif");
2730   pref("font.name-list.sans-serif.ko", "sans-serif");
2731   pref("font.name-list.monospace.ko", "monospace");
2732   pref("font.name-list.cursive.ko", "cursive");
2734   pref("font.name-list.serif.th", "serif");
2735   pref("font.name-list.sans-serif.th", "sans-serif");
2736   pref("font.name-list.monospace.th", "monospace");
2737   pref("font.name-list.cursive.th", "cursive");
2738   pref("font.minimum-size.th", 13);
2740   pref("font.name-list.serif.x-armn", "serif");
2741   pref("font.name-list.sans-serif.x-armn", "sans-serif");
2742   pref("font.name-list.monospace.x-armn", "monospace");
2743   pref("font.name-list.cursive.x-armn", "cursive");
2745   pref("font.name-list.serif.x-beng", "serif");
2746   pref("font.name-list.sans-serif.x-beng", "sans-serif");
2747   pref("font.name-list.monospace.x-beng", "monospace");
2748   pref("font.name-list.cursive.x-beng", "cursive");
2750   pref("font.name-list.serif.x-cans", "serif");
2751   pref("font.name-list.sans-serif.x-cans", "sans-serif");
2752   pref("font.name-list.monospace.x-cans", "monospace");
2753   pref("font.name-list.cursive.x-cans", "cursive");
2755   pref("font.name-list.serif.x-cyrillic", "serif");
2756   pref("font.name-list.sans-serif.x-cyrillic", "sans-serif");
2757   pref("font.name-list.monospace.x-cyrillic", "monospace");
2758   pref("font.name-list.cursive.x-cyrillic", "cursive");
2759   pref("font.size.monospace.x-cyrillic", 12);
2761   pref("font.name-list.serif.x-devanagari", "serif");
2762   pref("font.name-list.sans-serif.x-devanagari", "sans-serif");
2763   pref("font.name-list.monospace.x-devanagari", "monospace");
2764   pref("font.name-list.cursive.x-devanagari", "cursive");
2766   pref("font.name-list.serif.x-ethi", "serif");
2767   pref("font.name-list.sans-serif.x-ethi", "sans-serif");
2768   pref("font.name-list.monospace.x-ethi", "monospace");
2769   pref("font.name-list.cursive.x-ethi", "cursive");
2771   pref("font.name-list.serif.x-geor", "serif");
2772   pref("font.name-list.sans-serif.x-geor", "sans-serif");
2773   pref("font.name-list.monospace.x-geor", "monospace");
2774   pref("font.name-list.cursive.x-geor", "cursive");
2776   pref("font.name-list.serif.x-gujr", "serif");
2777   pref("font.name-list.sans-serif.x-gujr", "sans-serif");
2778   pref("font.name-list.monospace.x-gujr", "monospace");
2779   pref("font.name-list.cursive.x-gujr", "cursive");
2781   pref("font.name-list.serif.x-guru", "serif");
2782   pref("font.name-list.sans-serif.x-guru", "sans-serif");
2783   pref("font.name-list.monospace.x-guru", "monospace");
2784   pref("font.name-list.cursive.x-guru", "cursive");
2786   pref("font.name-list.serif.x-khmr", "serif");
2787   pref("font.name-list.sans-serif.x-khmr", "sans-serif");
2788   pref("font.name-list.monospace.x-khmr", "monospace");
2789   pref("font.name-list.cursive.x-khmr", "cursive");
2791   pref("font.name-list.serif.x-knda", "serif");
2792   pref("font.name-list.sans-serif.x-knda", "sans-serif");
2793   pref("font.name-list.monospace.x-knda", "monospace");
2794   pref("font.name-list.cursive.x-knda", "cursive");
2796   pref("font.name-list.serif.x-mlym", "serif");
2797   pref("font.name-list.sans-serif.x-mlym", "sans-serif");
2798   pref("font.name-list.monospace.x-mlym", "monospace");
2799   pref("font.name-list.cursive.x-mlym", "cursive");
2801   pref("font.name-list.serif.x-orya", "serif");
2802   pref("font.name-list.sans-serif.x-orya", "sans-serif");
2803   pref("font.name-list.monospace.x-orya", "monospace");
2804   pref("font.name-list.cursive.x-orya", "cursive");
2806   pref("font.name-list.serif.x-sinh", "serif");
2807   pref("font.name-list.sans-serif.x-sinh", "sans-serif");
2808   pref("font.name-list.monospace.x-sinh", "monospace");
2809   pref("font.name-list.cursive.x-sinh", "cursive");
2811   pref("font.name-list.serif.x-tamil", "serif");
2812   pref("font.name-list.sans-serif.x-tamil", "sans-serif");
2813   pref("font.name-list.monospace.x-tamil", "monospace");
2814   pref("font.name-list.cursive.x-tamil", "cursive");
2816   pref("font.name-list.serif.x-telu", "serif");
2817   pref("font.name-list.sans-serif.x-telu", "sans-serif");
2818   pref("font.name-list.monospace.x-telu", "monospace");
2819   pref("font.name-list.cursive.x-telu", "cursive");
2821   pref("font.name-list.serif.x-tibt", "serif");
2822   pref("font.name-list.sans-serif.x-tibt", "sans-serif");
2823   pref("font.name-list.monospace.x-tibt", "monospace");
2824   pref("font.name-list.cursive.x-tibt", "cursive");
2826   pref("font.name-list.serif.x-unicode", "serif");
2827   pref("font.name-list.sans-serif.x-unicode", "sans-serif");
2828   pref("font.name-list.monospace.x-unicode", "monospace");
2829   pref("font.name-list.cursive.x-unicode", "cursive");
2830   pref("font.size.monospace.x-unicode", 12);
2832   pref("font.name-list.serif.x-western", "serif");
2833   pref("font.name-list.sans-serif.x-western", "sans-serif");
2834   pref("font.name-list.monospace.x-western", "monospace");
2835   pref("font.name-list.cursive.x-western", "cursive");
2836   pref("font.size.monospace.x-western", 12);
2838   pref("font.name-list.serif.zh-CN", "serif");
2839   pref("font.name-list.sans-serif.zh-CN", "sans-serif");
2840   pref("font.name-list.monospace.zh-CN", "monospace");
2841   pref("font.name-list.cursive.zh-CN", "cursive");
2843   pref("font.name-list.serif.zh-HK", "serif");
2844   pref("font.name-list.sans-serif.zh-HK", "sans-serif");
2845   pref("font.name-list.monospace.zh-HK", "monospace");
2846   pref("font.name-list.cursive.zh-HK", "cursive");
2848   pref("font.name-list.serif.zh-TW", "serif");
2849   pref("font.name-list.sans-serif.zh-TW", "sans-serif");
2850   pref("font.name-list.monospace.zh-TW", "monospace");
2851   pref("font.name-list.cursive.zh-TW", "cursive");
2853   // On GTK2 platform, we should use topmost window level for the default window
2854   // level of <panel> element of XUL. GTK2 has only two window types. One is
2855   // normal top level window, other is popup window. The popup window is always
2856   // topmost window level, therefore, we are using normal top level window for
2857   // non-topmost panel, but it is pretty hacky. On some Window Managers, we have
2858   // 2 problems:
2859   // 1. The non-topmost panel steals focus from its parent window at showing.
2860   // 2. The parent of non-topmost panel is not activated when the panel is hidden.
2861   // So, we have no reasons we should use non-toplevel window for popup.
2862   pref("ui.panel.default_level_parent", true);
2864   pref("intl.ime.use_simple_context_on_password_field", false);
2866   // uim may use key snooper to listen to key events.  Unfortunately, we cannot
2867   // know whether it uses or not since it's a build option.  So, we need to make
2868   // distribution switchable whether we think uim uses key snooper or not with
2869   // this pref.  Debian 9.x still uses uim as their default IM and it uses key
2870   // snooper.  So, let's use true for its default value.
2871   pref("intl.ime.hack.uim.using_key_snooper", true);
2873 #endif // !ANDROID && !XP_MACOSX && XP_UNIX
2875 #if defined(ANDROID)
2877   pref("font.size.monospace.ar", 12);
2879   pref("font.default.el", "sans-serif");
2880   pref("font.size.monospace.el", 12);
2882   pref("font.size.monospace.he", 12);
2884   pref("font.default.x-cyrillic", "sans-serif");
2885   pref("font.size.monospace.x-cyrillic", 12);
2887   pref("font.default.x-unicode", "sans-serif");
2888   pref("font.size.monospace.x-unicode", 12);
2890   pref("font.default.x-western", "sans-serif");
2891   pref("font.size.monospace.x-western", 12);
2893 #endif // ANDROID
2895 #if defined(ANDROID)
2896   // We use the bundled Charis SIL Compact as serif font for Firefox for Android
2898   pref("font.name-list.emoji", "SamsungColorEmoji, Noto Color Emoji");
2900   pref("font.name-list.serif.ar", "Noto Naskh Arabic, Noto Serif, Droid Serif");
2901   pref("font.name-list.sans-serif.ar", "Noto Naskh Arabic, Roboto, Google Sans, Droid Sans");
2902   pref("font.name-list.monospace.ar", "Noto Naskh Arabic");
2904   pref("font.name-list.serif.el", "Droid Serif, Noto Serif"); // not Charis SIL Compact, only has a few Greek chars
2905   pref("font.name-list.sans-serif.el", "Roboto, Google Sans, Droid Sans");
2906   pref("font.name-list.monospace.el", "Droid Sans Mono");
2908   pref("font.name-list.serif.he", "Droid Serif, Noto Serif, Noto Serif Hebrew");
2909   pref("font.name-list.sans-serif.he", "Roboto, Google Sans, Noto Sans Hebrew, Droid Sans Hebrew, Droid Sans, Arial");
2910   pref("font.name-list.monospace.he", "Droid Sans Mono");
2912   pref("font.name-list.serif.ja", "Charis SIL Compact, Noto Serif CJK JP, Noto Serif, Droid Serif");
2913   pref("font.name-list.sans-serif.ja", "Roboto, Google Sans, Droid Sans, MotoyaLMaru, MotoyaLCedar, Noto Sans JP, Noto Sans CJK JP, SEC CJK JP, Droid Sans Japanese");
2914   pref("font.name-list.monospace.ja", "MotoyaLMaru, MotoyaLCedar, Noto Sans Mono CJK JP, SEC Mono CJK JP, Droid Sans Mono");
2916   pref("font.name-list.serif.ko", "Charis SIL Compact, Noto Serif CJK KR, Noto Serif, Droid Serif, HYSerif");
2917   pref("font.name-list.sans-serif.ko", "Roboto, Google Sans, SmartGothic, NanumGothic, Noto Sans KR, Noto Sans CJK KR, One UI Sans KR VF, SamsungKorean_v2.0, SEC CJK KR, DroidSansFallback, Droid Sans Fallback");
2918   pref("font.name-list.monospace.ko", "Droid Sans Mono, Noto Sans Mono CJK KR, SEC Mono CJK KR");
2920   pref("font.name-list.serif.th", "Charis SIL Compact, Noto Serif, Noto Serif Thai, Droid Serif");
2921   pref("font.name-list.sans-serif.th", "Roboto, Google Sans, Noto Sans Thai, Droid Sans Thai, Droid Sans");
2922   pref("font.name-list.monospace.th", "Droid Sans Mono");
2924   pref("font.name-list.serif.x-armn", "Noto Serif Armenian");
2925   pref("font.name-list.sans-serif.x-armn", "Noto Sans Armenian");
2927   pref("font.name-list.serif.x-beng", "Noto Serif Bengali");
2928   pref("font.name-list.sans-serif.x-beng", "Noto Sans Bengali");
2930   pref("font.name-list.serif.x-cyrillic", "Charis SIL Compact, Noto Serif, Droid Serif");
2931   pref("font.name-list.sans-serif.x-cyrillic", "Roboto, Google Sans, Droid Sans");
2932   pref("font.name-list.monospace.x-cyrillic", "Droid Sans Mono");
2934   pref("font.name-list.serif.x-devanagari", "Noto Serif Devanagari");
2935   pref("font.name-list.sans-serif.x-devanagari", "Noto Sans Devanagari");
2937   pref("font.name-list.serif.x-ethi", "Noto Serif Ethiopic");
2938   pref("font.name-list.sans-serif.x-ethi", "Noto Sans Ethiopic");
2940   pref("font.name-list.serif.x-geor", "Noto Serif Georgian");
2941   pref("font.name-list.sans-serif.x-geor", "Noto Sans Georgian");
2943   pref("font.name-list.serif.x-gujr", "Noto Serif Gujarati");
2944   pref("font.name-list.sans-serif.x-gujr", "Noto Sans Gujarati");
2946   pref("font.name-list.serif.x-guru", "Noto Serif Gurmukhi");
2947   pref("font.name-list.sans-serif.x-guru", "Noto Sans Gurmukhi");
2949   pref("font.name-list.serif.x-khmr", "Noto Serif Khmer");
2950   pref("font.name-list.sans-serif.x-khmr", "Noto Sans Khmer");
2952   pref("font.name-list.serif.x-knda", "Noto Serif Kannada");
2953   pref("font.name-list.sans-serif.x-knda", "Noto Sans Kannada");
2955   pref("font.name-list.serif.x-mlym", "Noto Serif Malayalam");
2956   pref("font.name-list.sans-serif.x-mlym", "Noto Sans Malayalam");
2958   pref("font.name-list.sans-serif.x-orya", "Noto Sans Oriya");
2960   pref("font.name-list.serif.x-sinh", "Noto Serif Sinhala");
2961   pref("font.name-list.sans-serif.x-sinh", "Noto Sans Sinhala");
2963   pref("font.name-list.serif.x-tamil", "Noto Serif Tamil");
2964   pref("font.name-list.sans-serif.x-tamil", "Noto Sans Tamil");
2966   pref("font.name-list.serif.x-telu", "Noto Serif Telugu");
2967   pref("font.name-list.sans-serif.x-telu", "Noto Sans Telugu");
2969   pref("font.name-list.serif.x-tibt", "Noto Serif Tibetan");
2970   pref("font.name-list.sans-serif.x-tibt", "Noto Sans Tibetan");
2972   pref("font.name-list.serif.x-unicode", "Charis SIL Compact, Noto Serif, Droid Serif");
2973   pref("font.name-list.sans-serif.x-unicode", "Roboto, Google Sans, Droid Sans");
2974   pref("font.name-list.monospace.x-unicode", "Droid Sans Mono");
2976   pref("font.name-list.serif.x-western", "Charis SIL Compact, Noto Serif, Droid Serif");
2977   pref("font.name-list.sans-serif.x-western", "Roboto, Google Sans, Droid Sans");
2978   pref("font.name-list.monospace.x-western", "Droid Sans Mono");
2980   pref("font.name-list.serif.zh-CN", "Charis SIL Compact, Noto Serif CJK SC, Noto Serif, Droid Serif, Droid Sans Fallback");
2981   pref("font.name-list.sans-serif.zh-CN", "Roboto, Google Sans, Droid Sans, Noto Sans SC, Noto Sans CJK SC, SEC CJK SC, Droid Sans Fallback");
2982   pref("font.name-list.monospace.zh-CN", "Droid Sans Mono, Noto Sans Mono CJK SC, SEC Mono CJK SC, Droid Sans Fallback");
2984   pref("font.name-list.serif.zh-HK", "Charis SIL Compact, Noto Serif CJK TC, Noto Serif, Droid Serif, Droid Sans Fallback");
2985   pref("font.name-list.sans-serif.zh-HK", "Roboto, Google Sans, Droid Sans, Noto Sans TC, Noto Sans SC, Noto Sans CJK TC, SEC CJK TC, Droid Sans Fallback");
2986   pref("font.name-list.monospace.zh-HK", "Droid Sans Mono, Noto Sans Mono CJK TC, SEC Mono CJK TC, Droid Sans Fallback");
2988   pref("font.name-list.serif.zh-TW", "Charis SIL Compact, Noto Serif CJK TC, Noto Serif, Droid Serif, Droid Sans Fallback");
2989   pref("font.name-list.sans-serif.zh-TW", "Roboto, Google Sans, Droid Sans, Noto Sans TC, Noto Sans SC, Noto Sans CJK TC, SEC CJK TC, Droid Sans Fallback");
2990   pref("font.name-list.monospace.zh-TW", "Droid Sans Mono, Noto Sans Mono CJK TC, SEC Mono CJK TC, Droid Sans Fallback");
2992   pref("font.name-list.serif.x-math", "Latin Modern Math, STIX Two Math, XITS Math, Cambria Math, Libertinus Math, DejaVu Math TeX Gyre, TeX Gyre Bonum Math, TeX Gyre Pagella Math, TeX Gyre Schola, TeX Gyre Termes Math, STIX Math, Asana Math, STIXGeneral, DejaVu Serif, DejaVu Sans, Charis SIL Compact");
2993   pref("font.name-list.sans-serif.x-math", "Roboto, Google Sans");
2994   pref("font.name-list.monospace.x-math", "Droid Sans Mono");
2996 #endif
2998 // Login Manager prefs
2999 pref("signon.rememberSignons",              true);
3000 pref("signon.rememberSignons.visibilityToggle", true);
3001 pref("signon.autofillForms",                true);
3002 pref("signon.autofillForms.autocompleteOff", true);
3003 pref("signon.autofillForms.http",           false);
3004 pref("signon.autologin.proxy",              false);
3005 pref("signon.capture.inputChanges.enabled", true);
3006 pref("signon.formlessCapture.enabled",      true);
3007 pref("signon.formRemovalCapture.enabled",   true);
3008 pref("signon.generation.available",               true);
3009 pref("signon.improvedPasswordRules.enabled", true);
3010 pref("signon.backup.enabled",               true);
3011 pref("signon.generation.confidenceThreshold",     "0.75");
3012 pref("signon.generation.enabled",                 true);
3013 pref("signon.passwordEditCapture.enabled",        false);
3014 pref("signon.privateBrowsingCapture.enabled",     true);
3015 pref("signon.storeWhenAutocompleteOff",     true);
3016 pref("signon.userInputRequiredToCapture.enabled", true);
3017 pref("signon.usernameOnlyForm.lookupThreshold",  5);
3018 pref("signon.debug",                        false);
3019 pref("signon.recipes.path", "resource://app/defaults/settings/main/password-recipes.json");
3020 pref("signon.recipes.remoteRecipes.enabled", true);
3021 pref("signon.relatedRealms.enabled", false);
3022 pref("signon.schemeUpgrades",                     true);
3023 pref("signon.includeOtherSubdomainsInLookup",     true);
3024 // This temporarily prevents the primary password to reprompt for autocomplete.
3025 pref("signon.masterPasswordReprompt.timeout_ms", 900000); // 15 Minutes
3026 pref("signon.showAutoCompleteFooter",             false);
3027 pref("signon.firefoxRelay.base_url", "https://relay.firefox.com/api/v1/");
3028 pref("signon.firefoxRelay.learn_more_url", "https://support.mozilla.org/1/firefox/%VERSION%/%OS%/%LOCALE%/firefox-relay-integration");
3029 pref("signon.firefoxRelay.manage_url", "https://relay.firefox.com/accounts/profile/?utm_medium=firefox-desktop&utm_source=modal&utm_campaign=limit&utm_content=manage-masks-global");
3030 pref("signon.firefoxRelay.terms_of_service_url", "https://www.mozilla.org/%LOCALE%/about/legal/terms/subscription-services/");
3031 pref("signon.firefoxRelay.privacy_policy_url", "https://www.mozilla.org/%LOCALE%/privacy/subscription-services/");
3032 pref("signon.signupDetection.confidenceThreshold",     "0.75");
3033 pref("signon.signupDetection.enabled", true);
3035 // Satchel (Form Manager) prefs
3036 pref("browser.formfill.debug",            false);
3037 pref("browser.formfill.enable",           true);
3038 pref("browser.formfill.expire_days",      180);
3039 pref("browser.formfill.agedWeight",       2);
3040 pref("browser.formfill.bucketSize",       1);
3041 pref("browser.formfill.maxTimeGroupings", 25);
3042 pref("browser.formfill.timeGroupingSize", 604800);
3043 pref("browser.formfill.boundaryWeight",   25);
3044 pref("browser.formfill.prefixWeight",     5);
3046 // Zoom prefs
3047 pref("browser.zoom.full", false);
3048 pref("toolkit.zoomManager.zoomValues", ".3,.5,.67,.8,.9,1,1.1,1.2,1.33,1.5,1.7,2,2.4,3,4,5");
3051 // Image-related prefs
3054 // By default the Accept header sent for images loaded over HTTP(S) is derived
3055 // by ImageAcceptHeader() in nsHttpHandler.cpp. If set, this pref overrides it.
3056 // There is also network.http.accept which works in scope of document.
3057 pref("image.http.accept", "");
3059 // sendbuffer of 0 means use OS default, sendbuffer unset means use
3060 // gecko default which varies depending on windows version and is OS
3061 // default on non windows
3062 // pref("network.tcp.sendbuffer", 0);
3064 // TCP Keepalive
3065 pref("network.tcp.keepalive.enabled", true);
3066 // Default idle time before first TCP keepalive probe; same time for interval
3067 // between successful probes. Can be overridden in socket transport API.
3068 // Win, Linux and Mac.
3069 pref("network.tcp.keepalive.idle_time", 600); // seconds; 10 mins
3070 // Default timeout for retransmission of unack'd keepalive probes.
3071 // Win and Linux only; not configurable on Mac.
3072 #if defined(XP_UNIX) && !defined(XP_MACOSX) || defined(XP_WIN)
3073   pref("network.tcp.keepalive.retry_interval", 1); // seconds
3074 #endif
3075 // Default maximum probe retransmissions.
3076 // Linux only; not configurable on Win and Mac; fixed at 10 and 8 respectively.
3077 #if defined(XP_UNIX) && !defined(XP_MACOSX)
3078   pref("network.tcp.keepalive.probe_count", 4);
3079 #endif
3081 // This pref controls if we send the "public-suffix-list-updated" notification
3082 // from PublicSuffixList.onUpdate() - Doing so would cause the PSL graph to
3083 // be updated while Firefox is running which may cause principals to have an
3084 // inconsistent state. See bug 1582647 comment 30
3085 pref("network.psl.onUpdate_notify", false);
3087 #ifdef MOZ_WIDGET_GTK
3088   pref("widget.disable-workspace-management", false);
3089   pref("widget.titlebar-x11-use-shape-mask", false);
3090 #endif
3092 // All the Geolocation preferences are here.
3094 pref("geo.provider.network.url", "https://www.googleapis.com/geolocation/v1/geolocate?key=%GOOGLE_LOCATION_SERVICE_API_KEY%");
3096 // Timeout to wait before sending the location request.
3097 pref("geo.provider.network.timeToWaitBeforeSending", 5000);
3098 // Timeout for outbound network geolocation provider.
3099 pref("geo.provider.network.timeout", 60000);
3101 #ifdef XP_MACOSX
3102   pref("geo.provider.use_corelocation", true);
3103 #endif
3105 // Set to false if things are really broken.
3106 #ifdef XP_WIN
3107   pref("geo.provider.ms-windows-location", true);
3108 #endif
3110 #if defined(MOZ_WIDGET_GTK) && defined(MOZ_GPSD)
3111   pref("geo.provider.use_gpsd", true);
3112 #endif
3114 // Region
3115 pref("browser.region.log", false);
3116 pref("browser.region.network.url", "https://location.services.mozilla.com/v1/country?key=%MOZILLA_API_KEY%");
3117 // Include wifi data in region request.
3118 pref("browser.region.network.scan", false);
3119 // Timeout for whole region request.
3120 pref("browser.region.timeout", 5000);
3121 pref("browser.region.update.enabled", true);
3123 pref("browser.meta_refresh_when_inactive.disabled", false);
3125 // XPInstall prefs
3126 pref("xpinstall.whitelist.required", true);
3127 // Only Firefox requires add-on signatures
3128 pref("xpinstall.signatures.required", false);
3129 pref("extensions.langpacks.signatures.required", false);
3130 pref("extensions.webExtensionsMinPlatformVersion", "42.0a1");
3131 pref("extensions.experiments.enabled", true);
3133 // Other webextensions prefs
3134 pref("extensions.webextensions.keepStorageOnUninstall", false);
3135 pref("extensions.webextensions.keepUuidOnUninstall", false);
3136 // Redirect basedomain used by identity api
3137 pref("extensions.webextensions.identity.redirectDomain", "extensions.allizom.org");
3138 pref("extensions.webextensions.restrictedDomains", "accounts-static.cdn.mozilla.net,accounts.firefox.com,addons.cdn.mozilla.net,addons.mozilla.org,api.accounts.firefox.com,content.cdn.mozilla.net,discovery.addons.mozilla.org,install.mozilla.org,oauth.accounts.firefox.com,profile.accounts.firefox.com,support.mozilla.org,sync.services.mozilla.com");
3140 // Extensions are prevented from accessing Quarantined Domains by default.
3141 pref("extensions.quarantinedDomains.enabled", true);
3142 pref("extensions.quarantinedDomains.list", "");
3144 // Whether or not the moz-extension resource loads are remoted. For debugging
3145 // purposes only. Setting this to false will break moz-extension URI loading
3146 // unless other process sandboxing and extension remoting prefs are changed.
3147 pref("extensions.webextensions.protocol.remote", true);
3149 // Enable userScripts API by default.
3150 pref("extensions.webextensions.userScripts.enabled", true);
3152 // Whether or not the installed extensions should be migrated to the storage.local IndexedDB backend.
3153 pref("extensions.webextensions.ExtensionStorageIDB.enabled", true);
3155 // Whether to allow the inline options browser in HTML about:addons page.
3156 pref("extensions.htmlaboutaddons.inline-options.enabled", true);
3157 // Show recommendations on the extension and theme list views.
3158 pref("extensions.htmlaboutaddons.recommendations.enabled", true);
3160 // The URL for the privacy policy related to recommended add-ons.
3161 pref("extensions.recommendations.privacyPolicyUrl", "");
3162 // The URL for a recommended theme, shown on the theme page in about:addons.
3163 pref("extensions.recommendations.themeRecommendationUrl", "");
3165 // Report Site Issue button
3166 // Note that on enabling the button in other release channels, make sure to
3167 // disable it in problematic tests, see disableNonReleaseActions() inside
3168 // browser/modules/test/browser/head.js
3169 pref("extensions.webcompat-reporter.newIssueEndpoint", "https://webcompat.com/issues/new");
3170 #if MOZ_UPDATE_CHANNEL != release && MOZ_UPDATE_CHANNEL != esr
3171   pref("extensions.webcompat-reporter.enabled", true);
3172 #else
3173   pref("extensions.webcompat-reporter.enabled", false);
3174 #endif
3176 // Add-on content security policies.
3177 pref("extensions.webextensions.base-content-security-policy", "script-src 'self' https://* http://localhost:* http://127.0.0.1:* moz-extension: blob: filesystem: 'unsafe-eval' 'wasm-unsafe-eval' 'unsafe-inline';");
3178 pref("extensions.webextensions.base-content-security-policy.v3", "script-src 'self' 'wasm-unsafe-eval';");
3179 pref("extensions.webextensions.default-content-security-policy", "script-src 'self' 'wasm-unsafe-eval';");
3180 pref("extensions.webextensions.default-content-security-policy.v3", "script-src 'self'; upgrade-insecure-requests;");
3183 pref("network.buffer.cache.count", 24);
3184 pref("network.buffer.cache.size",  32768);
3186 // Web Notification
3187 pref("dom.webnotifications.requireinteraction.count", 3);
3189 // Show favicons in web notifications.
3190 pref("alerts.showFavicons", false);
3192 // DOM full-screen API.
3193 #ifdef XP_MACOSX
3194   // Whether to use macOS native full screen for Fullscreen API
3195   pref("full-screen-api.macos-native-full-screen", true);
3196 #endif
3197 // transition duration of fade-to-black and fade-from-black, unit: ms
3198 #ifndef MOZ_WIDGET_GTK
3199   pref("full-screen-api.transition-duration.enter", "200 200");
3200   pref("full-screen-api.transition-duration.leave", "200 200");
3201 #else
3202   pref("full-screen-api.transition-duration.enter", "0 0");
3203   pref("full-screen-api.transition-duration.leave", "0 0");
3204 #endif
3205 // timeout for black screen in fullscreen transition, unit: ms
3206 pref("full-screen-api.transition.timeout", 1000);
3207 // time for the warning box stays on the screen before sliding out, unit: ms
3208 pref("full-screen-api.warning.timeout", 3000);
3209 // delay for the warning box to show when pointer stays on the top, unit: ms
3210 pref("full-screen-api.warning.delay", 500);
3212 // DOM pointerlock API
3213 // time for the warning box stays on the screen before sliding out, unit: ms
3214 pref("pointer-lock-api.warning.timeout", 3000);
3216 // Push
3218 pref("dom.push.loglevel", "Error");
3220 pref("dom.push.serverURL", "wss://push.services.mozilla.com/");
3221 pref("dom.push.userAgentID", "");
3223 // The maximum number of push messages that a service worker can receive
3224 // without user interaction.
3225 pref("dom.push.maxQuotaPerSubscription", 16);
3227 // The maximum number of recent message IDs to store for each push
3228 // subscription, to avoid duplicates for unacknowledged messages.
3229 pref("dom.push.maxRecentMessageIDsPerSubscription", 10);
3231 // The delay between receiving a push message and updating the quota for a
3232 // subscription.
3233 pref("dom.push.quotaUpdateDelay", 3000); // 3 seconds
3235 // Is the network connection allowed to be up?
3236 // This preference should be used in UX to enable/disable push.
3237 pref("dom.push.connection.enabled", true);
3239 // Exponential back-off start is 5 seconds like in HTTP/1.1.
3240 // Maximum back-off is pingInterval.
3241 pref("dom.push.retryBaseInterval", 5000);
3243 // Interval at which to ping PushServer to check connection status. In
3244 // milliseconds. If no reply is received within requestTimeout, the connection
3245 // is considered closed.
3246 pref("dom.push.pingInterval", 1800000); // 30 minutes
3248 // How long before we timeout
3249 pref("dom.push.requestTimeout", 10000);
3251 // WebPush prefs:
3252 pref("dom.push.http2.reset_retry_count_after_ms", 60000);
3253 pref("dom.push.http2.maxRetries", 2);
3254 pref("dom.push.http2.retryInterval", 5000);
3256 // How long must we wait before declaring that a window is a "ghost" (i.e., a
3257 // likely leak)?  This should be longer than it usually takes for an eligible
3258 // window to be collected via the GC/CC.
3259 pref("memory.ghost_window_timeout_seconds", 60);
3261 // Don't dump memory reports on OOM, by default.
3262 pref("memory.dump_reports_on_oom", false);
3264 // Number of stack frames to capture in createObjectURL for about:memory.
3265 pref("memory.blob_report.stack_frames", 0);
3267 // Activates the activity monitor
3268 pref("io.activity.enabled", false);
3270 // path to OSVR DLLs
3271 pref("gfx.vr.osvr.utilLibPath", "");
3272 pref("gfx.vr.osvr.commonLibPath", "");
3273 pref("gfx.vr.osvr.clientLibPath", "");
3274 pref("gfx.vr.osvr.clientKitLibPath", "");
3276 // nsMemoryInfoDumper can watch a fifo in the temp directory and take various
3277 // actions when the fifo is written to.  Disable this in general.
3278 pref("memory_info_dumper.watch_fifo.enabled", false);
3280 // If minInterval is 0, the check will only happen
3281 // when the service has a strong suspicion we are in a captive portal
3282 pref("network.captive-portal-service.minInterval", 60000); // 60 seconds
3283 pref("network.captive-portal-service.maxInterval", 1500000); // 25 minutes
3284 // Every 10 checks, the delay is increased by a factor of 5
3285 pref("network.captive-portal-service.backoffFactor", "5.0");
3286 pref("network.captive-portal-service.enabled", false);
3288 pref("network.connectivity-service.enabled", true);
3289 pref("network.connectivity-service.DNSv4.domain", "example.org");
3290 pref("network.connectivity-service.DNSv6.domain", "example.org");
3291 pref("network.connectivity-service.IPv4.url", "http://detectportal.firefox.com/success.txt?ipv4");
3292 pref("network.connectivity-service.IPv6.url", "http://detectportal.firefox.com/success.txt?ipv6");
3294 pref("network.trr.uri", "");
3295 // credentials to pass to DOH end-point
3296 pref("network.trr.credentials", "");
3297 pref("network.trr.custom_uri", "");
3298 // Before TRR is widely used the NS record for this host is fetched
3299 // from the DOH end point to ensure proper configuration
3300 pref("network.trr.confirmationNS", "example.com");
3301 // Comma separated list of domains that we should not use TRR for
3302 pref("network.trr.excluded-domains", "");
3303 pref("network.trr.builtin-excluded-domains", "localhost,local");
3304 // Whether the checkbox to display a fallback warning error page is visible in about:preferences#privacy
3305 pref("network.trr_ui.show_fallback_warning_option", false);
3307 pref("captivedetect.canonicalURL", "http://detectportal.firefox.com/canonical.html");
3308 pref("captivedetect.canonicalContent", "<meta http-equiv=\"refresh\" content=\"0;url=https://support.mozilla.org/kb/captive-portal\"/>");
3309 pref("captivedetect.maxWaitingTime", 5000);
3310 pref("captivedetect.pollingTime", 3000);
3311 pref("captivedetect.maxRetryCount", 5);
3313 // The tables used for Safebrowsing phishing and malware checks
3314 pref("urlclassifier.malwareTable", "goog-malware-proto,goog-unwanted-proto,moztest-harmful-simple,moztest-malware-simple,moztest-unwanted-simple");
3315 #ifdef MOZILLA_OFFICIAL
3316   // In official builds, we are allowed to use Google's private phishing
3317   // list (see bug 1288840).
3318   pref("urlclassifier.phishTable", "goog-phish-proto,moztest-phish-simple");
3319 #else
3320   pref("urlclassifier.phishTable", "googpub-phish-proto,moztest-phish-simple");
3321 #endif
3323 // Tables for application reputation
3324 pref("urlclassifier.downloadAllowTable", "goog-downloadwhite-proto");
3325 pref("urlclassifier.downloadBlockTable", "goog-badbinurl-proto");
3327 // Tables for anti-tracking features
3328 pref("urlclassifier.trackingAnnotationTable", "moztest-track-simple,ads-track-digest256,social-track-digest256,analytics-track-digest256,content-track-digest256");
3329 pref("urlclassifier.trackingAnnotationWhitelistTable", "moztest-trackwhite-simple,mozstd-trackwhite-digest256,google-trackwhite-digest256");
3330 pref("urlclassifier.trackingTable", "moztest-track-simple,ads-track-digest256,social-track-digest256,analytics-track-digest256");
3331 pref("urlclassifier.trackingWhitelistTable", "moztest-trackwhite-simple,mozstd-trackwhite-digest256,google-trackwhite-digest256");
3333 pref("urlclassifier.features.fingerprinting.blacklistTables", "base-fingerprinting-track-digest256");
3334 pref("urlclassifier.features.fingerprinting.whitelistTables", "mozstd-trackwhite-digest256,google-trackwhite-digest256");
3335 pref("urlclassifier.features.fingerprinting.annotate.blacklistTables", "base-fingerprinting-track-digest256");
3336 pref("urlclassifier.features.fingerprinting.annotate.whitelistTables", "mozstd-trackwhite-digest256,google-trackwhite-digest256");
3337 pref("urlclassifier.features.cryptomining.blacklistTables", "base-cryptomining-track-digest256");
3338 pref("urlclassifier.features.cryptomining.whitelistTables", "mozstd-trackwhite-digest256");
3339 pref("urlclassifier.features.cryptomining.annotate.blacklistTables", "base-cryptomining-track-digest256");
3340 pref("urlclassifier.features.cryptomining.annotate.whitelistTables", "mozstd-trackwhite-digest256");
3341 pref("urlclassifier.features.socialtracking.blacklistTables", "social-tracking-protection-facebook-digest256,social-tracking-protection-linkedin-digest256,social-tracking-protection-twitter-digest256");
3342 pref("urlclassifier.features.socialtracking.whitelistTables", "mozstd-trackwhite-digest256,google-trackwhite-digest256");
3343 pref("urlclassifier.features.socialtracking.annotate.blacklistTables", "social-tracking-protection-facebook-digest256,social-tracking-protection-linkedin-digest256,social-tracking-protection-twitter-digest256");
3344 pref("urlclassifier.features.socialtracking.annotate.whitelistTables", "mozstd-trackwhite-digest256,google-trackwhite-digest256");
3345 pref("urlclassifier.features.emailtracking.blocklistTables", "base-email-track-digest256");
3346 pref("urlclassifier.features.emailtracking.allowlistTables", "mozstd-trackwhite-digest256");
3347 pref("urlclassifier.features.emailtracking.datacollection.blocklistTables", "base-email-track-digest256,content-email-track-digest256");
3348 pref("urlclassifier.features.emailtracking.datacollection.allowlistTables", "mozstd-trackwhite-digest256");
3350 // These tables will never trigger a gethash call.
3351 pref("urlclassifier.disallow_completions", "goog-downloadwhite-digest256,base-track-digest256,mozstd-trackwhite-digest256,content-track-digest256,mozplugin-block-digest256,mozplugin2-block-digest256,ads-track-digest256,social-track-digest256,analytics-track-digest256,base-fingerprinting-track-digest256,content-fingerprinting-track-digest256,base-cryptomining-track-digest256,content-cryptomining-track-digest256,fanboyannoyance-ads-digest256,fanboysocial-ads-digest256,easylist-ads-digest256,easyprivacy-ads-digest256,adguard-ads-digest256,social-tracking-protection-digest256,social-tracking-protection-facebook-digest256,social-tracking-protection-linkedin-digest256,social-tracking-protection-twitter-digest256,base-email-track-digest256,content-email-track-digest256");
3353 // Workaround for Google Recaptcha
3354 pref("urlclassifier.trackingAnnotationSkipURLs", "google.com/recaptcha/,*.google.com/recaptcha/,d3vox9szr7t2nm.cloudfront.net");
3355 pref("privacy.rejectForeign.allowList", "");
3357 // The list of email webapp sites
3358 pref("privacy.trackingprotection.emailtracking.webapp.domains", "mail.163.com,mail.aol.com,fastmail.com,webmail.gandi.net,mail.google.com,navigator-bs.gmx.com,app.hey.com,horde.org/apps/webmail,hushmail.com,icloud.com/mail,kolabnow.com,laposte.net/accueil,mail.lycos.com,mail.com/mail/,mail.ru,mailfence.com,outlook.live.com,email-postaci.com/,posteo.de,mail.protonmail.com,app.rackspace.com,mail.rediff.com,emailmg.ipage.com,runbox.com,mail.sina.com.cn,tutanota.com,mail.yahoo.com,mail.yandex.com,mail.zimbra.com,zoho.com/mail/");
3360 // Number of random entries to send with a gethash request
3361 pref("urlclassifier.gethashnoise", 4);
3363 // Gethash timeout for Safe Browsing
3364 pref("urlclassifier.gethash.timeout_ms", 5000);
3366 // Name of the about: page to display Safe Browsing warnings (bug 399233)
3367 pref("urlclassifier.alternate_error_page", "blocked");
3369 // Enable safe-browsing debugging
3370 pref("browser.safebrowsing.debug", false);
3372 // Allow users to ignore Safe Browsing warnings.
3373 pref("browser.safebrowsing.allowOverride", true);
3375 // These names are approved by the Google Safe Browsing team.
3376 // Any changes must be coordinated with them.
3377 #ifdef MOZILLA_OFFICIAL
3378   pref("browser.safebrowsing.id", "navclient-auto-ffox");
3379 #else
3380   pref("browser.safebrowsing.id", "Firefox");
3381 #endif
3383 // Download protection
3384 pref("browser.safebrowsing.downloads.enabled", true);
3385 pref("browser.safebrowsing.downloads.remote.enabled", true);
3386 pref("browser.safebrowsing.downloads.remote.timeout_ms", 15000);
3387 pref("browser.safebrowsing.downloads.remote.url", "https://sb-ssl.google.com/safebrowsing/clientreport/download?key=%GOOGLE_SAFEBROWSING_API_KEY%");
3388 pref("browser.safebrowsing.downloads.remote.block_dangerous",            true);
3389 pref("browser.safebrowsing.downloads.remote.block_dangerous_host",       true);
3390 pref("browser.safebrowsing.downloads.remote.block_potentially_unwanted", true);
3391 pref("browser.safebrowsing.downloads.remote.block_uncommon",             true);
3393 // Android SafeBrowsing's configuration is in ContentBlocking.java, keep in sync.
3394 #ifndef MOZ_WIDGET_ANDROID
3396 // Google Safe Browsing provider (legacy)
3397 pref("browser.safebrowsing.provider.google.pver", "2.2");
3398 pref("browser.safebrowsing.provider.google.lists", "goog-badbinurl-shavar,goog-downloadwhite-digest256,goog-phish-shavar,googpub-phish-shavar,goog-malware-shavar,goog-unwanted-shavar");
3399 pref("browser.safebrowsing.provider.google.updateURL", "https://safebrowsing.google.com/safebrowsing/downloads?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2&key=%GOOGLE_SAFEBROWSING_API_KEY%");
3400 pref("browser.safebrowsing.provider.google.gethashURL", "https://safebrowsing.google.com/safebrowsing/gethash?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2");
3401 pref("browser.safebrowsing.provider.google.reportURL", "https://safebrowsing.google.com/safebrowsing/diagnostic?site=");
3402 pref("browser.safebrowsing.provider.google.reportPhishMistakeURL", "https://%LOCALE%.phish-error.mozilla.com/?url=");
3403 pref("browser.safebrowsing.provider.google.reportMalwareMistakeURL", "https://%LOCALE%.malware-error.mozilla.com/?url=");
3404 pref("browser.safebrowsing.provider.google.advisoryURL", "https://developers.google.com/safe-browsing/v4/advisory");
3405 pref("browser.safebrowsing.provider.google.advisoryName", "Google Safe Browsing");
3407 // Google Safe Browsing provider
3408 pref("browser.safebrowsing.provider.google4.pver", "4");
3409 pref("browser.safebrowsing.provider.google4.lists", "goog-badbinurl-proto,goog-downloadwhite-proto,goog-phish-proto,googpub-phish-proto,goog-malware-proto,goog-unwanted-proto,goog-harmful-proto");
3410 pref("browser.safebrowsing.provider.google4.updateURL", "https://safebrowsing.googleapis.com/v4/threatListUpdates:fetch?$ct=application/x-protobuf&key=%GOOGLE_SAFEBROWSING_API_KEY%&$httpMethod=POST");
3411 pref("browser.safebrowsing.provider.google4.gethashURL", "https://safebrowsing.googleapis.com/v4/fullHashes:find?$ct=application/x-protobuf&key=%GOOGLE_SAFEBROWSING_API_KEY%&$httpMethod=POST");
3412 pref("browser.safebrowsing.provider.google4.reportURL", "https://safebrowsing.google.com/safebrowsing/diagnostic?site=");
3413 pref("browser.safebrowsing.provider.google4.reportPhishMistakeURL", "https://%LOCALE%.phish-error.mozilla.com/?url=");
3414 pref("browser.safebrowsing.provider.google4.reportMalwareMistakeURL", "https://%LOCALE%.malware-error.mozilla.com/?url=");
3415 pref("browser.safebrowsing.provider.google4.advisoryURL", "https://developers.google.com/safe-browsing/v4/advisory");
3416 pref("browser.safebrowsing.provider.google4.advisoryName", "Google Safe Browsing");
3417 pref("browser.safebrowsing.provider.google4.dataSharingURL", "https://safebrowsing.googleapis.com/v4/threatHits?$ct=application/x-protobuf&key=%GOOGLE_SAFEBROWSING_API_KEY%&$httpMethod=POST");
3418 pref("browser.safebrowsing.provider.google4.dataSharing.enabled", false);
3420 #endif // ifndef MOZ_WIDGET_ANDROID
3422 pref("browser.safebrowsing.reportPhishURL", "https://%LOCALE%.phish-report.mozilla.com/?url=");
3424 // Mozilla Safe Browsing provider (for tracking protection and plugin blocking)
3425 pref("browser.safebrowsing.provider.mozilla.pver", "2.2");
3426 pref("browser.safebrowsing.provider.mozilla.lists", "base-track-digest256,mozstd-trackwhite-digest256,google-trackwhite-digest256,content-track-digest256,mozplugin-block-digest256,mozplugin2-block-digest256,ads-track-digest256,social-track-digest256,analytics-track-digest256,base-fingerprinting-track-digest256,content-fingerprinting-track-digest256,base-cryptomining-track-digest256,content-cryptomining-track-digest256,fanboyannoyance-ads-digest256,fanboysocial-ads-digest256,easylist-ads-digest256,easyprivacy-ads-digest256,adguard-ads-digest256,social-tracking-protection-digest256,social-tracking-protection-facebook-digest256,social-tracking-protection-linkedin-digest256,social-tracking-protection-twitter-digest256,base-email-track-digest256,content-email-track-digest256");
3427 pref("browser.safebrowsing.provider.mozilla.updateURL", "https://shavar.services.mozilla.com/downloads?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2");
3428 pref("browser.safebrowsing.provider.mozilla.gethashURL", "https://shavar.services.mozilla.com/gethash?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2");
3429 // Set to a date in the past to force immediate download in new profiles.
3430 pref("browser.safebrowsing.provider.mozilla.nextupdatetime", "1");
3431 // Block lists for tracking protection. The name values will be used as the keys
3432 // to lookup the localized name in preferences.properties.
3433 pref("browser.safebrowsing.provider.mozilla.lists.base", "moz-std");
3434 pref("browser.safebrowsing.provider.mozilla.lists.content", "moz-full");
3436 // The table and global pref for blocking plugin content
3437 pref("urlclassifier.blockedTable", "moztest-block-simple,mozplugin-block-digest256");
3439 #ifdef XP_MACOSX
3440   #if !defined(RELEASE_OR_BETA) || defined(DEBUG)
3441     // In non-release builds we crash by default on insecure text input (when a
3442     // password editor has focus but secure event input isn't enabled).  The
3443     // following pref, when turned on, disables this behavior.  See bug 1188425.
3444     pref("intl.allow-insecure-text-input", false);
3445   #endif
3446 #endif // XP_MACOSX
3448 // Search service settings
3449 pref("browser.search.log", false);
3450 pref("browser.search.update", true);
3451 pref("browser.search.suggest.enabled", true);
3452 pref("browser.search.suggest.enabled.private", false);
3453 pref("browser.search.separatePrivateDefault", true);
3454 pref("browser.search.separatePrivateDefault.ui.enabled", false);
3455 pref("browser.search.removeEngineInfobar.enabled", true);
3457 // Enables a new search configuration style with no functional changes for the
3458 // user. This is solely intended as a rollout button - it will go away once the
3459 // new configuration has been rolled out.
3460 pref("browser.search.newSearchConfig.enabled", false);
3462 // GMPInstallManager prefs
3464 // User-settable override to media.gmp-manager.url for testing purposes.
3465 //pref("media.gmp-manager.url.override", "");
3467 // Update service URL for GMP install/updates:
3468 pref("media.gmp-manager.url", "https://aus5.mozilla.org/update/3/GMP/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml");
3470 // When |media.gmp-manager.checkContentSignature| is true, then the reply
3471 // containing the update xml file is expected to provide a content signature
3472 // header. Information from this header will be used to validate the response.
3473 // If this header is not present, is malformed, or cannot be determined as
3474 // valid then the update will fail.
3475 // We should eventually remove this pref and any cert pinning code and make
3476 // the content signature path the sole path. We retain this for now in case
3477 // we need to debug content sig vs cert pin.
3478 pref("media.gmp-manager.checkContentSignature", true);
3480 // When |media.gmp-manager.cert.requireBuiltIn| is true or not specified the
3481 // final certificate and all certificates the connection is redirected to before
3482 // the final certificate for the url specified in the |media.gmp-manager.url|
3483 // preference must be built-in. The check related to this pref is not done if
3484 // |media.gmp-manager.checkContentSignature| is set to true (the content
3485 // signature check provides protection that supersedes the built in
3486 // requirement).
3487 pref("media.gmp-manager.cert.requireBuiltIn", true);
3489 // The |media.gmp-manager.certs.| preference branch contains branches that are
3490 // sequentially numbered starting at 1 that contain attribute name / value
3491 // pairs for the certificate used by the server that hosts the update xml file
3492 // as specified in the |media.gmp-manager.url| preference. When these preferences are
3493 // present the following conditions apply for a successful update check:
3494 // 1. the uri scheme must be https
3495 // 2. the preference name must exist as an attribute name on the certificate and
3496 //    the value for the name must be the same as the value for the attribute name
3497 //    on the certificate.
3498 // If these conditions aren't met it will be treated the same as when there is
3499 // no update available. This validation will not be performed when the
3500 // |media.gmp-manager.url.override| user preference has been set for testing updates or
3501 // when the |media.gmp-manager.cert.checkAttributes| preference is set to false.
3502 // This check will also not be done if the |media.gmp-manager.checkContentSignature|
3503 // pref is set to true. Also, the |media.gmp-manager.url.override| preference should
3504 // ONLY be used for testing.
3505 // IMPORTANT! app.update.certs.* prefs should also be updated if these
3506 // are updated.
3507 pref("media.gmp-manager.cert.checkAttributes", true);
3508 pref("media.gmp-manager.certs.1.issuerName", "CN=DigiCert SHA2 Secure Server CA,O=DigiCert Inc,C=US");
3509 pref("media.gmp-manager.certs.1.commonName", "aus5.mozilla.org");
3510 pref("media.gmp-manager.certs.2.issuerName", "CN=thawte SSL CA - G2,O=\"thawte, Inc.\",C=US");
3511 pref("media.gmp-manager.certs.2.commonName", "aus5.mozilla.org");
3513 // Whether or not to perform reader mode article parsing on page load.
3514 // If this pref is disabled, we will never show a reader mode icon in the toolbar.
3515 pref("reader.parse-on-load.enabled", true);
3517 // After what size document we don't bother running Readability on it
3518 // because it'd slow things down too much
3519 pref("reader.parse-node-limit", 3000);
3521 // Whether we include full URLs in browser console errors. This is disabled
3522 // by default because some platforms will persist these, leading to privacy issues.
3523 pref("reader.errors.includeURLs", false);
3525 // The default relative font size in reader mode (1-9)
3526 pref("reader.font_size", 5);
3528 // The default relative content width in reader mode (1-9)
3529 pref("reader.content_width", 3);
3531 // The default relative line height in reader mode (1-9)
3532 pref("reader.line_height", 4);
3534 // The default color scheme in reader mode (light, dark, sepia, auto)
3535 // auto = color automatically adjusts according to ambient light level
3536 // (auto only works on platforms where the 'devicelight' event is enabled)
3537 pref("reader.color_scheme", "auto");
3539 // Color scheme values available in reader mode UI.
3540 pref("reader.color_scheme.values", "[\"light\",\"dark\",\"sepia\",\"auto\"]");
3542 // The font type in reader (sans-serif, serif)
3543 pref("reader.font_type", "sans-serif");
3545 // Whether to use a vertical or horizontal toolbar.
3546 pref("reader.toolbar.vertical", true);
3548 #if !defined(ANDROID)
3549   pref("narrate.enabled", true);
3550 #else
3551   pref("narrate.enabled", false);
3552 #endif
3554 pref("narrate.test", false);
3555 pref("narrate.rate", 0);
3556 pref("narrate.voice", " { \"default\": \"automatic\" }");
3557 // Only make voices that match content language available.
3558 pref("narrate.filter-voices", true);
3560 pref("memory.report_concurrency", 10);
3562 pref("toolkit.pageThumbs.screenSizeDivisor", 7);
3563 pref("toolkit.pageThumbs.minWidth", 0);
3564 pref("toolkit.pageThumbs.minHeight", 0);
3566 pref("webextensions.tests", false);
3568 // 16MB default non-parseable upload limit for requestBody.raw.bytes
3569 pref("webextensions.webRequest.requestBodyMaxRawBytes", 16777216);
3571 pref("webextensions.storage.sync.enabled", true);
3572 // Should we use the old kinto-based implementation of storage.sync? To be removed in bug 1637465.
3573 pref("webextensions.storage.sync.kinto", false);
3574 // Server used by the old kinto-based implementation of storage.sync.
3575 pref("webextensions.storage.sync.serverURL", "https://webextensions.settings.services.mozilla.com/v1");
3577 // Allow customization of the fallback directory for file uploads
3578 pref("dom.input.fallbackUploadDir", "");
3580 // Turn rewriting of youtube embeds on/off
3581 #if defined(EARLY_BETA_OR_EARLIER)
3582   pref("plugins.rewrite_youtube_embeds", false);
3583 #else
3584   pref("plugins.rewrite_youtube_embeds", true);
3585 #endif
3587 // Default media volume
3588 pref("media.default_volume", "1.0");
3590 pref("dom.storageManager.prompt.testing", false);
3591 pref("dom.storageManager.prompt.testing.allow", false);
3594 pref("browser.storageManager.pressureNotification.minIntervalMS", 1200000);
3595 pref("browser.storageManager.pressureNotification.usageThresholdGB", 5);
3597 pref("browser.sanitizer.loglevel", "Warn");
3599 // Enable Firefox translations powered by the Bergamot translations
3600 // engine https://browser.mt/. See Bug 971044. Note that this pref can be turned
3601 // on in different apps like Firefox Desktop, even if it's disabled by default here.
3602 pref("browser.translations.enable", false);
3603 // Enable Firefox Select translations powered by the Bergamot translations
3604 // engine https://browser.mt/. Note that this pref can be turned on in different apps
3605 // like Firefox Desktop, even if it's disabled by default here.
3606 pref("browser.translations.select.enable", false);
3607 // Set to "All" to see all logs, which are useful for debugging. Set to "Info" to see
3608 // the application logic logs, and not all of the translated messages, which can be
3609 // slow and overwhelming.
3610 pref("browser.translations.logLevel", "Error");
3611 // A comma-separated list of BCP-47 language tags that affect the behavior of translations.
3612 // Languages listed in the alwaysTranslateLanguages list will trigger auto-translate on page load.
3613 pref("browser.translations.alwaysTranslateLanguages", "");
3614 // A comma-separated list of BCP-47 language tags that affect the behavior of translations.
3615 // Languages listed in the neverTranslateLanguages list will signal that the translations button
3616 // and menus should not be displayed automatically when visiting pages in those languages.
3617 pref("browser.translations.neverTranslateLanguages", "");
3618 // By default the translations engine on about:translations uses text for translation,
3619 // and the full page translations uses HTML. Set this pref to true to use the HTML
3620 // translation behavior on about:translations. Requires a page refresh.
3621 pref("browser.translations.useHTML", false);
3622 // Automatically popup an offer to translate on sites.
3623 pref("browser.translations.automaticallyPopup", true);
3624 // Simulate the behavior of using a device that does not support the translations engine.
3625 // Requires restart.
3626 pref("browser.translations.simulateUnsupportedEngine", false);
3627 // The translations code relies on asynchronous network request. Chaos mode simulates
3628 // flaky and slow network connections, so that the UI may be manually tested. The
3629 // "chaos.errors" makes network requests fail, while "timeoutMS" randomly times out
3630 // between 0ms and the timeoutMS provided.
3631 pref("browser.translations.chaos.errors", false);
3632 pref("browser.translations.chaos.timeoutMS", 0);
3634 // Enable the experimental machine learning inference engine.
3635 pref("browser.ml.enable", false);
3636 // Set to "All" to see all logs, which are useful for debugging.
3637 pref("browser.ml.logLevel", "Error");
3639 // When a user cancels this number of authentication dialogs coming from
3640 // a single web page in a row, all following authentication dialogs will
3641 // be blocked (automatically canceled) for that page. The counter resets
3642 // when the page is reloaded.
3643 // To disable all auth prompting, set the limit to 0.
3644 // To disable blocking of auth prompts, set the limit to -1.
3645 pref("prompts.authentication_dialog_abuse_limit", 2);
3647 // The prompt type to use for http auth prompts
3648 // content: 1, tab: 2, window: 3
3649 pref("prompts.modalType.httpAuth", 2);
3651 pref("dom.payments.request.supportedRegions", "US,CA");
3653 #ifdef MOZ_ASAN_REPORTER
3654   pref("asanreporter.apiurl", "https://anf1.fuzzing.mozilla.org/crashproxy/submit/");
3655   pref("asanreporter.clientid", "unknown");
3656   pref("toolkit.telemetry.overrideUpdateChannel", "nightly-asan");
3657 #endif
3659 // If `true`, about:processes shows in-process subframes.
3660 pref("toolkit.aboutProcesses.showAllSubframes", false);
3661 // If `true`, about:processes shows thread information.
3662 #ifdef NIGHTLY_BUILD
3663   pref("toolkit.aboutProcesses.showThreads", true);
3664 #else
3665   pref("toolkit.aboutProcesses.showThreads", false);
3666 #endif
3667 // If `true`, about:processes will offer to profile processes.
3668 pref("toolkit.aboutProcesses.showProfilerIcons", true);
3669 // Time in seconds between when the profiler is started and when the
3670 // profile is captured.
3671 pref("toolkit.aboutProcesses.profileDuration", 5);
3673 // When a crash happens, whether to include heap regions of the crash context
3674 // in the minidump. Enabled by default on nightly and aurora.
3675 #ifdef RELEASE_OR_BETA
3676   pref("toolkit.crashreporter.include_context_heap", false);
3677 #else
3678   pref("toolkit.crashreporter.include_context_heap", true);
3679 #endif
3681 // Support for legacy customizations that rely on checking the
3682 // user profile directory for these stylesheets:
3683 //  * userContent.css
3684 //  * userChrome.css
3685 pref("toolkit.legacyUserProfileCustomizations.stylesheets", false);
3687 #ifdef MOZ_DATA_REPORTING
3688   pref("datareporting.policy.dataSubmissionEnabled", true);
3689   pref("datareporting.policy.dataSubmissionPolicyNotifiedTime", "0");
3690   pref("datareporting.policy.dataSubmissionPolicyAcceptedVersion", 0);
3691   pref("datareporting.policy.dataSubmissionPolicyBypassNotification", false);
3692   pref("datareporting.policy.currentPolicyVersion", 2);
3693   pref("datareporting.policy.minimumPolicyVersion", 1);
3694   pref("datareporting.policy.minimumPolicyVersion.channel-beta", 2);
3695   pref("datareporting.policy.firstRunURL", "https://www.mozilla.org/privacy/firefox/");
3696 #endif
3698 #ifdef MOZ_SERVICES_HEALTHREPORT
3699   #if !defined(ANDROID)
3700     pref("datareporting.healthreport.infoURL", "https://www.mozilla.org/legal/privacy/firefox.html#health-report");
3702     // Health Report is enabled by default on all channels.
3703     pref("datareporting.healthreport.uploadEnabled", true);
3704   #endif
3705 #endif
3707 pref("services.common.log.logger.rest.request", "Debug");
3708 pref("services.common.log.logger.rest.response", "Debug");
3709 pref("services.common.log.logger.tokenserverclient", "Debug");
3711 #ifdef MOZ_SERVICES_SYNC
3712   pref("services.sync.lastversion", "firstrun");
3713   pref("services.sync.sendVersionInfo", true);
3715   pref("services.sync.scheduler.idleInterval", 3600);  // 1 hour
3716   pref("services.sync.scheduler.activeInterval", 600);   // 10 minutes
3717   pref("services.sync.scheduler.immediateInterval", 90);    // 1.5 minutes
3718   pref("services.sync.scheduler.idleTime", 300);   // 5 minutes
3720   pref("services.sync.scheduler.fxa.singleDeviceInterval", 3600); // 1 hour
3722   // Note that new engines are typically added with a default of disabled, so
3723   // when an existing sync user gets the Firefox upgrade that supports the engine
3724   // it starts as disabled until the user has explicitly opted in.
3725   // The sync "create account" process typically *will* offer these engines, so
3726   // they may be flipped to enabled at that time.
3727   pref("services.sync.engine.addons", true);
3728   pref("services.sync.engine.addresses", false);
3729   pref("services.sync.engine.bookmarks", true);
3730   pref("services.sync.engine.creditcards", false);
3731   pref("services.sync.engine.history", true);
3732   pref("services.sync.engine.passwords", true);
3733   pref("services.sync.engine.prefs", true);
3734   pref("services.sync.engine.tabs", true);
3735   pref("services.sync.engine.tabs.filteredSchemes", "about|resource|chrome|file|blob|moz-extension|data");
3737   // The addresses and CC engines might not actually be available at all.
3738   pref("services.sync.engine.addresses.available", false);
3739   pref("services.sync.engine.creditcards.available", false);
3741   // If true, add-on sync ignores changes to the user-enabled flag. This
3742   // allows people to have the same set of add-ons installed across all
3743   // profiles while maintaining different enabled states.
3744   pref("services.sync.addons.ignoreUserEnabledChanges", false);
3746   // Comma-delimited list of hostnames to trust for add-on install.
3747   pref("services.sync.addons.trustedSourceHostnames", "addons.mozilla.org");
3749   pref("services.sync.log.appender.console", "Fatal");
3750   pref("services.sync.log.appender.dump", "Error");
3751   pref("services.sync.log.appender.file.level", "Trace");
3752   pref("services.sync.log.appender.file.logOnError", true);
3753   #if defined(NIGHTLY_BUILD)
3754     pref("services.sync.log.appender.file.logOnSuccess", true);
3755   #else
3756     pref("services.sync.log.appender.file.logOnSuccess", false);
3757   #endif
3758   pref("services.sync.log.appender.file.maxErrorAge", 864000); // 10 days
3760   // The default log level for all "Sync.*" logs. Adjusting this pref will
3761   // adjust the level for *all* Sync logs (except engines, and that's only
3762   // because we supply a default for the engines below.)
3763   pref("services.sync.log.logger", "Debug");
3765   // Prefs for Sync engines can be controlled globally or per-engine.
3766   // We only define the global level here, but manually creating prefs
3767   // like "services.sync.log.logger.engine.bookmarks" will control just
3768   // that engine.
3769   pref("services.sync.log.logger.engine", "Debug");
3770   pref("services.sync.log.cryptoDebug", false);
3772   pref("services.sync.telemetry.submissionInterval", 43200); // 12 hours in seconds
3773   pref("services.sync.telemetry.maxPayloadCount", 500);
3775   #ifdef EARLY_BETA_OR_EARLIER
3776     // Enable the (fairly costly) client/server validation through early Beta, but
3777     // not release candidates or Release.
3778     pref("services.sync.engine.bookmarks.validation.enabled", true);
3779     pref("services.sync.engine.passwords.validation.enabled", true);
3780   #endif
3782   // We consider validation this frequently. After considering validation, even
3783   // if we don't end up validating, we won't try again unless this much time has passed.
3784   pref("services.sync.engine.bookmarks.validation.interval", 86400); // 24 hours in seconds
3785   pref("services.sync.engine.passwords.validation.interval", 86400); // 24 hours in seconds
3787   // We only run validation `services.sync.validation.percentageChance` percent of
3788   // the time, even if it's been the right amount of time since the last validation,
3789   // and you meet the maxRecord checks.
3790   pref("services.sync.engine.bookmarks.validation.percentageChance", 10);
3791   pref("services.sync.engine.passwords.validation.percentageChance", 10);
3793   // We won't validate an engine if it has more than this many records on the server.
3794   pref("services.sync.engine.bookmarks.validation.maxRecords", 1000);
3795   pref("services.sync.engine.passwords.validation.maxRecords", 1000);
3797   // The maximum number of immediate resyncs to trigger for changes made during
3798   // a sync.
3799   pref("services.sync.maxResyncs", 1);
3801   // The URL of the Firefox Accounts auth server backend
3802   pref("identity.fxaccounts.auth.uri", "https://api.accounts.firefox.com/v1");
3804   // Percentage chance we skip an extension storage sync (kinto life support).
3805   pref("services.sync.extension-storage.skipPercentageChance", 50);
3806 #endif // MOZ_SERVICES_SYNC
3808 #if defined(ENABLE_WEBDRIVER)
3809   // WebDriver is a remote control interface that enables introspection and
3810   // control of user agents. It provides a platform- and language-neutral wire
3811   // protocol as a way for out-of-process programs to remotely instruct the
3812   // behavior of web browsers.
3813   //
3814   // Gecko's implementation is backed by Marionette (WebDriver HTTP) and the
3815   // Remote Agent (WebDriver BiDi).
3817   // Delay server startup until a modal dialogue has been clicked to allow time
3818   // for user to set breakpoints in the Browser Toolbox.
3819   pref("marionette.debugging.clicktostart", false);
3821   // Port to start Marionette server on.
3822   pref("marionette.port", 2828);
3824   // Defines the protocols that will be active for the Remote Agent.
3825   // 1: WebDriver BiDi
3826   // 2: CDP (Chrome DevTools Protocol)
3827   // 3: WebDriver BiDi + CDP
3828   pref("remote.active-protocols", 3);
3830   // Enable WebDriver BiDi experimental commands and events.
3831   #if defined(NIGHTLY_BUILD)
3832     pref("remote.experimental.enabled", true);
3833   #else
3834     pref("remote.experimental.enabled", false);
3835   #endif
3837   // Defines the verbosity of the internal logger.
3838   //
3839   // Available levels are, in descending order of severity, "Trace", "Debug",
3840   // "Config", "Info", "Warn", "Error", and "Fatal". The value is treated
3841   // case-sensitively.
3842   pref("remote.log.level", "Info");
3844   // Certain log messages that are known to be long are truncated. This
3845   // preference causes them to not be truncated.
3846   pref("remote.log.truncate", true);
3848   // Sets recommended automation preferences when Remote Agent or Marionette is
3849   // started.
3850   pref("remote.prefs.recommended", true);
3851 #endif
3853 // Enable the JSON View tool (an inspector for application/json documents).
3854 pref("devtools.jsonview.enabled", true);
3856 // Default theme ("auto", "dark" or "light").
3857 pref("devtools.theme", "auto", sticky);
3859 // Completely disable DevTools entry points, as well as all DevTools command
3860 // line arguments.
3861 pref("devtools.policy.disabled", false);
3863 // Enable deprecation warnings.
3864 pref("devtools.errorconsole.deprecation_warnings", true);
3866 #ifdef NIGHTLY_BUILD
3867   // Don't show the Browser Toolbox prompt on local builds / nightly.
3868   pref("devtools.debugger.prompt-connection", false, sticky);
3869 #else
3870   pref("devtools.debugger.prompt-connection", true, sticky);
3871 #endif
3873 #ifdef MOZILLA_OFFICIAL
3874   // Disable debugging chrome.
3875   pref("devtools.chrome.enabled", false, sticky);
3876   // Disable remote debugging connections.
3877   pref("devtools.debugger.remote-enabled", false, sticky);
3878 #else
3879   // In local builds, enable the browser toolbox by default.
3880   pref("devtools.chrome.enabled", true, sticky);
3881   pref("devtools.debugger.remote-enabled", true, sticky);
3882 #endif
3884 // Disable service worker debugging on all channels (see Bug 1651605).
3885 pref("devtools.debugger.features.windowless-service-workers", false);
3887 // Disable remote debugging protocol logging.
3888 pref("devtools.debugger.log", false);
3889 pref("devtools.debugger.log.verbose", false);
3891 pref("devtools.debugger.remote-port", 6000);
3892 pref("devtools.debugger.remote-websocket", false);
3893 // Force debugger server binding on the loopback interface.
3894 pref("devtools.debugger.force-local", true);
3896 // Limit for intercepted request and response bodies (1 MB).
3897 // Possible values:
3898 // 0 => the response body has no limit
3899 // n => represents max number of bytes stored
3900 pref("devtools.netmonitor.responseBodyLimit", 1048576);
3901 pref("devtools.netmonitor.requestBodyLimit", 1048576);
3903 // Limit for WebSocket/EventSource messages (100 KB).
3904 pref("devtools.netmonitor.msg.messageDataLimit", 100000);
3906 // DevTools default color unit.
3907 pref("devtools.defaultColorUnit", "authored");
3909 // Used for devtools debugging.
3910 pref("devtools.dump.emit", false);
3912 // Disable device discovery logging.
3913 pref("devtools.discovery.log", false);
3915 // The extension ID for devtools-adb-extension.
3916 pref("devtools.remote.adb.extensionID", "adb@mozilla.org");
3917 // The URL for for devtools-adb-extension (overridden in tests to a local
3918 // path).
3919 pref("devtools.remote.adb.extensionURL", "https://ftp.mozilla.org/pub/labs/devtools/adb-extension/#OS#/adb-extension-latest-#OS#.xpi");
3921 // Enable Inactive CSS detection; used both by the client and the server.
3922 pref("devtools.inspector.inactive.css.enabled", true);
3924 // Should F12 open the Developer Tools toolbox.
3925 pref("devtools.f12_enabled", true);
3927 #if defined(NIGHTLY_BUILD) || defined(MOZ_DEV_EDITION)
3928 // Define in StaticPrefList.yaml and override here since StaticPrefList.yaml
3929 // doesn't provide a way to lock the pref
3930 pref("dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled", false);
3931 #else
3932 pref("dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled", false, locked);
3933 #endif
3935 // Whether sites require the open-protocol-handler permission to open a
3936 //preferred external application for a protocol. If a site doesn't have
3937 // permission we will show a prompt.
3938 pref("security.external_protocol_requires_permission", true);
3940 // Preferences for the form autofill toolkit component.
3941 // The truthy values of "extensions.formautofill.addresses.available"
3942 // is "on" and "detect",
3943 // any other value means autofill isn't available.
3944 // "detect" means it's enabled if conditions defined in the extension are met.
3945 // Note: "extensions.formautofill.available"
3946 // is not being used in form autofill, but need to exist for migration purposes.
3947 pref("extensions.formautofill.available", "detect");
3948 pref("extensions.formautofill.addresses.supported", "detect");
3949 pref("extensions.formautofill.addresses.enabled", true);
3950 pref("extensions.formautofill.addresses.capture.enabled", true);
3951 #if defined(ANDROID)
3952   // On android we have custom logic to control this. Ideally we should use nimbus there as well.
3953   // https://github.com/mozilla-mobile/firefox-android/blob/d566743ea0f041ce27c1204da903de380f96b46e/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt#L1502-L1510
3954   pref("extensions.formautofill.addresses.experiments.enabled", true);
3955 #else
3956   // Whether address autofill is enabled or not ( this is set via Nimbus )
3957   pref("extensions.formautofill.addresses.experiments.enabled", false);
3958 #endif
3959 // Defies the required address form fields to trigger the display of the address capture doorhanger
3960 pref("extensions.formautofill.addresses.capture.requiredFields", "street-address,postal-code,address-level1,address-level2");
3961 pref("extensions.formautofill.addresses.ignoreAutocompleteOff", true);
3962 // Supported countries need to follow ISO 3166-1 to align with "browser.search.region"
3963 pref("extensions.formautofill.addresses.supportedCountries", "US,CA");
3964 pref("extensions.formautofill.creditCards.supported", "detect");
3965 pref("extensions.formautofill.creditCards.enabled", true);
3966 pref("extensions.formautofill.creditCards.ignoreAutocompleteOff", true);
3968 // Supported countries need to follow ISO 3166-1 to align with "browser.search.region"
3969 pref("extensions.formautofill.creditCards.supportedCountries", "US,CA,GB,FR,DE,IT,ES,AT,BE,PL");
3971 // Algorithm used by formautofill while determine whether a field is a credit card field
3972 // 0:Heurstics based on regular expression string matching
3973 // 1:Fathom in js implementation
3974 // 2:Fathom in c++ implementation
3975 pref("extensions.formautofill.creditCards.heuristics.mode", 2);
3976 pref("extensions.formautofill.creditCards.heuristics.fathom.types", "cc-number,cc-name");
3977 // Defines the threshold to identify whether a field is a cc field
3978 pref("extensions.formautofill.creditCards.heuristics.fathom.confidenceThreshold", "0.5");
3979 // Defineis the threshold to mark fields that are "high-confidence", see `isValidSection` for details
3980 pref("extensions.formautofill.creditCards.heuristics.fathom.highConfidenceThreshold", "0.95");
3981 // This is Only for testing! Set the confidence value (> 0 && <= 1) after a field is identified by fathom
3982 pref("extensions.formautofill.creditCards.heuristics.fathom.testConfidence", "0");
3984 pref("extensions.formautofill.loglevel", "Warn");
3986 // Temporary prefs that we will be removed if the telemetry data (added in Fx123) does not show any problems with the new heuristics.
3987 pref("extensions.formautofill.heuristics.captureOnFormRemoval", true);
3988 pref("extensions.formautofill.heuristics.captureOnPageNavigation", true);
3989 // The interactivityCheckMode pref is only temporary.
3990 // It will be removed when we decide to only support the `focusability` mode
3991 pref("extensions.formautofill.heuristics.interactivityCheckMode", "focusability");
3993 pref("toolkit.osKeyStore.loglevel", "Warn");
3995 pref("extensions.formautofill.supportRTL", false);
3997 // Controls the log level for CookieBannerListService.jsm.
3998 pref("cookiebanners.listService.logLevel", "Error");
4000 // Controls the log level for Cookie Banner Auto Clicking.
4001 pref("cookiebanners.bannerClicking.logLevel", "Error");
4003 // Enables the cookie banner auto clicking. The cookie banner auto clicking
4004 // depends on the `cookiebanners.service.mode` pref.
4005 pref("cookiebanners.bannerClicking.enabled", true);
4007 // Whether or not banner auto clicking test mode is enabled.
4008 pref("cookiebanners.bannerClicking.testing", false);
4010 // The maximum time (ms) after load for detecting banner and button elements for
4011 // cookie banner auto clicking.
4012 pref("cookiebanners.bannerClicking.timeoutAfterLoad", 5000);
4014 // Maximum time (ms) after DOMContentLoaded for detecting banners. This is a
4015 // catchall for cases where a load even never occurs.
4016 pref("cookiebanners.bannerClicking.timeoutAfterDOMContentLoaded", 20000);
4018 // How often (milliseconds) to run the banner detection query selectors to detect
4019 // the banner element and/or buttons.
4020 pref("cookiebanners.bannerClicking.pollingInterval", 500);
4022 // Array of test rules for cookie banner handling as a JSON string. They will be
4023 // inserted in addition to regular rules and may override them when setting the
4024 // same domain. Every array item should be a valid CookieBannerRule. See
4025 // CookieBannerRule.schema.json.
4026 pref("cookiebanners.listService.testRules", "[]");
4028 // Still fetches rules from RemoteSettings, but discards them. Used in tests.
4029 pref("cookiebanners.listService.testSkipRemoteSettings", false);
4031 // The domains we will block from installing SitePermsAddons. Comma-separated
4032 // full domains: any subdomains of the domains listed will also be allowed.
4033 pref("dom.sitepermsaddon-provider.separatedBlocklistedDomains", "shopee.co.th,shopee.tw,shopee.co.id,shopee.com.my,shopee.vn,shopee.ph,shopee.sg,shopee.com.br,shopee.com,shopee.cn,shopee.io,shopee.pl,shopee.com.mx,shopee.com.co,shopee.cl,shopee.kr,shopee.es,shopee.in,alipay.com,miravia.es");
4035 // Log level for logger in URLQueryStrippingListService
4036 pref("privacy.query_stripping.listService.logLevel", "Error");
4038 // Signal to the webcompat site intervention add-on to use the MV3
4039 // scripting.registerContentScripts API instead of the older MV2
4040 // contentScripts.register API.
4041 pref("extensions.webcompat.useScriptingAPI", true);
4043 // Controls the log level for Fingerprinting Remote Overrides.
4044 pref("privacy.fingerprintingProtection.WebCompatService.logLevel", "Error");
4045 // To test strip on share site specific parameters by enabling a different list to be used
4046 pref("privacy.query_stripping.strip_on_share.enableTestMode", false);