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