Version in base suite: 68.4.1esr-1~deb10u1 Base version: firefox-esr_68.4.1esr-1~deb10u1 Target version: firefox-esr_68.5.0esr-1~deb10u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/f/firefox-esr/firefox-esr_68.4.1esr-1~deb10u1.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/f/firefox-esr/firefox-esr_68.5.0esr-1~deb10u1.dsc /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/build/pgo/certs/cert9.db |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/build/pgo/certs/key4.db |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/build/pgo/certs/mochitest.client |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_missing_intermediate/missing-intermediate.der |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1-256_p7-1-256.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1-256_p7-1.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1-256_p7-256.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1_p7-1-256.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1_p7-1.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1_p7-256.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-256_p7-1-256.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-256_p7-1.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-256_p7-256.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1-256_p7-1-256.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1-256_p7-1.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1-256_p7-256.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1_p7-1-256.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1_p7-1.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1_p7-256.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-256_p7-1-256.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-256_p7-1.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-256_p7-256.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1-256_p7-1-256.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1-256_p7-1.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1-256_p7-256.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1_p7-1-256.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1_p7-1.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1_p7-256.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-256_p7-1-256.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-256_p7-1.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-256_p7-256.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/big_manifest.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/cose_int_signed_with_pkcs7.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/cose_multiple_signed_with_pkcs7.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/cose_signed_with_pkcs7.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/cose_tampered_good_pkcs7.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/empty_signerInfos.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/huge_manifest.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/only_cose_multiple_signed.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/only_cose_signed.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/unknown_issuer_app.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_signed_apps/unsigned_app.zip |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/third_party/python/psutil/tmp/tmpF_l01Y.o |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/third_party/python/psutil/tmp/tmpaLZguG.o |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/third_party/python/psutil/tmp/tmpf5WYJ5.o |binary /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/third_party/python/psutil/tmp/tmpvKVAlZ.o |binary firefox-esr-68.5.0esr/.cron.yml | 29 firefox-esr-68.5.0esr/accessible/tests/mochitest/events/docload/test_docload_root.html | 7 firefox-esr-68.5.0esr/browser/app/blocklist.xml | 182 firefox-esr-68.5.0esr/browser/base/content/browser-addons.js | 10 firefox-esr-68.5.0esr/browser/base/content/browser.js | 4 firefox-esr-68.5.0esr/browser/base/content/popup-notifications.inc | 15 firefox-esr-68.5.0esr/browser/components/enterprisepolicies/Policies.jsm | 89 firefox-esr-68.5.0esr/browser/components/enterprisepolicies/schemas/policies-schema.json | 16 firefox-esr-68.5.0esr/browser/components/enterprisepolicies/tests/browser/browser_policy_display_menu.js | 66 firefox-esr-68.5.0esr/browser/components/enterprisepolicies/tests/browser/browser_policy_extensionsettings.js | 8 firefox-esr-68.5.0esr/browser/components/enterprisepolicies/tests/xpcshell/test_permissions.js | 19 firefox-esr-68.5.0esr/browser/components/extensions/test/browser/browser_ext_pageAction_context.js | 25 firefox-esr-68.5.0esr/browser/components/newtab/test/browser/browser_asrouter_targeting.js | 8 firefox-esr-68.5.0esr/browser/config/mozconfigs/linux64/source | 1 firefox-esr-68.5.0esr/browser/config/version.txt | 2 firefox-esr-68.5.0esr/browser/config/version_display.txt | 2 firefox-esr-68.5.0esr/browser/extensions/pdfjs/content/PdfjsChromeUtils.jsm | 2 firefox-esr-68.5.0esr/browser/extensions/webcompat/about-compat/aboutCompat.css | 8 firefox-esr-68.5.0esr/browser/extensions/webcompat/data/injections.js | 139 firefox-esr-68.5.0esr/browser/extensions/webcompat/data/picture_in_picture_overrides.js | 36 firefox-esr-68.5.0esr/browser/extensions/webcompat/data/ua_overrides.js | 164 firefox-esr-68.5.0esr/browser/extensions/webcompat/experiment-apis/pictureInPicture.js | 75 firefox-esr-68.5.0esr/browser/extensions/webcompat/experiment-apis/pictureInPicture.json | 39 firefox-esr-68.5.0esr/browser/extensions/webcompat/experiment-apis/systemManufacturer.js | 27 firefox-esr-68.5.0esr/browser/extensions/webcompat/experiment-apis/systemManufacturer.json | 20 firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/css/bug1305028-gaming.youtube.com-webkit-scrollbar.css | 14 firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/css/bug1432935-breitbart.com-webkit-scrollbar.css | 13 firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/css/bug1605611-maps.google.com-directions-time.css | 24 firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/css/bug1609991-cracked.com-flex-basis-fix.css | 12 firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/css/bug1610016-gaana.com-input-position-fix.css | 13 firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/js/bug1472081-election.gov.np-window.sidebar-shim.js | 25 firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/js/bug1482066-portalminasnet.com-window.sidebar-shim.js | 25 firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/js/bug1577245-salesforce-communities-hide-unsupported.js | 7 firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/js/bug1605611-maps.google.com-directions-time.js | 82 firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/js/bug1610358-pcloud.com-appVersion-change.js | 25 firefox-esr-68.5.0esr/browser/extensions/webcompat/lib/google.js | 4 firefox-esr-68.5.0esr/browser/extensions/webcompat/lib/picture_in_picture_overrides.js | 17 firefox-esr-68.5.0esr/browser/extensions/webcompat/manifest.json | 34 firefox-esr-68.5.0esr/browser/extensions/webcompat/moz.build | 21 firefox-esr-68.5.0esr/browser/extensions/webcompat/run.js | 5 firefox-esr-68.5.0esr/browser/installer/windows/nsis/shared.nsh | 38 firefox-esr-68.5.0esr/browser/installer/windows/nsis/uninstaller.nsi | 12 firefox-esr-68.5.0esr/browser/locales/en-US/chrome/browser/browser.properties | 7 firefox-esr-68.5.0esr/browser/modules/PermissionUI.jsm | 34 firefox-esr-68.5.0esr/config/milestone.txt | 2 firefox-esr-68.5.0esr/debian/changelog | 8 firefox-esr-68.5.0esr/debian/patches/fixes/Fill-sourcestamp.txt-with-the-missing-info.patch | 16 firefox-esr-68.5.0esr/debian/patches/series | 1 firefox-esr-68.5.0esr/dom/base/crashtests/1291535-iframe.html | 4 firefox-esr-68.5.0esr/dom/base/crashtests/1291535.html | 1 firefox-esr-68.5.0esr/dom/base/crashtests/crashtests.list | 1 firefox-esr-68.5.0esr/dom/fetch/FetchStreamReader.cpp | 21 firefox-esr-68.5.0esr/dom/fetch/FetchStreamReader.h | 2 firefox-esr-68.5.0esr/dom/indexedDB/ActorsChild.cpp | 5 firefox-esr-68.5.0esr/dom/media/gmp/GMPParent.cpp | 11 firefox-esr-68.5.0esr/dom/media/hls/HLSDemuxer.cpp | 76 firefox-esr-68.5.0esr/dom/media/systemservices/video_engine/browser_capture_impl.h | 6 firefox-esr-68.5.0esr/dom/media/systemservices/video_engine/desktop_capture_impl.cc | 66 firefox-esr-68.5.0esr/dom/media/test/test_mediarecorder_playback_can_repeat.html | 114 firefox-esr-68.5.0esr/dom/script/ScriptLoader.cpp | 7 firefox-esr-68.5.0esr/gfx/2d/DrawTargetD2D1.cpp | 20 firefox-esr-68.5.0esr/gfx/layers/composite/TextureHost.cpp | 8 firefox-esr-68.5.0esr/ipc/glue/CrashReporterMetadataShmem.cpp | 4 firefox-esr-68.5.0esr/js/src/frontend/BytecodeCompiler.cpp | 3 firefox-esr-68.5.0esr/js/src/frontend/Parser.cpp | 38 firefox-esr-68.5.0esr/js/src/frontend/Parser.h | 3 firefox-esr-68.5.0esr/js/src/frontend/TokenStream.cpp | 6 firefox-esr-68.5.0esr/js/src/frontend/TokenStream.h | 57 firefox-esr-68.5.0esr/js/src/jit/MIR.h | 2 firefox-esr-68.5.0esr/layout/reftests/svg/mask-opacity-02-ref.svg | 5 firefox-esr-68.5.0esr/layout/reftests/svg/mask-opacity-02.svg | 20 firefox-esr-68.5.0esr/layout/reftests/svg/mask-opacity-03.svg | 20 firefox-esr-68.5.0esr/layout/reftests/svg/mask-opacity-04.svg | 20 firefox-esr-68.5.0esr/layout/reftests/svg/mask-opacity-05.svg | 20 firefox-esr-68.5.0esr/layout/reftests/svg/reftest.list | 4 firefox-esr-68.5.0esr/layout/style/contenteditable.css | 8 firefox-esr-68.5.0esr/media/webrtc/signaling/src/media-conduit/AudioConduit.cpp | 5 firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/android/video_capture_android.cc | 2 firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc | 20 firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.h | 6 firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/objc/video_capture.mm | 2 firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/video_capture.h | 6 firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/video_capture_defines.h | 5 firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/windows/device_info_ds.cc | 60 firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/windows/video_capture_ds.cc | 2 firefox-esr-68.5.0esr/mobile/android/app/findbugs-exclude.xml | 6 firefox-esr-68.5.0esr/mobile/android/app/src/main/res/drawable/as_banner_background_rounded.xml | 11 firefox-esr-68.5.0esr/mobile/android/app/src/main/res/drawable/as_signin_background_round.xml | 11 firefox-esr-68.5.0esr/mobile/android/app/src/main/res/layout/activity_stream_fxa_banner.xml | 95 firefox-esr-68.5.0esr/mobile/android/app/src/main/res/layout/activity_stream_promo_banner.xml | 87 firefox-esr-68.5.0esr/mobile/android/app/src/main/res/layout/activity_stream_signin.xml | 93 firefox-esr-68.5.0esr/mobile/android/app/src/main/res/values/bool.xml | 3 firefox-esr-68.5.0esr/mobile/android/app/src/main/res/values/dimens.xml | 34 firefox-esr-68.5.0esr/mobile/android/base/AndroidManifest.xml.in | 12 firefox-esr-68.5.0esr/mobile/android/base/AppConstants.java.in | 7 firefox-esr-68.5.0esr/mobile/android/base/java/org/mozilla/gecko/AccountsHelper.java | 4 firefox-esr-68.5.0esr/mobile/android/base/java/org/mozilla/gecko/LauncherActivity.java | 4 firefox-esr-68.5.0esr/mobile/android/base/java/org/mozilla/gecko/Telemetry.java | 9 firefox-esr-68.5.0esr/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/ActivityStreamHomeFragment.java | 3 firefox-esr-68.5.0esr/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/ActivityStreamPanel.java | 3 firefox-esr-68.5.0esr/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/StreamRecyclerAdapter.java | 57 firefox-esr-68.5.0esr/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/stream/FirefoxPromoBannerRow.java | 52 firefox-esr-68.5.0esr/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/stream/FxaBannerRow.java | 80 firefox-esr-68.5.0esr/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/stream/SignInRow.java | 80 firefox-esr-68.5.0esr/mobile/android/base/java/org/mozilla/gecko/deeplink/DeepLinkContract.java | 5 firefox-esr-68.5.0esr/mobile/android/base/java/org/mozilla/gecko/home/CombinedHistoryPanel.java | 21 firefox-esr-68.5.0esr/mobile/android/base/java/org/mozilla/gecko/mma/MmaDelegate.java | 72 firefox-esr-68.5.0esr/mobile/android/base/java/org/mozilla/gecko/switchboard/SwitchBoard.java | 12 firefox-esr-68.5.0esr/mobile/android/base/java/org/mozilla/gecko/telemetry/pingbuilders/TelemetryCorePingBuilder.java | 11 firefox-esr-68.5.0esr/mobile/android/base/locales/en-US/android_strings.dtd | 7 firefox-esr-68.5.0esr/mobile/android/base/strings.xml.in | 4 firefox-esr-68.5.0esr/mobile/android/config/version-files/beta/version.txt | 2 firefox-esr-68.5.0esr/mobile/android/config/version-files/beta/version_display.txt | 2 firefox-esr-68.5.0esr/mobile/android/config/version-files/nightly/version.txt | 2 firefox-esr-68.5.0esr/mobile/android/config/version-files/nightly/version_display.txt | 2 firefox-esr-68.5.0esr/mobile/android/config/version-files/release/version.txt | 2 firefox-esr-68.5.0esr/mobile/android/config/version-files/release/version_display.txt | 2 firefox-esr-68.5.0esr/mobile/android/docs/mma.rst | 8 firefox-esr-68.5.0esr/mobile/android/docs/uitelemetry.rst | 6 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/about-compat/aboutCompat.css | 8 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/data/injections.js | 139 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/data/picture_in_picture_overrides.js | 36 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/data/ua_overrides.js | 164 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/experiment-apis/pictureInPicture.js | 75 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/experiment-apis/pictureInPicture.json | 39 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/experiment-apis/systemManufacturer.js | 27 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/experiment-apis/systemManufacturer.json | 20 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/injections/css/bug1305028-gaming.youtube.com-webkit-scrollbar.css | 14 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/injections/css/bug1432935-breitbart.com-webkit-scrollbar.css | 13 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/injections/css/bug1605611-maps.google.com-directions-time.css | 24 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/injections/css/bug1609991-cracked.com-flex-basis-fix.css | 12 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/injections/css/bug1610016-gaana.com-input-position-fix.css | 13 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/injections/js/bug1472081-election.gov.np-window.sidebar-shim.js | 25 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/injections/js/bug1482066-portalminasnet.com-window.sidebar-shim.js | 25 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/injections/js/bug1577245-salesforce-communities-hide-unsupported.js | 7 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/injections/js/bug1605611-maps.google.com-directions-time.js | 82 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/injections/js/bug1610358-pcloud.com-appVersion-change.js | 25 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/lib/google.js | 4 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/lib/picture_in_picture_overrides.js | 17 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/manifest.json | 34 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/moz.build | 21 firefox-esr-68.5.0esr/mobile/android/extensions/webcompat/run.js | 5 firefox-esr-68.5.0esr/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/GeckoHlsPlayer.java | 10 firefox-esr-68.5.0esr/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/SessionAccessibility.java | 14 firefox-esr-68.5.0esr/mobile/android/geckoview_example/src/main/java/org/mozilla/geckoview_example/GeckoViewActivity.java | 5 firefox-esr-68.5.0esr/mobile/android/moz.configure | 7 firefox-esr-68.5.0esr/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/mainthread/LocalPreferenceReceiver.java | 34 firefox-esr-68.5.0esr/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/mainthread/SystemReceiver.java | 14 firefox-esr-68.5.0esr/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/stumblerthread/StumblerService.java | 45 firefox-esr-68.5.0esr/mobile/locales/l10n-changesets.json | 182 firefox-esr-68.5.0esr/netwerk/base/ProxyAutoConfig.cpp | 3 firefox-esr-68.5.0esr/netwerk/dns/effective_tld_names.dat | 35 firefox-esr-68.5.0esr/netwerk/protocol/http/nsCORSListenerProxy.cpp | 10 firefox-esr-68.5.0esr/netwerk/protocol/http/nsHttpHandler.cpp | 10 firefox-esr-68.5.0esr/netwerk/protocol/http/nsHttpHandler.h | 1 firefox-esr-68.5.0esr/netwerk/test/browser/browser_test_io_activity.js | 2 firefox-esr-68.5.0esr/obj-x86_64-pc-linux-gnu/_virtualenvs/init/lib/python2.7/site-packages/pip-9.0.3.dist-info/RECORD | 104 firefox-esr-68.5.0esr/obj-x86_64-pc-linux-gnu/_virtualenvs/init/lib/python2.7/site-packages/setuptools-39.0.1.dist-info/RECORD | 24 firefox-esr-68.5.0esr/obj-x86_64-pc-linux-gnu/_virtualenvs/init/lib/python2.7/site-packages/wheel-0.30.0.dist-info/RECORD | 4 firefox-esr-68.5.0esr/parser/html/javasrc/TreeBuilder.java | 4 firefox-esr-68.5.0esr/parser/html/nsHtml5TreeBuilder.cpp | 4 firefox-esr-68.5.0esr/security/manager/ssl/StaticHPKPins.h | 2 firefox-esr-68.5.0esr/security/manager/ssl/nsNSSCertificateDB.cpp | 6 firefox-esr-68.5.0esr/security/manager/ssl/nsSTSPreloadList.inc | 4822 ++++++---- firefox-esr-68.5.0esr/security/manager/ssl/tests/mochitest/browser/ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/mochitest/browser/code-ee.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/mochitest/browser/ee-from-expired-ca.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/mochitest/browser/ee-from-untrusted-ca.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/mochitest/browser/email-ee.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/mochitest/browser/has-cn.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/mochitest/browser/has-empty-subject.pem | 14 firefox-esr-68.5.0esr/security/manager/ssl/tests/mochitest/browser/has-non-empty-subject.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/mochitest/browser/has-o.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/mochitest/browser/has-ou.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/mochitest/browser/invalid.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/mochitest/browser/longOID.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/mochitest/browser/md5-ee.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/mochitest/browser/revoked.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/mochitest/browser/ssl-ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/mochitest/browser/unknown-issuer.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/mochitest/browser/untrusted-ca.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/badSubjectAltNames.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/beforeEpochIssuer.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/ca-used-as-end-entity.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/default-ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/ee-from-missing-intermediate.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/ee-imminently-distrusted.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/eeIssuedByNonCA.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/eeIssuedByV1Cert.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/emptyIssuerName.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/emptyNameCA.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/ev-test-intermediate.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/ev-test.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/expiredissuer.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/idn-certificate.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/inadequateKeySizeEE.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/inadequatekeyusage-ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/ipAddressAsDNSNameInSAN.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/md5signature.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/mismatch-untrusted.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/mismatch.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/mismatchCN.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/mitm.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/noValidNames.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/notYetValidIssuer.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/nsCertTypeCritical.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/nsCertTypeCriticalWithExtKeyUsage.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/nsCertTypeNotCritical.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/other-issuer-ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/self-signed-EE-with-cA-true.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/selfsigned-inadequateEKU.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/selfsigned.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/test-ca.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/unknownissuer.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/untrustedissuer.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/bad_certs/v1Cert.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/ocsp_certs/ca-used-as-end-entity.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/ocsp_certs/default-ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/ocsp_certs/delegatedSHA1Signer.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/ocsp_certs/delegatedSigner.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerFromIntermediate.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerKeyUsageCrlSigning.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerNoExtKeyUsage.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerWrongExtKeyUsage.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/ocsp_certs/multi-tls-feature-bad-ee.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/ocsp_certs/multi-tls-feature-good-ee.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/ocsp_certs/must-staple-ee-with-must-staple-int.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/ocsp_certs/must-staple-ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/ocsp_certs/must-staple-missing-ee.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/ocsp_certs/ocspEEWithIntermediate.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/ocsp_certs/ocspOtherEndEntity.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/ocsp_certs/rsa-1016-keysizeDelegatedSigner.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/ocsp_certs/test-ca.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/ocsp_certs/test-multi-tls-feature-int.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/ocsp_certs/test-must-staple-int.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/pycert.py | 2 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/pykey.py | 2 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_certDB_import/emailEE.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_certDB_import/importedCA.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_chains.js | 22 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-CA.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-SA-CA.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-SA-OCSP.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-SA-nsSGC.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-SA.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-int-CA.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA-CA.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA-OCSP.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA-nsSGC.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-nsSGC.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_eku/int-CA.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_eku/int-SA-CA.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_eku/int-SA-OCSP.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_eku/int-SA-nsSGC.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_eku/int-SA.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_embedded_null/ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNull.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNullCNAndSAN.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNullSAN.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNullSAN2.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ca-all-usages.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ca-missing-keyCertSign.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ca-no-keyUsage-extension.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-and-keyEncipherment-ca-all-usages.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-and-keyEncipherment-ca-missing-keyCertSign.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-and-keyEncipherment-ca-no-keyUsage-extension.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-only-ca-all-usages.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-only-ca-missing-keyCertSign.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-only-ca-no-keyUsage-extension.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyEncipherment-only-ca-all-usages.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyEncipherment-only-ca-missing-keyCertSign.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyEncipherment-only-ca-no-keyUsage-extension.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-no-keyUsage-extension-ca-all-usages.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-no-keyUsage-extension-ca-missing-keyCertSign.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-no-keyUsage-extension-ca-no-keyUsage-extension.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_signatures/ca-rsa.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_signatures/ca-secp384r1.pem | 12 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_signatures/ee-rsa-direct.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_signatures/ee-rsa.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_signatures/ee-secp384r1-direct.pem | 10 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_signatures/ee-secp384r1.pem | 10 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_signatures/int-rsa.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_signatures/int-secp384r1.pem | 12 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_trust/ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_trust/ee.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_trust/int.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_utf8/certificateToAlter.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v1-BC-cA_ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v1-BC-not-cA_ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v1-noBC_ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v2-BC-cA_ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v2-BC-not-cA_ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v2-noBC_ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v3-BC-cA_ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v3-BC-not-cA_ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v3-noBC_ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v4-BC-cA_ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v4-BC-not-cA_ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v4-noBC_ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v1-BC-cA.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v1-BC-not-cA.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v1-noBC.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v2-BC-cA.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v2-BC-not-cA.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v2-noBC.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v3-BC-cA.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v3-BC-not-cA.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v3-noBC.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v4-BC-cA.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v4-BC-not-cA.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v4-noBC.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v1-BC-cA_ca.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v1-BC-not-cA_ca.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v1-noBC_ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v2-BC-cA_ca.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v2-BC-not-cA_ca.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v2-noBC_ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v3-BC-cA_ca.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v3-BC-not-cA_ca.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v3-noBC_ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v4-BC-cA_ca.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v4-BC-not-cA_ca.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v4-noBC_ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v1-BC-cA.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v1-BC-not-cA.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v1-noBC.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v2-BC-cA.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v2-BC-not-cA.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v2-noBC.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v3-BC-cA.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v3-BC-not-cA.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v3-noBC.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v4-BC-cA.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v4-BC-not-cA.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v4-noBC.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_content_signing/content_signing_int.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_RSA_ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_ee.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_no_SAN_ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_wrong_key_ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_content_signing/content_signing_remote_newtab_ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_content_signing/content_signing_root.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ct/ct-insufficient-scts.example.com.pem | 34 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ct/ct-valid.example.com.pem | 46 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ct/default-ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ct/test-ca.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-ee-path-ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-ee-path-int.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-int-path-ee.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-int-path-int.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-cabforum-oid-int-path-ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-cabforum-oid-int-path-int.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-path-ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-path-int.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/cabforum-oid-path-ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/cabforum-oid-path-int.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-ee-path-ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-ee-path-int.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-int-path-ee.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-int-path-int.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/non-ev-root-path-ee.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/non-ev-root-path-int.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/non-evroot-ca.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/reverse-order-oids-path-ee.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/reverse-order-oids-path-int.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-cabforum-oid-int-path-ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-cabforum-oid-int-path-int.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-path-ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-path-int.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/test-oid-ee-cabforum-oid-int-path-ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/test-oid-ee-cabforum-oid-int-path-int.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/test-oid-path-ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ev_certs/test-oid-path-int.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-bad-ku-no-eku.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-bad-ku-server-eku.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-cA-FALSE-asserts-keyCertSign.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-limited-depth-invalid.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-limited-depth.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-extensions.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-ku-no-eku.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-ku-server-eku.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-not-a-ca.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-valid-ku-no-eku.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-valid-ku-server-eku.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-bad-ku-no-eku.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-bad-ku-server-eku.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-cA-FALSE-asserts-keyCertSign.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-limited-depth-invalid.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-limited-depth.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-extensions.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-ku-no-eku.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-ku-server-eku.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-not-a-ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-valid-ku-no-eku.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-valid-ku-server-eku.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_preloads/ee.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_preloads/ee2.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_preloads/int.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_intermediate_preloads/int2.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1016-int_rsa_1024-root_rsa_1024.pem | 12 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1016-root_rsa_1024.pem | 12 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1024-root_rsa_1016.pem | 12 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1024-root_rsa_1024.pem | 12 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/ee_secp224r1_224-int_secp256r1_256-root_rsa_2048.pem | 10 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/ee_secp224r1_224-int_secp256r1_256-root_secp256r1_256.pem | 8 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/ee_secp256k1_256-int_secp256r1_256-root_secp256r1_256.pem | 8 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_rsa_1016-root_secp256r1_256.pem | 10 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_secp224r1_224-root_secp256r1_256.pem | 8 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_secp256r1_256-root_secp224r1_224.pem | 8 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_secp256r1_256-root_secp256k1_256.pem | 8 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/ee_secp384r1_384-int_secp256r1_256-root_rsa_2048.pem | 10 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/ee_secp521r1_521-int_secp384r1_384-root_secp256r1_256.pem | 8 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/int_rsa_1016-root_rsa_1024.pem | 14 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/int_rsa_1016-root_secp256r1_256.pem | 10 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/int_rsa_1024-root_rsa_1016.pem | 14 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/int_rsa_1024-root_rsa_1024.pem | 14 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/int_secp224r1_224-root_secp256r1_256.pem | 10 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_rsa_2048.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_secp224r1_224.pem | 10 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_secp256k1_256.pem | 8 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_secp256r1_256.pem | 10 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/int_secp384r1_384-root_secp256r1_256.pem | 10 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/root_rsa_1016.pem | 12 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/root_rsa_1024.pem | 12 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/root_rsa_2048.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/root_secp224r1_224.pem | 8 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/root_secp256k1_256.pem | 12 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize/root_secp256r1_256.pem | 10 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2040-ev_int_rsa_2048-evroot.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2048-ev_int_rsa_2040-evroot.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2048-ev_int_rsa_2048-ev_root_rsa_2040.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2048-ev_int_rsa_2048-evroot.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize_ev/ev_int_rsa_2040-evroot.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize_ev/ev_int_rsa_2048-ev_root_rsa_2040.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_keysize_ev/ev_int_rsa_2048-evroot.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_missing_intermediate/missing-intermediate.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_name_constraints/NameConstraints.dcissallowed.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_name_constraints/NameConstraints.dcissblocked.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_name_constraints/ca-example-com-permitted.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_name_constraints/dciss.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_name_constraints/ee-example-com-and-org.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_name_constraints/ee-example-com.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_name_constraints/ee-example-org.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_name_constraints/ee-example-test.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_name_constraints/int-example-org-permitted.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ocsp_url/bad-scheme.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ocsp_url/ca.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ocsp_url/empty-scheme-url.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ocsp_url/ftp-url.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ocsp_url/hTTp-url.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ocsp_url/https-url.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ocsp_url/int.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ocsp_url/negative-port.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ocsp_url/no-host-url.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ocsp_url/no-path-url.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ocsp_url/no-scheme-host-port.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ocsp_url/no-scheme-url.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ocsp_url/unknown-scheme.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_ocsp_url/user-pass.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_onecrl/another-ee-revoked-by-revocations-txt-serial-2.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_onecrl/another-ee-revoked-by-revocations-txt.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_onecrl/ee-revoked-by-revocations-txt.pem | 16 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_onecrl/ee-revoked-by-subject-and-pubkey.pem | 22 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_onecrl/same-issuer-ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_onecrl/test-int-ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_pinning_dynamic/a.pinning2.example.com-badca.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_pinning_dynamic/a.pinning2.example.com-pinningroot.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_pinning_dynamic/a.preload.example.com-badca.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_pinning_dynamic/a.preload.example.com-pinningroot.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_pinning_dynamic/b.pinning2.example.com-badca.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_pinning_dynamic/b.pinning2.example.com-pinningroot.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_pinning_dynamic/b.preload.example.com-badca.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_pinning_dynamic/b.preload.example.com-pinningroot.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_pinning_dynamic/badca.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_pinning_dynamic/pinningroot.pem | 20 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_pinning_dynamic/x.a.pinning2.example.com-badca.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_pinning_dynamic/x.a.pinning2.example.com-pinningroot.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_pinning_dynamic/x.b.pinning2.example.com-badca.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_pinning_dynamic/x.b.pinning2.example.com-pinningroot.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_symantec_apple_google/default-ee.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_validity/ev_ee_27_months-ev_int_60_months-evroot.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_validity/ev_ee_28_months-ev_int_60_months-evroot.pem | 18 firefox-esr-68.5.0esr/security/manager/ssl/tests/unit/test_validity/ev_int_60_months-evroot.pem | 16 firefox-esr-68.5.0esr/services/settings/dumps/blocklists/addons.json | 2 firefox-esr-68.5.0esr/services/settings/dumps/blocklists/plugins.json | 2 firefox-esr-68.5.0esr/services/settings/dumps/security-state/intermediates.json | 2 firefox-esr-68.5.0esr/services/settings/dumps/security-state/onecrl.json | 2 firefox-esr-68.5.0esr/sourcestamp.txt | 3 firefox-esr-68.5.0esr/storage/TelemetryVFS.cpp | 39 firefox-esr-68.5.0esr/taskcluster/ci/build/android.yml | 10 firefox-esr-68.5.0esr/taskcluster/ci/maybe-release/kind.yml | 41 firefox-esr-68.5.0esr/taskcluster/docs/kinds.rst | 9 firefox-esr-68.5.0esr/taskcluster/taskgraph/target_tasks.py | 12 firefox-esr-68.5.0esr/taskcluster/taskgraph/transforms/maybe_release.py | 21 firefox-esr-68.5.0esr/taskcluster/taskgraph/transforms/release_mark_as_shipped.py | 3 firefox-esr-68.5.0esr/taskcluster/taskgraph/transforms/task.py | 24 firefox-esr-68.5.0esr/testing/marionette/driver.js | 3 firefox-esr-68.5.0esr/testing/web-platform/meta/IndexedDB/idb-explicit-commit.any.js.ini | 153 firefox-esr-68.5.0esr/toolkit/components/enterprisepolicies/EnterprisePolicies.js | 4 firefox-esr-68.5.0esr/toolkit/components/telemetry/Scalars.yaml | 17 firefox-esr-68.5.0esr/toolkit/components/telemetry/docs/data/core-ping.rst | 6 firefox-esr-68.5.0esr/toolkit/components/utils/JsonSchemaValidator.jsm | 15 firefox-esr-68.5.0esr/toolkit/components/utils/test/browser/browser_JsonSchemaValidator.js | 48 firefox-esr-68.5.0esr/toolkit/content/gmp-sources/widevinecdm.json | 37 firefox-esr-68.5.0esr/toolkit/modules/AppConstants.jsm | 7 firefox-esr-68.5.0esr/toolkit/mozapps/installer/packager.mk | 4 firefox-esr-68.5.0esr/toolkit/xre/AssembleCmdLine.h | 228 firefox-esr-68.5.0esr/toolkit/xre/moz.build | 1 firefox-esr-68.5.0esr/toolkit/xre/test/gtest/TestAssembleCommandLineWin.cpp | 96 firefox-esr-68.5.0esr/toolkit/xre/test/gtest/moz.build | 5 firefox-esr-68.5.0esr/uriloader/exthandler/win/nsMIMEInfoWin.cpp | 27 firefox-esr-68.5.0esr/uriloader/exthandler/win/nsMIMEInfoWin.h | 3 firefox-esr-68.5.0esr/widget/nsBaseDragService.cpp | 6 firefox-esr-68.5.0esr/widget/nsBaseDragService.h | 3 firefox-esr-68.5.0esr/xpcom/io/nsLocalFileUnix.cpp | 5 firefox-esr-68.5.0esr/xpcom/io/nsLocalFileWin.cpp | 46 firefox-esr-68.5.0esr/xpcom/threads/nsProcessCommon.cpp | 112 566 files changed, 9373 insertions(+), 6199 deletions(-) diff: /srv/release.debian.org/tmp/fXyaEM3epF/firefox-esr-68.4.1esr/obj-x86_64-pc-linux-gnu/_virtualenvs/init/local/bin: No such file or directory diff: /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/obj-x86_64-pc-linux-gnu/_virtualenvs/init/local/bin: No such file or directory diff: /srv/release.debian.org/tmp/fXyaEM3epF/firefox-esr-68.4.1esr/obj-x86_64-pc-linux-gnu/_virtualenvs/init/local/lib: No such file or directory diff: /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/obj-x86_64-pc-linux-gnu/_virtualenvs/init/local/lib: No such file or directory diff -Nru firefox-esr-68.4.1esr/.cron.yml firefox-esr-68.5.0esr/.cron.yml --- firefox-esr-68.4.1esr/.cron.yml 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/.cron.yml 2020-02-07 00:26:51.000000000 +0000 @@ -5,6 +5,19 @@ --- jobs: + - name: daily-releases + job: + type: decision-task + treeherder-symbol: RPd + target-tasks-method: daily_releases + run-on-projects: + - mozilla-esr68 + when: + by-project: + # No default branch + mozilla-esr68: + - {weekday: 'Monday', hour: 4, minute: 0} + - name: nightly-desktop job: type: decision-task @@ -69,22 +82,6 @@ - mozilla-central when: [] # never (hook only) - - name: nightly-android - job: - type: decision-task - treeherder-symbol: Na - target-tasks-method: nightly_fennec - include-push-tasks: true - android-release-type: nightly - run-on-projects: - - mozilla-esr68 - when: - by-project: - # Fennec Nightly builds ship from ESR68 - # Other branches ship only GeckoView - mozilla-esr68: [{hour: 10, minute: 0}] - # No default - - name: ship-geckoview job: type: decision-task diff -Nru firefox-esr-68.4.1esr/accessible/tests/mochitest/events/docload/test_docload_root.html firefox-esr-68.5.0esr/accessible/tests/mochitest/events/docload/test_docload_root.html --- firefox-esr-68.4.1esr/accessible/tests/mochitest/events/docload/test_docload_root.html 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/accessible/tests/mochitest/events/docload/test_docload_root.html 2020-02-07 00:26:51.000000000 +0000 @@ -36,7 +36,12 @@ } } - this.eventSeq = [ new invokerChecker(EVENT_REORDER, gRootAcc) ]; + this.eventSeq = [ + new invokerChecker(EVENT_REORDER, gRootAcc), + // We use a function here to get the target because gDialog isn't set + // yet, but it will be when the function is called. + new invokerChecker(EVENT_FOCUS, () => gDialog.document) + ]; this.invoke = () => (gDialog = window.openDialog(aURL)); diff -Nru firefox-esr-68.4.1esr/browser/app/blocklist.xml firefox-esr-68.5.0esr/browser/app/blocklist.xml --- firefox-esr-68.4.1esr/browser/app/blocklist.xml 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/app/blocklist.xml 2020-02-07 00:26:51.000000000 +0000 @@ -1,5 +1,5 @@ - + @@ -3440,6 +3440,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3475,12 +3651,12 @@ https://get.adobe.com/flashplayer/ - + https://get.adobe.com/flashplayer/ - + diff -Nru firefox-esr-68.4.1esr/browser/base/content/browser-addons.js firefox-esr-68.5.0esr/browser/base/content/browser-addons.js --- firefox-esr-68.4.1esr/browser/base/content/browser-addons.js 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/base/content/browser-addons.js 2020-02-07 00:26:51.000000000 +0000 @@ -524,6 +524,16 @@ [brandShortName] ); + if (Services.policies) { + let extensionSettings = Services.policies.getExtensionSettings("*"); + if ( + extensionSettings && + "blocked_install_message" in extensionSettings + ) { + messageString += " " + extensionSettings.blocked_install_message; + } + } + options.removeOnDismissal = true; options.persistent = false; diff -Nru firefox-esr-68.4.1esr/browser/base/content/browser.js firefox-esr-68.5.0esr/browser/base/content/browser.js --- firefox-esr-68.4.1esr/browser/base/content/browser.js 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/base/content/browser.js 2020-02-07 00:26:51.000000000 +0000 @@ -2103,6 +2103,10 @@ Services.obs.notifyObservers(window, "browser-delayed-startup-finished"); TelemetryTimestamps.add("delayedStartupFinished"); + + if (!Services.policies.isAllowed("hideShowMenuBar")) { + document.getElementById("toolbar-menubar").removeAttribute("toolbarname"); + } }, _setInitialFocus() { diff -Nru firefox-esr-68.4.1esr/browser/base/content/popup-notifications.inc firefox-esr-68.5.0esr/browser/base/content/popup-notifications.inc --- firefox-esr-68.4.1esr/browser/base/content/popup-notifications.inc 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/base/content/popup-notifications.inc 2020-02-07 00:26:51.000000000 +0000 @@ -117,18 +117,3 @@ - - diff -Nru firefox-esr-68.4.1esr/browser/components/enterprisepolicies/Policies.jsm firefox-esr-68.5.0esr/browser/components/enterprisepolicies/Policies.jsm --- firefox-esr-68.4.1esr/browser/components/enterprisepolicies/Policies.jsm 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/components/enterprisepolicies/Policies.jsm 2020-02-07 00:26:51.000000000 +0000 @@ -262,30 +262,23 @@ log.error(`Unable to add certificate - ${certfile.path}`); } } - let now = Date.now() / 1000; if (cert) { - gCertDB.asyncVerifyCertAtTime( - cert, - 0x0008 /* certificateUsageSSLCA */, - 0, - null, - now, - (aPRErrorCode, aVerifiedChain, aHasEVPolicy) => { - if (aPRErrorCode == Cr.NS_OK) { - // Certificate is already installed. - return; - } - try { - gCertDB.addCert(certFile, "CT,CT,"); - } catch (e) { - // It might be PEM instead of DER. - gCertDB.addCertFromBase64( - pemToBase64(certFile), - "CT,CT," - ); - } - } - ); + if ( + gCertDB.isCertTrusted( + cert, + Ci.nsIX509Cert.CA_CERT, + Ci.nsIX509CertDB.TRUSTED_SSL + ) + ) { + // Certificate is already installed. + return; + } + try { + gCertDB.addCert(certFile, "CT,CT,"); + } catch (e) { + // It might be PEM instead of DER. + gCertDB.addCertFromBase64(pemToBase64(certFile), "CT,CT,"); + } } }; reader.readAsBinaryString(file); @@ -583,18 +576,53 @@ DisplayMenuBar: { onBeforeUIStartup(manager, param) { - let value = (!param).toString(); - // This policy is meant to change the default behavior, not to force it. - // If this policy was alreay applied and the user chose to re-hide the - // menu bar, do not show it again. - runOncePerModification("displayMenuBar", value, () => { + let value; + if ( + typeof param === "boolean" || + param == "default-on" || + param == "default-off" + ) { + switch (param) { + case "default-on": + value = "false"; + break; + case "default-off": + value = "true"; + break; + default: + value = (!param).toString(); + break; + } + // This policy is meant to change the default behavior, not to force it. + // If this policy was already applied and the user chose to re-hide the + // menu bar, do not show it again. + runOncePerModification("displayMenuBar", value, () => { + gXulStore.setValue( + BROWSER_DOCUMENT_URL, + "toolbar-menubar", + "autohide", + value + ); + }); + } else { + switch (param) { + case "always": + value = "false"; + break; + case "never": + // Make sure Alt key doesn't show the menubar + setAndLockPref("ui.key.menuAccessKeyFocuses", false); + value = "true"; + break; + } gXulStore.setValue( BROWSER_DOCUMENT_URL, "toolbar-menubar", "autohide", value ); - }); + manager.disallowFeature("hideShowMenuBar"); + } }, }, @@ -658,6 +686,9 @@ param.Locked ); } + if ("Exceptions" in param) { + addAllowDenyPermissions("trackingprotection", param.Exceptions); + } }, }, diff -Nru firefox-esr-68.4.1esr/browser/components/enterprisepolicies/schemas/policies-schema.json firefox-esr-68.5.0esr/browser/components/enterprisepolicies/schemas/policies-schema.json --- firefox-esr-68.4.1esr/browser/components/enterprisepolicies/schemas/policies-schema.json 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/components/enterprisepolicies/schemas/policies-schema.json 2020-02-07 00:26:51.000000000 +0000 @@ -277,7 +277,8 @@ }, "DisplayMenuBar": { - "type": "boolean" + "type": ["boolean", "string"], + "enum": ["always", "never", "default-on", "default-off"] }, "DNSOverHTTPS": { @@ -329,6 +330,13 @@ }, "Fingerprinting": { "type": "boolean" + }, + "Exceptions": { + "type": "array", + "strict": false, + "items": { + "type": "origin" + } } } }, @@ -837,6 +845,12 @@ }, "widget.content.gtk-theme-override": { "type": "string" + }, + "dom.xmldocument.load.enabled": { + "type": "boolean" + }, + "dom.xmldocument.async.enabled": { + "type": "boolean" } } }, diff -Nru firefox-esr-68.4.1esr/browser/components/enterprisepolicies/tests/browser/browser_policy_display_menu.js firefox-esr-68.5.0esr/browser/components/enterprisepolicies/tests/browser/browser_policy_display_menu.js --- firefox-esr-68.4.1esr/browser/components/enterprisepolicies/tests/browser/browser_policy_display_menu.js 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/components/enterprisepolicies/tests/browser/browser_policy_display_menu.js 2020-02-07 00:26:51.000000000 +0000 @@ -3,24 +3,82 @@ "use strict"; -add_task(async function setup() { +add_task(async function test_menu_shown_boolean() { await setupPolicyEngineWithJson({ policies: { DisplayMenuBar: true, }, }); + + // Since testing will apply the policy after the browser has already started, + // we will need to open a new window to actually see the menu bar + let newWin = await BrowserTestUtils.openNewBrowserWindow(); + let menubar = newWin.document.getElementById("toolbar-menubar"); + is( + menubar.getAttribute("autohide"), + "false", + "The menu bar should not be hidden" + ); + + await BrowserTestUtils.closeWindow(newWin); }); -add_task(async function test_menu_shown() { +add_task(async function test_menu_shown_string() { + await setupPolicyEngineWithJson({ + policies: { + DisplayMenuBar: "default-on", + }, + }); + // Since testing will apply the policy after the browser has already started, // we will need to open a new window to actually see the menu bar let newWin = await BrowserTestUtils.openNewBrowserWindow(); - let menuBar = newWin.document.getElementById("toolbar-menubar"); + let menubar = newWin.document.getElementById("toolbar-menubar"); is( - menuBar.getAttribute("autohide"), + menubar.getAttribute("autohide"), "false", "The menu bar should not be hidden" ); await BrowserTestUtils.closeWindow(newWin); }); + +add_task(async function test_menubar_on() { + await setupPolicyEngineWithJson({ + policies: { + DisplayMenuBar: "always", + }, + }); + + let newWin = await BrowserTestUtils.openNewBrowserWindow(); + let menubar = newWin.document.getElementById("toolbar-menubar"); + is( + menubar.hasAttribute("inactive"), + false, + "Menu bar should not have inactive" + ); + is( + menubar.hasAttribute("toolbarname"), + false, + "Menu bar should not have a toolbarname" + ); + await BrowserTestUtils.closeWindow(newWin); +}); + +add_task(async function test_menubar_off() { + await setupPolicyEngineWithJson({ + policies: { + DisplayMenuBar: "never", + }, + }); + + let newWin = await BrowserTestUtils.openNewBrowserWindow(); + let menubar = newWin.document.getElementById("toolbar-menubar"); + is(menubar.hasAttribute("inactive"), true, "Menu bar should have inactive"); + is( + menubar.hasAttribute("toolbarname"), + false, + "Menu bar should not have a toolbarname" + ); + await BrowserTestUtils.closeWindow(newWin); +}); diff -Nru firefox-esr-68.4.1esr/browser/components/enterprisepolicies/tests/browser/browser_policy_extensionsettings.js firefox-esr-68.5.0esr/browser/components/enterprisepolicies/tests/browser/browser_policy_extensionsettings.js --- firefox-esr-68.4.1esr/browser/components/enterprisepolicies/tests/browser/browser_policy_extensionsettings.js 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/components/enterprisepolicies/tests/browser/browser_policy_extensionsettings.js 2020-02-07 00:26:51.000000000 +0000 @@ -65,6 +65,7 @@ ExtensionSettings: { "*": { install_sources: ["http://blocks.other.install.sources/*"], + blocked_install_message: "blocked_install_message", }, }, }, @@ -81,7 +82,12 @@ await ContentTask.spawn(tab.linkedBrowser, {}, () => { content.document.getElementById("policytest_installtrigger").click(); }); - await popupPromise; + let popup = await popupPromise; + let description = popup.querySelector(".popup-notification-description"); + ok( + description.textContent.endsWith("blocked_install_message"), + "Custom install message present" + ); BrowserTestUtils.removeTab(tab); }); diff -Nru firefox-esr-68.4.1esr/browser/components/enterprisepolicies/tests/xpcshell/test_permissions.js firefox-esr-68.5.0esr/browser/components/enterprisepolicies/tests/xpcshell/test_permissions.js --- firefox-esr-68.4.1esr/browser/components/enterprisepolicies/tests/xpcshell/test_permissions.js 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/components/enterprisepolicies/tests/xpcshell/test_permissions.js 2020-02-07 00:26:51.000000000 +0000 @@ -210,3 +210,22 @@ Ci.nsIPermissionManager.EXPIRE_SESSION ); }); + +add_task(async function test_setup_trackingprotection() { + await setupPolicyEngineWithJson({ + policies: { + EnableTrackingProtection: { + Exceptions: ["https://www.allow.com"], + }, + }, + }); + equal( + Services.policies.status, + Ci.nsIEnterprisePolicies.ACTIVE, + "Engine is active" + ); +}); + +add_task(async function test_trackingprotection() { + checkPermission("allow.com", "ALLOW", "trackingprotection"); +}); diff -Nru firefox-esr-68.4.1esr/browser/components/extensions/test/browser/browser_ext_pageAction_context.js firefox-esr-68.5.0esr/browser/components/extensions/test/browser/browser_ext_pageAction_context.js --- firefox-esr-68.4.1esr/browser/components/extensions/test/browser/browser_ext_pageAction_context.js 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/components/extensions/test/browser/browser_ext_pageAction_context.js 2020-02-07 00:26:56.000000000 +0000 @@ -225,6 +225,11 @@ }); add_task(async function testMultipleWindows() { + // Disable newtab preloading, so that the tabs.create call below will always + // trigger a new load that can be detected by webNavigation.onCompleted. + await SpecialPowers.pushPrefEnv({ + set: [["browser.newtab.preload", false]], + }); await runTests({ manifest: { page_action: { @@ -232,6 +237,7 @@ default_popup: "default.html", default_title: "Default Title", }, + permissions: ["webNavigation"], }, files: { @@ -253,10 +259,28 @@ }, ]; + function promiseWebNavigationCompleted(url) { + return new Promise(resolve => { + // The pageAction visibility state is reset when the location changes. + // The webNavigation.onCompleted event is triggered when that happens. + browser.webNavigation.onCompleted.addListener( + function listener() { + browser.webNavigation.onCompleted.removeListener(listener); + resolve(); + }, + { + url: [{ urlEquals: url }], + } + ); + }); + } + return [ async expect => { browser.test.log("Create a new tab, expect hidden pageAction."); + let promise = promiseWebNavigationCompleted("about:newtab"); let tab = await browser.tabs.create({ active: true }); + await promise; tabs.push(tab.id); expect(null); }, @@ -313,6 +337,7 @@ ]; }, }); + await SpecialPowers.popPrefEnv(); }); add_task(async function testNavigationClearsData() { diff -Nru firefox-esr-68.4.1esr/browser/components/newtab/test/browser/browser_asrouter_targeting.js firefox-esr-68.5.0esr/browser/components/newtab/test/browser/browser_asrouter_targeting.js --- firefox-esr-68.4.1esr/browser/components/newtab/test/browser/browser_asrouter_targeting.js 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/components/newtab/test/browser/browser_asrouter_targeting.js 2020-02-07 00:26:51.000000000 +0000 @@ -362,6 +362,12 @@ }); add_task(async function check_pinned_sites() { + // Fresh profiles come with an empty set of pinned websites (pref doesn't + // exist). Search shortcut topsites make this test more complicated because + // the feature pins a new website on startup. Behaviour can vary when running + // with --verify so it's more predictable to clear pins entirely. + Services.prefs.clearUserPref("browser.newtabpage.pinned"); + NewTabUtils.pinnedLinks.resetCache(); const originalPin = JSON.stringify(NewTabUtils.pinnedLinks.links); const sitesToPin = [ {url: "https://foo.com"}, @@ -393,6 +399,8 @@ sitesToPin.forEach(site => NewTabUtils.pinnedLinks.unpin(site)); await clearHistoryAndBookmarks(); + Services.prefs.clearUserPref("browser.newtabpage.pinned"); + NewTabUtils.pinnedLinks.resetCache(); is(JSON.stringify(NewTabUtils.pinnedLinks.links), originalPin, "should restore pinned sites to its original state"); }); diff -Nru firefox-esr-68.4.1esr/browser/config/mozconfigs/linux64/source firefox-esr-68.5.0esr/browser/config/mozconfigs/linux64/source --- firefox-esr-68.4.1esr/browser/config/mozconfigs/linux64/source 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/config/mozconfigs/linux64/source 2020-02-07 00:26:56.000000000 +0000 @@ -3,3 +3,4 @@ # extra dependencies on specific toolchains, e.g. gtk3. ac_add_options --disable-compile-environment ac_add_options --disable-nodejs +export MOZILLA_OFFICIAL=1 diff -Nru firefox-esr-68.4.1esr/browser/config/version.txt firefox-esr-68.5.0esr/browser/config/version.txt --- firefox-esr-68.4.1esr/browser/config/version.txt 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/config/version.txt 2020-02-07 00:26:57.000000000 +0000 @@ -1 +1 @@ -68.4.1 +68.5.0 diff -Nru firefox-esr-68.4.1esr/browser/config/version_display.txt firefox-esr-68.5.0esr/browser/config/version_display.txt --- firefox-esr-68.4.1esr/browser/config/version_display.txt 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/config/version_display.txt 2020-02-07 00:26:57.000000000 +0000 @@ -1 +1 @@ -68.4.1esr +68.5.0esr diff -Nru firefox-esr-68.4.1esr/browser/extensions/pdfjs/content/PdfjsChromeUtils.jsm firefox-esr-68.5.0esr/browser/extensions/pdfjs/content/PdfjsChromeUtils.jsm --- firefox-esr-68.4.1esr/browser/extensions/pdfjs/content/PdfjsChromeUtils.jsm 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/pdfjs/content/PdfjsChromeUtils.jsm 2020-02-07 00:26:51.000000000 +0000 @@ -390,7 +390,7 @@ data.message, "pdfjs-fallback", null, - notificationBox.PRIORITY_INFO_LOW, + notificationBox.PRIORITY_WARNING_LOW, buttons, function eventsCallback(eventType) { // Currently there is only one event "removed" but if there are any other diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/about-compat/aboutCompat.css firefox-esr-68.5.0esr/browser/extensions/webcompat/about-compat/aboutCompat.css --- firefox-esr-68.4.1esr/browser/extensions/webcompat/about-compat/aboutCompat.css 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/about-compat/aboutCompat.css 2020-02-07 00:26:56.000000000 +0000 @@ -1,3 +1,7 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + @media (any-pointer: fine) { :root { font-family: sans-serif; @@ -11,10 +15,6 @@ padding-bottom: 2em; } - .float-right { - float: right; - } - .hidden { display: none; } diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/data/injections.js firefox-esr-68.5.0esr/browser/extensions/webcompat/data/injections.js --- firefox-esr-68.4.1esr/browser/extensions/webcompat/data/injections.js 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/data/injections.js 2020-02-07 00:26:51.000000000 +0000 @@ -4,7 +4,12 @@ "use strict"; -/* globals module */ +/* globals module, require */ + +// This is a hack for the tests. +if (typeof getMatchPatternsForGoogleURL === "undefined") { + var getMatchPatternsForGoogleURL = require("../lib/google"); +} /** * For detailed information on our policies, and a documention on this format @@ -77,38 +82,6 @@ }, }, { - id: "bug1472081", - platform: "desktop", - domain: "election.gov.np", - bug: "1472081", - contentScripts: { - matches: ["http://202.166.205.141/bbvrs/*"], - allFrames: true, - js: [ - { - file: - "injections/js/bug1472081-election.gov.np-window.sidebar-shim.js", - }, - ], - }, - }, - { - id: "bug1482066", - platform: "desktop", - domain: "portalminasnet.com", - bug: "1482066", - contentScripts: { - matches: ["*://portalminasnet.com/*"], - allFrames: true, - js: [ - { - file: - "injections/js/bug1482066-portalminasnet.com-window.sidebar-shim.js", - }, - ], - }, - }, - { id: "bug1570856", platform: "android", domain: "medium.com", @@ -141,17 +114,21 @@ { id: "bug1577245", platform: "android", - domain: "help.pandora.com", + domain: "Salesforce communities", bug: "1577245", contentScripts: { matches: [ "https://faq.usps.com/*", "https://help.duo.com/*", - "https://help.hulu.com/*", - "https://help.pandora.com/*", "https://my211.force.com/*", "https://support.paypay.ne.jp/*", "https://usps.force.com/*", + "https://help.twitch.tv/*", + "https://support.sonos.com/*", + "https://us.community.sony.com/*", + "https://help.shopee.ph/*", + "https://exclusions.ustr.gov/*", + "https://help.doordash.com/*", ], js: [ { @@ -219,21 +196,6 @@ customFunc: "noSniffFix", }, { - id: "bug1305028", - platform: "desktop", - domain: "gaming.youtube.com", - bug: "1305028", - contentScripts: { - matches: ["*://gaming.youtube.com/*"], - css: [ - { - file: - "injections/css/bug1305028-gaming.youtube.com-webkit-scrollbar.css", - }, - ], - }, - }, - { id: "bug1432935-discord", platform: "desktop", domain: "discordapp.com", @@ -249,20 +211,6 @@ }, }, { - id: "bug1432935-breitbart", - platform: "desktop", - domain: "breitbart.com", - bug: "1432935", - contentScripts: { - matches: ["*://*.breitbart.com/*"], - css: [ - { - file: "injections/css/bug1432935-breitbart.com-webkit-scrollbar.css", - }, - ], - }, - }, - { id: "bug1561371", platform: "android", domain: "mail.google.com", @@ -434,6 +382,67 @@ }, ], }, + }, + { + id: "bug1605611", + platform: "android", + domain: "maps.google.com", + bug: "1605611", + contentScripts: { + matches: getMatchPatternsForGoogleURL("www.google", "maps*"), + css: [ + { + file: "injections/css/bug1605611-maps.google.com-directions-time.css", + }, + ], + js: [ + { + file: "injections/js/bug1605611-maps.google.com-directions-time.js", + }, + ], + }, + }, + { + id: "bug1609991", + platform: "android", + domain: "www.cracked.com", + bug: "1609991", + contentScripts: { + matches: ["https://www.cracked.com/*"], + css: [ + { + file: "injections/css/bug1609991-cracked.com-flex-basis-fix.css", + }, + ], + }, + }, + { + id: "bug1610016", + platform: "android", + domain: "gaana.com", + bug: "1610016", + contentScripts: { + matches: ["https://gaana.com/*"], + css: [ + { + file: "injections/css/bug1610016-gaana.com-input-position-fix.css", + }, + ], + }, + }, + { + id: "bug1610358", + platform: "android", + domain: "pcloud.com", + bug: "1610358", + contentScripts: { + matches: ["https://www.pcloud.com/*"], + js: [ + { + file: "injections/js/bug1610358-pcloud.com-appVersion-change.js", + }, + ], + }, }, ]; diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/data/picture_in_picture_overrides.js firefox-esr-68.5.0esr/browser/extensions/webcompat/data/picture_in_picture_overrides.js --- firefox-esr-68.4.1esr/browser/extensions/webcompat/data/picture_in_picture_overrides.js 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/data/picture_in_picture_overrides.js 2020-02-07 00:26:51.000000000 +0000 @@ -0,0 +1,36 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +/* globals browser */ + +let AVAILABLE_PIP_OVERRIDES; + +{ + // See PictureInPictureTogglePolicy.jsm for these values. + // eslint-disable-next-line no-unused-vars + const TOGGLE_POLICIES = browser.pictureInPictureChild.getPolicies(); + + AVAILABLE_PIP_OVERRIDES = { + // The keys of this object are match patterns for URLs, as documented in + // https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Match_patterns + // + // Example: + // + // "https://*.youtube.com/*": TOGGLE_POLICIES.THREE_QUARTERS, + // "https://*.twitch.tv/mikeconley_dot_ca/*": TOGGLE_POLICIES.TOP, + + // Instagram + "https://www.instagram.com/*": TOGGLE_POLICIES.ONE_QUARTER, + + // Twitch + "https://*.twitch.tv/*": TOGGLE_POLICIES.ONE_QUARTER, + "https://*.twitch.tech/*": TOGGLE_POLICIES.ONE_QUARTER, + "https://*.twitch.a2z.com/*": TOGGLE_POLICIES.ONE_QUARTER, + + // Udemy + "https://www.udemy.com/*": TOGGLE_POLICIES.ONE_QUARTER, + }; +} diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/data/ua_overrides.js firefox-esr-68.5.0esr/browser/extensions/webcompat/data/ua_overrides.js --- firefox-esr-68.4.1esr/browser/extensions/webcompat/data/ua_overrides.js 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/data/ua_overrides.js 2020-02-07 00:26:51.000000000 +0000 @@ -4,7 +4,12 @@ "use strict"; -/* globals getMatchPatternsForGoogleURL, module */ +/* globals browser, module, require */ + +// This is a hack for the tests. +if (typeof getMatchPatternsForGoogleURL === "undefined") { + var getMatchPatternsForGoogleURL = require("../lib/google"); +} /** * For detailed information on our policies, and a documention on this format @@ -169,6 +174,50 @@ }, { /* + * Bug 1610010 - criticalcareontario.ca - UA override for criticalcareontario.ca + * WebCompat issue #40267 - https://webcompat.com/issues/40267 + * + * criticalcareontario.ca enters a reload loop based on UA detection + * Spoofing as Chrome prevents the site from doing a constant page refresh + */ + id: "bug1610010", + platform: "desktop", + domain: "criticalcareontario.ca", + bug: "1610010", + config: { + matches: ["https://www.criticalcareontario.ca/*"], + uaTransformer: originalUA => { + return ( + UAHelpers.getPrefix(originalUA) + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36" + ); + }, + }, + }, + { + /* + * Bug 1610026 - www.mobilesuica.com - UA override for www.mobilesuica.com + * WebCompat issue #4608 - https://webcompat.com/issues/4608 + * + * mobilesuica.com showing unsupported message for Firefox users + * Spoofing as Chrome allows to access the page + */ + id: "bug1610026", + platform: "all", + domain: "www.mobilesuica.com", + bug: "1610026", + config: { + matches: ["https://www.mobilesuica.com/*"], + uaTransformer: originalUA => { + return ( + UAHelpers.getPrefix(originalUA) + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36" + ); + }, + }, + }, + { + /* * Bug 1480710 - m.imgur.com - Build UA override * WebCompat issue #13154 - https://webcompat.com/issues/13154 * @@ -351,29 +400,6 @@ }, { /* - * Bug 1509852 - redbull.com - Add UA override for redbull.com - * WebCompat issue #21439 - https://webcompat.com/issues/21439 - * - * Redbull.com blocks some features, for example the live video player, for - * Fennec. Spoofing as Chrome results in us rendering the video just fine, - * and everything else works as well. - */ - id: "bug1509852", - platform: "android", - domain: "redbull.com", - bug: "1509852", - config: { - matches: ["*://*.redbull.com/*"], - uaTransformer: originalUA => { - return ( - UAHelpers.getPrefix(originalUA) + - " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.91 Mobile Safari/537.36" - ); - }, - }, - }, - { - /* * Bug 1509873 - zmags.com - Add UA override for secure.viewer.zmags.com * WebCompat issue #21576 - https://webcompat.com/issues/21576 * @@ -544,20 +570,100 @@ }, }, }, + { + /* + * Bug 1598198 - User Agent extension for Samsung's galaxy.store URLs + * + * Samsung's galaxy.store shortlinks are supposed to redirect to a Samsung + * intent:// URL on Samsung devices, but to an error page on other brands. + * As we do not provide device info in our user agent string, this check + * fails, and even Samsung users land on an error page if they use Firefox + * for Android. + * This intervention adds a simple "Samsung" identifier to the User Agent + * on only the Galaxy Store URLs if the device happens to be a Samsung. + */ + id: "bug1598198", + platform: "android", + domain: "galaxy.store", + bug: "1598198", + config: { + matches: [ + "*://galaxy.store/*", + "*://dev.galaxy.store/*", + "*://stg.galaxy.store/*", + ], + uaTransformer: originalUA => { + if (!browser.systemManufacturer) { + return originalUA; + } + + const manufacturer = browser.systemManufacturer.getManufacturer(); + if (manufacturer && manufacturer.toLowerCase() === "samsung") { + return originalUA.replace("Mobile;", "Mobile; Samsung;"); + } + + return originalUA; + }, + }, + }, + { + /* + * Bug 1610370 - UA override for answers.yahoo.com on Firefox for Android + * WebCompat issue #5460 - https://webcompat.com/issues/5460 + * + * answers.yahoo.com is not showing lazy loaded content based on UA detection + * When spoofing as Chrome it's possible to load the content + */ + id: "bug1610370", + platform: "android", + domain: "answers.yahoo.com", + bug: "1610370", + config: { + matches: ["https://answers.yahoo.com/*"], + uaTransformer: originalUA => { + return ( + UAHelpers.getPrefix(originalUA) + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Mobile Safari/537.36" + ); + }, + }, + }, + { + /* + * Bug 1595215 - UA overrides for Uniqlo sites + * Webcompat issue #38825 - https://webcompat.com/issues/38825 + * + * To receive the proper mobile version instead of the desktop version or + * avoid redirect loop, the UA is spoofed. + */ + id: "bug1595215", + platform: "android", + domain: "uniqlo.com", + bug: "1595215", + config: { + matches: ["*://*.uniqlo.com/*"], + uaTransformer: originalUA => { + return originalUA + " Mobile Safari"; + }, + }, + }, ]; const UAHelpers = { getDeviceAppropriateChromeUA() { if (!UAHelpers._deviceAppropriateChromeUA) { - const RunningFirefoxVersion = (navigator.userAgent.match( - /Firefox\/([0-9.]+)/ - ) || ["", "58.0"])[1]; + const userAgent = + typeof navigator !== "undefined" ? navigator.userAgent : ""; + const RunningFirefoxVersion = (userAgent.match(/Firefox\/([0-9.]+)/) || [ + "", + "58.0", + ])[1]; const RunningAndroidVersion = - navigator.userAgent.match(/Android\/[0-9.]+/) || "Android 6.0"; + userAgent.match(/Android\/[0-9.]+/) || "Android 6.0"; const ChromeVersionToMimic = "76.0.3809.111"; const ChromePhoneUA = `Mozilla/5.0 (Linux; ${RunningAndroidVersion}; Nexus 5 Build/MRA58N) FxQuantum/${RunningFirefoxVersion} AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${ChromeVersionToMimic} Mobile Safari/537.36`; const ChromeTabletUA = `Mozilla/5.0 (Linux; ${RunningAndroidVersion}; Nexus 7 Build/JSS15Q) FxQuantum/${RunningFirefoxVersion} AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${ChromeVersionToMimic} Safari/537.36`; - const IsPhone = navigator.userAgent.includes("Mobile"); + const IsPhone = userAgent.includes("Mobile"); UAHelpers._deviceAppropriateChromeUA = IsPhone ? ChromePhoneUA : ChromeTabletUA; diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/experiment-apis/pictureInPicture.js firefox-esr-68.5.0esr/browser/extensions/webcompat/experiment-apis/pictureInPicture.js --- firefox-esr-68.4.1esr/browser/extensions/webcompat/experiment-apis/pictureInPicture.js 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/experiment-apis/pictureInPicture.js 2020-02-07 00:26:56.000000000 +0000 @@ -0,0 +1,75 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +/* global ChromeUtils, ExtensionAPI, Services */ +ChromeUtils.defineModuleGetter( + this, + "Services", + "resource://gre/modules/Services.jsm" +); + +ChromeUtils.defineModuleGetter( + this, + "TOGGLE_POLICIES", + "resource://gre/modules/PictureInPictureTogglePolicy.jsm" +); + +ChromeUtils.defineModuleGetter( + this, + "AppConstants", + "resource://gre/modules/AppConstants.jsm" +); + +const TOGGLE_ENABLED_PREF = + "media.videocontrols.picture-in-picture.video-toggle.enabled"; + +/** + * This API is expected to be running in the parent process. + */ +this.pictureInPictureParent = class extends ExtensionAPI { + getAPI(context) { + return { + pictureInPictureParent: { + setOverrides(overrides) { + // The Picture-in-Picture toggle is only implemented for Desktop, so make + // this a no-op for non-Desktop builds. + if (AppConstants.platform == "android") { + return; + } + + Services.ppmm.sharedData.set( + "PictureInPicture:ToggleOverrides", + overrides + ); + }, + }, + }; + } +}; + +/** + * This API is expected to be running in a content process - specifically, + * the WebExtension content process that the background scripts run in. We + * split these out so that they can return values synchronously to the + * background scripts. + */ +this.pictureInPictureChild = class extends ExtensionAPI { + getAPI(context) { + return { + pictureInPictureChild: { + getPolicies() { + // The Picture-in-Picture toggle is only implemented for Desktop, so make + // this return nothing for non-Desktop builds. + if (AppConstants.platform == "android") { + return {}; + } + + return Cu.cloneInto(TOGGLE_POLICIES, context.cloneScope); + }, + }, + }; + } +}; diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/experiment-apis/pictureInPicture.json firefox-esr-68.5.0esr/browser/extensions/webcompat/experiment-apis/pictureInPicture.json --- firefox-esr-68.4.1esr/browser/extensions/webcompat/experiment-apis/pictureInPicture.json 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/experiment-apis/pictureInPicture.json 2020-02-07 00:26:56.000000000 +0000 @@ -0,0 +1,39 @@ +[ + { + "namespace": "pictureInPictureParent", + "description": "Parent process methods for controlling the Picture-in-Picture feature.", + "functions": [ + { + "name": "setOverrides", + "type": "function", + "description": "Set Picture-in-Picture toggle position overrides", + "parameters": [ + { + "name": "overrides", + "type": "object", + "additionalProperties": { "type": "any" }, + "description": "The Picture-in-Picture toggle position overrides to set" + } + ] + } + ] + }, + { + "namespace": "pictureInPictureChild", + "description": "WebExtension process methods for querying the Picture-in-Picture feature.", + "functions": [ + { + "name": "getPolicies", + "type": "function", + "description": "Get the Picture-in-Picture toggle position override constants", + "parameters": [], + "returns": { + "type": "object", + "properties": {}, + "additionalProperties": { "type": "any" }, + "description": "The Picture-in-Picture toggle position override constants" + } + } + ] + } +] diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/experiment-apis/systemManufacturer.js firefox-esr-68.5.0esr/browser/extensions/webcompat/experiment-apis/systemManufacturer.js --- firefox-esr-68.4.1esr/browser/extensions/webcompat/experiment-apis/systemManufacturer.js 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/experiment-apis/systemManufacturer.js 2020-02-07 00:26:57.000000000 +0000 @@ -0,0 +1,27 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +/* global ExtensionAPI, Services, XPCOMUtils */ + +XPCOMUtils.defineLazyModuleGetters(this, { + Services: "resource://gre/modules/Services.jsm", +}); + +this.systemManufacturer = class extends ExtensionAPI { + getAPI(context) { + return { + systemManufacturer: { + getManufacturer() { + try { + return Services.sysinfo.getProperty("manufacturer"); + } catch (_) { + return undefined; + } + }, + }, + }; + } +}; diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/experiment-apis/systemManufacturer.json firefox-esr-68.5.0esr/browser/extensions/webcompat/experiment-apis/systemManufacturer.json --- firefox-esr-68.4.1esr/browser/extensions/webcompat/experiment-apis/systemManufacturer.json 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/experiment-apis/systemManufacturer.json 2020-02-07 00:26:57.000000000 +0000 @@ -0,0 +1,20 @@ +[ + { + "namespace": "systemManufacturer", + "description": "experimental API extension to allow reading the device's manufacturer", + "functions": [ + { + "name": "getManufacturer", + "type": "function", + "description": "Get the device's manufacturer", + "parameters": [], + "returns": { + "type": "string", + "properties": {}, + "additionalProperties": { "type": "any" }, + "description": "The manufacturer's name." + } + } + ] + } +] diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/injections/css/bug1305028-gaming.youtube.com-webkit-scrollbar.css firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/css/bug1305028-gaming.youtube.com-webkit-scrollbar.css --- firefox-esr-68.4.1esr/browser/extensions/webcompat/injections/css/bug1305028-gaming.youtube.com-webkit-scrollbar.css 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/css/bug1305028-gaming.youtube.com-webkit-scrollbar.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -/** - * gaming.youtube.com - The vertical scrollbar displayed for the main pane is - * partially overlapped by the video itself - * Bug #1305028 - https://bugzilla.mozilla.org/show_bug.cgi?id=1305028 - * - * The scrollbar in the main player area is overlapped by the player, making the - * design look broken. In Chrome, YouTube is using ::-webkit-scrollbar to style - * the bar to match their expectations, but this doesn't work in Firefox. - * To make it look less broken, we hide the scrollbar for the main video pane - * entirely. - */ -ytg-scroll-pane.ytg-watch-page { - scrollbar-width: none; -} diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/injections/css/bug1432935-breitbart.com-webkit-scrollbar.css firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/css/bug1432935-breitbart.com-webkit-scrollbar.css --- firefox-esr-68.4.1esr/browser/extensions/webcompat/injections/css/bug1432935-breitbart.com-webkit-scrollbar.css 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/css/bug1432935-breitbart.com-webkit-scrollbar.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -/** - * breitbart.com - -webkit-scrollbar dependency causes scrollbar in the header - * Part of Bug #1432935 - https://bugzilla.mozilla.org/show_bug.cgi?id=1432935 - * WebCompat issue #25156 - https://webcompat.com/issues/25156 - * - * This site is using -webkit-scrollbar to hide a header in ther "scrollable - * via JS" header navigation. This breaks in Firefox, and causes a visible - * scrollbar to appear which overlaps large portions of the navigation content. - * While we wait for an outreach response, let's fix it ourselves. - */ -#HWT ul { - scrollbar-width: none; -} diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/injections/css/bug1605611-maps.google.com-directions-time.css firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/css/bug1605611-maps.google.com-directions-time.css --- firefox-esr-68.4.1esr/browser/extensions/webcompat/injections/css/bug1605611-maps.google.com-directions-time.css 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/css/bug1605611-maps.google.com-directions-time.css 2020-02-07 00:26:57.000000000 +0000 @@ -0,0 +1,24 @@ +/** + * Bug 1605611 - Cannot change Departure/arrival dates in Google Maps on Android + * + * This is step 3 - see injections/js/bug1605611-maps.google.com-directions-time.js. + * Google Maps calls .click() on a datetime-local input element, with the intent + * to show the native date picker. But the native date picker does not appear, + * because that only happens when a user initiated the click. + * To fix the problem of the date picker not appearing in Google Maps, alter the + * styles of the datetime-local input element, to be rendered on top of the + * usual UI (i.e. the icon and date/time text). This allows the user to summon + * the native date picker when they tap on the relevant UI in Google Maps. + */ + +.ml-route-options-picker-content-button + > #ml-route-options-time-selector-time-input { + z-index: 1; /* overrides -5000, to show on top of the icon AND the rendered date */ + opacity: 0; /* let the input element be fully transparent */ + width: 100vw; /* render over the rendered date from Maps' dialog */ + /* position this (absolute) element to fully cover the parent container */ + left: 0; + bottom: 0; + top: 0; + height: 100%; +} diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/injections/css/bug1609991-cracked.com-flex-basis-fix.css firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/css/bug1609991-cracked.com-flex-basis-fix.css --- firefox-esr-68.4.1esr/browser/extensions/webcompat/injections/css/bug1609991-cracked.com-flex-basis-fix.css 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/css/bug1609991-cracked.com-flex-basis-fix.css 2020-02-07 00:26:57.000000000 +0000 @@ -0,0 +1,12 @@ +/** + * www.cracked.com - text and images don't reflow to fit screen width + * Bug #1609991 - https://bugzilla.mozilla.org/show_bug.cgi?id=1609991 + * WebCompat issue #18218 - https://webcompat.com/issues/18218 + * + * Text and images don't fit screen width due to + * https://bugzilla.mozilla.org/show_bug.cgi?id=1316534. Adding flex-basis: auto; + * to the affected element fixes the issue + */ +.col-12 { + flex-basis: auto; +} diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/injections/css/bug1610016-gaana.com-input-position-fix.css firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/css/bug1610016-gaana.com-input-position-fix.css --- firefox-esr-68.4.1esr/browser/extensions/webcompat/injections/css/bug1610016-gaana.com-input-position-fix.css 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/css/bug1610016-gaana.com-input-position-fix.css 2020-02-07 00:26:51.000000000 +0000 @@ -0,0 +1,13 @@ +/** + * gaana.com - unable to accept T&C and Privacy Policy + * Bug #1610016 - https://bugzilla.mozilla.org/show_bug.cgi?id=1610016 + * WebCompat issue #29886 - https://webcompat.com/issues/29886 + * + * Unable to click on checkboxes due to input element floating to the right. + * More info https://bugzilla.mozilla.org/show_bug.cgi?id=997189. Adding explicit + * positioning to the input fixes the issue + */ +.agree_btns input { + top: 0; + left: 0; +} diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/injections/js/bug1472081-election.gov.np-window.sidebar-shim.js firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/js/bug1472081-election.gov.np-window.sidebar-shim.js --- firefox-esr-68.4.1esr/browser/extensions/webcompat/injections/js/bug1472081-election.gov.np-window.sidebar-shim.js 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/js/bug1472081-election.gov.np-window.sidebar-shim.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -"use strict"; - -/** - * Bug 1472081 - election.gov.np - Override window.sidebar with something falsey - * WebCompat issue #11622 - https://webcompat.com/issues/11622 - * - * This site is blocking onmousedown and onclick if window.sidebar is something - * that evaluates to true, rendering the form fields unusable. This patch - * overrides window.sidebar with false, so the blocking event handlers won't - * get registered. - */ - -/* globals exportFunction */ - -console.info( - "window.sidebar has been shimmed for compatibility reasons. See https://webcompat.com/issues/11622 for details." -); - -Object.defineProperty(window.wrappedJSObject, "sidebar", { - get: exportFunction(function() { - return false; - }, window), - - set: exportFunction(function() {}, window), -}); diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/injections/js/bug1482066-portalminasnet.com-window.sidebar-shim.js firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/js/bug1482066-portalminasnet.com-window.sidebar-shim.js --- firefox-esr-68.4.1esr/browser/extensions/webcompat/injections/js/bug1482066-portalminasnet.com-window.sidebar-shim.js 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/js/bug1482066-portalminasnet.com-window.sidebar-shim.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -"use strict"; - -/** - * portalminasnet.com - Override window.sidebar with something falsey - * WebCompat issue #18143 - https://webcompat.com/issues/18143 - * - * This site is blocking onmousedown and onclick if window.sidebar is something - * that evaluates to true, rendering the login unusable. This patch overrides - * window.sidebar with false, so the blocking event handlers won't get - * registered. - */ - -/* globals exportFunction */ - -console.info( - "window.sidebar has been shimmed for compatibility reasons. See https://webcompat.com/issues/18143 for details." -); - -Object.defineProperty(window.wrappedJSObject, "sidebar", { - get: exportFunction(function() { - return false; - }, window), - - set: exportFunction(function() {}, window), -}); diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/injections/js/bug1577245-salesforce-communities-hide-unsupported.js firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/js/bug1577245-salesforce-communities-hide-unsupported.js --- firefox-esr-68.4.1esr/browser/extensions/webcompat/injections/js/bug1577245-salesforce-communities-hide-unsupported.js 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/js/bug1577245-salesforce-communities-hide-unsupported.js 2020-02-07 00:26:56.000000000 +0000 @@ -1,11 +1,10 @@ "use strict"; /** - * help.pandora.com - Hide unsupported message in Firefox for Android - * WebCompat issue #38433 - https://webcompat.com/issues/38433 + * Salesforce Communities - Hide unsupported message in Firefox for Android * - * SalesForce Communities are showing unsupported message - * for help.pandora.com and some more sites. See the full list here: + * Sites based on Salesforce Communities are showing unsupported message. + * See the full list here: * https://github.com/webcompat/web-bugs/issues?utf8=%E2%9C%93&q=doNotShowUnsupportedBrowserModal */ diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/injections/js/bug1605611-maps.google.com-directions-time.js firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/js/bug1605611-maps.google.com-directions-time.js --- firefox-esr-68.4.1esr/browser/extensions/webcompat/injections/js/bug1605611-maps.google.com-directions-time.js 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/js/bug1605611-maps.google.com-directions-time.js 2020-02-07 00:26:56.000000000 +0000 @@ -0,0 +1,82 @@ +"use strict"; + +/* globals exportFunction */ + +/** + * Bug 1605611 - Cannot change Departure/arrival dates in Google Maps on Android + * + * This patch does the following: + * 1. Re-enable the disabled "Leave now" button. + * 2. Fix the precision of datetime-local inputs (to minutes). + * 3. Fixup side effect from enabling the date picker UI via + * injections/css/bug1605611-maps.google.com-directions-time.css + * + * See https://bugzilla.mozilla.org/show_bug.cgi?id=1605611#c0 for details. + */ + +// Step 1. +document.addEventListener("DOMContentLoaded", () => { + // In case the element appeared before the MutationObserver was activated. + for (const elem of document.querySelectorAll( + ".ml-directions-time[disabled]" + )) { + elem.disabled = false; + } + // Start watching for the insertion of the "Leave now" button. + const moOptions = { + attributeFilter: ["disabled"], + attributes: true, + subtree: true, + }; + const mo = new MutationObserver(function(records) { + let restore = false; + for (const { target } of records) { + if (target.classList.contains("ml-directions-time")) { + if (!restore) { + restore = true; + mo.disconnect(); + } + target.disabled = false; + } + } + if (restore) { + mo.observe(document.body, moOptions); + } + }); + mo.observe(document.body, moOptions); +}); + +// Step 2. +const originalValueAsNumberGetter = Object.getOwnPropertyDescriptor( + HTMLInputElement.prototype.wrappedJSObject, + "valueAsNumber" +).get; +Object.defineProperty( + HTMLInputElement.prototype.wrappedJSObject, + "valueAsNumber", + { + configurable: true, + enumerable: true, + get: originalValueAsNumberGetter, + set: exportFunction(function(v) { + if (this.type === "datetime-local" && v) { + const d = new Date(v); + d.setSeconds(0); + d.setMilliseconds(0); + v = d.getTime(); + } + this.valueAsNumber = v; + }, window), + } +); + +// Step 3. +// injections/css/bug1605611-maps.google.com-directions-time.css fixes the bug, +// but a side effect of allowing the user to click on the datetime-local input +// is that the keyboard appears when the native date picker is closed. +// Fix this by unfocusing the datetime-local input upon focus. +document.addEventListener("focusin", ({ target }) => { + if (target.id === "ml-route-options-time-selector-time-input") { + target.blur(); + } +}); diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/injections/js/bug1610358-pcloud.com-appVersion-change.js firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/js/bug1610358-pcloud.com-appVersion-change.js --- firefox-esr-68.4.1esr/browser/extensions/webcompat/injections/js/bug1610358-pcloud.com-appVersion-change.js 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/injections/js/bug1610358-pcloud.com-appVersion-change.js 2020-02-07 00:26:56.000000000 +0000 @@ -0,0 +1,25 @@ +"use strict"; + +/** + * Bug 1610358 - Add "mobile" to navigator.appVersion + * WebCompat issue #40353 - https://webcompat.com/issues/40353 + * + * the site expecting navigator.appVersion to contain "mobile", + * otherwise it's serving a tablet version for Firefox mobile + */ + +/* globals exportFunction */ + +console.info( + "The user agent has been overridden for compatibility reasons. See https://webcompat.com/issues/40353 for details." +); + +const APP_VERSION = navigator.appVersion + " mobile"; + +Object.defineProperty(window.navigator.wrappedJSObject, "appVersion", { + get: exportFunction(function() { + return APP_VERSION; + }, window), + + set: exportFunction(function() {}, window), +}); diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/lib/google.js firefox-esr-68.5.0esr/browser/extensions/webcompat/lib/google.js --- firefox-esr-68.4.1esr/browser/extensions/webcompat/lib/google.js 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/lib/google.js 2020-02-07 00:26:57.000000000 +0000 @@ -4,6 +4,8 @@ "use strict"; +/* globals module */ + const GOOGLE_TLDS = [ "com", "ac", @@ -209,3 +211,5 @@ function getMatchPatternsForGoogleURL(url, path = "*") { return GOOGLE_TLDS.map(domain => `*://${url}.${domain}/${path}`); } + +module.exports = getMatchPatternsForGoogleURL; diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/lib/picture_in_picture_overrides.js firefox-esr-68.5.0esr/browser/extensions/webcompat/lib/picture_in_picture_overrides.js --- firefox-esr-68.4.1esr/browser/extensions/webcompat/lib/picture_in_picture_overrides.js 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/lib/picture_in_picture_overrides.js 2020-02-07 00:26:57.000000000 +0000 @@ -0,0 +1,17 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +/* globals browser, module */ + +class PictureInPictureOverrides { + constructor(availableOverrides) { + this._availableOverrides = availableOverrides; + } + + bootup() { + browser.pictureInPictureParent.setOverrides(this._availableOverrides); + } +} diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/manifest.json firefox-esr-68.5.0esr/browser/extensions/webcompat/manifest.json --- firefox-esr-68.4.1esr/browser/extensions/webcompat/manifest.json 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/manifest.json 2020-02-07 00:26:51.000000000 +0000 @@ -2,7 +2,7 @@ "manifest_version": 2, "name": "Web Compat", "description": "Urgent post-release fixes for web compatibility.", - "version": "6.3.0", + "version": "7.0.0", "applications": { "gecko": { @@ -36,6 +36,22 @@ "paths": [["experiments"]] } }, + "pictureInPictureChild": { + "schema": "experiment-apis/pictureInPicture.json", + "child": { + "scopes": ["addon_child"], + "script": "experiment-apis/pictureInPicture.js", + "paths": [["pictureInPictureChild"]] + } + }, + "pictureInPictureParent": { + "schema": "experiment-apis/pictureInPicture.json", + "parent": { + "scopes": ["addon_parent"], + "script": "experiment-apis/pictureInPicture.js", + "paths": [["pictureInPictureParent"]] + } + }, "sharedPreferences": { "schema": "experiment-apis/sharedPreferences.json", "parent": { @@ -43,26 +59,32 @@ "script": "experiment-apis/sharedPreferences.js", "paths": [["sharedPreferences"]] } + }, + "systemManufacturer": { + "schema": "experiment-apis/systemManufacturer.json", + "child": { + "scopes": ["addon_child"], + "script": "experiment-apis/systemManufacturer.js", + "paths": [["systemManufacturer"]] + } } }, "content_security_policy": "script-src 'self' 'sha256-MmZkN2QaIHhfRWPZ8TVRjijTn5Ci1iEabtTEWrt9CCo='; default-src 'self'; base-uri moz-extension://*; object-src 'none'", - "permissions": [ - "webRequest", - "webRequestBlocking", - "" - ], + "permissions": ["webRequest", "webRequestBlocking", ""], "background": { "scripts": [ "lib/module_shim.js", "lib/google.js", "data/injections.js", + "data/picture_in_picture_overrides.js", "data/ua_overrides.js", "lib/about_compat_broker.js", "lib/custom_functions.js", "lib/injections.js", + "lib/picture_in_picture_overrides.js", "lib/ua_overrides.js", "run.js" ] diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/moz.build firefox-esr-68.5.0esr/browser/extensions/webcompat/moz.build --- firefox-esr-68.4.1esr/browser/extensions/webcompat/moz.build 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/moz.build 2020-02-07 00:26:51.000000000 +0000 @@ -24,6 +24,7 @@ FINAL_TARGET_FILES.features['webcompat@mozilla.org']['data'] += [ 'data/injections.js', + 'data/picture_in_picture_overrides.js', 'data/ua_overrides.js', ] @@ -32,14 +33,16 @@ 'experiment-apis/aboutConfigPrefs.json', 'experiment-apis/experiments.js', 'experiment-apis/experiments.json', + 'experiment-apis/pictureInPicture.js', + 'experiment-apis/pictureInPicture.json', 'experiment-apis/sharedPreferences.js', 'experiment-apis/sharedPreferences.json', + 'experiment-apis/systemManufacturer.js', + 'experiment-apis/systemManufacturer.json', ] FINAL_TARGET_FILES.features['webcompat@mozilla.org']['injections']['css'] += [ 'injections/css/bug0000000-testbed-css-injection.css', - 'injections/css/bug1305028-gaming.youtube.com-webkit-scrollbar.css', - 'injections/css/bug1432935-breitbart.com-webkit-scrollbar.css', 'injections/css/bug1432935-discordapp.com-webkit-scorllbar-white-line.css', 'injections/css/bug1518781-twitch.tv-webkit-scrollbar.css', 'injections/css/bug1526977-sreedharscce.in-login-fix.css', @@ -54,7 +57,10 @@ 'injections/css/bug1575011-holiday-weather.com-scrolling-fix.css', 'injections/css/bug1575017-dunkindonuts.com-flex-basis.css', 'injections/css/bug1577270-binance.com-calc-height-fix.css', - 'injections/css/bug1577297-kitkat.com.au-slider-width-fix.css' + 'injections/css/bug1577297-kitkat.com.au-slider-width-fix.css', + 'injections/css/bug1605611-maps.google.com-directions-time.css', + 'injections/css/bug1609991-cracked.com-flex-basis-fix.css', + 'injections/css/bug1610016-gaana.com-input-position-fix.css', ] FINAL_TARGET_FILES.features['webcompat@mozilla.org']['injections']['js'] += [ @@ -62,11 +68,11 @@ 'injections/js/bug1452707-window.controllers-shim-ib.absa.co.za.js', 'injections/js/bug1457335-histography.io-ua-change.js', 'injections/js/bug1472075-bankofamerica.com-ua-change.js', - 'injections/js/bug1472081-election.gov.np-window.sidebar-shim.js', - 'injections/js/bug1482066-portalminasnet.com-window.sidebar-shim.js', 'injections/js/bug1570856-medium.com-menu-isTier1.js', 'injections/js/bug1577245-salesforce-communities-hide-unsupported.js', - 'injections/js/bug1579159-m.tailieu.vn-pdfjs-worker-disable.js' + 'injections/js/bug1579159-m.tailieu.vn-pdfjs-worker-disable.js', + 'injections/js/bug1605611-maps.google.com-directions-time.js', + 'injections/js/bug1610358-pcloud.com-appVersion-change.js', ] FINAL_TARGET_FILES.features['webcompat@mozilla.org']['lib'] += [ @@ -75,8 +81,9 @@ 'lib/google.js', 'lib/injections.js', 'lib/module_shim.js', + 'lib/picture_in_picture_overrides.js', 'lib/ua_overrides.js', ] with Files('**'): - BUG_COMPONENT = ('Web Compatibility Tools', 'Go Faster') + BUG_COMPONENT = ('Web Compatibility', 'Tooling & Investigations') diff -Nru firefox-esr-68.4.1esr/browser/extensions/webcompat/run.js firefox-esr-68.5.0esr/browser/extensions/webcompat/run.js --- firefox-esr-68.4.1esr/browser/extensions/webcompat/run.js 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/extensions/webcompat/run.js 2020-02-07 00:26:51.000000000 +0000 @@ -5,10 +5,12 @@ "use strict"; /* globals AVAILABLE_INJECTIONS, AVAILABLE_UA_OVERRIDES, AboutCompatBroker, - Injections, UAOverrides, CUSTOM_FUNCTIONS */ + Injections, UAOverrides, CUSTOM_FUNCTIONS, AVAILABLE_PIP_OVERRIDES, + PictureInPictureOverrides */ const injections = new Injections(AVAILABLE_INJECTIONS, CUSTOM_FUNCTIONS); const uaOverrides = new UAOverrides(AVAILABLE_UA_OVERRIDES); +const pipOverrides = new PictureInPictureOverrides(AVAILABLE_PIP_OVERRIDES); const aboutCompatBroker = new AboutCompatBroker({ injections, @@ -18,3 +20,4 @@ aboutCompatBroker.bootup(); injections.bootup(); uaOverrides.bootup(); +pipOverrides.bootup(); diff -Nru firefox-esr-68.4.1esr/browser/installer/windows/nsis/shared.nsh firefox-esr-68.5.0esr/browser/installer/windows/nsis/shared.nsh --- firefox-esr-68.4.1esr/browser/installer/windows/nsis/shared.nsh 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/installer/windows/nsis/shared.nsh 2020-02-07 00:26:57.000000000 +0000 @@ -551,8 +551,44 @@ WriteRegStr ${RegKey} "$0\Capabilities\URLAssociations" "http" "FirefoxURL$2" WriteRegStr ${RegKey} "$0\Capabilities\URLAssociations" "https" "FirefoxURL$2" - ; Registered Application WriteRegStr ${RegKey} "Software\RegisteredApplications" "$1" "$0\Capabilities" + + ; This key would be created by the Open With dialog when a user creates an + ; association for us with a file type that we haven't registered as a handler + ; for. We need to preemptively create it ourselves so that we can control the + ; command line that's used to launch us in that situation. If it's too late + ; and one already exists, then we need to edit its command line to make sure + ; it contains the -osint flag. + ReadRegStr $6 ${RegKey} "Software\Classes\Applications\${FileMainEXE}\shell\open\command" "" + ${If} $6 != "" + ${GetPathFromString} "$6" $6 + WriteRegStr ${RegKey} "Software\Classes\Applications\${FileMainEXE}\shell\open\command" \ + "" "$\"$6$\" -osint -url $\"%1$\"" + ${Else} + WriteRegStr ${RegKey} "Software\Classes\Applications\${FileMainEXE}\shell\open\command" \ + "" "$\"$8$\" -osint -url $\"%1$\"" + ; Make sure files associated this way use the document icon instead of the + ; application icon. + WriteRegStr ${RegKey} "Software\Classes\Applications\${FileMainEXE}\DefaultIcon" \ + "" "$8,1" + ; If we're going to create this key at all, we also need to list our supported + ; file types in it, because otherwise we'll be shown as a suggestion for every + ; single file type, whether we support it in any way or not. + WriteRegStr ${RegKey} "Software\Classes\Applications\${FileMainEXE}\SupportedTypes" \ + ".htm" "" + WriteRegStr ${RegKey} "Software\Classes\Applications\${FileMainEXE}\SupportedTypes" \ + ".html" "" + WriteRegStr ${RegKey} "Software\Classes\Applications\${FileMainEXE}\SupportedTypes" \ + ".shtml" "" + WriteRegStr ${RegKey} "Software\Classes\Applications\${FileMainEXE}\SupportedTypes" \ + ".xht" "" + WriteRegStr ${RegKey} "Software\Classes\Applications\${FileMainEXE}\SupportedTypes" \ + ".xhtml" "" + WriteRegStr ${RegKey} "Software\Classes\Applications\${FileMainEXE}\SupportedTypes" \ + ".svg" "" + WriteRegStr ${RegKey} "Software\Classes\Applications\${FileMainEXE}\SupportedTypes" \ + ".webp" "" + ${EndIf} !macroend !define SetStartMenuInternet "!insertmacro SetStartMenuInternet" diff -Nru firefox-esr-68.4.1esr/browser/installer/windows/nsis/uninstaller.nsi firefox-esr-68.5.0esr/browser/installer/windows/nsis/uninstaller.nsi --- firefox-esr-68.4.1esr/browser/installer/windows/nsis/uninstaller.nsi 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/installer/windows/nsis/uninstaller.nsi 2020-02-07 00:26:57.000000000 +0000 @@ -385,6 +385,18 @@ ${EndIf} ${EndIf} + ; Remove our HKCR/Applications key, if it's for this installation. + ReadRegStr $0 HKLM "Software\Classes\Applications\${FileMainEXE}\DefaultIcon" "" + StrCpy $0 $0 -2 + ${If} $0 == "$INSTDIR\${FileMainEXE}" + DeleteRegKey HKLM "Software\Classes\Applications\${FileMainEXE}" + ${EndIf} + ReadRegStr $0 HKCU "Software\Classes\Applications\${FileMainEXE}\DefaultIcon" "" + StrCpy $0 $0 -2 + ${If} $0 == "$INSTDIR\${FileMainEXE}" + DeleteRegKey HKCU "Software\Classes\Applications\${FileMainEXE}" + ${EndIf} + ; Remove directories and files we always control before parsing the uninstall ; log so empty directories can be removed. ${If} ${FileExists} "$INSTDIR\updates" diff -Nru firefox-esr-68.4.1esr/browser/locales/en-US/chrome/browser/browser.properties firefox-esr-68.5.0esr/browser/locales/en-US/chrome/browser/browser.properties --- firefox-esr-68.4.1esr/browser/locales/en-US/chrome/browser/browser.properties 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/locales/en-US/chrome/browser/browser.properties 2020-02-07 00:26:51.000000000 +0000 @@ -1079,13 +1079,6 @@ # %1$S is the name of the site URL (www.site1.example) trying to track the user's activity. # %2$S is the name of the site URL (www.site2.example) that the user is visiting. This is the same domain name displayed in the address bar. storageAccess.message = Will you give %1$S access to track your browsing activity on %2$S? -# LOCALIZATION NOTE (storageAccess.description.label): -# %1$S is the name of the site URL (www.site1.example) trying to track the user's activity. -# %2$S will be replaced with the localized version of storageAccess.description.learnmore. This text will be converted into a hyper-link linking to the SUMO page explaining the concept of third-party trackers. -storageAccess.description.label = You may want to block %1$S on this site if you don’t recognize or trust it. Learn more about %2$S -# LOCALIZATION NOTE (storageAccess.description.learnmore): -# The value of this string is embedded inside storageAccess.description.label. See the localization note for storageAccess.description.label. -storageAccess.description.learnmore = third-party trackers confirmationHint.sendToDevice.label = Sent! confirmationHint.sendToDeviceOffline.label = Queued (offline) diff -Nru firefox-esr-68.4.1esr/browser/modules/PermissionUI.jsm firefox-esr-68.5.0esr/browser/modules/PermissionUI.jsm --- firefox-esr-68.4.1esr/browser/modules/PermissionUI.jsm 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/browser/modules/PermissionUI.jsm 2020-02-07 00:26:57.000000000 +0000 @@ -1153,7 +1153,11 @@ }, get popupOptions() { + let learnMoreURL = + Services.urlFormatter.formatURLPref("app.support.baseURL") + + "third-party-cookies"; return { + learnMoreURL, displayURI: false, name: this.prettifyHostPort(this.principal.URI), secondName: this.prettifyHostPort(this.topLevelPrincipal.URI), @@ -1161,36 +1165,6 @@ }; }, - onShown() { - let document = this.browser.ownerDocument; - let label = gBrowserBundle.formatStringFromName( - "storageAccess.description.label", - [this.prettifyHostPort(this.request.principal.URI), "<>"], - 2 - ); - let parts = label.split("<>"); - if (parts.length == 1) { - parts.push(""); - } - let map = { - "storage-access-perm-label": parts[0], - "storage-access-perm-learnmore": gBrowserBundle.GetStringFromName( - "storageAccess.description.learnmore" - ), - "storage-access-perm-endlabel": parts[1], - }; - for (let id in map) { - let str = map[id]; - document.getElementById(id).textContent = str; - } - let learnMoreURL = - Services.urlFormatter.formatURLPref("app.support.baseURL") + - "third-party-cookies"; - document.getElementById( - "storage-access-perm-learnmore" - ).href = learnMoreURL; - }, - get notificationID() { return "storage-access"; }, Binary files /srv/release.debian.org/tmp/fXyaEM3epF/firefox-esr-68.4.1esr/build/pgo/certs/cert9.db and /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/build/pgo/certs/cert9.db differ Binary files /srv/release.debian.org/tmp/fXyaEM3epF/firefox-esr-68.4.1esr/build/pgo/certs/key4.db and /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/build/pgo/certs/key4.db differ Binary files /srv/release.debian.org/tmp/fXyaEM3epF/firefox-esr-68.4.1esr/build/pgo/certs/mochitest.client and /srv/release.debian.org/tmp/CUWa1s7qQU/firefox-esr-68.5.0esr/build/pgo/certs/mochitest.client differ diff -Nru firefox-esr-68.4.1esr/config/milestone.txt firefox-esr-68.5.0esr/config/milestone.txt --- firefox-esr-68.4.1esr/config/milestone.txt 2020-01-08 01:28:24.000000000 +0000 +++ firefox-esr-68.5.0esr/config/milestone.txt 2020-02-07 00:26:57.000000000 +0000 @@ -10,4 +10,4 @@ # hardcoded milestones in the tree from these two files. #-------------------------------------------------------- -68.4.1 +68.5.0 diff -Nru firefox-esr-68.4.1esr/debian/changelog firefox-esr-68.5.0esr/debian/changelog --- firefox-esr-68.4.1esr/debian/changelog 2020-01-08 21:40:28.000000000 +0000 +++ firefox-esr-68.5.0esr/debian/changelog 2020-02-11 21:50:33.000000000 +0000 @@ -1,3 +1,11 @@ +firefox-esr (68.5.0esr-1~deb10u1) buster-security; urgency=medium + + * New upstream release + * Fixes for mfsa2020-06, also known as: + CVE-2020-6796, CVE-2020-6798, CVE-2020-6800. + + -- Mike Hommey Wed, 12 Feb 2020 06:50:33 +0900 + firefox-esr (68.4.1esr-1~deb10u1) buster-security; urgency=medium * New upstream release. diff -Nru firefox-esr-68.4.1esr/debian/patches/fixes/Fill-sourcestamp.txt-with-the-missing-info.patch firefox-esr-68.5.0esr/debian/patches/fixes/Fill-sourcestamp.txt-with-the-missing-info.patch --- firefox-esr-68.4.1esr/debian/patches/fixes/Fill-sourcestamp.txt-with-the-missing-info.patch 2020-01-08 21:40:28.000000000 +0000 +++ firefox-esr-68.5.0esr/debian/patches/fixes/Fill-sourcestamp.txt-with-the-missing-info.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -From: Mike Hommey -Date: Wed, 8 Jan 2020 08:53:11 +0900 -Subject: Fill sourcestamp.txt with the missing info - ---- - sourcestamp.txt | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/sourcestamp.txt b/sourcestamp.txt -index 8b137891791..ab5f43b06ed 100644 ---- a/sourcestamp.txt -+++ b/sourcestamp.txt -@@ -1 +1,2 @@ -- -+20200107212959 -+https://hg.mozilla.org/releases/mozilla-esr68/rev/8b51bf38ddbb00131188d833c1441bb37128634b diff -Nru firefox-esr-68.4.1esr/debian/patches/series firefox-esr-68.5.0esr/debian/patches/series --- firefox-esr-68.4.1esr/debian/patches/series 2020-01-08 21:40:28.000000000 +0000 +++ firefox-esr-68.5.0esr/debian/patches/series 2020-02-11 21:50:33.000000000 +0000 @@ -4,7 +4,6 @@ fixes/Bug-1560340-Only-add-confvars.sh-as-a-dependency-to-.patch fixes/Bug-1574761-Avoid-race-condition-creating-old-config.patch fixes/Bug-1531309-Don-t-use-__PRETTY_FUNCTION__-or-__FUNCT.patch -fixes/Fill-sourcestamp.txt-with-the-missing-info.patch porting/Add-xptcall-support-for-SH4-processors.patch porting/NSS-Fix-FTBFS-on-Hurd-because-of-MAXPATHLEN.patch porting/Work-around-Debian-bug-844357.patch diff -Nru firefox-esr-68.4.1esr/dom/base/crashtests/1291535-iframe.html firefox-esr-68.5.0esr/dom/base/crashtests/1291535-iframe.html --- firefox-esr-68.4.1esr/dom/base/crashtests/1291535-iframe.html 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-68.5.0esr/dom/base/crashtests/1291535-iframe.html 2020-02-07 00:26:57.000000000 +0000 @@ -0,0 +1,4 @@ + diff -Nru firefox-esr-68.4.1esr/dom/base/crashtests/1291535.html firefox-esr-68.5.0esr/dom/base/crashtests/1291535.html --- firefox-esr-68.4.1esr/dom/base/crashtests/1291535.html 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-68.5.0esr/dom/base/crashtests/1291535.html 2020-02-07 00:26:57.000000000 +0000 @@ -0,0 +1 @@ + diff -Nru firefox-esr-68.4.1esr/dom/base/crashtests/crashtests.list firefox-esr-68.5.0esr/dom/base/crashtests/crashtests.list --- firefox-esr-68.4.1esr/dom/base/crashtests/crashtests.list 2020-01-08 01:28:25.000000000 +0000 +++ firefox-esr-68.5.0esr/dom/base/crashtests/crashtests.list 2020-02-07 00:26:57.000000000 +0000 @@ -200,6 +200,7 @@ load 1251361.html load 1281715.html load 1281745.html +load 1291535.html load 1304437.html load 1324209.html load 1324463.html diff -Nru firefox-esr-68.4.1esr/dom/fetch/FetchStreamReader.cpp firefox-esr-68.5.0esr/dom/fetch/FetchStreamReader.cpp --- firefox-esr-68.4.1esr/dom/fetch/FetchStreamReader.cpp 2020-01-08 01:28:25.000000000 +0000 +++ firefox-esr-68.5.0esr/dom/fetch/FetchStreamReader.cpp 2020-02-07 00:26:57.000000000 +0000 @@ -150,7 +150,7 @@ mWorkerRef = nullptr; mReader = nullptr; - mBuffer = nullptr; + mBuffer.Clear(); } void FetchStreamReader::StartConsuming(JSContext* aCx, JS::HandleObject aStream, @@ -197,7 +197,7 @@ return NS_OK; } - if (mBuffer) { + if (!mBuffer.IsEmpty()) { return WriteBuffer(); } @@ -271,8 +271,13 @@ return; } - MOZ_DIAGNOSTIC_ASSERT(!mBuffer); - mBuffer = std::move(value); + MOZ_DIAGNOSTIC_ASSERT(mBuffer.IsEmpty()); + + // Let's take a copy of the data. + if (!mBuffer.AppendElements(array.Data(), len, fallible)) { + CloseAndRelease(aCx, NS_ERROR_OUT_OF_MEMORY); + return; + } mBufferOffset = 0; mBufferRemaining = len; @@ -286,11 +291,9 @@ } nsresult FetchStreamReader::WriteBuffer() { - MOZ_ASSERT(mBuffer); - MOZ_ASSERT(mBuffer->mValue.WasPassed()); + MOZ_ASSERT(!mBuffer.IsEmpty()); - Uint8Array& array = mBuffer->mValue.Value(); - char* data = reinterpret_cast(array.Data()); + char* data = reinterpret_cast(mBuffer.Elements()); while (1) { uint32_t written = 0; @@ -310,7 +313,7 @@ mBufferOffset += written; if (mBufferRemaining == 0) { - mBuffer = nullptr; + mBuffer.Clear(); break; } } diff -Nru firefox-esr-68.4.1esr/dom/fetch/FetchStreamReader.h firefox-esr-68.5.0esr/dom/fetch/FetchStreamReader.h --- firefox-esr-68.4.1esr/dom/fetch/FetchStreamReader.h 2020-01-08 01:28:25.000000000 +0000 +++ firefox-esr-68.5.0esr/dom/fetch/FetchStreamReader.h 2020-02-07 00:26:58.000000000 +0000 @@ -61,7 +61,7 @@ JS::Heap mReader; - UniquePtr mBuffer; + nsTArray mBuffer; uint32_t mBufferRemaining; uint32_t mBufferOffset; diff -Nru firefox-esr-68.4.1esr/dom/indexedDB/ActorsChild.cpp firefox-esr-68.5.0esr/dom/indexedDB/ActorsChild.cpp --- firefox-esr-68.4.1esr/dom/indexedDB/ActorsChild.cpp 2020-01-08 01:28:25.000000000 +0000 +++ firefox-esr-68.5.0esr/dom/indexedDB/ActorsChild.cpp 2020-02-07 00:27:03.000000000 +0000 @@ -3324,6 +3324,10 @@ auto& responses = const_cast&>(aResponses); + // If a new cursor is created, we need to keep a reference to it until the + // ResultHelper creates a DOM Binding. + RefPtr newCursor; + for (ObjectStoreCursorResponse& response : responses) { StructuredCloneReadInfo cloneReadInfo(std::move(response.cloneInfo())); cloneReadInfo.mDatabase = mTransaction->Database(); @@ -3332,7 +3336,6 @@ response.cloneInfo().files(), nullptr, cloneReadInfo.mFiles); - RefPtr newCursor; if (mCursor) { mCursor->Reset(std::move(response.key()), std::move(cloneReadInfo)); diff -Nru firefox-esr-68.4.1esr/dom/media/gmp/GMPParent.cpp firefox-esr-68.5.0esr/dom/media/gmp/GMPParent.cpp --- firefox-esr-68.4.1esr/dom/media/gmp/GMPParent.cpp 2020-01-08 01:28:25.000000000 +0000 +++ firefox-esr-68.5.0esr/dom/media/gmp/GMPParent.cpp 2020-02-07 00:27:03.000000000 +0000 @@ -737,6 +737,15 @@ nsTArray codecs; SplitAt(",", codecsString, codecs); + // Parse the codec strings in the manifest and map them to strings used + // internally by Gecko for capability recognition. + // + // Google's code to parse manifests can be used as a reference for strings + // the manifest may contain + // https://cs.chromium.org/chromium/src/chrome/common/media/cdm_manifest.cc?l=73&rcl=393e60bfc2299449db7ef374c0ef1c324716e562 + // + // Gecko's internal strings can be found at + // https://searchfox.org/mozilla-central/rev/ea63a0888d406fae720cf24f4727d87569a8cab5/dom/media/eme/MediaKeySystemAccess.cpp#149-155 for (const nsCString& chromiumCodec : codecs) { nsCString codec; if (chromiumCodec.EqualsASCII("vp8")) { @@ -745,6 +754,8 @@ codec = NS_LITERAL_CSTRING("vp9"); } else if (chromiumCodec.EqualsASCII("avc1")) { codec = NS_LITERAL_CSTRING("h264"); + } else if (chromiumCodec.EqualsASCII("av01")) { + codec = NS_LITERAL_CSTRING("av1"); } else { return GenericPromise::CreateAndReject(NS_ERROR_FAILURE, __func__); } diff -Nru firefox-esr-68.4.1esr/dom/media/hls/HLSDemuxer.cpp firefox-esr-68.5.0esr/dom/media/hls/HLSDemuxer.cpp --- firefox-esr-68.4.1esr/dom/media/hls/HLSDemuxer.cpp 2020-01-08 01:28:25.000000000 +0000 +++ firefox-esr-68.5.0esr/dom/media/hls/HLSDemuxer.cpp 2020-02-07 00:26:57.000000000 +0000 @@ -344,46 +344,52 @@ jni::Object::LocalRef infoObj = nullptr; if (mType == TrackType::kAudioTrack) { infoObj = mParent->mHLSDemuxerWrapper->GetAudioInfo(index); + if (!infoObj) { + NS_WARNING("Failed to get audio info from Java wrapper"); + return; + } auto* audioInfo = mTrackInfo->GetAsAudioInfo(); - if (infoObj && audioInfo) { - HLS_DEBUG("HLSTrackDemuxer", "Update audio info (%d)", index); - java::GeckoAudioInfo::LocalRef audioInfoObj(std::move(infoObj)); - audioInfo->mRate = audioInfoObj->Rate(); - audioInfo->mChannels = audioInfoObj->Channels(); - audioInfo->mProfile = audioInfoObj->Profile(); - audioInfo->mBitDepth = audioInfoObj->BitDepth(); - audioInfo->mMimeType = - NS_ConvertUTF16toUTF8(audioInfoObj->MimeType()->ToString()); - audioInfo->mDuration = - TimeUnit::FromMicroseconds(audioInfoObj->Duration()); - jni::ByteArray::LocalRef csdBytes = audioInfoObj->CodecSpecificData(); - if (csdBytes) { - auto&& csd = csdBytes->GetElements(); - audioInfo->mCodecSpecificConfig->Clear(); - audioInfo->mCodecSpecificConfig->AppendElements( - reinterpret_cast(&csd[0]), csd.Length()); - } + MOZ_ASSERT(audioInfo != nullptr); + HLS_DEBUG("HLSTrackDemuxer", "Update audio info (%d)", index); + java::GeckoAudioInfo::LocalRef audioInfoObj(std::move(infoObj)); + audioInfo->mRate = audioInfoObj->Rate(); + audioInfo->mChannels = audioInfoObj->Channels(); + audioInfo->mProfile = audioInfoObj->Profile(); + audioInfo->mBitDepth = audioInfoObj->BitDepth(); + audioInfo->mMimeType = + NS_ConvertUTF16toUTF8(audioInfoObj->MimeType()->ToString()); + audioInfo->mDuration = + TimeUnit::FromMicroseconds(audioInfoObj->Duration()); + jni::ByteArray::LocalRef csdBytes = audioInfoObj->CodecSpecificData(); + if (csdBytes) { + auto&& csd = csdBytes->GetElements(); + audioInfo->mCodecSpecificConfig->Clear(); + audioInfo->mCodecSpecificConfig->AppendElements( + reinterpret_cast(&csd[0]), csd.Length()); } } else { infoObj = mParent->mHLSDemuxerWrapper->GetVideoInfo(index); - auto* videoInfo = mTrackInfo->GetAsVideoInfo(); - if (infoObj && videoInfo) { - java::GeckoVideoInfo::LocalRef videoInfoObj(std::move(infoObj)); - videoInfo->mStereoMode = getStereoMode(videoInfoObj->StereoMode()); - videoInfo->mRotation = getVideoInfoRotation(videoInfoObj->Rotation()); - videoInfo->mImage.width = videoInfoObj->DisplayWidth(); - videoInfo->mImage.height = videoInfoObj->DisplayHeight(); - videoInfo->mDisplay.width = videoInfoObj->PictureWidth(); - videoInfo->mDisplay.height = videoInfoObj->PictureHeight(); - videoInfo->mMimeType = - NS_ConvertUTF16toUTF8(videoInfoObj->MimeType()->ToString()); - videoInfo->mDuration = - TimeUnit::FromMicroseconds(videoInfoObj->Duration()); - HLS_DEBUG("HLSTrackDemuxer", - "Update video info (%d) / I(%dx%d) / D(%dx%d)", index, - videoInfo->mImage.width, videoInfo->mImage.height, - videoInfo->mDisplay.width, videoInfo->mDisplay.height); + if (!infoObj) { + NS_WARNING("Failed to get video info from Java wrapper"); + return; } + auto* videoInfo = mTrackInfo->GetAsVideoInfo(); + MOZ_ASSERT(videoInfo != nullptr); + java::GeckoVideoInfo::LocalRef videoInfoObj(std::move(infoObj)); + videoInfo->mStereoMode = getStereoMode(videoInfoObj->StereoMode()); + videoInfo->mRotation = getVideoInfoRotation(videoInfoObj->Rotation()); + videoInfo->mImage.width = videoInfoObj->DisplayWidth(); + videoInfo->mImage.height = videoInfoObj->DisplayHeight(); + videoInfo->mDisplay.width = videoInfoObj->PictureWidth(); + videoInfo->mDisplay.height = videoInfoObj->PictureHeight(); + videoInfo->mMimeType = + NS_ConvertUTF16toUTF8(videoInfoObj->MimeType()->ToString()); + videoInfo->mDuration = + TimeUnit::FromMicroseconds(videoInfoObj->Duration()); + HLS_DEBUG("HLSTrackDemuxer", + "Update video info (%d) / I(%dx%d) / D(%dx%d)", index, + videoInfo->mImage.width, videoInfo->mImage.height, + videoInfo->mDisplay.width, videoInfo->mDisplay.height); } } diff -Nru firefox-esr-68.4.1esr/dom/media/systemservices/video_engine/browser_capture_impl.h firefox-esr-68.5.0esr/dom/media/systemservices/video_engine/browser_capture_impl.h --- firefox-esr-68.4.1esr/dom/media/systemservices/video_engine/browser_capture_impl.h 2020-01-08 01:28:25.000000000 +0000 +++ firefox-esr-68.5.0esr/dom/media/systemservices/video_engine/browser_capture_impl.h 2020-02-07 00:26:57.000000000 +0000 @@ -14,11 +14,11 @@ virtual int32_t Refresh() { return 0; } virtual int32_t GetDeviceName(uint32_t deviceNumber, char* deviceNameUTF8, - uint32_t deviceNameLength, + uint32_t deviceNameSize, char* deviceUniqueIdUTF8, - uint32_t deviceUniqueIdUTF8Length, + uint32_t deviceUniqueIdUTF8Size, char* productUniqueIdUTF8 = NULL, - uint32_t productUniqueIdUTF8Length = 0, + uint32_t productUniqueIdUTF8Size = 0, pid_t* pid = 0) { deviceNameUTF8 = const_cast(kDeviceName); deviceUniqueIdUTF8 = const_cast(kUniqueDeviceName); diff -Nru firefox-esr-68.4.1esr/dom/media/systemservices/video_engine/desktop_capture_impl.cc firefox-esr-68.5.0esr/dom/media/systemservices/video_engine/desktop_capture_impl.cc --- firefox-esr-68.4.1esr/dom/media/systemservices/video_engine/desktop_capture_impl.cc 2020-01-08 01:28:25.000000000 +0000 +++ firefox-esr-68.5.0esr/dom/media/systemservices/video_engine/desktop_capture_impl.cc 2020-02-07 00:26:57.000000000 +0000 @@ -57,21 +57,21 @@ } int32_t ScreenDeviceInfoImpl::GetDeviceName( - uint32_t deviceNumber, char* deviceNameUTF8, uint32_t deviceNameUTF8Length, - char* deviceUniqueIdUTF8, uint32_t deviceUniqueIdUTF8Length, - char* productUniqueIdUTF8, uint32_t productUniqueIdUTF8Length, pid_t* pid) { + uint32_t deviceNumber, char* deviceNameUTF8, uint32_t deviceNameUTF8Size, + char* deviceUniqueIdUTF8, uint32_t deviceUniqueIdUTF8Size, + char* productUniqueIdUTF8, uint32_t productUniqueIdUTF8Size, pid_t* pid) { DesktopDisplayDevice desktopDisplayDevice; // always initialize output - if (deviceNameUTF8 && deviceNameUTF8Length > 0) { - memset(deviceNameUTF8, 0, deviceNameUTF8Length); + if (deviceNameUTF8 && deviceNameUTF8Size > 0) { + memset(deviceNameUTF8, 0, deviceNameUTF8Size); } - if (deviceUniqueIdUTF8 && deviceUniqueIdUTF8Length > 0) { - memset(deviceUniqueIdUTF8, 0, deviceUniqueIdUTF8Length); + if (deviceUniqueIdUTF8 && deviceUniqueIdUTF8Size > 0) { + memset(deviceUniqueIdUTF8, 0, deviceUniqueIdUTF8Size); } - if (productUniqueIdUTF8 && productUniqueIdUTF8Length > 0) { - memset(productUniqueIdUTF8, 0, productUniqueIdUTF8Length); + if (productUniqueIdUTF8 && productUniqueIdUTF8Size > 0) { + memset(productUniqueIdUTF8, 0, productUniqueIdUTF8Size); } if (desktop_device_info_->getDesktopDisplayDeviceInfo( @@ -80,13 +80,13 @@ const char* deviceName = desktopDisplayDevice.getDeviceName(); len = deviceName ? strlen(deviceName) : 0; - if (len && deviceNameUTF8 && len <= deviceNameUTF8Length) { + if (len && deviceNameUTF8 && len < deviceNameUTF8Size) { memcpy(deviceNameUTF8, deviceName, len); } const char* deviceUniqueId = desktopDisplayDevice.getUniqueIdName(); len = deviceUniqueId ? strlen(deviceUniqueId) : 0; - if (len && deviceUniqueIdUTF8 && len <= deviceUniqueIdUTF8Length) { + if (len && deviceUniqueIdUTF8 && len < deviceUniqueIdUTF8Size) { memcpy(deviceUniqueIdUTF8, deviceUniqueId, len); } } @@ -143,20 +143,20 @@ } int32_t AppDeviceInfoImpl::GetDeviceName( - uint32_t deviceNumber, char* deviceNameUTF8, uint32_t deviceNameUTF8Length, - char* deviceUniqueIdUTF8, uint32_t deviceUniqueIdUTF8Length, - char* productUniqueIdUTF8, uint32_t productUniqueIdUTF8Length, pid_t* pid) { + uint32_t deviceNumber, char* deviceNameUTF8, uint32_t deviceNameUTF8Size, + char* deviceUniqueIdUTF8, uint32_t deviceUniqueIdUTF8Size, + char* productUniqueIdUTF8, uint32_t productUniqueIdUTF8Size, pid_t* pid) { DesktopApplication desktopApplication; // always initialize output - if (deviceNameUTF8Length && deviceNameUTF8Length > 0) { - memset(deviceNameUTF8, 0, deviceNameUTF8Length); + if (deviceNameUTF8Size && deviceNameUTF8Size > 0) { + memset(deviceNameUTF8, 0, deviceNameUTF8Size); } - if (deviceUniqueIdUTF8 && deviceUniqueIdUTF8Length > 0) { - memset(deviceUniqueIdUTF8, 0, deviceUniqueIdUTF8Length); + if (deviceUniqueIdUTF8 && deviceUniqueIdUTF8Size > 0) { + memset(deviceUniqueIdUTF8, 0, deviceUniqueIdUTF8Size); } - if (productUniqueIdUTF8 && productUniqueIdUTF8Length > 0) { - memset(productUniqueIdUTF8, 0, productUniqueIdUTF8Length); + if (productUniqueIdUTF8 && productUniqueIdUTF8Size > 0) { + memset(productUniqueIdUTF8, 0, productUniqueIdUTF8Size); } if (desktop_device_info_->getApplicationInfo(deviceNumber, @@ -165,13 +165,13 @@ const char* deviceName = desktopApplication.getProcessAppName(); len = deviceName ? strlen(deviceName) : 0; - if (len && len <= deviceNameUTF8Length) { + if (len && len < deviceNameUTF8Size) { memcpy(deviceNameUTF8, deviceName, len); } const char* deviceUniqueId = desktopApplication.getUniqueIdName(); len = deviceUniqueId ? strlen(deviceUniqueId) : 0; - if (len && deviceUniqueIdUTF8 && len <= deviceUniqueIdUTF8Length) { + if (len && deviceUniqueIdUTF8 && len < deviceUniqueIdUTF8Size) { memcpy(deviceUniqueIdUTF8, deviceUniqueId, len); } if (pid) { @@ -231,20 +231,20 @@ } int32_t WindowDeviceInfoImpl::GetDeviceName( - uint32_t deviceNumber, char* deviceNameUTF8, uint32_t deviceNameUTF8Length, - char* deviceUniqueIdUTF8, uint32_t deviceUniqueIdUTF8Length, - char* productUniqueIdUTF8, uint32_t productUniqueIdUTF8Length, pid_t* pid) { + uint32_t deviceNumber, char* deviceNameUTF8, uint32_t deviceNameUTF8Size, + char* deviceUniqueIdUTF8, uint32_t deviceUniqueIdUTF8Size, + char* productUniqueIdUTF8, uint32_t productUniqueIdUTF8Size, pid_t* pid) { DesktopDisplayDevice desktopDisplayDevice; // always initialize output - if (deviceNameUTF8 && deviceNameUTF8Length > 0) { - memset(deviceNameUTF8, 0, deviceNameUTF8Length); + if (deviceNameUTF8 && deviceNameUTF8Size > 0) { + memset(deviceNameUTF8, 0, deviceNameUTF8Size); } - if (deviceUniqueIdUTF8 && deviceUniqueIdUTF8Length > 0) { - memset(deviceUniqueIdUTF8, 0, deviceUniqueIdUTF8Length); + if (deviceUniqueIdUTF8 && deviceUniqueIdUTF8Size > 0) { + memset(deviceUniqueIdUTF8, 0, deviceUniqueIdUTF8Size); } - if (productUniqueIdUTF8 && productUniqueIdUTF8Length > 0) { - memset(productUniqueIdUTF8, 0, productUniqueIdUTF8Length); + if (productUniqueIdUTF8 && productUniqueIdUTF8Size > 0) { + memset(productUniqueIdUTF8, 0, productUniqueIdUTF8Size); } if (desktop_device_info_->getWindowInfo(deviceNumber, desktopDisplayDevice) == @@ -253,13 +253,13 @@ const char* deviceName = desktopDisplayDevice.getDeviceName(); len = deviceName ? strlen(deviceName) : 0; - if (len && deviceNameUTF8 && len <= deviceNameUTF8Length) { + if (len && deviceNameUTF8 && len < deviceNameUTF8Size) { memcpy(deviceNameUTF8, deviceName, len); } const char* deviceUniqueId = desktopDisplayDevice.getUniqueIdName(); len = deviceUniqueId ? strlen(deviceUniqueId) : 0; - if (len && deviceUniqueIdUTF8 && len <= deviceUniqueIdUTF8Length) { + if (len && deviceUniqueIdUTF8 && len < deviceUniqueIdUTF8Size) { memcpy(deviceUniqueIdUTF8, deviceUniqueId, len); } if (pid) { diff -Nru firefox-esr-68.4.1esr/dom/media/test/test_mediarecorder_playback_can_repeat.html firefox-esr-68.5.0esr/dom/media/test/test_mediarecorder_playback_can_repeat.html --- firefox-esr-68.4.1esr/dom/media/test/test_mediarecorder_playback_can_repeat.html 2020-01-08 01:28:25.000000000 +0000 +++ firefox-esr-68.5.0esr/dom/media/test/test_mediarecorder_playback_can_repeat.html 2020-02-07 00:27:03.000000000 +0000 @@ -14,7 +14,18 @@ diff -Nru firefox-esr-68.4.1esr/dom/script/ScriptLoader.cpp firefox-esr-68.5.0esr/dom/script/ScriptLoader.cpp --- firefox-esr-68.4.1esr/dom/script/ScriptLoader.cpp 2020-01-08 01:28:25.000000000 +0000 +++ firefox-esr-68.5.0esr/dom/script/ScriptLoader.cpp 2020-02-07 00:26:57.000000000 +0000 @@ -3376,6 +3376,9 @@ if (aRequest->isInList()) { RefPtr req = mDynamicImportRequests.Steal(aRequest); modReq->Cancel(); + // FinishDynamicImport must happen exactly once for each dynamic import + // request. If the load is aborted we do it when we remove the request + // from mDynamicImportRequests. FinishDynamicImport(modReq, aResult); } } else { @@ -3584,8 +3587,12 @@ for (ScriptLoadRequest* req = mDynamicImportRequests.getFirst(); req; req = req->getNext()) { req->Cancel(); + // FinishDynamicImport must happen exactly once for each dynamic import + // request. If the load is aborted we do it when we remove the request + // from mDynamicImportRequests. FinishDynamicImport(req->AsModuleRequest(), NS_ERROR_ABORT); } + mDynamicImportRequests.Clear(); if (mParserBlockingRequest) { mParserBlockingRequest->Cancel(); diff -Nru firefox-esr-68.4.1esr/gfx/2d/DrawTargetD2D1.cpp firefox-esr-68.5.0esr/gfx/2d/DrawTargetD2D1.cpp --- firefox-esr-68.4.1esr/gfx/2d/DrawTargetD2D1.cpp 2020-01-08 01:28:26.000000000 +0000 +++ firefox-esr-68.5.0esr/gfx/2d/DrawTargetD2D1.cpp 2020-02-07 00:27:03.000000000 +0000 @@ -36,6 +36,10 @@ uint64_t DrawTargetD2D1::mVRAMUsageSS; StaticRefPtr DrawTargetD2D1::mFactory; +const D2D1_MATRIX_5X4_F kLuminanceMatrix = + D2D1::Matrix5x4F(0, 0, 0, 0.2125f, 0, 0, 0, 0.7154f, 0, 0, 0, 0.0721f, 0, 0, + 0, 0, 0, 0, 0, 0); + RefPtr D2DFactory() { return DrawTargetD2D1::factory(); } DrawTargetD2D1::DrawTargetD2D1() @@ -129,10 +133,7 @@ return false; } - D2D1_MATRIX_5X4_F matrix = - D2D1::Matrix5x4F(0, 0, 0, 0.2125f, 0, 0, 0, 0.7154f, 0, 0, 0, 0.0721f, 0, - 0, 0, 0, 0, 0, 0, 0); - mLuminanceEffect->SetValue(D2D1_COLORMATRIX_PROP_COLOR_MATRIX, matrix); + mLuminanceEffect->SetValue(D2D1_COLORMATRIX_PROP_COLOR_MATRIX, kLuminanceMatrix); mLuminanceEffect->SetValue(D2D1_COLORMATRIX_PROP_ALPHA_MODE, D2D1_COLORMATRIX_ALPHA_MODE_STRAIGHT); return true; @@ -155,6 +156,17 @@ return DrawTarget::IntoLuminanceSource(aLuminanceType, aOpacity); } + Flush(); + + { + D2D1_MATRIX_5X4_F matrix = kLuminanceMatrix; + matrix._14 *= aOpacity; + matrix._24 *= aOpacity; + matrix._34 *= aOpacity; + + mLuminanceEffect->SetValue(D2D1_COLORMATRIX_PROP_COLOR_MATRIX, matrix); + } + mLuminanceEffect->SetInput(0, mBitmap); RefPtr luminanceOutput; diff -Nru firefox-esr-68.4.1esr/gfx/layers/composite/TextureHost.cpp firefox-esr-68.5.0esr/gfx/layers/composite/TextureHost.cpp --- firefox-esr-68.4.1esr/gfx/layers/composite/TextureHost.cpp 2020-01-08 01:28:26.000000000 +0000 +++ firefox-esr-68.5.0esr/gfx/layers/composite/TextureHost.cpp 2020-02-07 00:27:04.000000000 +0000 @@ -520,6 +520,14 @@ void BufferTextureHost::DeallocateDeviceData() { if (mFirstSource && mFirstSource->NumCompositableRefs() > 0) { + // WrappingTextureSourceYCbCrBasic wraps YUV format BufferTextureHost. + // When BufferTextureHost is destroyed, data of + // WrappingTextureSourceYCbCrBasic becomes invalid. + if (mFirstSource->AsWrappingTextureSourceYCbCrBasic() && + mFirstSource->IsOwnedBy(this)) { + mFirstSource->SetOwner(nullptr); + mFirstSource->DeallocateDeviceData(); + } return; } diff -Nru firefox-esr-68.4.1esr/ipc/glue/CrashReporterMetadataShmem.cpp firefox-esr-68.5.0esr/ipc/glue/CrashReporterMetadataShmem.cpp --- firefox-esr-68.4.1esr/ipc/glue/CrashReporterMetadataShmem.cpp 2020-01-08 01:28:27.000000000 +0000 +++ firefox-esr-68.5.0esr/ipc/glue/CrashReporterMetadataShmem.cpp 2020-02-07 00:27:04.000000000 +0000 @@ -207,6 +207,10 @@ return; } + if (key >= Annotation::Count) { + return; + } + aNotes[key] = value; break; } diff -Nru firefox-esr-68.4.1esr/js/src/frontend/BytecodeCompiler.cpp firefox-esr-68.5.0esr/js/src/frontend/BytecodeCompiler.cpp --- firefox-esr-68.4.1esr/js/src/frontend/BytecodeCompiler.cpp 2020-01-08 01:28:27.000000000 +0000 +++ firefox-esr-68.5.0esr/js/src/frontend/BytecodeCompiler.cpp 2020-02-07 00:27:09.000000000 +0000 @@ -483,7 +483,8 @@ return false; } - parser->tokenStream.seek(startPosition); + // Rewind to starting position to retry. + parser->tokenStream.rewind(startPosition); // Assignment must be monotonic to prevent reparsing iloops MOZ_ASSERT_IF(info.directives.strict(), newDirectives.strict()); diff -Nru firefox-esr-68.4.1esr/js/src/frontend/Parser.cpp firefox-esr-68.5.0esr/js/src/frontend/Parser.cpp --- firefox-esr-68.4.1esr/js/src/frontend/Parser.cpp 2020-01-08 01:28:27.000000000 +0000 +++ firefox-esr-68.5.0esr/js/src/frontend/Parser.cpp 2020-02-07 00:27:04.000000000 +0000 @@ -2624,7 +2624,8 @@ MOZ_ASSERT_IF(directives.asmJS(), newDirectives.asmJS()); directives = newDirectives; - tokenStream.seek(start); + // Rewind to retry parsing with new directives applied. + tokenStream.rewind(start); // functionFormalParametersAndBody may have already set body before // failing. @@ -2635,6 +2636,22 @@ } template +bool Parser::advancePastSyntaxParsedFunction( + AutoKeepAtoms& keepAtoms, SyntaxParser* syntaxParser) { + MOZ_ASSERT(getSyntaxParser() == syntaxParser); + + // Advance this parser over tokens processed by the syntax parser. + Position currentSyntaxPosition(keepAtoms_, syntaxParser->tokenStream); + if (!tokenStream.fastForward(currentSyntaxPosition, syntaxParser->anyChars)) { + return false; + } + + anyChars.adoptState(syntaxParser->anyChars); + tokenStream.adoptState(syntaxParser->tokenStream); + return true; +} + +template bool Parser::trySyntaxParseInnerFunction( FunctionNode** funNode, HandleFunction fun, uint32_t toStringStart, InHandling inHandling, YieldHandling yieldHandling, FunctionSyntaxKind kind, @@ -2659,9 +2676,17 @@ UsedNameTracker::RewindToken token = usedNames_.getRewindToken(); - // Move the syntax parser to the current position in the stream. + // Move the syntax parser to the current position in the stream. In the + // common case this seeks forward, but it'll also seek backward *at least* + // when arrow functions appear inside arrow function argument defaults + // (because we rewind to reparse arrow functions once we're certain they're + // arrow functions): + // + // var x = (y = z => 2) => q; + // // ^ we first seek to here to syntax-parse this function + // // ^ then we seek back to here to syntax-parse the outer function Position currentPosition(keepAtoms_, tokenStream); - if (!syntaxParser->tokenStream.seek(currentPosition, anyChars)) { + if (!syntaxParser->tokenStream.seekTo(currentPosition, anyChars)) { return false; } @@ -2694,9 +2719,7 @@ return false; } - // Advance this parser over tokens processed by the syntax parser. - Position currentSyntaxPosition(keepAtoms_, syntaxParser->tokenStream); - if (!tokenStream.seek(currentSyntaxPosition, syntaxParser->anyChars)) { + if (!advancePastSyntaxParsedFunction(keepAtoms_, syntaxParser)) { return false; } @@ -8382,7 +8405,8 @@ } if (isArrow) { - tokenStream.seek(start); + // Rewind to reparse as an arrow function. + tokenStream.rewind(start); TokenKind next; if (!tokenStream.getToken(&next, TokenStream::SlashIsRegExp)) { diff -Nru firefox-esr-68.4.1esr/js/src/frontend/Parser.h firefox-esr-68.5.0esr/js/src/frontend/Parser.h --- firefox-esr-68.4.1esr/js/src/frontend/Parser.h 2020-01-08 01:28:27.000000000 +0000 +++ firefox-esr-68.5.0esr/js/src/frontend/Parser.h 2020-02-07 00:27:04.000000000 +0000 @@ -1742,6 +1742,9 @@ FunctionAsyncKind asyncKind, bool tryAnnexB, Directives inheritedDirectives, Directives* newDirectives); + MOZ_MUST_USE bool advancePastSyntaxParsedFunction(AutoKeepAtoms& keepAtoms, + SyntaxParser* syntaxParser); + bool skipLazyInnerFunction(FunctionNodeType funNode, uint32_t toStringStart, FunctionSyntaxKind kind, bool tryAnnexB); diff -Nru firefox-esr-68.4.1esr/js/src/frontend/TokenStream.cpp firefox-esr-68.5.0esr/js/src/frontend/TokenStream.cpp --- firefox-esr-68.4.1esr/js/src/frontend/TokenStream.cpp 2020-01-08 01:28:27.000000000 +0000 +++ firefox-esr-68.5.0esr/js/src/frontend/TokenStream.cpp 2020-02-07 00:27:04.000000000 +0000 @@ -1558,7 +1558,7 @@ } template -void TokenStreamSpecific::seek(const Position& pos) { +void TokenStreamSpecific::seekTo(const Position& pos) { TokenStreamAnyChars& anyChars = anyCharsAccess(); this->sourceUnits.setAddressOfNextCodeUnit(pos.buf, @@ -1576,13 +1576,13 @@ } template -bool TokenStreamSpecific::seek( +bool TokenStreamSpecific::seekTo( const Position& pos, const TokenStreamAnyChars& other) { if (!anyCharsAccess().srcCoords.fill(other.srcCoords)) { return false; } - seek(pos); + seekTo(pos); return true; } diff -Nru firefox-esr-68.4.1esr/js/src/frontend/TokenStream.h firefox-esr-68.5.0esr/js/src/frontend/TokenStream.h --- firefox-esr-68.4.1esr/js/src/frontend/TokenStream.h 2020-01-08 01:28:27.000000000 +0000 +++ firefox-esr-68.5.0esr/js/src/frontend/TokenStream.h 2020-02-07 00:27:04.000000000 +0000 @@ -735,6 +735,19 @@ } public: + void adoptState(TokenStreamAnyChars& other) { + // If |other| has fresh information from directives, overwrite any + // previously recorded directives. (There is no specification directing + // that last-in-source-order directive controls, sadly. We behave this way + // in the ordinary case, so we ought do so here too.) + if (auto& url = other.displayURL_) { + displayURL_ = std::move(url); + } + if (auto& url = other.sourceMapURL_) { + sourceMapURL_ = std::move(url); + } + } + // Compute error metadata for an error at no offset. void computeErrorMetadataNoOffset(ErrorMetadata* err); @@ -1427,6 +1440,14 @@ return atom; } + protected: + void adoptState(TokenStreamCharsShared& other) { + // The other stream's buffer may contain information for a + // gotten-then-ungotten token, that we must transfer into this stream so + // that token's final get behaves as desired. + charBuffer = std::move(other.charBuffer); + } + public: CharBuffer& getCharBuffer() { return charBuffer; } }; @@ -2004,6 +2025,10 @@ this->sourceUnits.codeUnitPtrAt(anyChars.currentToken().pos.end - 1); } + // |charBuffer| should be empty here, but we may as well code defensively. + MOZ_ASSERT(this->charBuffer.length() == 0); + this->charBuffer.clear(); + // Template literals normalize only '\r' and "\r\n" to '\n'; Unicode // separators don't need special handling. // https://tc39.github.io/ecma262/#sec-static-semantics-tv-and-trv @@ -2286,6 +2311,7 @@ public: using GeneralCharsBase::anyCharsAccess; using GeneralCharsBase::computeLineAndColumn; + using TokenStreamCharsShared::adoptState; private: using typename CharsBase::SourceUnits; @@ -2646,8 +2672,35 @@ MOZ_MUST_USE bool advance(size_t position); - void seek(const Position& pos); - MOZ_MUST_USE bool seek(const Position& pos, const TokenStreamAnyChars& other); + void seekTo(const Position& pos); + MOZ_MUST_USE bool seekTo(const Position& pos, + const TokenStreamAnyChars& other); + + void rewind(const Position& pos) { + MOZ_ASSERT(pos.buf <= this->sourceUnits.addressOfNextCodeUnit(), + "should be rewinding here"); + seekTo(pos); + } + + MOZ_MUST_USE bool rewind(const Position& pos, + const TokenStreamAnyChars& other) { + MOZ_ASSERT(pos.buf <= this->sourceUnits.addressOfNextCodeUnit(), + "should be rewinding here"); + return seekTo(pos, other); + } + + void fastForward(const Position& pos) { + MOZ_ASSERT(this->sourceUnits.addressOfNextCodeUnit() <= pos.buf, + "should be moving forward here"); + seekTo(pos); + } + + MOZ_MUST_USE bool fastForward(const Position& pos, + const TokenStreamAnyChars& other) { + MOZ_ASSERT(this->sourceUnits.addressOfNextCodeUnit() <= pos.buf, + "should be moving forward here"); + return seekTo(pos, other); + } const Unit* codeUnitPtrAt(size_t offset) const { return this->sourceUnits.codeUnitPtrAt(offset); diff -Nru firefox-esr-68.4.1esr/js/src/jit/MIR.h firefox-esr-68.5.0esr/js/src/jit/MIR.h --- firefox-esr-68.4.1esr/js/src/jit/MIR.h 2020-01-08 01:28:27.000000000 +0000 +++ firefox-esr-68.5.0esr/js/src/jit/MIR.h 2020-02-07 00:27:09.000000000 +0000 @@ -6667,8 +6667,6 @@ TRIVIAL_NEW_WRAPPERS jsbytecode* pc() const { return pc_; } - - AliasSet getAliasSet() const override { return AliasSet::None(); } }; class MModuleMetadata : public MNullaryInstruction { diff -Nru firefox-esr-68.4.1esr/layout/reftests/svg/mask-opacity-02-ref.svg firefox-esr-68.5.0esr/layout/reftests/svg/mask-opacity-02-ref.svg --- firefox-esr-68.4.1esr/layout/reftests/svg/mask-opacity-02-ref.svg 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-68.5.0esr/layout/reftests/svg/mask-opacity-02-ref.svg 2020-02-07 00:27:16.000000000 +0000 @@ -0,0 +1,5 @@ + + + diff -Nru firefox-esr-68.4.1esr/layout/reftests/svg/mask-opacity-02.svg firefox-esr-68.5.0esr/layout/reftests/svg/mask-opacity-02.svg --- firefox-esr-68.4.1esr/layout/reftests/svg/mask-opacity-02.svg 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-68.5.0esr/layout/reftests/svg/mask-opacity-02.svg 2020-02-07 00:27:16.000000000 +0000 @@ -0,0 +1,20 @@ + + Testcase for the combination of use, mask, opacity + + + + + + + + + + + + + + + + + diff -Nru firefox-esr-68.4.1esr/layout/reftests/svg/mask-opacity-03.svg firefox-esr-68.5.0esr/layout/reftests/svg/mask-opacity-03.svg --- firefox-esr-68.4.1esr/layout/reftests/svg/mask-opacity-03.svg 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-68.5.0esr/layout/reftests/svg/mask-opacity-03.svg 2020-02-07 00:27:16.000000000 +0000 @@ -0,0 +1,20 @@ + + Testcase for the combination of shape, mask, opacity + + + + + + + + + + + + + + + + + diff -Nru firefox-esr-68.4.1esr/layout/reftests/svg/mask-opacity-04.svg firefox-esr-68.5.0esr/layout/reftests/svg/mask-opacity-04.svg --- firefox-esr-68.4.1esr/layout/reftests/svg/mask-opacity-04.svg 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-68.5.0esr/layout/reftests/svg/mask-opacity-04.svg 2020-02-07 00:27:16.000000000 +0000 @@ -0,0 +1,20 @@ + + Testcase for the combination of use, mask, fill-opacity + + + + + + + + + + + + + + + + + diff -Nru firefox-esr-68.4.1esr/layout/reftests/svg/mask-opacity-05.svg firefox-esr-68.5.0esr/layout/reftests/svg/mask-opacity-05.svg --- firefox-esr-68.4.1esr/layout/reftests/svg/mask-opacity-05.svg 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-68.5.0esr/layout/reftests/svg/mask-opacity-05.svg 2020-02-07 00:27:16.000000000 +0000 @@ -0,0 +1,20 @@ + + Testcase for the combination of rect, mask, fill-opacity + + + + + + + + + + + + + + + + + diff -Nru firefox-esr-68.4.1esr/layout/reftests/svg/reftest.list firefox-esr-68.5.0esr/layout/reftests/svg/reftest.list --- firefox-esr-68.4.1esr/layout/reftests/svg/reftest.list 2020-01-08 01:28:30.000000000 +0000 +++ firefox-esr-68.5.0esr/layout/reftests/svg/reftest.list 2020-02-07 00:27:16.000000000 +0000 @@ -294,6 +294,10 @@ == mask-on-outflowElement-01a.html clipPath-on-outflowElement-01-ref.html == mask-on-outflowElement-01b.html clipPath-on-outflowElement-01-ref.html fuzzy(0-1,0-5000) == mask-opacity-01.svg mask-opacity-01-ref.svg +fuzzy(0-2,0-65536) == mask-opacity-02.svg mask-opacity-02-ref.svg +fuzzy(0-1,0-5000) == mask-opacity-03.svg mask-opacity-02-ref.svg +fuzzy(0-1,0-5000) == mask-opacity-04.svg mask-opacity-02-ref.svg +fuzzy(0-1,0-5000) == mask-opacity-05.svg mask-opacity-02-ref.svg != mask-root-svg.svg about:blank == mask-transformed-01.svg mask-transformed-01-ref.svg == mask-transformed-02.svg pass.svg diff -Nru firefox-esr-68.4.1esr/layout/style/contenteditable.css firefox-esr-68.5.0esr/layout/style/contenteditable.css --- firefox-esr-68.4.1esr/layout/style/contenteditable.css 2020-01-08 01:28:30.000000000 +0000 +++ firefox-esr-68.5.0esr/layout/style/contenteditable.css 2020-02-07 00:27:16.000000000 +0000 @@ -5,6 +5,14 @@ @namespace url(http://www.w3.org/1999/xhtml); /* set default namespace to HTML */ +/* Scroll-anchoring shouldn't work in any editable and scrollable elements when + user inserts something. +*/ +*|*:-moz-read-write:focus, +*|*:root:-moz-read-write { + overflow-anchor: none; +} + *|*::-moz-canvas { cursor: text; } diff -Nru firefox-esr-68.4.1esr/media/webrtc/signaling/src/media-conduit/AudioConduit.cpp firefox-esr-68.5.0esr/media/webrtc/signaling/src/media-conduit/AudioConduit.cpp --- firefox-esr-68.4.1esr/media/webrtc/signaling/src/media-conduit/AudioConduit.cpp 2020-01-08 01:28:30.000000000 +0000 +++ firefox-esr-68.5.0esr/media/webrtc/signaling/src/media-conduit/AudioConduit.cpp 2020-02-07 00:27:30.000000000 +0000 @@ -159,6 +159,7 @@ bool WebrtcAudioConduit::GetSendPacketTypeStats( webrtc::RtcpPacketTypeCounter* aPacketCounts) { ASSERT_ON_THREAD(mStsThread); + MutexAutoLock lock(mMutex); if (!mSendStream) { return false; } @@ -168,6 +169,7 @@ bool WebrtcAudioConduit::GetRecvPacketTypeStats( webrtc::RtcpPacketTypeCounter* aPacketCounts) { ASSERT_ON_THREAD(mStsThread); + MutexAutoLock lock(mMutex); if (!mEngineReceiving) { return false; } @@ -179,6 +181,7 @@ ASSERT_ON_THREAD(mStsThread); *jitterMs = 0; *cumulativeLost = 0; + MutexAutoLock lock(mMutex); if (!mRecvStream) { return false; } @@ -198,6 +201,7 @@ int64_t timestampTmp = 0; int64_t rttMsTmp = 0; bool res = false; + MutexAutoLock lock(mMutex); if (mSendChannelProxy) { res = mSendChannelProxy->GetRTCPReceiverStatistics( ×tampTmp, jitterMs, cumulativeLost, packetsReceived, bytesReceived, @@ -233,6 +237,7 @@ bool WebrtcAudioConduit::GetRTCPSenderReport(unsigned int* packetsSent, uint64_t* bytesSent) { ASSERT_ON_THREAD(mStsThread); + MutexAutoLock lock(mMutex); if (!mRecvChannelProxy) { return false; } diff -Nru firefox-esr-68.4.1esr/media/webrtc/trunk/webrtc/modules/video_capture/android/video_capture_android.cc firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/android/video_capture_android.cc --- firefox-esr-68.4.1esr/media/webrtc/trunk/webrtc/modules/video_capture/android/video_capture_android.cc 2020-01-08 01:28:30.000000000 +0000 +++ firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/android/video_capture_android.cc 2020-02-07 00:27:30.000000000 +0000 @@ -146,7 +146,7 @@ int32_t VideoCaptureAndroid::Init(const char* deviceUniqueIdUTF8) { const int nameLength = strlen(deviceUniqueIdUTF8); - if (nameLength >= kVideoCaptureUniqueNameLength) + if (nameLength >= kVideoCaptureUniqueNameSize) return -1; // Store the device name diff -Nru firefox-esr-68.4.1esr/media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc --- firefox-esr-68.4.1esr/media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc 2020-01-08 01:28:30.000000000 +0000 +++ firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc 2020-02-07 00:27:16.000000000 +0000 @@ -237,11 +237,11 @@ int32_t DeviceInfoLinux::GetDeviceName(uint32_t deviceNumber, char* deviceNameUTF8, - uint32_t deviceNameLength, + uint32_t deviceNameSize, char* deviceUniqueIdUTF8, - uint32_t deviceUniqueIdUTF8Length, + uint32_t deviceUniqueIdUTF8Size, char* /*productUniqueIdUTF8*/, - uint32_t /*productUniqueIdUTF8Length*/, + uint32_t /*productUniqueIdUTF8Size*/, pid_t* /*pid*/) { RTC_LOG(LS_INFO) << __FUNCTION__; @@ -280,10 +280,10 @@ close(fd); char cameraName[64]; - memset(deviceNameUTF8, 0, deviceNameLength); + memset(deviceNameUTF8, 0, deviceNameSize); memcpy(cameraName, cap.card, sizeof(cap.card)); - if (deviceNameLength >= strlen(cameraName)) { + if (deviceNameSize > strlen(cameraName)) { memcpy(deviceNameUTF8, cameraName, strlen(cameraName)); } else { RTC_LOG(LS_INFO) << "buffer passed is too small"; @@ -293,8 +293,8 @@ if (cap.bus_info[0] != 0) // may not available in all drivers { // copy device id - if (deviceUniqueIdUTF8Length >= strlen((const char*)cap.bus_info)) { - memset(deviceUniqueIdUTF8, 0, deviceUniqueIdUTF8Length); + if (deviceUniqueIdUTF8Size > strlen((const char*)cap.bus_info)) { + memset(deviceUniqueIdUTF8, 0, deviceUniqueIdUTF8Size); memcpy(deviceUniqueIdUTF8, cap.bus_info, strlen((const char*)cap.bus_info)); } else { @@ -304,8 +304,8 @@ } else { // if there's no bus info to use for uniqueId, invent one - and it has to be repeatable if (snprintf(deviceUniqueIdUTF8, - deviceUniqueIdUTF8Length, "fake_%u", device_index) >= - (int) deviceUniqueIdUTF8Length) + deviceUniqueIdUTF8Size, "fake_%u", device_index) >= + (int) deviceUniqueIdUTF8Size) { return -1; } @@ -320,7 +320,7 @@ const int32_t deviceUniqueIdUTF8Length = (int32_t)strlen((char*)deviceUniqueIdUTF8); - if (deviceUniqueIdUTF8Length > kVideoCaptureUniqueNameLength) { + if (deviceUniqueIdUTF8Length > kVideoCaptureUniqueNameSize) { RTC_LOG(LS_INFO) << "Device name too long"; return -1; } diff -Nru firefox-esr-68.4.1esr/media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.h firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.h --- firefox-esr-68.4.1esr/media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.h 2020-01-08 01:28:30.000000000 +0000 +++ firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.h 2020-02-07 00:27:16.000000000 +0000 @@ -34,11 +34,11 @@ virtual int32_t GetDeviceName( uint32_t deviceNumber, char* deviceNameUTF8, - uint32_t deviceNameLength, + uint32_t deviceNameSize, char* deviceUniqueIdUTF8, - uint32_t deviceUniqueIdUTF8Length, + uint32_t deviceUniqueIdUTF8Size, char* productUniqueIdUTF8=0, - uint32_t productUniqueIdUTF8Length=0, + uint32_t productUniqueIdUTF8Size=0, pid_t* pid=0); /* * Fills the membervariable _captureCapabilities with capabilites for the given device name. diff -Nru firefox-esr-68.4.1esr/media/webrtc/trunk/webrtc/modules/video_capture/objc/video_capture.mm firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/objc/video_capture.mm --- firefox-esr-68.4.1esr/media/webrtc/trunk/webrtc/modules/video_capture/objc/video_capture.mm 2020-01-08 01:28:30.000000000 +0000 +++ firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/objc/video_capture.mm 2020-02-07 00:27:31.000000000 +0000 @@ -51,7 +51,7 @@ new rtc::RefCountedObject()); const int32_t name_length = strlen(deviceUniqueIdUTF8); - if (name_length > kVideoCaptureUniqueNameLength) + if (name_length >= kVideoCaptureUniqueNameSize) return nullptr; capture_module->_deviceUniqueId = new char[name_length + 1]; diff -Nru firefox-esr-68.4.1esr/media/webrtc/trunk/webrtc/modules/video_capture/video_capture.h firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/video_capture.h --- firefox-esr-68.4.1esr/media/webrtc/trunk/webrtc/modules/video_capture/video_capture.h 2020-01-08 01:28:30.000000000 +0000 +++ firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/video_capture.h 2020-02-07 00:27:23.000000000 +0000 @@ -106,11 +106,11 @@ virtual int32_t GetDeviceName( uint32_t deviceNumber, char* deviceNameUTF8, - uint32_t deviceNameLength, + uint32_t deviceNameSize, char* deviceUniqueIdUTF8, - uint32_t deviceUniqueIdUTF8Length, + uint32_t deviceUniqueIdUTF8Size, char* productUniqueIdUTF8 = 0, - uint32_t productUniqueIdUTF8Length = 0, + uint32_t productUniqueIdUTF8Size = 0, pid_t* pid = 0) = 0; diff -Nru firefox-esr-68.4.1esr/media/webrtc/trunk/webrtc/modules/video_capture/video_capture_defines.h firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/video_capture_defines.h --- firefox-esr-68.4.1esr/media/webrtc/trunk/webrtc/modules/video_capture/video_capture_defines.h 2020-01-08 01:28:30.000000000 +0000 +++ firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/video_capture_defines.h 2020-02-07 00:27:16.000000000 +0000 @@ -26,9 +26,8 @@ #define NULL 0 #endif -enum {kVideoCaptureUniqueNameLength =1024}; //Max unique capture device name lenght -enum {kVideoCaptureDeviceNameLength =256}; //Max capture device name lenght -enum {kVideoCaptureProductIdLength =128}; //Max product id length +enum {kVideoCaptureUniqueNameSize =1024}; //Max unique capture device name length +enum {kVideoCaptureProductIdSize =128}; //Max product id length struct VideoCaptureCapability { diff -Nru firefox-esr-68.4.1esr/media/webrtc/trunk/webrtc/modules/video_capture/windows/device_info_ds.cc firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/windows/device_info_ds.cc --- firefox-esr-68.4.1esr/media/webrtc/trunk/webrtc/modules/video_capture/windows/device_info_ds.cc 2020-01-08 01:28:30.000000000 +0000 +++ firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/windows/device_info_ds.cc 2020-02-07 00:27:16.000000000 +0000 @@ -161,28 +161,28 @@ int32_t DeviceInfoDS::GetDeviceName(uint32_t deviceNumber, char* deviceNameUTF8, - uint32_t deviceNameLength, + uint32_t deviceNameSize, char* deviceUniqueIdUTF8, - uint32_t deviceUniqueIdUTF8Length, + uint32_t deviceUniqueIdUTF8Size, char* productUniqueIdUTF8, - uint32_t productUniqueIdUTF8Length, + uint32_t productUniqueIdUTF8Size, pid_t* pid) { ReadLockScoped cs(_apiLock); const int32_t result = GetDeviceInfo( - deviceNumber, deviceNameUTF8, deviceNameLength, deviceUniqueIdUTF8, - deviceUniqueIdUTF8Length, productUniqueIdUTF8, productUniqueIdUTF8Length, + deviceNumber, deviceNameUTF8, deviceNameSize, deviceUniqueIdUTF8, + deviceUniqueIdUTF8Size, productUniqueIdUTF8, productUniqueIdUTF8Size, pid); return result > (int32_t)deviceNumber ? 0 : -1; } int32_t DeviceInfoDS::GetDeviceInfo(uint32_t deviceNumber, char* deviceNameUTF8, - uint32_t deviceNameLength, + uint32_t deviceNameSize, char* deviceUniqueIdUTF8, - uint32_t deviceUniqueIdUTF8Length, + uint32_t deviceUniqueIdUTF8Size, char* productUniqueIdUTF8, - uint32_t productUniqueIdUTF8Length, + uint32_t productUniqueIdUTF8Size, pid_t* pid) { // enumerate all video capture devices @@ -218,10 +218,10 @@ // Found a valid device. if (index == static_cast(deviceNumber)) { int convResult = 0; - if (deviceNameLength > 0) { + if (deviceNameSize > 0) { convResult = WideCharToMultiByte(CP_UTF8, 0, varName.bstrVal, -1, (char*)deviceNameUTF8, - deviceNameLength, NULL, NULL); + deviceNameSize, NULL, NULL); if (convResult == 0) { RTC_LOG(LS_INFO) << "Failed to convert device name to UTF8, " << "error = " << GetLastError(); @@ -229,10 +229,10 @@ return -1; } } - if (deviceUniqueIdUTF8Length > 0) { + if (deviceUniqueIdUTF8Size > 0) { hr = pBag->Read(L"DevicePath", &varName, 0); if (FAILED(hr)) { - strncpy_s((char*)deviceUniqueIdUTF8, deviceUniqueIdUTF8Length, + strncpy_s((char*)deviceUniqueIdUTF8, deviceUniqueIdUTF8Size, (char*)deviceNameUTF8, convResult); RTC_LOG(LS_INFO) << "Failed to get " << "deviceUniqueIdUTF8 using " @@ -240,7 +240,7 @@ } else { convResult = WideCharToMultiByte( CP_UTF8, 0, varName.bstrVal, -1, (char*)deviceUniqueIdUTF8, - deviceUniqueIdUTF8Length, NULL, NULL); + deviceUniqueIdUTF8Size, NULL, NULL); if (convResult == 0) { RTC_LOG(LS_INFO) << "Failed to convert device " @@ -248,9 +248,9 @@ RELEASE_AND_CLEAR(_dsMonikerDevEnum); return -1; } - if (productUniqueIdUTF8 && productUniqueIdUTF8Length > 0) { + if (productUniqueIdUTF8 && productUniqueIdUTF8Size > 0) { GetProductId(deviceUniqueIdUTF8, productUniqueIdUTF8, - productUniqueIdUTF8Length); + productUniqueIdUTF8Size); } } } @@ -263,7 +263,7 @@ pM->Release(); } } - if (deviceNameLength) { + if (deviceNameSize) { RTC_LOG(LS_INFO) << __FUNCTION__ << ": deviceName: " << deviceNameUTF8; } RELEASE_AND_CLEAR(_dsMonikerDevEnum); @@ -272,10 +272,10 @@ IBaseFilter* DeviceInfoDS::GetDeviceFilter(const char* deviceUniqueIdUTF8, char* productUniqueIdUTF8, - uint32_t productUniqueIdUTF8Length) { + uint32_t productUniqueIdUTF8Size) { const int32_t deviceUniqueIdUTF8Length = (int32_t)strlen( (char*)deviceUniqueIdUTF8); // UTF8 is also NULL terminated - if (deviceUniqueIdUTF8Length > kVideoCaptureUniqueNameLength) { + if (deviceUniqueIdUTF8Length >= kVideoCaptureUniqueNameSize) { RTC_LOG(LS_INFO) << "Device name too long"; return NULL; } @@ -330,10 +330,10 @@ } if (productUniqueIdUTF8 && - productUniqueIdUTF8Length > 0) // Get the device name + productUniqueIdUTF8Size > 0) // Get the device name { GetProductId(deviceUniqueIdUTF8, productUniqueIdUTF8, - productUniqueIdUTF8Length); + productUniqueIdUTF8Size); } } } @@ -368,16 +368,16 @@ const int32_t deviceUniqueIdUTF8Length = (int32_t)strlen((char*)deviceUniqueIdUTF8); - if (deviceUniqueIdUTF8Length > kVideoCaptureUniqueNameLength) { + if (deviceUniqueIdUTF8Length >= kVideoCaptureUniqueNameSize) { RTC_LOG(LS_INFO) << "Device name too long"; return -1; } RTC_LOG(LS_INFO) << "CreateCapabilityMap called for device " << deviceUniqueIdUTF8; - char productId[kVideoCaptureProductIdLength]; + char productId[kVideoCaptureProductIdSize]; IBaseFilter* captureDevice = DeviceInfoDS::GetDeviceFilter( - deviceUniqueIdUTF8, productId, kVideoCaptureProductIdLength); + deviceUniqueIdUTF8, productId, sizeof(productId)); if (!captureDevice) return -1; IPin* outputCapturePin = GetOutputPin(captureDevice, GUID_NULL); @@ -616,11 +616,11 @@ */ void DeviceInfoDS::GetProductId(const char* devicePath, char* productUniqueIdUTF8, - uint32_t productUniqueIdUTF8Length) { + uint32_t productUniqueIdUTF8Size) { *productUniqueIdUTF8 = '\0'; char* startPos = strstr((char*)devicePath, "\\\\?\\"); if (!startPos) { - strncpy_s((char*)productUniqueIdUTF8, productUniqueIdUTF8Length, "", 1); + strncpy_s((char*)productUniqueIdUTF8, productUniqueIdUTF8Size, "", 1); RTC_LOG(LS_INFO) << "Failed to get the product Id"; return; } @@ -628,19 +628,19 @@ char* pos = strchr(startPos, '&'); if (!pos || pos >= (char*)devicePath + strlen((char*)devicePath)) { - strncpy_s((char*)productUniqueIdUTF8, productUniqueIdUTF8Length, "", 1); + strncpy_s((char*)productUniqueIdUTF8, productUniqueIdUTF8Size, "", 1); RTC_LOG(LS_INFO) << "Failed to get the product Id"; return; } // Find the second occurrence. pos = strchr(pos + 1, '&'); uint32_t bytesToCopy = (uint32_t)(pos - startPos); - if (pos && (bytesToCopy <= productUniqueIdUTF8Length) && - bytesToCopy <= kVideoCaptureProductIdLength) { - strncpy_s((char*)productUniqueIdUTF8, productUniqueIdUTF8Length, + if (pos && (bytesToCopy < productUniqueIdUTF8Size) && + bytesToCopy < kVideoCaptureProductIdSize) { + strncpy_s((char*)productUniqueIdUTF8, productUniqueIdUTF8Size, (char*)startPos, bytesToCopy); } else { - strncpy_s((char*)productUniqueIdUTF8, productUniqueIdUTF8Length, "", 1); + strncpy_s((char*)productUniqueIdUTF8, productUniqueIdUTF8Size, "", 1); RTC_LOG(LS_INFO) << "Failed to get the product Id"; } } diff -Nru firefox-esr-68.4.1esr/media/webrtc/trunk/webrtc/modules/video_capture/windows/video_capture_ds.cc firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/windows/video_capture_ds.cc --- firefox-esr-68.4.1esr/media/webrtc/trunk/webrtc/modules/video_capture/windows/video_capture_ds.cc 2020-01-08 01:28:30.000000000 +0000 +++ firefox-esr-68.5.0esr/media/webrtc/trunk/webrtc/modules/video_capture/windows/video_capture_ds.cc 2020-02-07 00:27:23.000000000 +0000 @@ -59,7 +59,7 @@ int32_t VideoCaptureDS::Init(const char* deviceUniqueIdUTF8) { const int32_t nameLength = (int32_t)strlen((char*)deviceUniqueIdUTF8); - if (nameLength > kVideoCaptureUniqueNameLength) + if (nameLength >= kVideoCaptureUniqueNameSize) return -1; // Store the device name diff -Nru firefox-esr-68.4.1esr/mobile/android/app/findbugs-exclude.xml firefox-esr-68.5.0esr/mobile/android/app/findbugs-exclude.xml --- firefox-esr-68.4.1esr/mobile/android/app/findbugs-exclude.xml 2020-01-08 01:28:30.000000000 +0000 +++ firefox-esr-68.5.0esr/mobile/android/app/findbugs-exclude.xml 2020-02-07 00:27:23.000000000 +0000 @@ -57,6 +57,12 @@ + + + + + + diff -Nru firefox-esr-68.4.1esr/mobile/android/app/src/main/res/drawable/as_banner_background_rounded.xml firefox-esr-68.5.0esr/mobile/android/app/src/main/res/drawable/as_banner_background_rounded.xml --- firefox-esr-68.4.1esr/mobile/android/app/src/main/res/drawable/as_banner_background_rounded.xml 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-68.5.0esr/mobile/android/app/src/main/res/drawable/as_banner_background_rounded.xml 2020-02-07 00:27:16.000000000 +0000 @@ -0,0 +1,11 @@ + + + + + + + diff -Nru firefox-esr-68.4.1esr/mobile/android/app/src/main/res/drawable/as_signin_background_round.xml firefox-esr-68.5.0esr/mobile/android/app/src/main/res/drawable/as_signin_background_round.xml --- firefox-esr-68.4.1esr/mobile/android/app/src/main/res/drawable/as_signin_background_round.xml 2020-01-08 01:28:30.000000000 +0000 +++ firefox-esr-68.5.0esr/mobile/android/app/src/main/res/drawable/as_signin_background_round.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ - - - - - - - diff -Nru firefox-esr-68.4.1esr/mobile/android/app/src/main/res/layout/activity_stream_fxa_banner.xml firefox-esr-68.5.0esr/mobile/android/app/src/main/res/layout/activity_stream_fxa_banner.xml --- firefox-esr-68.4.1esr/mobile/android/app/src/main/res/layout/activity_stream_fxa_banner.xml 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-68.5.0esr/mobile/android/app/src/main/res/layout/activity_stream_fxa_banner.xml 2020-02-07 00:27:16.000000000 +0000 @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + +