tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

all.js (198118B)


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