Version in base suite: 115.7.0esr-1~deb11u1 Base version: firefox-esr_115.7.0esr-1~deb11u1 Target version: firefox-esr_115.9.0esr-1~deb11u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/f/firefox-esr/firefox-esr_115.7.0esr-1~deb11u1.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/f/firefox-esr/firefox-esr_115.9.0esr-1~deb11u1.dsc /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/build/pgo/certs/cert9.db |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/build/pgo/certs/key4.db |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/build/pgo/certs/mochitest.client |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/config/external/icu/data/icudt73l.dat |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/be/metaZones.res |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/be/timezoneTypes.res |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/be/windowsZones.res |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/be/zoneinfo64.res |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/ee/metaZones.res |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/ee/timezoneTypes.res |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/ee/windowsZones.res |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/ee/zoneinfo64.res |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/le/metaZones.res |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/le/timezoneTypes.res |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/le/windowsZones.res |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/le/zoneinfo64.res |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/netwerk/test/unit/client-cert.p12 |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.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/dIvyVDnrPl/firefox-esr-115.9.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/dIvyVDnrPl/firefox-esr-115.9.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/dIvyVDnrPl/firefox-esr-115.9.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/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1_p7-1.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1_p7-256.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.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/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-256_p7-1.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-256_p7-256.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.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/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1-256_p7-1.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1-256_p7-256.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1_p7-1-256.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1_p7-1.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1_p7-256.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-256_p7-1-256.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-256_p7-1.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-256_p7-256.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.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/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1-256_p7-1.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1-256_p7-256.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1_p7-1-256.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1_p7-1.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1_p7-256.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-256_p7-1-256.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-256_p7-1.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-256_p7-256.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/big_manifest.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/cose_int_signed_with_pkcs7.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/cose_multiple_signed_with_pkcs7.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/cose_signed_with_pkcs7.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/cose_tampered_good_pkcs7.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/empty_signerInfos.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/huge_manifest.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/only_cose_multiple_signed.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/only_cose_signed.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/unknown_issuer_app.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/unsigned_app.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/validity_expired.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_signed_apps/validity_not_yet_valid.zip |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/cli-32.exe |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/cli-64.exe |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/cli-arm64.exe |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/cli.exe |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/gui-32.exe |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/gui-64.exe |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/gui-arm64.exe |binary /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/gui.exe |binary firefox-esr-115.9.0esr/CLOBBER | 2 firefox-esr-115.9.0esr/Cargo.lock | 12 firefox-esr-115.9.0esr/accessible/base/EventQueue.cpp | 8 firefox-esr-115.9.0esr/accessible/base/EventQueue.h | 6 firefox-esr-115.9.0esr/accessible/base/NotificationController.cpp | 67 firefox-esr-115.9.0esr/accessible/generic/HyperTextAccessible.cpp | 11 firefox-esr-115.9.0esr/accessible/generic/LocalAccessible.h | 2 firefox-esr-115.9.0esr/browser/actors/PromptParent.sys.mjs | 2 firefox-esr-115.9.0esr/browser/base/content/browser-fullScreenAndPointerLock.js | 16 firefox-esr-115.9.0esr/browser/base/content/test/fullscreen/browser_fullscreen_permissions_prompt.js | 130 firefox-esr-115.9.0esr/browser/base/content/test/popupNotifications/browser_popupNotification_security_delay.js | 101 firefox-esr-115.9.0esr/browser/components/enterprisepolicies/Policies.sys.mjs | 31 firefox-esr-115.9.0esr/browser/components/enterprisepolicies/schemas/policies-schema.json | 4 firefox-esr-115.9.0esr/browser/components/enterprisepolicies/tests/xpcshell/head.js | 5 firefox-esr-115.9.0esr/browser/components/enterprisepolicies/tests/xpcshell/test_preferences.js | 11 firefox-esr-115.9.0esr/browser/components/search/schema/search-telemetry-schema.json | 95 firefox-esr-115.9.0esr/browser/config/version.txt | 2 firefox-esr-115.9.0esr/browser/config/version_display.txt | 2 firefox-esr-115.9.0esr/browser/extensions/formautofill/test/fixtures/heuristics_cc_exp.html | 2 firefox-esr-115.9.0esr/build/workspace-hack/Cargo.toml | 1 firefox-esr-115.9.0esr/config/milestone.txt | 2 firefox-esr-115.9.0esr/debian/changelog | 19 firefox-esr-115.9.0esr/debian/patches/debian-hacks/Relax-nodejs-minimum-version.patch | 12 firefox-esr-115.9.0esr/debian/patches/debian-hacks/Set-DPI-to-system-settings.patch | 2 firefox-esr-115.9.0esr/dom/base/PointerLockManager.cpp | 4 firefox-esr-115.9.0esr/dom/base/nsContentUtils.cpp | 104 firefox-esr-115.9.0esr/dom/bindings/mozwebidlcodegen/test/test_mozwebidlcodegen.py | 5 firefox-esr-115.9.0esr/dom/canvas/CanvasUtils.cpp | 12 firefox-esr-115.9.0esr/dom/canvas/ClientWebGLContext.cpp | 12 firefox-esr-115.9.0esr/dom/canvas/HostWebGLContext.h | 9 firefox-esr-115.9.0esr/dom/canvas/WebGLMethodDispatcher.h | 1 firefox-esr-115.9.0esr/dom/canvas/WebGLQueueParamTraits.h | 19 firefox-esr-115.9.0esr/dom/canvas/WebGLTypes.h | 30 firefox-esr-115.9.0esr/dom/chrome-webidl/WindowGlobalActors.webidl | 5 firefox-esr-115.9.0esr/dom/events/EventStateManager.cpp | 21 firefox-esr-115.9.0esr/dom/events/EventStateManager.h | 9 firefox-esr-115.9.0esr/dom/fetch/FetchDriver.cpp | 1 firefox-esr-115.9.0esr/dom/fetch/FetchService.cpp | 36 firefox-esr-115.9.0esr/dom/indexedDB/SafeRefPtr.h | 3 firefox-esr-115.9.0esr/dom/ipc/ContentParent.cpp | 10 firefox-esr-115.9.0esr/dom/ipc/ContentParent.h | 14 firefox-esr-115.9.0esr/dom/ipc/PContent.ipdl | 20 firefox-esr-115.9.0esr/dom/ipc/WindowGlobalParent.cpp | 17 firefox-esr-115.9.0esr/dom/ipc/WindowGlobalParent.h | 2 firefox-esr-115.9.0esr/dom/media/platforms/wrappers/MediaChangeMonitor.cpp | 27 firefox-esr-115.9.0esr/dom/media/platforms/wrappers/MediaChangeMonitor.h | 2 firefox-esr-115.9.0esr/dom/media/test/mochitest_bugs.ini | 1 firefox-esr-115.9.0esr/dom/streams/ReadableStreamPipeTo.cpp | 2 firefox-esr-115.9.0esr/dom/webscheduling/WebTaskScheduler.h | 2 firefox-esr-115.9.0esr/dom/webscheduling/WebTaskSchedulerWorker.cpp | 13 firefox-esr-115.9.0esr/dom/webscheduling/WebTaskSchedulerWorker.h | 2 firefox-esr-115.9.0esr/dom/workers/WorkerPrivate.cpp | 4 firefox-esr-115.9.0esr/dom/workers/WorkerRunnable.cpp | 28 firefox-esr-115.9.0esr/gfx/2d/DrawTarget.cpp | 5 firefox-esr-115.9.0esr/gfx/2d/ScaledFontBase.cpp | 16 firefox-esr-115.9.0esr/gfx/gl/GLContext.cpp | 6 firefox-esr-115.9.0esr/gfx/gl/GLContext.h | 2 firefox-esr-115.9.0esr/gfx/gl/GLContextProviderCGL.mm | 2 firefox-esr-115.9.0esr/gfx/gl/GLContextProviderEAGL.mm | 2 firefox-esr-115.9.0esr/gfx/gl/GLContextProviderWGL.cpp | 10 firefox-esr-115.9.0esr/gfx/gl/GLLibraryEGL.h | 8 firefox-esr-115.9.0esr/gfx/gl/GLXLibrary.h | 3 firefox-esr-115.9.0esr/gfx/ipc/InProcessCompositorSession.cpp | 5 firefox-esr-115.9.0esr/gfx/ipc/RemoteCompositorSession.cpp | 5 firefox-esr-115.9.0esr/gfx/thebes/SharedFontList-impl.h | 6 firefox-esr-115.9.0esr/gfx/thebes/SharedFontList.cpp | 94 firefox-esr-115.9.0esr/gfx/thebes/SharedFontList.h | 8 firefox-esr-115.9.0esr/gfx/thebes/gfxDWriteFontList.cpp | 12 firefox-esr-115.9.0esr/gfx/thebes/gfxDWriteFonts.cpp | 12 firefox-esr-115.9.0esr/gfx/thebes/gfxFT2FontList.cpp | 2 firefox-esr-115.9.0esr/gfx/thebes/gfxFcPlatformFontList.cpp | 2 firefox-esr-115.9.0esr/gfx/thebes/gfxFontEntry.cpp | 3 firefox-esr-115.9.0esr/gfx/thebes/gfxFontEntry.h | 1 firefox-esr-115.9.0esr/gfx/thebes/gfxMacPlatformFontList.h | 30 firefox-esr-115.9.0esr/gfx/thebes/gfxMacPlatformFontList.mm | 23 firefox-esr-115.9.0esr/gfx/thebes/gfxPlatformFontList.cpp | 76 firefox-esr-115.9.0esr/gfx/thebes/gfxPlatformFontList.h | 8 firefox-esr-115.9.0esr/gfx/thebes/gfxUserFontSet.cpp | 13 firefox-esr-115.9.0esr/intl/tzdata/GIT-INFO | 6 firefox-esr-115.9.0esr/intl/tzdata/VERSION | 2 firefox-esr-115.9.0esr/intl/tzdata/source/metaZones.txt | 143 firefox-esr-115.9.0esr/intl/tzdata/source/timezoneTypes.txt | 56 firefox-esr-115.9.0esr/intl/tzdata/source/windowsZones.txt | 30 firefox-esr-115.9.0esr/intl/tzdata/source/zoneinfo64.txt | 76 firefox-esr-115.9.0esr/ipc/glue/GeckoChildProcessHost.cpp | 11 firefox-esr-115.9.0esr/ipc/glue/GeckoChildProcessHost.h | 1 firefox-esr-115.9.0esr/js/src/builtin/intl/TimeZoneDataGenerated.h | 13 firefox-esr-115.9.0esr/js/src/jit-test/tests/ion/bug1874502.js | 8 firefox-esr-115.9.0esr/js/src/jit/BaselineBailouts.cpp | 8 firefox-esr-115.9.0esr/js/src/jit/MacroAssembler.cpp | 4 firefox-esr-115.9.0esr/js/src/jit/arm/MacroAssembler-arm.cpp | 26 firefox-esr-115.9.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_backward_links.js | 2 firefox-esr-115.9.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_backzone.js | 3 firefox-esr-115.9.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_backzone_links.js | 2 firefox-esr-115.9.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_notbackward_links.js | 2 firefox-esr-115.9.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_version.js | 4 firefox-esr-115.9.0esr/js/src/tests/non262/Intl/supportedValuesOf-timeZones-canonical.js | 2 firefox-esr-115.9.0esr/layout/generic/ReflowInput.cpp | 3 firefox-esr-115.9.0esr/layout/generic/ReflowInput.h | 5 firefox-esr-115.9.0esr/layout/generic/nsColumnSetFrame.cpp | 2 firefox-esr-115.9.0esr/layout/generic/nsImageMap.cpp | 4 firefox-esr-115.9.0esr/layout/generic/test/file_bug514732_window.xhtml | 17 firefox-esr-115.9.0esr/layout/reftests/css-grid/grid-repeat-auto-fill-fit-001-ref.html | 2 firefox-esr-115.9.0esr/layout/reftests/css-grid/grid-repeat-auto-fill-fit-001.html | 2 firefox-esr-115.9.0esr/layout/reftests/css-grid/grid-repeat-auto-fill-fit-010-ref.html | 2 firefox-esr-115.9.0esr/layout/reftests/css-grid/grid-repeat-auto-fill-fit-010.html | 2 firefox-esr-115.9.0esr/layout/reftests/css-grid/grid-repeat-auto-fill-fit-011.html | 2 firefox-esr-115.9.0esr/layout/style/FontFaceImpl.cpp | 8 firefox-esr-115.9.0esr/layout/tables/nsTableCellFrame.cpp | 6 firefox-esr-115.9.0esr/layout/xul/nsXULPopupManager.cpp | 70 firefox-esr-115.9.0esr/layout/xul/nsXULPopupManager.h | 11 firefox-esr-115.9.0esr/media/gmp-clearkey/0.1/ClearKeyUtils.cpp | 16 firefox-esr-115.9.0esr/modules/libpref/init/StaticPrefList.yaml | 11 firefox-esr-115.9.0esr/mozglue/misc/RuntimeExceptionModule.cpp | 18 firefox-esr-115.9.0esr/netwerk/dns/DNSRequestChild.cpp | 40 firefox-esr-115.9.0esr/netwerk/dns/effective_tld_names.dat | 255 firefox-esr-115.9.0esr/netwerk/dns/prepare_tlds.py | 6 firefox-esr-115.9.0esr/netwerk/ipc/DocumentLoadListener.cpp | 4 firefox-esr-115.9.0esr/netwerk/ipc/NeckoCommon.cpp | 18 firefox-esr-115.9.0esr/netwerk/ipc/NeckoCommon.h | 4 firefox-esr-115.9.0esr/netwerk/protocol/http/EarlyHintPreloader.cpp | 6 firefox-esr-115.9.0esr/netwerk/protocol/http/Http2Compression.cpp | 33 firefox-esr-115.9.0esr/netwerk/protocol/http/Http2Compression.h | 9 firefox-esr-115.9.0esr/netwerk/protocol/http/Http2Session.cpp | 4 firefox-esr-115.9.0esr/netwerk/protocol/http/Http2StreamTunnel.cpp | 4 firefox-esr-115.9.0esr/netwerk/protocol/http/Http2StreamTunnel.h | 2 firefox-esr-115.9.0esr/netwerk/protocol/http/HttpChannelChild.cpp | 49 firefox-esr-115.9.0esr/netwerk/protocol/http/HttpChannelChild.h | 10 firefox-esr-115.9.0esr/netwerk/protocol/http/TlsHandshaker.cpp | 18 firefox-esr-115.9.0esr/netwerk/protocol/http/nsHttpAtomList.h | 3 firefox-esr-115.9.0esr/netwerk/protocol/http/nsHttpConnection.cpp | 29 firefox-esr-115.9.0esr/netwerk/protocol/http/nsHttpConnection.h | 3 firefox-esr-115.9.0esr/netwerk/protocol/http/nsITlsHandshakeListener.idl | 2 firefox-esr-115.9.0esr/netwerk/streamconv/converters/nsMultiMixedConv.cpp | 4 firefox-esr-115.9.0esr/netwerk/test/unit/test_client_auth_with_proxy.js | 185 firefox-esr-115.9.0esr/netwerk/test/unit/test_websocket_server.js | 50 firefox-esr-115.9.0esr/netwerk/test/unit/test_websocket_server_multiclient.js | 9 firefox-esr-115.9.0esr/netwerk/test/unit/xpcshell.ini | 6 firefox-esr-115.9.0esr/netwerk/wifi/gtest/moz.build | 2 firefox-esr-115.9.0esr/parser/html/nsHtml5TreeOperation.cpp | 3 firefox-esr-115.9.0esr/python/mach/mach/main.py | 8 firefox-esr-115.9.0esr/python/mach/mach/test/test_entry_point.py | 4 firefox-esr-115.9.0esr/python/mozboot/mozboot/base.py | 7 firefox-esr-115.9.0esr/python/mozboot/mozboot/bootstrap.py | 16 firefox-esr-115.9.0esr/python/mozboot/mozboot/debian.py | 7 firefox-esr-115.9.0esr/python/mozboot/setup.py | 5 firefox-esr-115.9.0esr/python/mozbuild/mozbuild/mach_commands.py | 6 firefox-esr-115.9.0esr/python/mozbuild/mozbuild/nodeutil.py | 12 firefox-esr-115.9.0esr/python/mozrelease/mozrelease/versions.py | 56 firefox-esr-115.9.0esr/python/mozrelease/test/test_versions.py | 21 firefox-esr-115.9.0esr/python/sites/mach.txt | 2 firefox-esr-115.9.0esr/python/sites/wpt.txt | 2 firefox-esr-115.9.0esr/security/manager/ssl/NSSSocketControl.cpp | 15 firefox-esr-115.9.0esr/security/manager/ssl/StaticHPKPins.h | 2 firefox-esr-115.9.0esr/security/manager/ssl/nsNSSComponent.cpp | 16 firefox-esr-115.9.0esr/security/manager/ssl/nsNSSComponent.h | 3 firefox-esr-115.9.0esr/security/manager/ssl/nsSTSPreloadList.inc | 8763 ++++++---- firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/client-cert-via-intermediate.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/client-cert-with-ocsp-signing.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/code-ee.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/ee-from-expired-ca.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/ee-from-untrusted-ca.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/email-ee.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/has-cn.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/has-empty-subject.pem | 14 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/has-non-empty-subject.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/has-o.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/has-ou.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/intermediate.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/invalid.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/longOID.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/md5-ee.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/pgo-ca-all-usages.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/pgo-ca-regular-usages.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/revoked.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/ssl-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/unknown-issuer.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/mochitest/browser/untrusted-ca.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/badSubjectAltNames.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/beforeEpochIssuer.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/ca-used-as-end-entity.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/default-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/ee-from-missing-intermediate.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/ee-imminently-distrusted.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/eeIssuedByNonCA.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/eeIssuedByV1Cert.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/emptyIssuerName.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/emptyNameCA.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/ev-test-intermediate.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/ev-test.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/expiredissuer.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/idn-certificate.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/inadequateKeySizeEE.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/inadequatekeyusage-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/ipAddressAsDNSNameInSAN.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/md5signature.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/mismatch-untrusted.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/mismatch.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/mismatchCN.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/mitm.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/noValidNames.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/notYetValidIssuer.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/nsCertTypeCritical.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/nsCertTypeCriticalWithExtKeyUsage.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/nsCertTypeNotCritical.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/other-issuer-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/self-signed-EE-with-cA-true.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/selfsigned-inadequateEKU.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/selfsigned.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/test-ca.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/unknownissuer.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/untrustedissuer.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/bad_certs/v1Cert.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/ocsp_certs/ca-used-as-end-entity.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/ocsp_certs/default-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/ocsp_certs/delegatedSHA1Signer.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/ocsp_certs/delegatedSigner.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerFromIntermediate.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerKeyUsageCrlSigning.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerNoExtKeyUsage.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerWrongExtKeyUsage.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/ocsp_certs/multi-tls-feature-bad-ee.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/ocsp_certs/multi-tls-feature-good-ee.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/ocsp_certs/must-staple-ee-with-must-staple-int.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/ocsp_certs/must-staple-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/ocsp_certs/must-staple-missing-ee.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/ocsp_certs/ocspEEWithIntermediate.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/ocsp_certs/ocspOtherEndEntity.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/ocsp_certs/rsa-1016-keysizeDelegatedSigner.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/ocsp_certs/test-ca.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/ocsp_certs/test-multi-tls-feature-int.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/ocsp_certs/test-must-staple-int.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_certDB_import/emailEE.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_certDB_import/importedCA.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-CA.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-SA-CA.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-SA-OCSP.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-SA-nsSGC.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-SA.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-int-CA.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA-CA.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA-OCSP.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA-nsSGC.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_eku/ee-nsSGC.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_eku/int-CA.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_eku/int-SA-CA.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_eku/int-SA-OCSP.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_eku/int-SA-nsSGC.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_eku/int-SA.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_embedded_null/ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNull.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNullCNAndSAN.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNullSAN.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNullSAN2.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ca-all-usages.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ca-missing-keyCertSign.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ca-no-keyUsage-extension.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-and-keyEncipherment-ca-all-usages.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-and-keyEncipherment-ca-missing-keyCertSign.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-and-keyEncipherment-ca-no-keyUsage-extension.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-only-ca-all-usages.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-only-ca-missing-keyCertSign.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-only-ca-no-keyUsage-extension.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyEncipherment-only-ca-all-usages.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyEncipherment-only-ca-missing-keyCertSign.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyEncipherment-only-ca-no-keyUsage-extension.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-no-keyUsage-extension-ca-all-usages.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-no-keyUsage-extension-ca-missing-keyCertSign.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-no-keyUsage-extension-ca-no-keyUsage-extension.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_override_read.js | 6 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_signatures/ca-rsa.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_signatures/ca-secp384r1.pem | 10 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_signatures/ee-rsa-direct.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_signatures/ee-rsa.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_signatures/ee-secp384r1-direct.pem | 10 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_signatures/ee-secp384r1.pem | 10 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_signatures/int-rsa.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_signatures/int-secp384r1.pem | 10 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_trust/ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_trust/ee.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_trust/int.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_utf8/certificateToAlter.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v1-BC-cA_ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v1-BC-not-cA_ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v1-noBC_ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v2-BC-cA_ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v2-BC-not-cA_ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v2-noBC_ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v3-BC-cA_ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v3-BC-not-cA_ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v3-noBC_ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v4-BC-cA_ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v4-BC-not-cA_ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee-v4-noBC_ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v1-BC-cA.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v1-BC-not-cA.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v1-noBC.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v2-BC-cA.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v2-BC-not-cA.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v2-noBC.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v3-BC-cA.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v3-BC-not-cA.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v3-noBC.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v4-BC-cA.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v4-BC-not-cA.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ee_int-v4-noBC.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v1-BC-cA_ca.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v1-BC-not-cA_ca.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v1-noBC_ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v2-BC-cA_ca.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v2-BC-not-cA_ca.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v2-noBC_ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v3-BC-cA_ca.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v3-BC-not-cA_ca.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v3-noBC_ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v4-BC-cA_ca.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v4-BC-not-cA_ca.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/int-v4-noBC_ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v1-BC-cA.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v1-BC-not-cA.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v1-noBC.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v2-BC-cA.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v2-BC-not-cA.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v2-noBC.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v3-BC-cA.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v3-BC-not-cA.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v3-noBC.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v4-BC-cA.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v4-BC-not-cA.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_cert_version/ss-v4-noBC.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_content_signing/content_signing_int.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_RSA_ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_ee.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_no_SAN_ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_wrong_key_ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_content_signing/content_signing_remote_newtab_ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ct/ct-insufficient-scts.example.com.pem | 34 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ct/ct-valid.example.com.pem | 46 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ct/default-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ct/test-ca.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_delegated_credentials/default-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_delegated_credentials/delegated-ee.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_delegated_credentials/test-ca.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_delegated_credentials/test-int.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_encrypted_client_hello/default-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_encrypted_client_hello/private-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_encrypted_client_hello/selfsigned.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_encrypted_client_hello/test-ca.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-ee-path-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-ee-path-int.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-int-path-ee.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-int-path-int.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-cabforum-oid-int-path-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-cabforum-oid-int-path-int.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-path-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-path-int.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/cabforum-oid-path-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/cabforum-oid-path-int.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-ee-path-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-ee-path-int.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-int-path-ee.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-int-path-int.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/non-ev-root-path-ee.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/non-ev-root-path-int.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/non-evroot-ca.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/reverse-order-oids-path-ee.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/reverse-order-oids-path-int.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-cabforum-oid-int-path-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-cabforum-oid-int-path-int.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-path-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-path-int.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/test-oid-ee-cabforum-oid-int-path-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/test-oid-ee-cabforum-oid-int-path-int.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/test-oid-path-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ev_certs/test-oid-path-int.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_faulty_server/default-ee.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_faulty_server/no-san-ee.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_faulty_server/test-ca.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_faulty_server/test-int.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-bad-ku-no-eku.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-bad-ku-server-eku.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-cA-FALSE-asserts-keyCertSign.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-limited-depth-invalid.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-limited-depth.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-extensions.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-ku-no-eku.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-ku-server-eku.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-not-a-ca.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-valid-ku-no-eku.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-valid-ku-server-eku.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-bad-ku-no-eku.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-bad-ku-server-eku.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-cA-FALSE-asserts-keyCertSign.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-limited-depth-invalid.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-limited-depth.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-extensions.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-ku-no-eku.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-ku-server-eku.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-not-a-ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-valid-ku-no-eku.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-valid-ku-server-eku.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_preloads/default-ee.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_preloads/ee2.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_preloads/int.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_intermediate_preloads/int2.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1016-int_rsa_1024-root_rsa_1024.pem | 12 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1016-root_rsa_1024.pem | 12 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1024-root_rsa_1016.pem | 12 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1024-root_rsa_1024.pem | 12 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/ee_secp224r1_224-int_secp256r1_256-root_rsa_2048.pem | 10 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/ee_secp224r1_224-int_secp256r1_256-root_secp256r1_256.pem | 8 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/ee_secp256k1_256-int_secp256r1_256-root_secp256r1_256.pem | 6 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_rsa_1016-root_secp256r1_256.pem | 10 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_secp224r1_224-root_secp256r1_256.pem | 6 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_secp256r1_256-root_secp224r1_224.pem | 8 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_secp256r1_256-root_secp256k1_256.pem | 6 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/ee_secp384r1_384-int_secp256r1_256-root_rsa_2048.pem | 8 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/ee_secp521r1_521-int_secp384r1_384-root_secp256r1_256.pem | 10 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/int_rsa_1016-root_rsa_1024.pem | 14 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/int_rsa_1016-root_secp256r1_256.pem | 12 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/int_rsa_1024-root_rsa_1016.pem | 14 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/int_rsa_1024-root_rsa_1024.pem | 14 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/int_secp224r1_224-root_secp256r1_256.pem | 10 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_rsa_2048.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_secp224r1_224.pem | 10 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_secp256k1_256.pem | 10 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_secp256r1_256.pem | 8 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/int_secp384r1_384-root_secp256r1_256.pem | 10 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/root_rsa_1016.pem | 12 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/root_rsa_1024.pem | 12 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/root_rsa_2048.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/root_secp224r1_224.pem | 10 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/root_secp256k1_256.pem | 12 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize/root_secp256r1_256.pem | 10 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2040-ev_int_rsa_2048-evroot.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2048-ev_int_rsa_2040-evroot.pem | 20 firefox-esr-115.9.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-115.9.0esr/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2048-ev_int_rsa_2048-evroot.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize_ev/ev_int_rsa_2040-evroot.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize_ev/ev_int_rsa_2048-ev_root_rsa_2040.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_keysize_ev/ev_int_rsa_2048-evroot.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_missing_intermediate/missing-intermediate.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_name_constraints/NameConstraints.dcissallowed.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_name_constraints/NameConstraints.dcissblocked.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_name_constraints/ca-example-com-permitted.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_name_constraints/dciss.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_name_constraints/ee-example-com-and-org.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_name_constraints/ee-example-com.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_name_constraints/ee-example-org.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_name_constraints/ee-example-test.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_name_constraints/int-example-org-permitted.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ocsp_url/bad-scheme.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ocsp_url/ca.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ocsp_url/empty-scheme-url.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ocsp_url/ftp-url.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ocsp_url/hTTp-url.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ocsp_url/https-url.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ocsp_url/int.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ocsp_url/negative-port.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ocsp_url/no-host-url.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ocsp_url/no-path-url.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ocsp_url/no-scheme-host-port.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ocsp_url/no-scheme-url.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ocsp_url/unknown-scheme.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_ocsp_url/user-pass.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_onecrl/another-ee-revoked-by-revocations-txt-serial-2.pem | 14 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_onecrl/another-ee-revoked-by-revocations-txt.pem | 14 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_onecrl/ee-revoked-by-revocations-txt.pem | 14 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_onecrl/ee-revoked-by-subject-and-pubkey.pem | 20 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_onecrl/same-issuer-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_onecrl/test-int-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_sanctions/default-ee.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_self_signed_certs/ca1.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_self_signed_certs/ca2.pem | 16 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_self_signed_certs/ee1.pem | 14 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_self_signed_certs/ee2.pem | 14 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_validity/ev_ee_27_months-ev_int_60_months-evroot.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_validity/ev_ee_28_months-ev_int_60_months-evroot.pem | 18 firefox-esr-115.9.0esr/security/manager/ssl/tests/unit/test_validity/ev_int_60_months-evroot.pem | 16 firefox-esr-115.9.0esr/security/nss/TAG-INFO | 2 firefox-esr-115.9.0esr/security/nss/coreconf/coreconf.dep | 1 firefox-esr-115.9.0esr/security/nss/doc/rst/releases/nss_3_90_2.rst | 56 firefox-esr-115.9.0esr/security/nss/lib/freebl/mpi/mpi-priv.h | 3 firefox-esr-115.9.0esr/security/nss/lib/freebl/mpi/mpi.c | 300 firefox-esr-115.9.0esr/security/nss/lib/freebl/mpi/mpi.h | 41 firefox-esr-115.9.0esr/security/nss/lib/freebl/mpi/mpmontg.c | 29 firefox-esr-115.9.0esr/security/nss/lib/freebl/rsa.c | 16 firefox-esr-115.9.0esr/security/nss/lib/nss/nss.h | 4 firefox-esr-115.9.0esr/security/nss/lib/softoken/softkver.h | 4 firefox-esr-115.9.0esr/security/nss/lib/ssl/sslsecur.c | 7 firefox-esr-115.9.0esr/security/nss/lib/util/nssutil.h | 4 firefox-esr-115.9.0esr/services/settings/dumps/blocklists/addons-bloomfilters.json | 3561 ---- firefox-esr-115.9.0esr/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin.meta.json | 2 firefox-esr-115.9.0esr/services/settings/dumps/main/cookie-banner-rules-list.json | 1141 - firefox-esr-115.9.0esr/services/settings/dumps/main/devtools-compatibility-browsers.json | 334 firefox-esr-115.9.0esr/services/settings/dumps/main/search-config.json | 600 firefox-esr-115.9.0esr/services/settings/dumps/main/search-telemetry-v2.json | 493 firefox-esr-115.9.0esr/services/settings/dumps/security-state/intermediates.json | 938 - firefox-esr-115.9.0esr/services/settings/dumps/security-state/onecrl.json | 17 firefox-esr-115.9.0esr/services/settings/test/unit/test_remote_settings_signatures/collection_signing_ee.pem | 20 firefox-esr-115.9.0esr/services/settings/test/unit/test_remote_settings_signatures/collection_signing_int.pem | 18 firefox-esr-115.9.0esr/sourcestamp.txt | 4 firefox-esr-115.9.0esr/taskcluster/ci/test/talos.yml | 11 firefox-esr-115.9.0esr/testing/marionette/harness/marionette_harness/marionette_test/testcases.py | 22 firefox-esr-115.9.0esr/testing/mochitest/mach_commands.py | 22 firefox-esr-115.9.0esr/testing/mozbase/mozfile/mozfile/mozfile.py | 14 firefox-esr-115.9.0esr/testing/mozbase/mozprofile/mozprofile/prefs.py | 14 firefox-esr-115.9.0esr/testing/mozharness/scripts/desktop_unittest.py | 4 firefox-esr-115.9.0esr/testing/raptor/mach_commands.py | 4 firefox-esr-115.9.0esr/testing/tools/websocketprocessbridge/websocketprocessbridge_requirements_3.txt | 4 firefox-esr-115.9.0esr/testing/web-platform/manifestupdate.py | 6 firefox-esr-115.9.0esr/testing/web-platform/tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas-worker-font-load-crash.html | 19 firefox-esr-115.9.0esr/testing/web-platform/tests/service-workers/service-worker/resources/scope1/redirect.py | 6 firefox-esr-115.9.0esr/testing/web-platform/tests/service-workers/service-worker/resources/scope2/worker_interception_redirect_webworker.py | 6 firefox-esr-115.9.0esr/testing/web-platform/tests/service-workers/service-worker/resources/subdir/worker_interception_redirect_webworker.py | 6 firefox-esr-115.9.0esr/testing/web-platform/tests/tools/runner/update_manifest.py | 6 firefox-esr-115.9.0esr/testing/web-platform/tests/tools/webtransport/requirements.txt | 2 firefox-esr-115.9.0esr/testing/web-platform/tests/tools/wpt/utils.py | 15 firefox-esr-115.9.0esr/testing/web-platform/tests/tools/wptrunner/requirements_chromium.txt | 2 firefox-esr-115.9.0esr/testing/web-platform/tests/tools/wptrunner/wptrunner/stability.py | 8 firefox-esr-115.9.0esr/testing/web-platform/tests/xhr/resources/auth1/auth.py | 5 firefox-esr-115.9.0esr/testing/web-platform/tests/xhr/resources/auth10/auth.py | 6 firefox-esr-115.9.0esr/testing/web-platform/tests/xhr/resources/auth11/auth.py | 5 firefox-esr-115.9.0esr/testing/web-platform/tests/xhr/resources/auth2/auth.py | 6 firefox-esr-115.9.0esr/testing/web-platform/tests/xhr/resources/auth2/corsenabled.py | 5 firefox-esr-115.9.0esr/testing/web-platform/tests/xhr/resources/auth3/auth.py | 5 firefox-esr-115.9.0esr/testing/web-platform/tests/xhr/resources/auth4/auth.py | 5 firefox-esr-115.9.0esr/testing/web-platform/tests/xhr/resources/auth7/corsenabled.py | 5 firefox-esr-115.9.0esr/testing/web-platform/tests/xhr/resources/auth8/corsenabled-no-authorize.py | 5 firefox-esr-115.9.0esr/testing/web-platform/tests/xhr/resources/auth9/auth.py | 5 firefox-esr-115.9.0esr/testing/web-platform/update/__init__.py | 4 firefox-esr-115.9.0esr/third_party/dav1d/src/decode.c | 13 firefox-esr-115.9.0esr/third_party/dav1d/src/internal.h | 2 firefox-esr-115.9.0esr/third_party/python/PyYAML/CHANGES | 17 firefox-esr-115.9.0esr/third_party/python/PyYAML/MANIFEST.in | 3 firefox-esr-115.9.0esr/third_party/python/PyYAML/Makefile | 11 firefox-esr-115.9.0esr/third_party/python/PyYAML/PKG-INFO | 36 firefox-esr-115.9.0esr/third_party/python/PyYAML/README | 43 firefox-esr-115.9.0esr/third_party/python/PyYAML/README.md | 53 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib/PyYAML.egg-info/PKG-INFO | 46 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib/PyYAML.egg-info/SOURCES.txt | 634 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib/PyYAML.egg-info/dependency_links.txt | 1 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib/PyYAML.egg-info/top_level.txt | 2 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib/yaml/__init__.py | 89 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib/yaml/composer.py | 18 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib/yaml/constructor.py | 224 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib/yaml/cyaml.py | 8 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib/yaml/dumper.py | 8 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib/yaml/emitter.py | 319 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib/yaml/error.py | 8 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib/yaml/loader.py | 12 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib/yaml/parser.py | 32 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib/yaml/reader.py | 60 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib/yaml/representer.py | 234 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib/yaml/resolver.py | 78 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib/yaml/scanner.py | 399 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib/yaml/serializer.py | 10 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/PyYAML.egg-info/PKG-INFO | 44 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/PyYAML.egg-info/SOURCES.txt | 670 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/PyYAML.egg-info/dependency_links.txt | 1 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/PyYAML.egg-info/top_level.txt | 2 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/_yaml/__init__.py | 33 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/yaml/__init__.py | 427 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/yaml/composer.py | 139 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/yaml/constructor.py | 748 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/yaml/cyaml.py | 101 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/yaml/dumper.py | 62 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/yaml/emitter.py | 1137 - firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/yaml/error.py | 75 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/yaml/events.py | 86 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/yaml/loader.py | 63 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/yaml/nodes.py | 49 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/yaml/parser.py | 589 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/yaml/reader.py | 185 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/yaml/representer.py | 389 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/yaml/resolver.py | 227 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/yaml/scanner.py | 1435 - firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/yaml/serializer.py | 111 firefox-esr-115.9.0esr/third_party/python/PyYAML/lib3/yaml/tokens.py | 104 firefox-esr-115.9.0esr/third_party/python/PyYAML/pyproject.toml | 2 firefox-esr-115.9.0esr/third_party/python/PyYAML/setup.cfg | 5 firefox-esr-115.9.0esr/third_party/python/PyYAML/setup.py | 46 firefox-esr-115.9.0esr/third_party/python/PyYAML/yaml/_yaml.h | 14 firefox-esr-115.9.0esr/third_party/python/PyYAML/yaml/_yaml.pxd | 31 firefox-esr-115.9.0esr/third_party/python/PyYAML/yaml/_yaml.pyx | 383 firefox-esr-115.9.0esr/third_party/python/pip/pip/_vendor/pkg_resources/__init__.py | 6 firefox-esr-115.9.0esr/third_party/python/poetry.lock | 120 firefox-esr-115.9.0esr/third_party/python/requirements.in | 8 firefox-esr-115.9.0esr/third_party/python/requirements.txt | 99 firefox-esr-115.9.0esr/third_party/python/setuptools/_distutils_hack/__init__.py | 144 firefox-esr-115.9.0esr/third_party/python/setuptools/distutils-precedence.pth | 2 firefox-esr-115.9.0esr/third_party/python/setuptools/easy_install.py | 5 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/__init__.py | 694 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/appdirs.py | 608 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/importlib_resources/__init__.py | 36 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/importlib_resources/_adapters.py | 170 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/importlib_resources/_common.py | 207 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/importlib_resources/_compat.py | 108 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/importlib_resources/_itertools.py | 35 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/importlib_resources/_legacy.py | 120 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/importlib_resources/abc.py | 170 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/importlib_resources/readers.py | 120 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/importlib_resources/simple.py | 106 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/jaraco/context.py | 288 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/jaraco/functools.py | 556 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/jaraco/text/__init__.py | 599 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/more_itertools/__init__.py | 6 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/more_itertools/more.py | 4391 +++++ firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/more_itertools/recipes.py | 930 + firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/packaging/__about__.py | 27 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/packaging/__init__.py | 31 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/packaging/_compat.py | 38 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/packaging/_elffile.py | 108 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/packaging/_manylinux.py | 240 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/packaging/_musllinux.py | 80 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/packaging/_parser.py | 353 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/packaging/_structures.py | 61 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/packaging/_tokenizer.py | 192 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/packaging/_typing.py | 48 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/packaging/markers.py | 282 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/packaging/metadata.py | 408 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/packaging/requirements.py | 146 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/packaging/specifiers.py | 1057 - firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/packaging/tags.py | 645 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/packaging/utils.py | 132 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/packaging/version.py | 535 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/platformdirs/__init__.py | 342 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/platformdirs/__main__.py | 46 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/platformdirs/android.py | 120 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/platformdirs/api.py | 156 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/platformdirs/macos.py | 64 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/platformdirs/unix.py | 181 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/platformdirs/version.py | 4 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/platformdirs/windows.py | 184 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/pyparsing.py | 5742 ------ firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/typing_extensions.py | 2209 ++ firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/_vendor/zipp.py | 329 firefox-esr-115.9.0esr/third_party/python/setuptools/pkg_resources/extern/__init__.py | 36 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools-51.2.0.dist-info/LICENSE | 19 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools-51.2.0.dist-info/METADATA | 110 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools-51.2.0.dist-info/RECORD | 156 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools-51.2.0.dist-info/WHEEL | 5 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools-51.2.0.dist-info/dependency_links.txt | 2 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools-51.2.0.dist-info/entry_points.txt | 68 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools-51.2.0.dist-info/top_level.txt | 4 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools-68.0.0.dist-info/LICENSE | 17 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools-68.0.0.dist-info/METADATA | 140 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools-68.0.0.dist-info/RECORD | 235 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools-68.0.0.dist-info/WHEEL | 5 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools-68.0.0.dist-info/entry_points.txt | 56 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools-68.0.0.dist-info/top_level.txt | 3 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/__init__.py | 225 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_deprecation_warning.py | 7 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/__init__.py | 23 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/_collections.py | 194 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/_functools.py | 20 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/_log.py | 4 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/_macos_compat.py | 12 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/_msvccompiler.py | 313 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/archive_util.py | 86 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/bcppcompiler.py | 246 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/ccompiler.py | 590 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/cmd.py | 162 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/__init__.py | 46 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/_framework_compat.py | 55 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/bdist.py | 123 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/bdist_dumb.py | 132 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/bdist_msi.py | 749 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/bdist_rpm.py | 447 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/bdist_wininst.py | 377 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/build.py | 103 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/build_clib.py | 126 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/build_ext.py | 311 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/build_py.py | 136 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/build_scripts.py | 242 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/check.py | 133 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/clean.py | 59 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/config.py | 160 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/install.py | 592 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/install_data.py | 38 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/install_egg_info.py | 45 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/install_headers.py | 19 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/install_lib.py | 100 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/install_scripts.py | 18 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/py37compat.py | 3 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/register.py | 160 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/sdist.py | 218 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/command/upload.py | 64 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/config.py | 59 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/core.py | 159 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/cygwinccompiler.py | 451 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/dep_util.py | 26 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/dir_util.py | 83 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/dist.py | 448 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/errors.py | 66 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/extension.py | 78 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/fancy_getopt.py | 119 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/file_util.py | 64 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/filelist.py | 160 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/log.py | 98 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/msvc9compiler.py | 351 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/msvccompiler.py | 323 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/py35compat.py | 19 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/py38compat.py | 3 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/py39compat.py | 22 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/spawn.py | 44 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/sysconfig.py | 382 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/text_file.py | 204 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/unixccompiler.py | 408 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/util.py | 440 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/version.py | 80 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_distutils/versionpredicate.py | 37 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_entry_points.py | 94 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_imp.py | 6 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_importlib.py | 50 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_itertools.py | 23 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_normalization.py | 114 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_path.py | 37 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_reqs.py | 33 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/importlib_metadata/__init__.py | 904 + firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/importlib_metadata/_adapters.py | 90 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/importlib_metadata/_collections.py | 30 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/importlib_metadata/_compat.py | 72 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/importlib_metadata/_functools.py | 104 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/importlib_metadata/_itertools.py | 73 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/importlib_metadata/_meta.py | 49 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/importlib_metadata/_py39compat.py | 35 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/importlib_metadata/_text.py | 99 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/importlib_resources/__init__.py | 36 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/importlib_resources/_adapters.py | 170 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/importlib_resources/_common.py | 207 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/importlib_resources/_compat.py | 108 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/importlib_resources/_itertools.py | 35 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/importlib_resources/_legacy.py | 120 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/importlib_resources/abc.py | 170 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/importlib_resources/readers.py | 120 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/importlib_resources/simple.py | 106 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/jaraco/context.py | 288 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/jaraco/functools.py | 556 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/jaraco/text/__init__.py | 599 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/more_itertools/__init__.py | 4 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/more_itertools/more.py | 3824 ++++ firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/more_itertools/recipes.py | 620 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/packaging/__about__.py | 27 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/packaging/__init__.py | 31 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/packaging/_compat.py | 38 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/packaging/_elffile.py | 108 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/packaging/_manylinux.py | 240 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/packaging/_musllinux.py | 80 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/packaging/_parser.py | 353 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/packaging/_structures.py | 61 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/packaging/_tokenizer.py | 192 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/packaging/_typing.py | 48 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/packaging/markers.py | 282 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/packaging/metadata.py | 408 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/packaging/requirements.py | 146 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/packaging/specifiers.py | 1057 - firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/packaging/tags.py | 645 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/packaging/utils.py | 132 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/packaging/version.py | 535 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/pyparsing.py | 5742 ------ firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/tomli/__init__.py | 11 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/tomli/_parser.py | 691 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/tomli/_re.py | 107 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/tomli/_types.py | 10 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/typing_extensions.py | 2296 ++ firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/_vendor/zipp.py | 329 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/archive_util.py | 136 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/build_meta.py | 345 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/__init__.py | 17 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/bdist_egg.py | 67 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/bdist_rpm.py | 12 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/bdist_wininst.py | 30 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/build.py | 149 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/build_clib.py | 2 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/build_ext.py | 133 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/build_py.py | 244 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/develop.py | 64 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/dist_info.py | 107 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/easy_install.py | 579 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/editable_wheel.py | 857 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/egg_info.py | 317 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/install.py | 42 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/install_egg_info.py | 8 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/install_scripts.py | 13 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/py36compat.py | 134 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/sdist.py | 72 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/setopt.py | 1 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/test.py | 83 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/command/upload_docs.py | 33 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/config.py | 693 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/config/__init__.py | 42 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/config/_apply_pyprojecttoml.py | 386 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/config/_validate_pyproject/__init__.py | 34 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/config/_validate_pyproject/error_reporting.py | 318 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/config/_validate_pyproject/extra_validations.py | 36 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/config/_validate_pyproject/fastjsonschema_exceptions.py | 51 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/config/_validate_pyproject/fastjsonschema_validations.py | 1052 + firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/config/_validate_pyproject/formats.py | 275 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/config/expand.py | 462 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/config/pyprojecttoml.py | 437 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/config/setupcfg.py | 789 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/depends.py | 9 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/discovery.py | 611 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/dist.py | 732 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/errors.py | 46 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/extension.py | 97 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/extern/__init__.py | 39 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/glob.py | 17 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/installer.py | 118 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/lib2to3_ex.py | 68 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/logging.py | 37 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/monkey.py | 20 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/msvc.py | 228 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/package_index.py | 355 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/py312compat.py | 12 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/py34compat.py | 13 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/sandbox.py | 90 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/ssl_support.py | 266 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/version.py | 6 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/warnings.py | 104 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/wheel.py | 64 firefox-esr-115.9.0esr/third_party/python/setuptools/setuptools/windows_support.py | 2 firefox-esr-115.9.0esr/third_party/python/six/six-1.13.0.dist-info/LICENSE | 18 firefox-esr-115.9.0esr/third_party/python/six/six-1.13.0.dist-info/METADATA | 52 firefox-esr-115.9.0esr/third_party/python/six/six-1.13.0.dist-info/RECORD | 6 firefox-esr-115.9.0esr/third_party/python/six/six-1.13.0.dist-info/WHEEL | 6 firefox-esr-115.9.0esr/third_party/python/six/six-1.13.0.dist-info/top_level.txt | 1 firefox-esr-115.9.0esr/third_party/python/six/six-1.16.0.dist-info/LICENSE | 18 firefox-esr-115.9.0esr/third_party/python/six/six-1.16.0.dist-info/METADATA | 49 firefox-esr-115.9.0esr/third_party/python/six/six-1.16.0.dist-info/RECORD | 6 firefox-esr-115.9.0esr/third_party/python/six/six-1.16.0.dist-info/WHEEL | 6 firefox-esr-115.9.0esr/third_party/python/six/six-1.16.0.dist-info/top_level.txt | 1 firefox-esr-115.9.0esr/third_party/python/six/six.py | 91 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3-1.26.0.dist-info/LICENSE.txt | 21 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3-1.26.0.dist-info/METADATA | 1335 - firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3-1.26.0.dist-info/RECORD | 44 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3-1.26.0.dist-info/WHEEL | 6 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3-1.26.0.dist-info/top_level.txt | 1 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3-1.26.17.dist-info/LICENSE.txt | 21 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3-1.26.17.dist-info/METADATA | 1486 + firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3-1.26.17.dist-info/RECORD | 44 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3-1.26.17.dist-info/WHEEL | 6 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3-1.26.17.dist-info/top_level.txt | 1 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/__init__.py | 17 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/_version.py | 2 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/connection.py | 62 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/connectionpool.py | 97 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/contrib/_securetransport/bindings.py | 2 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/contrib/_securetransport/low_level.py | 1 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/contrib/appengine.py | 4 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/contrib/ntlmpool.py | 13 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/contrib/pyopenssl.py | 19 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/contrib/securetransport.py | 5 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/contrib/socks.py | 2 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/exceptions.py | 12 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/packages/__init__.py | 5 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/packages/backports/weakref_finalize.py | 155 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/packages/six.py | 125 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/packages/ssl_match_hostname/__init__.py | 22 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/packages/ssl_match_hostname/_implementation.py | 160 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/poolmanager.py | 3 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/request.py | 21 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/response.py | 72 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/util/connection.py | 5 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/util/proxy.py | 1 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/util/request.py | 5 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/util/retry.py | 37 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/util/ssl_.py | 53 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/util/ssl_match_hostname.py | 159 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/util/ssltransport.py | 6 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/util/timeout.py | 9 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/util/url.py | 17 firefox-esr-115.9.0esr/third_party/python/urllib3/urllib3/util/wait.py | 1 firefox-esr-115.9.0esr/toolkit/actors/SelectParent.sys.mjs | 7 firefox-esr-115.9.0esr/toolkit/components/autocomplete/nsAutoCompleteController.cpp | 25 firefox-esr-115.9.0esr/toolkit/components/messaging-system/schemas/SpecialMessageActionSchemas/test/browser/browser.ini | 2 firefox-esr-115.9.0esr/toolkit/components/search/tests/xpcshell/searchconfigs/test_amazon.js | 298 firefox-esr-115.9.0esr/toolkit/components/search/tests/xpcshell/searchconfigs/test_distributions.js | 8 firefox-esr-115.9.0esr/toolkit/components/telemetry/app/TelemetryEnvironment.sys.mjs | 7 firefox-esr-115.9.0esr/toolkit/components/telemetry/docs/data/environment.rst | 4 firefox-esr-115.9.0esr/toolkit/components/telemetry/tests/unit/TelemetryEnvironmentTesting.sys.mjs | 3 firefox-esr-115.9.0esr/toolkit/crashreporter/client/crashreporter.cpp | 31 firefox-esr-115.9.0esr/toolkit/crashreporter/client/moz.build | 1 firefox-esr-115.9.0esr/toolkit/crashreporter/docs/index.rst | 5 firefox-esr-115.9.0esr/toolkit/crashreporter/mozwer-rust/Cargo.toml | 1 firefox-esr-115.9.0esr/toolkit/crashreporter/mozwer-rust/lib.rs | 315 firefox-esr-115.9.0esr/toolkit/crashreporter/mozwer-rust/moz.build | 1 firefox-esr-115.9.0esr/toolkit/crashreporter/nsExceptionHandler.cpp | 50 firefox-esr-115.9.0esr/toolkit/crashreporter/nsExceptionHandler.h | 13 firefox-esr-115.9.0esr/toolkit/crashreporter/process_reader/Cargo.toml | 18 firefox-esr-115.9.0esr/toolkit/crashreporter/process_reader/src/error.rs | 30 firefox-esr-115.9.0esr/toolkit/crashreporter/process_reader/src/lib.rs | 13 firefox-esr-115.9.0esr/toolkit/crashreporter/process_reader/src/process_reader.rs | 6 firefox-esr-115.9.0esr/toolkit/crashreporter/process_reader/src/process_reader/windows.rs | 226 firefox-esr-115.9.0esr/toolkit/modules/PopupNotifications.sys.mjs | 17 firefox-esr-115.9.0esr/toolkit/mozapps/extensions/test/xpcshell/data/productaddons/content_signing_aus_ee.pem | 20 firefox-esr-115.9.0esr/toolkit/mozapps/extensions/test/xpcshell/data/productaddons/content_signing_int.pem | 16 firefox-esr-115.9.0esr/toolkit/mozapps/handling/content/appChooser.js | 14 firefox-esr-115.9.0esr/toolkit/mozapps/handling/content/handler.css | 4 firefox-esr-115.9.0esr/toolkit/xre/nsEmbedFunctions.cpp | 7 firefox-esr-115.9.0esr/tools/browsertime/mach_commands.py | 4 firefox-esr-115.9.0esr/tools/lint/clippy.yml | 2 firefox-esr-115.9.0esr/tools/moztreedocs/mach_commands.py | 6 firefox-esr-115.9.0esr/tools/power/mach_commands.py | 5 firefox-esr-115.9.0esr/tools/tryselect/test/test_mozharness_integration.py | 20 firefox-esr-115.9.0esr/uriloader/exthandler/tests/unit/xpcshell.ini | 2 firefox-esr-115.9.0esr/widget/GfxInfoBase.cpp | 29 firefox-esr-115.9.0esr/widget/GfxInfoBase.h | 2 firefox-esr-115.9.0esr/widget/LSBUtils.cpp | 73 firefox-esr-115.9.0esr/widget/android/GfxInfo.cpp | 7 firefox-esr-115.9.0esr/widget/cocoa/MOZMenuOpeningCoordinator.mm | 3 firefox-esr-115.9.0esr/widget/cocoa/nsChildView.mm | 8 firefox-esr-115.9.0esr/widget/cocoa/nsCursorManager.h | 3 firefox-esr-115.9.0esr/widget/cocoa/nsCursorManager.mm | 9 firefox-esr-115.9.0esr/widget/gtk/GfxInfo.cpp | 23 firefox-esr-115.9.0esr/widget/gtk/nsWindow.cpp | 5 firefox-esr-115.9.0esr/widget/nsBaseDragService.cpp | 1 firefox-esr-115.9.0esr/widget/nsBaseWidget.cpp | 8 firefox-esr-115.9.0esr/widget/nsBaseWidget.h | 5 firefox-esr-115.9.0esr/widget/nsIWidget.h | 2 firefox-esr-115.9.0esr/widget/windows/GfxInfo.cpp | 47 firefox-esr-115.9.0esr/widget/windows/nsWindow.cpp | 5 firefox-esr-115.9.0esr/xpcom/base/nsSystemInfo.cpp | 9 firefox-esr-115.9.0esr/xpcom/build/XPCOMInit.cpp | 12 firefox-esr-115.9.0esr/xpcom/io/SlicedInputStream.cpp | 2 996 files changed, 61954 insertions(+), 46187 deletions(-) diff -Nru firefox-esr-115.7.0esr/CLOBBER firefox-esr-115.9.0esr/CLOBBER --- firefox-esr-115.7.0esr/CLOBBER 2024-01-15 21:07:27.000000000 +0000 +++ firefox-esr-115.9.0esr/CLOBBER 2024-03-14 05:21:23.000000000 +0000 @@ -22,4 +22,4 @@ # changes to stick? As of bug 928195, this shouldn't be necessary! Please # don't change CLOBBER for WebIDL changes any more. -Merge day clobber 2023-12-18 \ No newline at end of file +Merge day clobber 2024-02-19 \ No newline at end of file diff -Nru firefox-esr-115.7.0esr/Cargo.lock firefox-esr-115.9.0esr/Cargo.lock --- firefox-esr-115.7.0esr/Cargo.lock 2024-01-15 21:07:27.000000000 +0000 +++ firefox-esr-115.9.0esr/Cargo.lock 2024-03-14 05:21:23.000000000 +0000 @@ -3454,6 +3454,7 @@ dependencies = [ "libc", "mozilla-central-workspace-hack", + "process_reader", "rust-ini", "serde", "serde_json", @@ -4185,6 +4186,17 @@ ] [[package]] +name = "process_reader" +version = "0.1.0" +dependencies = [ + "goblin", + "memoffset", + "mozilla-central-workspace-hack", + "thiserror", + "winapi", +] + +[[package]] name = "processtools" version = "0.1.0" dependencies = [ diff -Nru firefox-esr-115.7.0esr/accessible/base/EventQueue.cpp firefox-esr-115.9.0esr/accessible/base/EventQueue.cpp --- firefox-esr-115.7.0esr/accessible/base/EventQueue.cpp 2024-01-15 21:07:27.000000000 +0000 +++ firefox-esr-115.9.0esr/accessible/base/EventQueue.cpp 2024-03-14 05:21:23.000000000 +0000 @@ -348,7 +348,9 @@ AccEvent* event = events[idx]; uint32_t eventType = event->mEventType; LocalAccessible* target = event->GetAccessible(); - if (!target || target->IsDefunct()) continue; + if (!target || target->IsDefunct()) { + continue; + } // Collect select changes if (IPCAccessibilityActive()) { @@ -413,7 +415,9 @@ nsEventShell::FireEvent(event); - if (!mDocument) return; + if (!mDocument) { + return; + } } if (mDocument && IPCAccessibilityActive() && diff -Nru firefox-esr-115.7.0esr/accessible/base/EventQueue.h firefox-esr-115.9.0esr/accessible/base/EventQueue.h --- firefox-esr-115.7.0esr/accessible/base/EventQueue.h 2024-01-15 21:07:27.000000000 +0000 +++ firefox-esr-115.9.0esr/accessible/base/EventQueue.h 2024-03-14 05:21:23.000000000 +0000 @@ -7,6 +7,7 @@ #define mozilla_a11y_EventQueue_h_ #include "AccEvent.h" +#include "mozilla/Assertions.h" namespace mozilla { namespace a11y { @@ -18,7 +19,10 @@ */ class EventQueue { protected: - explicit EventQueue(DocAccessible* aDocument) : mDocument(aDocument) {} + explicit EventQueue(DocAccessible* aDocument) : mDocument(aDocument) { + MOZ_ASSERT(mDocument, + "There's no point creating an event queue for a null document"); + } /** * Put an accessible event into the queue to process it later. diff -Nru firefox-esr-115.7.0esr/accessible/base/NotificationController.cpp firefox-esr-115.9.0esr/accessible/base/NotificationController.cpp --- firefox-esr-115.7.0esr/accessible/base/NotificationController.cpp 2024-01-15 21:07:26.000000000 +0000 +++ firefox-esr-115.9.0esr/accessible/base/NotificationController.cpp 2024-03-14 05:21:22.000000000 +0000 @@ -41,7 +41,11 @@ NotificationController::~NotificationController() { NS_ASSERTION(!mDocument, "Controller wasn't shutdown properly!"); - if (mDocument) Shutdown(); + if (mDocument) { + Shutdown(); + } + MOZ_RELEASE_ASSERT(mObservingState == eNotObservingRefresh, + "Must unregister before being destroyed"); } //////////////////////////////////////////////////////////////////////////////// @@ -53,7 +57,9 @@ NS_IMPL_CYCLE_COLLECTION_CLASS(NotificationController) NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(NotificationController) - if (tmp->mDocument) tmp->Shutdown(); + if (tmp->mDocument) { + tmp->Shutdown(); + } NS_IMPL_CYCLE_COLLECTION_UNLINK_END NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(NotificationController) @@ -78,8 +84,16 @@ void NotificationController::Shutdown() { if (mObservingState != eNotObservingRefresh && mPresShell->RemoveRefreshObserver(this, FlushType::Display)) { + // Note, this was our last chance to unregister, since we're about to + // clear mPresShell further down in this function. mObservingState = eNotObservingRefresh; } + MOZ_RELEASE_ASSERT(mObservingState == eNotObservingRefresh, + "Must unregister before being destroyed (and we just " + "passed our last change to unregister)"); + // Immediately null out mPresShell, to prevent us from being registered as a + // refresh observer again. + mPresShell = nullptr; // Shutdown handling child documents. int32_t childDocCount = mHangingChildDocuments.Length(); @@ -92,7 +106,6 @@ mHangingChildDocuments.Clear(); mDocument = nullptr; - mPresShell = nullptr; mTextHash.Clear(); mContentInsertions.Clear(); @@ -434,9 +447,11 @@ } void NotificationController::ScheduleProcessing() { - // If notification flush isn't planed yet start notification flush + // If notification flush isn't planned yet, start notification flush // asynchronously (after style and layout). - if (mObservingState == eNotObservingRefresh) { + // Note: the mPresShell null-check might be unnecessary; it's just to prevent + // a null-deref here, if we somehow get called after we've been shut down. + if (mObservingState == eNotObservingRefresh && mPresShell) { if (mPresShell->AddRefreshObserver(this, FlushType::Display, "Accessibility notifications")) { mObservingState = eRefreshObserving; @@ -656,12 +671,17 @@ AUTO_PROFILER_LABEL("NotificationController::WillRefresh", A11Y); - // If the document accessible that notification collector was created for is - // now shut down, don't process notifications anymore. - NS_ASSERTION( + // If mDocument is null, the document accessible that this notification + // controller was created for is now shut down. This means we've lost our + // ability to unregister ourselves, which is bad. (However, it also shouldn't + // be logically possible for us to get here with a null mDocument; the only + // thing that clears that pointer is our Shutdown() method, which first + // unregisters and fatally asserts if that fails). + MOZ_RELEASE_ASSERT( mDocument, "The document was shut down while refresh observer is attached!"); - if (!mDocument || ipc::ProcessChild::ExpectingShutdown()) { + + if (ipc::ProcessChild::ExpectingShutdown()) { return; } @@ -835,7 +855,9 @@ nsTArray> newChildDocs; for (uint32_t idx = 0; idx < hangingDocCnt; idx++) { DocAccessible* childDoc = mHangingChildDocuments[idx]; - if (childDoc->IsDefunct()) continue; + if (childDoc->IsDefunct()) { + continue; + } if (IPCAccessibilityActive() && !mDocument->IPCDoc()) { childDoc->Shutdown(); @@ -874,12 +896,16 @@ uint32_t childDocCnt = mDocument->ChildDocumentCount(), childDocIdx = 0; for (; childDocIdx < childDocCnt; childDocIdx++) { DocAccessible* childDoc = mDocument->GetChildDocumentAt(childDocIdx); - if (!childDoc->HasLoadState(DocAccessible::eCompletelyLoaded)) break; + if (!childDoc->HasLoadState(DocAccessible::eCompletelyLoaded)) { + break; + } } if (childDocIdx == childDocCnt) { mDocument->ProcessLoad(); - if (!mDocument) return; + if (!mDocument) { + return; + } } } @@ -909,7 +935,9 @@ uint32_t notificationCount = notifications.Length(); for (uint32_t idx = 0; idx < notificationCount; idx++) { notifications[idx]->Process(); - if (!mDocument) return; + if (!mDocument) { + return; + } } if (ipc::ProcessChild::ExpectingShutdown()) { @@ -991,8 +1019,19 @@ } } + if (!mDocument) { + // A null mDocument means we've gotten a Shutdown() call (presumably via + // some script that we triggered above), and that means we're done here. + // Note: in this case, it's important that don't modify mObservingState; + // Shutdown() will have *unregistered* us as a refresh observer, and we + // don't want to mistakenly overwrite mObservingState and fool ourselves + // into thinking we've re-registered when we really haven't! + MOZ_ASSERT(mObservingState == eNotObservingRefresh, + "We've been shutdown, which means we should've been " + "unregistered as a refresh observer"); + return; + } mObservingState = eRefreshObserving; - if (!mDocument) return; // Stop further processing if there are no new notifications of any kind or // events and document load is processed. diff -Nru firefox-esr-115.7.0esr/accessible/generic/HyperTextAccessible.cpp firefox-esr-115.9.0esr/accessible/generic/HyperTextAccessible.cpp --- firefox-esr-115.7.0esr/accessible/generic/HyperTextAccessible.cpp 2024-01-15 21:07:27.000000000 +0000 +++ firefox-esr-115.9.0esr/accessible/generic/HyperTextAccessible.cpp 2024-03-14 05:21:23.000000000 +0000 @@ -776,6 +776,17 @@ void HyperTextAccessible::GetSelectionDOMRanges(SelectionType aSelectionType, nsTArray* aRanges) { + if (IsDoc() && !AsDoc()->HasLoadState(DocAccessible::eTreeConstructed)) { + // Rarely, a client query can be handled after a DocAccessible is created + // but before the initial tree is constructed, since DoInitialUpdate happens + // during a refresh tick. In that case, there might be a DOM selection, but + // we can't use it. We will crash if we try due to mContent being null, etc. + // This should only happen in the parent process because we should never + // try to push the cache in a content process before the initial tree is + // constructed. + MOZ_ASSERT(XRE_IsParentProcess(), "Query before DoInitialUpdate"); + return; + } // Ignore selection if it is not visible. RefPtr frameSelection = FrameSelection(); if (!frameSelection || frameSelection->GetDisplaySelection() <= diff -Nru firefox-esr-115.7.0esr/accessible/generic/LocalAccessible.h firefox-esr-115.9.0esr/accessible/generic/LocalAccessible.h --- firefox-esr-115.7.0esr/accessible/generic/LocalAccessible.h 2024-01-15 21:07:27.000000000 +0000 +++ firefox-esr-115.9.0esr/accessible/generic/LocalAccessible.h 2024-03-14 05:21:23.000000000 +0000 @@ -928,7 +928,7 @@ // Data Members // mContent can be null in a DocAccessible if the document has no body or - // root element. + // root element, or if the initial tree hasn't been constructed yet. nsCOMPtr mContent; RefPtr mDoc; diff -Nru firefox-esr-115.7.0esr/browser/actors/PromptParent.sys.mjs firefox-esr-115.9.0esr/browser/actors/PromptParent.sys.mjs --- firefox-esr-115.7.0esr/browser/actors/PromptParent.sys.mjs 2024-01-15 21:07:27.000000000 +0000 +++ firefox-esr-115.9.0esr/browser/actors/PromptParent.sys.mjs 2024-03-14 05:21:23.000000000 +0000 @@ -132,7 +132,7 @@ switch (message.name) { case "Prompt:Open": - if (!this.windowContext.isCurrentGlobal) { + if (!this.windowContext.isActiveInTab) { return undefined; } diff -Nru firefox-esr-115.7.0esr/browser/base/content/browser-fullScreenAndPointerLock.js firefox-esr-115.9.0esr/browser/base/content/browser-fullScreenAndPointerLock.js --- firefox-esr-115.7.0esr/browser/base/content/browser-fullScreenAndPointerLock.js 2024-01-15 21:07:26.000000000 +0000 +++ firefox-esr-115.9.0esr/browser/base/content/browser-fullScreenAndPointerLock.js 2024-03-14 05:21:22.000000000 +0000 @@ -255,6 +255,9 @@ if (this._state == "hiding") { this._element.hidden = true; } + if (this._state == "onscreen") { + window.dispatchEvent(new CustomEvent("FullscreenWarningOnScreen")); + } break; } case "activate": { @@ -272,11 +275,24 @@ }; var PointerLock = { + _isActive: false, + + /** + * @returns {boolean} - true if pointer lock is currently active for the + * associated window. + */ + get isActive() { + return this._isActive; + }, + entered(originNoSuffix) { + this._isActive = true; + Services.obs.notifyObservers(null, "pointer-lock-entered"); PointerlockFsWarning.showPointerLock(originNoSuffix); }, exited() { + this._isActive = false; PointerlockFsWarning.close("pointerlock-warning"); }, }; diff -Nru firefox-esr-115.7.0esr/browser/base/content/test/fullscreen/browser_fullscreen_permissions_prompt.js firefox-esr-115.9.0esr/browser/base/content/test/fullscreen/browser_fullscreen_permissions_prompt.js --- firefox-esr-115.7.0esr/browser/base/content/test/fullscreen/browser_fullscreen_permissions_prompt.js 2024-01-15 21:07:27.000000000 +0000 +++ firefox-esr-115.9.0esr/browser/base/content/test/fullscreen/browser_fullscreen_permissions_prompt.js 2024-03-14 05:21:23.000000000 +0000 @@ -158,3 +158,133 @@ BrowserTestUtils.removeTab(tab); await SpecialPowers.popPrefEnv(); }); + +function triggerMainCommand(popup) { + let notifications = popup.childNodes; + ok(!!notifications.length, "at least one notification displayed"); + let notification = notifications[0]; + info("Triggering main command for notification " + notification.id); + EventUtils.synthesizeMouseAtCenter(notification.button, {}); +} + +add_task( + async function test_permission_prompt_closes_fullscreen_and_extends_security_delay() { + const TEST_SECURITY_DELAY = 500; + await SpecialPowers.pushPrefEnv({ + set: [ + ["dom.webnotifications.requireuserinteraction", false], + ["permissions.fullscreen.allowed", false], + ["security.notification_enable_delay", TEST_SECURITY_DELAY], + // macOS is not affected by the sec delay bug because it uses the native + // macOS full screen API. Revert back to legacy behavior so we can also + // test on macOS. If this pref is removed in the future we can consider + // skipping the testcase for macOS altogether. + ["full-screen-api.macos-native-full-screen", false], + ], + }); + + let tab = await BrowserTestUtils.openNewForegroundTab( + gBrowser, + "https://example.com" + ); + let browser = tab.linkedBrowser; + info("Entering DOM full-screen"); + await changeFullscreen(browser, true); + + let popupShown = BrowserTestUtils.waitForPopupEvent( + window.PopupNotifications.panel, + "shown" + ); + let fullScreenExit = waitForFullScreenState(browser, false); + + info("Requesting notification permission"); + requestNotificationPermission(browser).catch(() => {}); + await popupShown; + + let notificationHiddenPromise = BrowserTestUtils.waitForPopupEvent( + window.PopupNotifications.panel, + "hidden" + ); + + info("Waiting for full-screen exit"); + await fullScreenExit; + + info("Wait for original security delay to expire."); + SimpleTest.requestFlakyTimeout( + "Wait for original security delay to expire." + ); + // eslint-disable-next-line mozilla/no-arbitrary-setTimeout + await new Promise(resolve => setTimeout(resolve, TEST_SECURITY_DELAY)); + + info( + "Trigger main action via button click during the extended security delay" + ); + triggerMainCommand(PopupNotifications.panel); + + let notification = PopupNotifications.getNotification( + "web-notifications", + gBrowser.selectedBrowser + ); + + // Linux in CI seems to skip the full screen animation, which means its not + // affected by the bug and we can't test extension of the sec delay here. + if (Services.appinfo.OS == "Linux") { + todo( + notification && + !notification.dismissed && + BrowserTestUtils.is_visible(PopupNotifications.panel.firstChild), + "Notification should still be open because we clicked during the security delay." + ); + } else { + ok( + notification && + !notification.dismissed && + BrowserTestUtils.is_visible(PopupNotifications.panel.firstChild), + "Notification should still be open because we clicked during the security delay." + ); + } + + // If the notification is no longer shown (test failure) skip the remaining + // checks. + if (!notification) { + // Cleanup + BrowserTestUtils.removeTab(tab); + await SpecialPowers.popPrefEnv(); + // Remove the granted notification permission. + Services.perms.removeAll(); + return; + } + + Assert.greater( + notification.timeShown, + performance.now(), + "Notification timeShown property should be in the future, because the security delay was extended." + ); + + // Ensure that once the security delay has passed the notification can be + // closed again. + let fakeTimeShown = TEST_SECURITY_DELAY + 500; + info(`Manually set timeShown to ${fakeTimeShown}ms in the past.`); + notification.timeShown = performance.now() - fakeTimeShown; + + info("Trigger main action via button click outside security delay"); + triggerMainCommand(PopupNotifications.panel); + + info("Wait for panel to be hidden."); + await notificationHiddenPromise; + + ok( + !PopupNotifications.getNotification( + "web-notifications", + gBrowser.selectedBrowser + ), + "Should not longer see the notification." + ); + + // Cleanup + BrowserTestUtils.removeTab(tab); + await SpecialPowers.popPrefEnv(); + // Remove the granted notification permission. + Services.perms.removeAll(); + } +); diff -Nru firefox-esr-115.7.0esr/browser/base/content/test/popupNotifications/browser_popupNotification_security_delay.js firefox-esr-115.9.0esr/browser/base/content/test/popupNotifications/browser_popupNotification_security_delay.js --- firefox-esr-115.7.0esr/browser/base/content/test/popupNotifications/browser_popupNotification_security_delay.js 2024-01-15 21:07:26.000000000 +0000 +++ firefox-esr-115.9.0esr/browser/base/content/test/popupNotifications/browser_popupNotification_security_delay.js 2024-03-14 05:21:22.000000000 +0000 @@ -294,3 +294,104 @@ "Should not longer see the notification." ); }); + +/** + * Tests that the security delay gets reset when a window is repositioned and + * the PopupNotifications panel position is updated. + */ +add_task(async function test_notificationWindowMove() { + await ensureSecurityDelayReady(); + + info("Open a notification."); + let popupShownPromise = waitForNotificationPanel(); + showNotification(); + await popupShownPromise; + ok( + PopupNotifications.isPanelOpen, + "PopupNotification should be open after show call." + ); + + // Test that the initial security delay works. + info("Trigger main action via button click during the new security delay."); + triggerMainCommand(PopupNotifications.panel); + + await new Promise(resolve => setTimeout(resolve, 0)); + + ok(PopupNotifications.isPanelOpen, "PopupNotification should still be open."); + let notification = PopupNotifications.getNotification( + "foo", + gBrowser.selectedBrowser + ); + ok( + notification, + "Notification should still be open because we clicked during the security delay." + ); + // If the notification is no longer shown (test failure) skip the remaining + // checks. + if (!notification) { + return; + } + + info("Wait for security delay to expire."); + await new Promise(resolve => + // eslint-disable-next-line mozilla/no-arbitrary-setTimeout + setTimeout(resolve, TEST_SECURITY_DELAY + 500) + ); + + info("Reposition the window"); + // Remember original window position. + let { screenX, screenY } = window; + + let promisePopupPositioned = BrowserTestUtils.waitForEvent( + PopupNotifications.panel, + "popuppositioned" + ); + + // Move the window. + window.moveTo(200, 200); + + // Wait for the panel to reposition and the PopupNotifications listener to run. + await promisePopupPositioned; + await new Promise(resolve => setTimeout(resolve, 0)); + + info("Trigger main action via button click during the new security delay."); + triggerMainCommand(PopupNotifications.panel); + + await new Promise(resolve => setTimeout(resolve, 0)); + + ok(PopupNotifications.isPanelOpen, "PopupNotification should still be open."); + notification = PopupNotifications.getNotification( + "foo", + gBrowser.selectedBrowser + ); + ok( + notification, + "Notification should still be open because we clicked during the security delay." + ); + // If the notification is no longer shown (test failure) skip the remaining + // checks. + if (!notification) { + return; + } + + // Ensure that once the security delay has passed the notification can be + // closed again. + let fakeTimeShown = TEST_SECURITY_DELAY + 500; + info(`Manually set timeShown to ${fakeTimeShown}ms in the past.`); + notification.timeShown = performance.now() - fakeTimeShown; + + info("Trigger main action via button click outside security delay"); + let notificationHiddenPromise = waitForNotificationPanelHidden(); + triggerMainCommand(PopupNotifications.panel); + + info("Wait for panel to be hidden."); + await notificationHiddenPromise; + + ok( + !PopupNotifications.getNotification("foo", gBrowser.selectedBrowser), + "Should not longer see the notification." + ); + + // Reset window position + window.moveTo(screenX, screenY); +}); diff -Nru firefox-esr-115.7.0esr/browser/components/enterprisepolicies/Policies.sys.mjs firefox-esr-115.9.0esr/browser/components/enterprisepolicies/Policies.sys.mjs --- firefox-esr-115.7.0esr/browser/components/enterprisepolicies/Policies.sys.mjs 2024-01-15 21:07:26.000000000 +0000 +++ firefox-esr-115.9.0esr/browser/components/enterprisepolicies/Policies.sys.mjs 2024-03-14 05:21:22.000000000 +0000 @@ -1797,7 +1797,9 @@ Services.prefs.unlockPref(preference); } try { - switch (typeof param[preference].Value) { + let prefType = + param[preference].Type || typeof param[preference].Value; + switch (prefType) { case "boolean": prefBranch.setBoolPref(preference, param[preference].Value); break; @@ -1807,14 +1809,9 @@ throw new Error(`Non-integer value for ${preference}`); } - // This is ugly, but necessary. On Windows GPO and macOS - // configs, booleans are converted to 0/1. In the previous - // Preferences implementation, the schema took care of - // automatically converting these values to booleans. - // Since we allow arbitrary prefs now, we have to do - // something different. See bug 1666836. - // Even uglier, because pdfjs prefs are set async, we need - // to get their type from PdfJsDefaultPreferences. + // Because pdfjs prefs are set async, we can't check the + // default pref branch to see if they are int or bool, so we + // have to get their type from PdfJsDefaultPreferences. if (preference.startsWith("pdfjs.")) { let preferenceTail = preference.replace("pdfjs.", ""); if ( @@ -1829,7 +1826,21 @@ !!param[preference].Value ); } - } else if ( + break; + } + + // This is ugly, but necessary. On Windows GPO and macOS + // configs, booleans are converted to 0/1. In the previous + // Preferences implementation, the schema took care of + // automatically converting these values to booleans. + // Since we allow arbitrary prefs now, we have to do + // something different. See bug 1666836, 1668374, and 1872267. + + // We only set something as int if it was explicit in policy, + // the same type as the default pref, or NOT 0/1. Otherwise + // we set it as bool. + if ( + param[preference].Type == "number" || prefBranch.getPrefType(preference) == prefBranch.PREF_INT || ![0, 1].includes(param[preference].Value) ) { diff -Nru firefox-esr-115.7.0esr/browser/components/enterprisepolicies/schemas/policies-schema.json firefox-esr-115.9.0esr/browser/components/enterprisepolicies/schemas/policies-schema.json --- firefox-esr-115.7.0esr/browser/components/enterprisepolicies/schemas/policies-schema.json 2024-01-15 21:07:26.000000000 +0000 +++ firefox-esr-115.9.0esr/browser/components/enterprisepolicies/schemas/policies-schema.json 2024-03-14 05:21:22.000000000 +0000 @@ -1131,6 +1131,10 @@ "Status": { "type": "string", "enum": ["default", "locked", "user", "clear"] + }, + "Type": { + "type": "string", + "enum": ["number", "boolean", "string"] } } } diff -Nru firefox-esr-115.7.0esr/browser/components/enterprisepolicies/tests/xpcshell/head.js firefox-esr-115.9.0esr/browser/components/enterprisepolicies/tests/xpcshell/head.js --- firefox-esr-115.7.0esr/browser/components/enterprisepolicies/tests/xpcshell/head.js 2024-01-15 21:07:27.000000000 +0000 +++ firefox-esr-115.9.0esr/browser/components/enterprisepolicies/tests/xpcshell/head.js 2024-03-14 05:21:23.000000000 +0000 @@ -132,6 +132,11 @@ Services.prefs.PREF_INVALID, `Pref ${prefName} is set on the default branch` ); + strictEqual( + Preferences.get(prefName), + prefValue, + `Pref ${prefName} has the correct value` + ); } function checkUnsetPref(prefName) { diff -Nru firefox-esr-115.7.0esr/browser/components/enterprisepolicies/tests/xpcshell/test_preferences.js firefox-esr-115.9.0esr/browser/components/enterprisepolicies/tests/xpcshell/test_preferences.js --- firefox-esr-115.7.0esr/browser/components/enterprisepolicies/tests/xpcshell/test_preferences.js 2024-01-15 21:07:26.000000000 +0000 +++ firefox-esr-115.9.0esr/browser/components/enterprisepolicies/tests/xpcshell/test_preferences.js 2024-03-14 05:21:22.000000000 +0000 @@ -64,12 +64,23 @@ Value: 11, Status: "user", }, + "browser.policies.test.default.number.implicit": { + Value: 0, + Status: "default", + }, + "browser.policies.test.default.number.explicit": { + Value: 0, + Status: "default", + Type: "number", + }, }, }, defaultPrefs: { "browser.policies.test.default.boolean": true, "browser.policies.test.default.string": "string", "browser.policies.test.default.number": 11, + "browser.policies.test.default.number.implicit": false, + "browser.policies.test.default.number.explicit": 0, }, lockedPrefs: { "browser.policies.test.locked.boolean": true, diff -Nru firefox-esr-115.7.0esr/browser/components/search/schema/search-telemetry-schema.json firefox-esr-115.9.0esr/browser/components/search/schema/search-telemetry-schema.json --- firefox-esr-115.7.0esr/browser/components/search/schema/search-telemetry-schema.json 2024-01-15 21:07:27.000000000 +0000 +++ firefox-esr-115.9.0esr/browser/components/search/schema/search-telemetry-schema.json 2024-03-14 05:21:23.000000000 +0000 @@ -130,17 +130,9 @@ "type": "object", "properties": { "type": { - "enum": [ - "ad_carousel", - "ad_image_row", - "ad_link", - "ad_sitelink", - "ad_sidebar", - "incontent_searchbox", - "refined_search_buttons", - "shopping_tab" - ], - "description": "The type of component the anchor or DOM element should belong to." + "type": "string", + "description": "The type of component the anchor or DOM element should belong to.", + "pattern": "^[a-z](?:_?[a-z])*$" }, "included": { "type": "object", @@ -154,6 +146,12 @@ "selector": { "description": "If topDown is true for this component, then this will be the value used in querySelectorAll(). Otherwise, it will be the value to in closest() from the context of an anchor.", "type": "string" + }, + "eventListeners": { + "$ref": "#/definitions/eventListeners" + }, + "skipCount": { + "$ref": "#/definitions/skipCount" } }, "required": ["selector"] @@ -170,21 +168,19 @@ "description": "The selector to use querySelectorAll from the context of the parent." }, "type": { - "enum": [ - "ad_carousel", - "ad_image_row", - "ad_link", - "ad_sitelink", - "ad_sidebar", - "incontent_searchbox", - "refined_search_buttons", - "shopping_tab" - ], - "description": "The component type to use if this child is present." + "type": "string", + "description": "The component type to use if this child is present.", + "pattern": "^[a-z](?:_?[a-z])*$" }, "countChildren": { "type": "boolean", "description": "Whether we should count all instances of the child element instead of anchor links found inside of the parent. Defaults to false." + }, + "eventListeners": { + "$ref": "#/definitions/eventListeners" + }, + "skipCount": { + "$ref": "#/definitions/skipCount" } }, "required": ["selector"] @@ -233,6 +229,15 @@ } } }, + "ignoreLinkRegexps": { + "type": "array", + "title": "Ignore links matching regular expressions", + "description": "Regular expressions matching links that should be ignored by the network observer.", + "items": { + "type": "string", + "description": "The matching regular expression." + } + }, "nonAdsLinkRegexps": { "type": "array", "title": "Non-ads link matching regular expressions", @@ -270,22 +275,55 @@ "type": "array", "description": "An array of methods for extracting domains from ads.", "items": { - "$ref": "/schemas/extraction" + "$ref": "#/definitions/extraction" } }, "nonAds": { "type": "array", "description": "An array of methods for extracting domains from non-ads.", "items": { - "$ref": "/schemas/extraction" + "$ref": "#/definitions/extraction" } } } } }, - "$defs": { + "definitions": { + "eventListener": { + "title": "Event Listener", + "type": "object", + "description": "Event listeners attached to a component.", + "properties": { + "eventType": { + "title": "Event Type", + "description": "The type of event to listen for. Custom events, especially those with special logic like keydownEnter, can be used if the Desktop code has been updated.", + "type": "string", + "pattern": "^[a-z][A-Za-z]*$" + }, + "target": { + "title": "Target", + "description": "The component type to report when the event is triggered. Uses the child component type (if exists), otherwise uses the parent component type.", + "type": "string", + "pattern": "^[a-z](?:_?[a-z])*$" + }, + "action": { + "title": "Action", + "description": "The action to report when the event is triggered. If the event type is 'click', defaults to clicked. Otherwise, this should be provided.", + "type": "string", + "pattern": "^[a-z](?:_?[a-z])*$" + } + }, + "required": ["eventType"] + }, + "eventListeners": { + "title": "Event Listeners", + "description": "An array of Event Listeners to apply to elements.", + "type": "array", + "items": { + "$ref": "#/definitions/eventListener" + } + }, "extraction": { - "$id": "/schemas/extraction", "anyOf": [ { "type": "object", @@ -337,5 +375,10 @@ } ] } + }, + "skipCount": { + "title": "Skip Count", + "description": "Whether to skip reporting of the count of these elements to ad_impressions. Defaults to false.", + "type": "boolean" } } diff -Nru firefox-esr-115.7.0esr/browser/config/version.txt firefox-esr-115.9.0esr/browser/config/version.txt --- firefox-esr-115.7.0esr/browser/config/version.txt 2024-01-15 21:07:27.000000000 +0000 +++ firefox-esr-115.9.0esr/browser/config/version.txt 2024-03-14 05:21:23.000000000 +0000 @@ -1 +1 @@ -115.7.0 +115.9.0 diff -Nru firefox-esr-115.7.0esr/browser/config/version_display.txt firefox-esr-115.9.0esr/browser/config/version_display.txt --- firefox-esr-115.7.0esr/browser/config/version_display.txt 2024-01-15 21:07:27.000000000 +0000 +++ firefox-esr-115.9.0esr/browser/config/version_display.txt 2024-03-14 05:21:23.000000000 +0000 @@ -1 +1 @@ -115.7.0esr +115.9.0esr diff -Nru firefox-esr-115.7.0esr/browser/extensions/formautofill/test/fixtures/heuristics_cc_exp.html firefox-esr-115.9.0esr/browser/extensions/formautofill/test/fixtures/heuristics_cc_exp.html --- firefox-esr-115.7.0esr/browser/extensions/formautofill/test/fixtures/heuristics_cc_exp.html 2024-01-15 21:07:27.000000000 +0000 +++ firefox-esr-115.9.0esr/browser/extensions/formautofill/test/fixtures/heuristics_cc_exp.html 2024-03-14 05:21:23.000000000 +0000 @@ -48,7 +48,6 @@

Binary files /srv/release.debian.org/tmp/pBtj_XbLTU/firefox-esr-115.7.0esr/build/pgo/certs/cert9.db and /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/build/pgo/certs/cert9.db differ Binary files /srv/release.debian.org/tmp/pBtj_XbLTU/firefox-esr-115.7.0esr/build/pgo/certs/key4.db and /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/build/pgo/certs/key4.db differ Binary files /srv/release.debian.org/tmp/pBtj_XbLTU/firefox-esr-115.7.0esr/build/pgo/certs/mochitest.client and /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/build/pgo/certs/mochitest.client differ diff -Nru firefox-esr-115.7.0esr/build/workspace-hack/Cargo.toml firefox-esr-115.9.0esr/build/workspace-hack/Cargo.toml --- firefox-esr-115.7.0esr/build/workspace-hack/Cargo.toml 2024-01-15 21:07:27.000000000 +0000 +++ firefox-esr-115.9.0esr/build/workspace-hack/Cargo.toml 2024-03-14 05:21:23.000000000 +0000 @@ -90,6 +90,7 @@ "profileapi", "psapi", "rpcndr", + "securitybaseapi", "setupapi", "shlobj", "std", Binary files /srv/release.debian.org/tmp/pBtj_XbLTU/firefox-esr-115.7.0esr/config/external/icu/data/icudt73l.dat and /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/config/external/icu/data/icudt73l.dat differ diff -Nru firefox-esr-115.7.0esr/config/milestone.txt firefox-esr-115.9.0esr/config/milestone.txt --- firefox-esr-115.7.0esr/config/milestone.txt 2024-01-15 21:07:27.000000000 +0000 +++ firefox-esr-115.9.0esr/config/milestone.txt 2024-03-14 05:21:23.000000000 +0000 @@ -10,4 +10,4 @@ # hardcoded milestones in the tree from these two files. #-------------------------------------------------------- -115.7.0 +115.9.0 diff -Nru firefox-esr-115.7.0esr/debian/changelog firefox-esr-115.9.0esr/debian/changelog --- firefox-esr-115.7.0esr/debian/changelog 2024-01-23 20:44:58.000000000 +0000 +++ firefox-esr-115.9.0esr/debian/changelog 2024-03-19 20:59:40.000000000 +0000 @@ -1,3 +1,22 @@ +firefox-esr (115.9.0esr-1~deb11u1) bullseye-security; urgency=medium + + * New upstream release. + * Fixes for mfsa2024-13, also known as: + CVE-2024-0743, CVE-2024-2607, CVE-2024-2608, CVE-2024-2616, + CVE-2023-5388, CVE-2024-2610, CVE-2024-2611, CVE-2024-2612, + CVE-2024-2614. + + -- Mike Hommey Wed, 20 Mar 2024 05:59:40 +0900 + +firefox-esr (115.8.0esr-1~deb11u1) bullseye-security; urgency=medium + + * New upstream release. + * Fixes for mfsa2024-06, also known as: + CVE-2024-1546, CVE-2024-1547, CVE-2024-1548, CVE-2024-1549, + CVE-2024-1550, CVE-2024-1551, CVE-2024-1552, CVE-2024-1553. + + -- Mike Hommey Wed, 21 Feb 2024 06:08:41 +0900 + firefox-esr (115.7.0esr-1~deb11u1) bullseye-security; urgency=medium * New upstream release. diff -Nru firefox-esr-115.7.0esr/debian/patches/debian-hacks/Relax-nodejs-minimum-version.patch firefox-esr-115.9.0esr/debian/patches/debian-hacks/Relax-nodejs-minimum-version.patch --- firefox-esr-115.7.0esr/debian/patches/debian-hacks/Relax-nodejs-minimum-version.patch 2024-01-23 20:44:54.000000000 +0000 +++ firefox-esr-115.9.0esr/debian/patches/debian-hacks/Relax-nodejs-minimum-version.patch 2024-03-19 20:59:00.000000000 +0000 @@ -7,15 +7,15 @@ 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/mozbuild/mozbuild/nodeutil.py b/python/mozbuild/mozbuild/nodeutil.py -index 8ec724a..efc7b7f 100644 +index 42f2627..c0e766c 100644 --- a/python/mozbuild/mozbuild/nodeutil.py +++ b/python/mozbuild/mozbuild/nodeutil.py -@@ -11,7 +11,7 @@ from mozboot.util import get_tools_dir - from mozfile import which +@@ -11,7 +11,7 @@ from mozfile import which + from packaging.version import Version from six import PY3 --NODE_MIN_VERSION = StrictVersion("12.22.12") -+NODE_MIN_VERSION = StrictVersion("12.22") - NPM_MIN_VERSION = StrictVersion("6.14.16") +-NODE_MIN_VERSION = Version("12.22.12") ++NODE_MIN_VERSION = Version("12.22") + NPM_MIN_VERSION = Version("6.14.16") diff -Nru firefox-esr-115.7.0esr/debian/patches/debian-hacks/Set-DPI-to-system-settings.patch firefox-esr-115.9.0esr/debian/patches/debian-hacks/Set-DPI-to-system-settings.patch --- firefox-esr-115.7.0esr/debian/patches/debian-hacks/Set-DPI-to-system-settings.patch 2024-01-23 20:44:54.000000000 +0000 +++ firefox-esr-115.9.0esr/debian/patches/debian-hacks/Set-DPI-to-system-settings.patch 2024-03-19 20:59:00.000000000 +0000 @@ -7,7 +7,7 @@ 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml -index ba2705d..c1b0831 100644 +index f32cab1..700dcb4 100644 --- a/modules/libpref/init/StaticPrefList.yaml +++ b/modules/libpref/init/StaticPrefList.yaml @@ -8256,7 +8256,7 @@ diff -Nru firefox-esr-115.7.0esr/dom/base/PointerLockManager.cpp firefox-esr-115.9.0esr/dom/base/PointerLockManager.cpp --- firefox-esr-115.7.0esr/dom/base/PointerLockManager.cpp 2024-01-15 21:07:28.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/base/PointerLockManager.cpp 2024-03-14 05:21:24.000000000 +0000 @@ -265,7 +265,7 @@ } return false; } - nsPresContext* presContext = presShell->GetPresContext(); + RefPtr presContext = presShell->GetPresContext(); if (!presContext) { NS_WARNING("SetPointerLock(): Unable to get PresContext"); return false; @@ -288,7 +288,7 @@ // Hide the cursor and set pointer lock for future mouse events RefPtr esm = presContext->EventStateManager(); esm->SetCursor(aCursorStyle, nullptr, {}, Nothing(), widget, true); - EventStateManager::SetPointerLock(widget, aElement); + EventStateManager::SetPointerLock(widget, presContext); return true; } diff -Nru firefox-esr-115.7.0esr/dom/base/nsContentUtils.cpp firefox-esr-115.9.0esr/dom/base/nsContentUtils.cpp --- firefox-esr-115.7.0esr/dom/base/nsContentUtils.cpp 2024-01-15 21:07:28.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/base/nsContentUtils.cpp 2024-03-14 05:21:24.000000000 +0000 @@ -8951,13 +8951,19 @@ TextFragmentWithEncode, }; + struct LiteralSpan { + const char16_t* mData; + uint32_t mLength; + + Span AsSpan() { return Span(mData, mLength); } + }; + union { nsAtom* mAtom; - const char16_t* mLiteral; + LiteralSpan mLiteral; nsString mString; const nsTextFragment* mTextFragment; }; - uint32_t mLength = 0; Type mType = Type::Unknown; }; @@ -8987,17 +8993,15 @@ u->mAtom = aAtom; u->mType = Unit::Type::Atom; uint32_t len = aAtom->GetLength(); - u->mLength = len; mLength += len; } template void Append(const char16_t (&aLiteral)[N]) { + constexpr uint32_t len = N - 1; Unit* u = AddUnit(); - u->mLiteral = aLiteral; + u->mLiteral = {aLiteral, len}; u->mType = Unit::Type::Literal; - uint32_t len = N - 1; - u->mLength = len; mLength += len; } @@ -9006,15 +9010,14 @@ uint32_t len = aString.Length(); new (&u->mString) nsString(std::move(aString)); u->mType = Unit::Type::String; - u->mLength = len; mLength += len; } - void AppendWithAttrEncode(nsString&& aString, uint32_t aLen) { + // aLen can be !isValid(), which will get propagated into mLength. + void AppendWithAttrEncode(nsString&& aString, CheckedInt aLen) { Unit* u = AddUnit(); new (&u->mString) nsString(std::move(aString)); u->mType = Unit::Type::StringWithEncode; - u->mLength = aLen; mLength += aLen; } @@ -9023,15 +9026,15 @@ u->mTextFragment = aTextFragment; u->mType = Unit::Type::TextFragment; uint32_t len = aTextFragment->GetLength(); - u->mLength = len; mLength += len; } - void AppendWithEncode(const nsTextFragment* aTextFragment, uint32_t aLen) { + // aLen can be !isValid(), which will get propagated into mLength. + void AppendWithEncode(const nsTextFragment* aTextFragment, + CheckedInt aLen) { Unit* u = AddUnit(); u->mTextFragment = aTextFragment; u->mType = Unit::Type::TextFragmentWithEncode; - u->mLength = aLen; mLength += aLen; } @@ -9062,7 +9065,7 @@ EncodeAttrString(u.mString, appender); break; case Unit::Type::Literal: - appender.Append(Span(u.mLiteral, u.mLength)); + appender.Append(u.mLiteral.AsSpan()); break; case Unit::Type::TextFragment: if (u.mTextFragment->Is2b()) { @@ -9187,7 +9190,7 @@ static void AppendEncodedCharacters(const nsTextFragment* aText, StringBuilder& aBuilder) { - uint32_t extraSpaceNeeded = 0; + uint32_t numEncodedChars = 0; uint32_t len = aText->GetLength(); if (aText->Is2b()) { const char16_t* data = aText->Get2b(); @@ -9195,16 +9198,10 @@ const char16_t c = data[i]; switch (c) { case '<': - extraSpaceNeeded += ArrayLength("<") - 2; - break; case '>': - extraSpaceNeeded += ArrayLength(">") - 2; - break; case '&': - extraSpaceNeeded += ArrayLength("&") - 2; - break; case 0x00A0: - extraSpaceNeeded += ArrayLength(" ") - 2; + ++numEncodedChars; break; default: break; @@ -9216,16 +9213,10 @@ const unsigned char c = data[i]; switch (c) { case '<': - extraSpaceNeeded += ArrayLength("<") - 2; - break; case '>': - extraSpaceNeeded += ArrayLength(">") - 2; - break; case '&': - extraSpaceNeeded += ArrayLength("&") - 2; - break; case 0x00A0: - extraSpaceNeeded += ArrayLength(" ") - 2; + ++numEncodedChars; break; default: break; @@ -9233,28 +9224,37 @@ } } - if (extraSpaceNeeded) { - aBuilder.AppendWithEncode(aText, len + extraSpaceNeeded); + if (numEncodedChars) { + // For simplicity, conservatively estimate the size of the string after + // encoding. This will result in reserving more memory than we actually + // need, but that should be fine unless the string has an enormous number of + // eg < in it. We subtract 1 for the null terminator, then 1 more for the + // existing character that will be replaced. + constexpr uint32_t maxCharExtraSpace = + std::max({ArrayLength("<"), ArrayLength(">"), + ArrayLength("&"), ArrayLength(" ")}) - + 2; + static_assert(maxCharExtraSpace < 100, "Possible underflow"); + CheckedInt maxExtraSpace = + CheckedInt(numEncodedChars) * maxCharExtraSpace; + aBuilder.AppendWithEncode(aText, maxExtraSpace + len); } else { aBuilder.Append(aText); } } -static uint32_t ExtraSpaceNeededForAttrEncoding(const nsAString& aValue) { +static CheckedInt ExtraSpaceNeededForAttrEncoding( + const nsAString& aValue) { const char16_t* c = aValue.BeginReading(); const char16_t* end = aValue.EndReading(); - uint32_t extraSpaceNeeded = 0; + uint32_t numEncodedChars = 0; while (c < end) { switch (*c) { case '"': - extraSpaceNeeded += ArrayLength(""") - 2; - break; case '&': - extraSpaceNeeded += ArrayLength("&") - 2; - break; case 0x00A0: - extraSpaceNeeded += ArrayLength(" ") - 2; + ++numEncodedChars; break; default: break; @@ -9262,19 +9262,33 @@ ++c; } - return extraSpaceNeeded; + if (!numEncodedChars) { + return 0; + } + + // For simplicity, conservatively estimate the size of the string after + // encoding. This will result in reserving more memory than we actually + // need, but that should be fine unless the string has an enormous number of + // & in it. We subtract 1 for the null terminator, then 1 more for the + // existing character that will be replaced. + constexpr uint32_t maxCharExtraSpace = + std::max({ArrayLength("""), ArrayLength("&"), + ArrayLength(" ")}) - + 2; + static_assert(maxCharExtraSpace < 100, "Possible underflow"); + return CheckedInt(numEncodedChars) * maxCharExtraSpace; } static void AppendEncodedAttributeValue(const nsAttrValue& aValue, StringBuilder& aBuilder) { if (nsAtom* atom = aValue.GetStoredAtom()) { nsDependentAtomString atomStr(atom); - uint32_t space = ExtraSpaceNeededForAttrEncoding(atomStr); - if (!space) { + auto space = ExtraSpaceNeededForAttrEncoding(atomStr); + if (space.isValid() && !space.value()) { aBuilder.Append(atom); } else { aBuilder.AppendWithAttrEncode(nsString(atomStr), - atomStr.Length() + space); + space + atomStr.Length()); } return; } @@ -9282,9 +9296,9 @@ // nsStringBuffer. nsString str; aValue.ToString(str); - uint32_t space = ExtraSpaceNeededForAttrEncoding(str); - if (space) { - aBuilder.AppendWithAttrEncode(std::move(str), str.Length() + space); + auto space = ExtraSpaceNeededForAttrEncoding(str); + if (!space.isValid() || space.value()) { + aBuilder.AppendWithAttrEncode(std::move(str), space + str.Length()); } else { aBuilder.Append(std::move(str)); } @@ -10961,7 +10975,7 @@ if (startIndexOfNextLevel <= 0) { break; } - host = "*"_ns + nsDependentCSubstring(host, startIndexOfNextLevel); + host.ReplaceLiteral(0, startIndexOfNextLevel, "*"); } } diff -Nru firefox-esr-115.7.0esr/dom/bindings/mozwebidlcodegen/test/test_mozwebidlcodegen.py firefox-esr-115.9.0esr/dom/bindings/mozwebidlcodegen/test/test_mozwebidlcodegen.py --- firefox-esr-115.7.0esr/dom/bindings/mozwebidlcodegen/test/test_mozwebidlcodegen.py 2024-01-15 21:07:28.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/bindings/mozwebidlcodegen/test/test_mozwebidlcodegen.py 2024-03-14 05:21:24.000000000 +0000 @@ -2,7 +2,6 @@ # 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/. -import imp import io import json import os @@ -12,7 +11,7 @@ import unittest import mozpack.path as mozpath -from mozfile import NamedTemporaryFile +from mozfile import NamedTemporaryFile, load_source from mozunit import MockedOpen, main from mozwebidlcodegen import WebIDLCodegenManager, WebIDLCodegenManagerState @@ -242,7 +241,7 @@ with NamedTemporaryFile("wt") as fh: fh.write("# Original content") fh.flush() - mod = imp.load_source("mozwebidlcodegen.fakemodule", fh.name) + mod = load_source("mozwebidlcodegen.fakemodule", fh.name) mod.__file__ = fake_path args = self._get_manager_args() diff -Nru firefox-esr-115.7.0esr/dom/canvas/CanvasUtils.cpp firefox-esr-115.9.0esr/dom/canvas/CanvasUtils.cpp --- firefox-esr-115.7.0esr/dom/canvas/CanvasUtils.cpp 2024-01-15 21:07:28.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/canvas/CanvasUtils.cpp 2024-03-14 05:21:24.000000000 +0000 @@ -110,6 +110,11 @@ return true; } + // Allow chrome: and resource: (this especially includes PDF.js) + if (subjectPrincipal.SchemeIs("chrome") || subjectPrincipal.SchemeIs("resource")) { + return true; + } + // Allow extension principals. auto* principal = BasePrincipal::Cast(&subjectPrincipal); if (principal->AddonPolicy() || principal->ContentScriptAddonPolicy()) { @@ -126,13 +131,6 @@ return true; } - // Don't show canvas prompt for PDF.js - JS::AutoFilename scriptFile; - if (JS::DescribeScriptedCaller(aCx, &scriptFile) && scriptFile.get() && - strcmp(scriptFile.get(), "resource://pdf.js/build/pdf.js") == 0) { - return true; - } - // ------------------------------------------------------------------- // Possibly block third parties diff -Nru firefox-esr-115.7.0esr/dom/canvas/ClientWebGLContext.cpp firefox-esr-115.9.0esr/dom/canvas/ClientWebGLContext.cpp --- firefox-esr-115.7.0esr/dom/canvas/ClientWebGLContext.cpp 2024-01-15 21:07:28.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/canvas/ClientWebGLContext.cpp 2024-03-14 05:21:24.000000000 +0000 @@ -3393,9 +3393,7 @@ EnqueueError(LOCAL_GL_OUT_OF_MEMORY, "`size` too large for platform."); return; } - - const auto data = RawBuffer<>{*size}; - Run(target, data, usage); + Run(target, *size, usage); } void ClientWebGLContext::BufferData( @@ -3429,9 +3427,11 @@ size_t srcLen, GLenum usage) { const FuncScope funcScope(*this, "bufferData"); - const auto srcBuffer = - srcBytes ? RawBuffer<>({srcBytes, srcLen}) : RawBuffer<>(srcLen); - Run(target, srcBuffer, usage); + if (srcBytes) { + Run(target, RawBuffer<>({srcBytes, srcLen}), usage); + } else { + Run(target, srcLen, usage); + } } //// diff -Nru firefox-esr-115.7.0esr/dom/canvas/HostWebGLContext.h firefox-esr-115.9.0esr/dom/canvas/HostWebGLContext.h --- firefox-esr-115.7.0esr/dom/canvas/HostWebGLContext.h 2024-01-15 21:07:27.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/canvas/HostWebGLContext.h 2024-03-14 05:21:24.000000000 +0000 @@ -477,9 +477,12 @@ return GetWebGL2Context()->GetBufferSubData(target, srcByteOffset, dest); } - void BufferData(GLenum target, const RawBuffer<>& data, GLenum usage) const { - const auto& beginOrNull = data.begin(); - mContext->BufferData(target, data.size(), beginOrNull, usage); + void BufferData(GLenum target, const RawBuffer<>& srcData, GLenum usage) const { + mContext->BufferData(target, srcData.size(), srcData.begin(), usage); + } + + void BufferData_SizeOnly(GLenum target, size_t byteSize, GLenum usage) const { + mContext->BufferData(target, byteSize, nullptr, usage); } void BufferSubData(GLenum target, uint64_t dstByteOffset, diff -Nru firefox-esr-115.7.0esr/dom/canvas/WebGLMethodDispatcher.h firefox-esr-115.9.0esr/dom/canvas/WebGLMethodDispatcher.h --- firefox-esr-115.7.0esr/dom/canvas/WebGLMethodDispatcher.h 2024-01-15 21:07:28.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/canvas/WebGLMethodDispatcher.h 2024-03-14 05:21:24.000000000 +0000 @@ -102,6 +102,7 @@ DEFINE_ASYNC(HostWebGLContext::BindBufferRange) DEFINE_ASYNC(HostWebGLContext::CopyBufferSubData) DEFINE_ASYNC(HostWebGLContext::BufferData) +DEFINE_ASYNC(HostWebGLContext::BufferData_SizeOnly) DEFINE_ASYNC(HostWebGLContext::BufferSubData) DEFINE_ASYNC(HostWebGLContext::BlitFramebuffer) DEFINE_ASYNC(HostWebGLContext::InvalidateFramebuffer) diff -Nru firefox-esr-115.7.0esr/dom/canvas/WebGLQueueParamTraits.h firefox-esr-115.9.0esr/dom/canvas/WebGLQueueParamTraits.h --- firefox-esr-115.7.0esr/dom/canvas/WebGLQueueParamTraits.h 2024-01-15 21:07:27.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/canvas/WebGLQueueParamTraits.h 2024-03-14 05:21:24.000000000 +0000 @@ -123,15 +123,10 @@ const auto& elemCount = in.size(); auto status = view.WriteParam(elemCount); if (!status) return status; - if (!elemCount) return status; - - const auto& begin = in.begin(); - const bool hasData = static_cast(begin); - status = view.WriteParam(hasData); - if (!status) return status; - if (!hasData) return status; + if (!elemCount) return status; status = view.WriteFromRange(in.Data()); + return status; } @@ -140,20 +135,12 @@ size_t elemCount = 0; auto status = view.ReadParam(&elemCount); if (!status) return status; + if (!elemCount) { *out = {}; return true; } - uint8_t hasData = 0; - status = view.ReadParam(&hasData); - if (!status) return status; - if (!hasData) { - auto temp = RawBuffer{elemCount}; - *out = std::move(temp); - return true; - } - auto data = view.template ReadRange(elemCount); if (!data) return false; *out = std::move(RawBuffer{*data}); diff -Nru firefox-esr-115.7.0esr/dom/canvas/WebGLTypes.h firefox-esr-115.9.0esr/dom/canvas/WebGLTypes.h --- firefox-esr-115.7.0esr/dom/canvas/WebGLTypes.h 2024-01-15 21:07:28.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/canvas/WebGLTypes.h 2024-03-14 05:21:24.000000000 +0000 @@ -839,33 +839,31 @@ } // namespace webgl -/** - * Represents a block of memory that it may or may not own. The - * inner data type must be trivially copyable by memcpy. - */ +// TODO: s/RawBuffer/Span/ template class RawBuffer final { const T* mBegin = nullptr; size_t mLen = 0; - UniqueBuffer mOwned; public: using ElementType = T; - /** - * If aTakeData is true, RawBuffer will delete[] the memory when destroyed. - */ - explicit RawBuffer(const Range& data, UniqueBuffer&& owned = {}) - : mBegin(data.begin().get()), - mLen(data.length()), - mOwned(std::move(owned)) {} - - explicit RawBuffer(const size_t len) : mLen(len) {} + explicit RawBuffer(const Range& data) + : mBegin(data.begin().get()), mLen(data.length()) { + if (mLen) { + MOZ_ASSERT(mBegin); + } + } ~RawBuffer() = default; - Range Data() const { return {mBegin, mLen}; } - const auto& begin() const { return mBegin; } + Range Data() const { return {begin(), mLen}; } + const auto& begin() const { + if (mLen) { + MOZ_RELEASE_ASSERT(mBegin); + } + return mBegin; + } const auto& size() const { return mLen; } void Shrink(const size_t newLen) { diff -Nru firefox-esr-115.7.0esr/dom/chrome-webidl/WindowGlobalActors.webidl firefox-esr-115.9.0esr/dom/chrome-webidl/WindowGlobalActors.webidl --- firefox-esr-115.7.0esr/dom/chrome-webidl/WindowGlobalActors.webidl 2024-01-15 21:07:28.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/chrome-webidl/WindowGlobalActors.webidl 2024-03-14 05:21:24.000000000 +0000 @@ -58,6 +58,11 @@ readonly attribute boolean isCurrentGlobal; + // This should return true if the window is currently visible in its tab. + // (A more technically accurate name would be something like + // "isActiveInRootNavigable".) + readonly attribute boolean isActiveInTab; + readonly attribute unsigned long long outerWindowId; readonly attribute unsigned long long contentParentId; diff -Nru firefox-esr-115.7.0esr/dom/events/EventStateManager.cpp firefox-esr-115.9.0esr/dom/events/EventStateManager.cpp --- firefox-esr-115.7.0esr/dom/events/EventStateManager.cpp 2024-01-15 21:07:28.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/events/EventStateManager.cpp 2024-03-14 05:21:24.000000000 +0000 @@ -247,7 +247,7 @@ EventStateManager* EventStateManager::sActiveESM = nullptr; Document* EventStateManager::sMouseOverDocument = nullptr; AutoWeakFrame EventStateManager::sLastDragOverFrame = nullptr; -LayoutDeviceIntPoint EventStateManager::sPreLockPoint = +LayoutDeviceIntPoint EventStateManager::sPreLockScreenPoint = LayoutDeviceIntPoint(0, 0); LayoutDeviceIntPoint EventStateManager::sLastRefPoint = kInvalidRefPoint; CSSIntPoint EventStateManager::sLastScreenPoint = CSSIntPoint(0, 0); @@ -4927,7 +4927,7 @@ /* static */ void EventStateManager::SetPointerLock(nsIWidget* aWidget, - nsIContent* aElement) { + nsPresContext* aPresContext) { // Reset mouse wheel transaction WheelTransaction::EndTransaction(); @@ -4937,6 +4937,7 @@ if (PointerLockManager::IsLocked()) { MOZ_ASSERT(aWidget, "Locking pointer requires a widget"); + MOZ_ASSERT(aPresContext, "Locking pointer requires a presContext"); // Release all pointer capture when a pointer lock is successfully applied // on an element. @@ -4944,7 +4945,8 @@ // Store the last known ref point so we can reposition the pointer after // unlock. - sPreLockPoint = sLastRefPoint; + sPreLockScreenPoint = LayoutDeviceIntPoint::Round( + sLastScreenPoint * aPresContext->CSSToDevPixelScale()); // Fire a synthetic mouse move to ensure event state is updated. We first // set the mouse to the center of the window, so that the mouse event @@ -4969,20 +4971,19 @@ aWidget->UnlockNativePointer(); } - // Unlocking, so return pointer to the original position by firing a - // synthetic mouse event. We first reset sLastRefPoint to its - // pre-pointerlock position, so that the synthetic mouse event reports - // no movement. - sLastRefPoint = sPreLockPoint; // Reset SynthCenteringPoint to invalid so that next time we start // locking pointer, it has its initial value. sSynthCenteringPoint = kInvalidRefPoint; if (aWidget) { + // Unlocking, so return pointer to the original position by firing a + // synthetic mouse event. We first reset sLastRefPoint to its + // pre-pointerlock position, so that the synthetic mouse event reports + // no movement. + sLastRefPoint = sPreLockScreenPoint - aWidget->WidgetToScreenOffset(); // XXX Cannot we do synthesize the native mousemove in the parent process // with calling `UnlockNativePointer` above? Then, we could make this // API work only in the automation mode. - aWidget->SynthesizeNativeMouseMove( - sPreLockPoint + aWidget->WidgetToScreenOffset(), nullptr); + aWidget->SynthesizeNativeMouseMove(sPreLockScreenPoint, nullptr); } // Unsuppress DnD diff -Nru firefox-esr-115.7.0esr/dom/events/EventStateManager.h firefox-esr-115.9.0esr/dom/events/EventStateManager.h --- firefox-esr-115.7.0esr/dom/events/EventStateManager.h 2024-01-15 21:07:28.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/events/EventStateManager.h 2024-03-14 05:21:24.000000000 +0000 @@ -1152,10 +1152,9 @@ StyleCursorKind mLockCursor; bool mLastFrameConsumedSetCursor; - // Last mouse event mRefPoint (the offset from the widget's origin in - // device pixels) when mouse was locked, used to restore mouse position - // after unlocking. - static LayoutDeviceIntPoint sPreLockPoint; + // Last mouse event screen point (in device pixel) when mouse was locked, used + // to restore mouse position after unlocking. + static LayoutDeviceIntPoint sPreLockScreenPoint; // Stores the mRefPoint of the last synthetic mouse move we dispatched // to re-center the mouse when we were pointer locked. If this is (-1,-1) it @@ -1240,7 +1239,7 @@ MOZ_CAN_RUN_SCRIPT_BOUNDARY void FireContextClick(); MOZ_CAN_RUN_SCRIPT static void SetPointerLock(nsIWidget* aWidget, - nsIContent* aElement); + nsPresContext* aPresContext); static void sClickHoldCallback(nsITimer* aTimer, void* aESM); }; diff -Nru firefox-esr-115.7.0esr/dom/fetch/FetchDriver.cpp firefox-esr-115.9.0esr/dom/fetch/FetchDriver.cpp --- firefox-esr-115.7.0esr/dom/fetch/FetchDriver.cpp 2024-01-15 21:07:28.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/fetch/FetchDriver.cpp 2024-03-14 05:21:25.000000000 +0000 @@ -948,6 +948,7 @@ // mObserver could be null after OnResponseAvailable(). if (mObserver) { + mObserver->OnReportPerformanceTiming(); mObserver->OnResponseEnd(FetchDriverObserver::eByNetworking, JS::UndefinedHandleValue); mObserver = nullptr; diff -Nru firefox-esr-115.7.0esr/dom/fetch/FetchService.cpp firefox-esr-115.9.0esr/dom/fetch/FetchService.cpp --- firefox-esr-115.7.0esr/dom/fetch/FetchService.cpp 2024-01-15 21:07:28.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/fetch/FetchService.cpp 2024-03-14 05:21:24.000000000 +0000 @@ -256,8 +256,13 @@ FETCH_LOG(("FetchInstance::Cancel() [%p]", this)); + // If mFetchDriver is not null here, FetchInstance::Fetch() has already + // started, let mFetchDriver::RunAbortAlgorithm() to call + // FetchInstance::OnResponseEnd() to resolve the pending promises. + // Otherwise, resolving the pending promises here. if (mFetchDriver) { mFetchDriver->RunAbortAlgorithm(); + return; } MOZ_ASSERT(mPromises); @@ -294,18 +299,30 @@ MOZ_ASSERT(mPromises); - // If ResponseTimingPromise is not resolved, it means the fetch is aborted. - // Resolving ResponseTimingPromise with an emtpy ResponseTiming. - if (!mPromises->GetResponseTimingPromise()->IsResolved()) { - mPromises->ResolveResponseTimingPromise(ResponseTiming(), __func__); - } - // Resolve the ResponseEndPromise - mPromises->ResolveResponseEndPromise(ResponseEndArgs(aReason), __func__); - if (aReason == eAborted) { + // If ResponseAvailablePromise has not resolved yet, resolved with + // NS_ERROR_DOM_ABORT_ERR response. + if (!mPromises->GetResponseAvailablePromise()->IsResolved()) { + mPromises->ResolveResponseAvailablePromise( + InternalResponse::NetworkError(NS_ERROR_DOM_ABORT_ERR), __func__); + } + + // If ResponseTimingPromise has not resolved yet, resolved with empty + // ResponseTiming. + if (!mPromises->GetResponseTimingPromise()->IsResolved()) { + mPromises->ResolveResponseTimingPromise(ResponseTiming(), __func__); + } + // Resolve the ResponseEndPromise + mPromises->ResolveResponseEndPromise(ResponseEndArgs(aReason), __func__); return; } + MOZ_ASSERT(mPromises->GetResponseAvailablePromise()->IsResolved() && + mPromises->GetResponseTimingPromise()->IsResolved()); + + // Resolve the ResponseEndPromise + mPromises->ResolveResponseEndPromise(ResponseEndArgs(aReason), __func__); + // Remove the FetchInstance from FetchInstanceTable RefPtr fetchService = FetchService::GetInstance(); MOZ_ASSERT(fetchService); @@ -414,7 +431,10 @@ UniquePtr performanceTiming( mFetchDriver->GetPerformanceTimingData(timing.initiatorType(), timing.entryName())); + // FetchDriver has no corresponding performance timing when fetch() failed. + // Resolve the ResponseTimingPromise with empty timing. if (!performanceTiming) { + mPromises->ResolveResponseTimingPromise(ResponseTiming(), __func__); return; } timing.timingData() = performanceTiming->ToIPC(); diff -Nru firefox-esr-115.7.0esr/dom/indexedDB/SafeRefPtr.h firefox-esr-115.9.0esr/dom/indexedDB/SafeRefPtr.h --- firefox-esr-115.7.0esr/dom/indexedDB/SafeRefPtr.h 2024-01-15 21:07:28.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/indexedDB/SafeRefPtr.h 2024-03-14 05:21:25.000000000 +0000 @@ -219,8 +219,7 @@ aOther.mRawPtr = nullptr; } SafeRefPtr& operator=(SafeRefPtr&& aOther) noexcept { - assign_assuming_AddRef(aOther.mRawPtr); - aOther.mRawPtr = nullptr; + assign_assuming_AddRef(aOther.forget().take()); return *this; } diff -Nru firefox-esr-115.7.0esr/dom/ipc/ContentParent.cpp firefox-esr-115.9.0esr/dom/ipc/ContentParent.cpp --- firefox-esr-115.7.0esr/dom/ipc/ContentParent.cpp 2024-01-15 21:07:28.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/ipc/ContentParent.cpp 2024-03-14 05:21:25.000000000 +0000 @@ -5981,11 +5981,13 @@ } mozilla::ipc::IPCResult ContentParent::RecvSetCharacterMap( - const uint32_t& aGeneration, const mozilla::fontlist::Pointer& aFacePtr, + const uint32_t& aGeneration, const uint32_t& aFamilyIndex, + const bool& aAlias, const uint32_t& aFaceIndex, const gfxSparseBitSet& aMap) { auto* fontList = gfxPlatformFontList::PlatformFontList(); MOZ_RELEASE_ASSERT(fontList, "gfxPlatformFontList not initialized?"); - fontList->SetCharacterMap(aGeneration, aFacePtr, aMap); + fontList->SetCharacterMap(aGeneration, aFamilyIndex, aAlias, aFaceIndex, + aMap); return IPC_OK(); } @@ -5998,10 +6000,10 @@ } mozilla::ipc::IPCResult ContentParent::RecvSetupFamilyCharMap( - const uint32_t& aGeneration, const mozilla::fontlist::Pointer& aFamilyPtr) { + const uint32_t& aGeneration, const uint32_t& aIndex, const bool& aAlias) { auto* fontList = gfxPlatformFontList::PlatformFontList(); MOZ_RELEASE_ASSERT(fontList, "gfxPlatformFontList not initialized?"); - fontList->SetupFamilyCharMap(aGeneration, aFamilyPtr); + fontList->SetupFamilyCharMap(aGeneration, aIndex, aAlias); return IPC_OK(); } diff -Nru firefox-esr-115.7.0esr/dom/ipc/ContentParent.h firefox-esr-115.9.0esr/dom/ipc/ContentParent.h --- firefox-esr-115.7.0esr/dom/ipc/ContentParent.h 2024-01-15 21:07:28.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/ipc/ContentParent.h 2024-03-14 05:21:24.000000000 +0000 @@ -1171,17 +1171,19 @@ const uint32_t& aFamilyIndex, const bool& aLoadCmaps); - mozilla::ipc::IPCResult RecvSetCharacterMap( - const uint32_t& aGeneration, const mozilla::fontlist::Pointer& aFacePtr, - const gfxSparseBitSet& aMap); + mozilla::ipc::IPCResult RecvSetCharacterMap(const uint32_t& aGeneration, + const uint32_t& aFamilyIndex, + const bool& aAlias, + const uint32_t& aFaceIndex, + const gfxSparseBitSet& aMap); mozilla::ipc::IPCResult RecvInitOtherFamilyNames(const uint32_t& aGeneration, const bool& aDefer, bool* aLoaded); - mozilla::ipc::IPCResult RecvSetupFamilyCharMap( - const uint32_t& aGeneration, - const mozilla::fontlist::Pointer& aFamilyPtr); + mozilla::ipc::IPCResult RecvSetupFamilyCharMap(const uint32_t& aGeneration, + const uint32_t& aIndex, + const bool& aAlias); mozilla::ipc::IPCResult RecvStartCmapLoading(const uint32_t& aGeneration, const uint32_t& aStartIndex); diff -Nru firefox-esr-115.7.0esr/dom/ipc/PContent.ipdl firefox-esr-115.9.0esr/dom/ipc/PContent.ipdl --- firefox-esr-115.7.0esr/dom/ipc/PContent.ipdl 2024-01-15 21:07:28.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/ipc/PContent.ipdl 2024-03-14 05:21:24.000000000 +0000 @@ -131,7 +131,6 @@ using mozilla::dom::MaybeDiscardedWindowContext from "mozilla/dom/WindowContext.h"; using mozilla::dom::WindowContextTransaction from "mozilla/dom/WindowContext.h"; [MoveOnly] using base::SharedMemoryHandle from "base/shared_memory.h"; -using mozilla::fontlist::Pointer from "SharedFontList.h"; using gfxSparseBitSet from "gfxFontUtils.h"; using FontVisibility from "gfxFontEntry.h"; using mozilla::dom::MediaControlAction from "mozilla/dom/MediaControlKeySource.h"; @@ -1473,24 +1472,27 @@ * @param aGeneration * Font-list generation, so requests relating to an obsolete list can be * ignored (see comments for GetFontListShmBlock). - * @param aFacePtr - * Font-list shared-memory "pointer" to the Face record to be updated. - * A Pointer is a record of a shared-memory block index and an offset - * within that block, which each process that maps the block can convert - * into a real pointer in its address space. + * @param aFamilyIndex + * Index of the font family in the font list (see aAlias for which list). + * @param aAlias + * Whether aFamilyIndex refers to the Families() or AliasFamilies() list. + * @param aFaceIndex + * Index of the face within the family's Faces() list. * @param aMap * The character coverage map of the face. (This will be stored as a * SharedBitSet record within the shared font list, and the Face record * will be updated to reference it.) */ - async SetCharacterMap(uint32_t aGeneration, Pointer aFacePtr, gfxSparseBitSet aMap); + async SetCharacterMap(uint32_t aGeneration, uint32_t aFamilyIndex, bool aAlias, + uint32_t aFaceIndex, gfxSparseBitSet aMap); /** * Ask the parent to set up the merged charmap for a family, to accelerate * future fallback searches. - * aFamilyPtr may refer to an element of either the Families() or AliasFamilies(). + * aFamilyIndex may refer to an element in either Families() or AliasFamilies(), + * with aAlias determining which. */ - async SetupFamilyCharMap(uint32_t aGeneration, Pointer aFamilyPtr); + async SetupFamilyCharMap(uint32_t aGeneration, uint32_t aFamilyIndex, bool aAlias); /** * Ask the parent to try and complete the InitOtherFamilyNames task, because diff -Nru firefox-esr-115.7.0esr/dom/ipc/WindowGlobalParent.cpp firefox-esr-115.9.0esr/dom/ipc/WindowGlobalParent.cpp --- firefox-esr-115.7.0esr/dom/ipc/WindowGlobalParent.cpp 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/ipc/WindowGlobalParent.cpp 2024-03-14 05:21:25.000000000 +0000 @@ -609,6 +609,23 @@ return CanSend() && BrowsingContext()->GetCurrentWindowGlobal() == this; } +bool WindowGlobalParent::IsActiveInTab() { + if (!CanSend()) { + return false; + } + + CanonicalBrowsingContext* bc = BrowsingContext(); + if (!bc || bc->GetCurrentWindowGlobal() != this) { + return false; + } + + // We check the top BC so we don't need to worry about getting a stale value. + // That may not be necessary. + MOZ_ASSERT(bc->Top()->IsInBFCache() == bc->IsInBFCache(), + "BFCache bit out of sync?"); + return bc->AncestorsAreCurrent() && !bc->Top()->IsInBFCache(); +} + namespace { class ShareHandler final : public PromiseNativeHandler { diff -Nru firefox-esr-115.7.0esr/dom/ipc/WindowGlobalParent.h firefox-esr-115.9.0esr/dom/ipc/WindowGlobalParent.h --- firefox-esr-115.7.0esr/dom/ipc/WindowGlobalParent.h 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/ipc/WindowGlobalParent.h 2024-03-14 05:21:25.000000000 +0000 @@ -145,6 +145,8 @@ bool IsCurrentGlobal(); + bool IsActiveInTab(); + bool IsProcessRoot(); uint32_t ContentBlockingEvents(); diff -Nru firefox-esr-115.7.0esr/dom/media/platforms/wrappers/MediaChangeMonitor.cpp firefox-esr-115.9.0esr/dom/media/platforms/wrappers/MediaChangeMonitor.cpp --- firefox-esr-115.7.0esr/dom/media/platforms/wrappers/MediaChangeMonitor.cpp 2024-01-15 21:07:28.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/media/platforms/wrappers/MediaChangeMonitor.cpp 2024-03-14 05:21:24.000000000 +0000 @@ -519,6 +519,10 @@ mDecoderInitialized = true; mConversionRequired = Some(mDecoder->NeedsConversion()); mCanRecycleDecoder = Some(CanRecycleDecoder()); + if (mPendingSeekThreshold) { + mDecoder->SetSeekThreshold(*mPendingSeekThreshold); + mPendingSeekThreshold.reset(); + } } return mInitPromise.ResolveOrRejectIfExists(std::move(aValue), __func__); @@ -686,11 +690,19 @@ } void MediaChangeMonitor::SetSeekThreshold(const media::TimeUnit& aTime) { - if (mDecoder) { - mDecoder->SetSeekThreshold(aTime); - } else { - MediaDataDecoder::SetSeekThreshold(aTime); - } + GetCurrentSerialEventTarget()->Dispatch(NS_NewRunnableFunction( + "MediaChangeMonitor::SetSeekThreshold", + [self = RefPtr(this), time = aTime, this] { + // During the shutdown. + if (mShutdownPromise) { + return; + } + if (mDecoder && mDecoderInitialized) { + mDecoder->SetSeekThreshold(time); + } else { + mPendingSeekThreshold = Some(time); + } + })); } RefPtr @@ -744,6 +756,11 @@ mConversionRequired = Some(mDecoder->NeedsConversion()); mCanRecycleDecoder = Some(CanRecycleDecoder()); + if (mPendingSeekThreshold) { + mDecoder->SetSeekThreshold(*mPendingSeekThreshold); + mPendingSeekThreshold.reset(); + } + if (!mFlushPromise.IsEmpty()) { // A Flush is pending, abort the current operation. mFlushPromise.Resolve(true, __func__); diff -Nru firefox-esr-115.7.0esr/dom/media/platforms/wrappers/MediaChangeMonitor.h firefox-esr-115.9.0esr/dom/media/platforms/wrappers/MediaChangeMonitor.h --- firefox-esr-115.7.0esr/dom/media/platforms/wrappers/MediaChangeMonitor.h 2024-01-15 21:07:28.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/media/platforms/wrappers/MediaChangeMonitor.h 2024-03-14 05:21:24.000000000 +0000 @@ -135,6 +135,8 @@ Maybe mConversionRequired; bool mDecoderInitialized = false; const CreateDecoderParamsForAsync mParams; + // Keep any seek threshold set for after decoder creation and initialization. + Maybe mPendingSeekThreshold; }; } // namespace mozilla diff -Nru firefox-esr-115.7.0esr/dom/media/test/mochitest_bugs.ini firefox-esr-115.9.0esr/dom/media/test/mochitest_bugs.ini --- firefox-esr-115.7.0esr/dom/media/test/mochitest_bugs.ini 2024-01-15 21:07:28.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/media/test/mochitest_bugs.ini 2024-03-14 05:21:24.000000000 +0000 @@ -783,6 +783,7 @@ [test_bug1113600.html] skip-if = os == 'win' && os_version == '10.0' && debug # Bug 1713410 + os == 'mac' # Bug 1198168 [test_bug1120222.html] tags=capturestream [test_bug1242338.html] diff -Nru firefox-esr-115.7.0esr/dom/streams/ReadableStreamPipeTo.cpp firefox-esr-115.9.0esr/dom/streams/ReadableStreamPipeTo.cpp --- firefox-esr-115.7.0esr/dom/streams/ReadableStreamPipeTo.cpp 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/streams/ReadableStreamPipeTo.cpp 2024-03-14 05:21:25.000000000 +0000 @@ -607,7 +607,7 @@ // matches other engines' behavior. See // https://github.com/whatwg/streams/issues/1243. RefPtr promise = - Promise::CreateInfallible(mWriter->GetParentObject()); + Promise::CreateInfallible(xpc::CurrentNativeGlobal(aCx)); promise->MaybeResolveWithUndefined(); auto result = promise->ThenWithCycleCollectedArgsJS( [](JSContext* aCx, JS::Handle, ErrorResult& aRv, diff -Nru firefox-esr-115.7.0esr/dom/webscheduling/WebTaskScheduler.h firefox-esr-115.9.0esr/dom/webscheduling/WebTaskScheduler.h --- firefox-esr-115.7.0esr/dom/webscheduling/WebTaskScheduler.h 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/webscheduling/WebTaskScheduler.h 2024-03-14 05:21:25.000000000 +0000 @@ -113,7 +113,7 @@ WebTask* GetNextTask() const; - void Disconnect(); + virtual void Disconnect(); void RunTaskSignalPriorityChange(TaskSignal* aTaskSignal); diff -Nru firefox-esr-115.7.0esr/dom/webscheduling/WebTaskSchedulerWorker.cpp firefox-esr-115.9.0esr/dom/webscheduling/WebTaskSchedulerWorker.cpp --- firefox-esr-115.7.0esr/dom/webscheduling/WebTaskSchedulerWorker.cpp 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/webscheduling/WebTaskSchedulerWorker.cpp 2024-03-14 05:21:25.000000000 +0000 @@ -36,6 +36,9 @@ nsresult WebTaskSchedulerWorker::SetTimeoutForDelayedTask(WebTask* aTask, uint64_t aDelay) { + if (!mWorkerPrivate) { + return NS_ERROR_UNEXPECTED; + } JSContext* cx = nsContentUtils::GetCurrentJSContext(); if (!cx) { return NS_ERROR_UNEXPECTED; @@ -52,8 +55,18 @@ } bool WebTaskSchedulerWorker::DispatchEventLoopRunnable() { + if (!mWorkerPrivate) { + return false; + } RefPtr runnable = new WebTaskWorkerRunnable(mWorkerPrivate, this); return runnable->Dispatch(); } + +void WebTaskSchedulerWorker::Disconnect() { + if (mWorkerPrivate) { + mWorkerPrivate = nullptr; + } + WebTaskScheduler::Disconnect(); +} } // namespace mozilla::dom diff -Nru firefox-esr-115.7.0esr/dom/webscheduling/WebTaskSchedulerWorker.h firefox-esr-115.9.0esr/dom/webscheduling/WebTaskSchedulerWorker.h --- firefox-esr-115.7.0esr/dom/webscheduling/WebTaskSchedulerWorker.h 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/webscheduling/WebTaskSchedulerWorker.h 2024-03-14 05:21:25.000000000 +0000 @@ -34,6 +34,8 @@ public: explicit WebTaskSchedulerWorker(WorkerPrivate* aWorkerPrivate); + void Disconnect() override; + private: ~WebTaskSchedulerWorker() = default; diff -Nru firefox-esr-115.7.0esr/dom/workers/WorkerPrivate.cpp firefox-esr-115.9.0esr/dom/workers/WorkerPrivate.cpp --- firefox-esr-115.7.0esr/dom/workers/WorkerPrivate.cpp 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/workers/WorkerPrivate.cpp 2024-03-14 05:21:25.000000000 +0000 @@ -3770,7 +3770,9 @@ if (WorkerRan == aRanOrNot) { nsIThread* currentThread = NS_GetCurrentThread(); MOZ_ASSERT(currentThread); - MOZ_ASSERT(!NS_HasPendingEvents(currentThread)); + // On the worker thread WorkerRunnable will refuse to run if not nested + // on top of a WorkerThreadPrimaryRunnable. + Unused << NS_WARN_IF(NS_HasPendingEvents(currentThread)); } #endif diff -Nru firefox-esr-115.7.0esr/dom/workers/WorkerRunnable.cpp firefox-esr-115.9.0esr/dom/workers/WorkerRunnable.cpp --- firefox-esr-115.7.0esr/dom/workers/WorkerRunnable.cpp 2024-01-15 21:07:28.000000000 +0000 +++ firefox-esr-115.9.0esr/dom/workers/WorkerRunnable.cpp 2024-03-14 05:21:25.000000000 +0000 @@ -13,6 +13,7 @@ #include "mozilla/AlreadyAddRefed.h" #include "mozilla/AppShutdown.h" #include "mozilla/Assertions.h" +#include "mozilla/CycleCollectedJSContext.h" #include "mozilla/DebugOnly.h" #include "mozilla/ErrorResult.h" #include "mozilla/Maybe.h" @@ -224,6 +225,33 @@ bool targetIsWorkerThread = mBehavior == WorkerThreadModifyBusyCount || mBehavior == WorkerThreadUnchangedBusyCount; + if (targetIsWorkerThread) { + // On a worker thread, a WorkerRunnable should only run when there is an + // underlying WorkerThreadPrimaryRunnable active, which means we should + // find a CycleCollectedJSContext. + if (!CycleCollectedJSContext::Get()) { +#if (defined(MOZ_COLLECTING_RUNNABLE_TELEMETRY) && defined(DEBUG)) + // Temporarily set the LogLevel high enough to be certain the messages + // are visible. + LogModule* module = sWorkerRunnableLog; + LogLevel prevLevel = module->Level(); + if (prevLevel < LogLevel::Error) { + module->SetLevel(LogLevel::Error); + } + MOZ_LOG(sWorkerRunnableLog, LogLevel::Error, + ("Runnable '%s' was executed after WorkerThreadPrimaryRunnable " + "ended.", + "WorkerRunnable")); + module->SetLevel(prevLevel); +#endif + MOZ_DIAGNOSTIC_ASSERT(false, + "A WorkerRunnable was executed after " + "WorkerThreadPrimaryRunnable ended."); + + return NS_OK; + } + } + #ifdef DEBUG MOZ_ASSERT_IF(mCallingCancelWithinRun, targetIsWorkerThread); if (targetIsWorkerThread) { diff -Nru firefox-esr-115.7.0esr/gfx/2d/DrawTarget.cpp firefox-esr-115.9.0esr/gfx/2d/DrawTarget.cpp --- firefox-esr-115.7.0esr/gfx/2d/DrawTarget.cpp 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/2d/DrawTarget.cpp 2024-03-14 05:21:25.000000000 +0000 @@ -183,8 +183,9 @@ const Pattern& aPattern, const StrokeOptions& aStrokeOptions, const DrawOptions& aOptions) { - RefPtr path = aFont->GetPathForGlyphs(aBuffer, this); - Stroke(path, aPattern, aStrokeOptions, aOptions); + if (RefPtr path = aFont->GetPathForGlyphs(aBuffer, this)) { + Stroke(path, aPattern, aStrokeOptions, aOptions); + } } already_AddRefed DrawTarget::IntoLuminanceSource( diff -Nru firefox-esr-115.7.0esr/gfx/2d/ScaledFontBase.cpp firefox-esr-115.9.0esr/gfx/2d/ScaledFontBase.cpp --- firefox-esr-115.7.0esr/gfx/2d/ScaledFontBase.cpp 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/2d/ScaledFontBase.cpp 2024-03-14 05:21:25.000000000 +0000 @@ -127,7 +127,11 @@ } #ifdef USE_CAIRO if (aTarget->GetBackendType() == BackendType::CAIRO) { - MOZ_ASSERT(mScaledFont); + auto* cairoScaledFont = GetCairoScaledFont(); + if (!cairoScaledFont) { + MOZ_ASSERT_UNREACHABLE("Invalid scaled font"); + return nullptr; + } DrawTarget* dt = const_cast(aTarget); cairo_t* ctx = static_cast( @@ -141,7 +145,7 @@ cairo_set_matrix(ctx, &mat); } - cairo_set_scaled_font(ctx, mScaledFont); + cairo_set_scaled_font(ctx, cairoScaledFont); // Convert our GlyphBuffer into an array of Cairo glyphs. std::vector glyphs(aBuffer.mNumGlyphs); @@ -181,7 +185,11 @@ } #ifdef USE_CAIRO if (backendType == BackendType::CAIRO) { - MOZ_ASSERT(mScaledFont); + auto* cairoScaledFont = GetCairoScaledFont(); + if (!cairoScaledFont) { + MOZ_ASSERT_UNREACHABLE("Invalid scaled font"); + return; + } PathBuilderCairo* builder = static_cast(aBuilder); cairo_t* ctx = cairo_create(DrawTargetCairo::GetDummySurface()); @@ -200,7 +208,7 @@ glyphs[i].y = aBuffer.mGlyphs[i].mPosition.y; } - cairo_set_scaled_font(ctx, mScaledFont); + cairo_set_scaled_font(ctx, cairoScaledFont); cairo_glyph_path(ctx, &glyphs[0], aBuffer.mNumGlyphs); RefPtr cairoPath = new PathCairo(ctx); diff -Nru firefox-esr-115.7.0esr/gfx/gl/GLContext.cpp firefox-esr-115.9.0esr/gfx/gl/GLContext.cpp --- firefox-esr-115.7.0esr/gfx/gl/GLContext.cpp 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/gl/GLContext.cpp 2024-03-14 05:21:25.000000000 +0000 @@ -2432,6 +2432,12 @@ return 0; } +void GLContext::ResetTLSCurrentContext() { + if (sCurrentContext.init()) { + sCurrentContext.set(nullptr); + } +} + bool GLContext::MakeCurrent(bool aForce) const { if (MOZ_UNLIKELY(IsContextLost())) return false; diff -Nru firefox-esr-115.7.0esr/gfx/gl/GLContext.h firefox-esr-115.9.0esr/gfx/gl/GLContext.h --- firefox-esr-115.7.0esr/gfx/gl/GLContext.h 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/gl/GLContext.h 2024-03-14 05:21:25.000000000 +0000 @@ -185,6 +185,8 @@ bool mImplicitMakeCurrent = false; bool mUseTLSIsCurrent; + static void ResetTLSCurrentContext(); + class TlsScope final { const WeakPtr mGL; const bool mWasTlsOk; diff -Nru firefox-esr-115.7.0esr/gfx/gl/GLContextProviderCGL.mm firefox-esr-115.9.0esr/gfx/gl/GLContextProviderCGL.mm --- firefox-esr-115.7.0esr/gfx/gl/GLContextProviderCGL.mm 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/gl/GLContextProviderCGL.mm 2024-03-14 05:21:25.000000000 +0000 @@ -84,6 +84,8 @@ bool GLContextCGL::MakeCurrentImpl() const { if (mContext) { + GLContext::ResetTLSCurrentContext(); + [mContext makeCurrentContext]; MOZ_ASSERT(IsCurrentImpl()); // Use non-blocking swap in "ASAP mode". diff -Nru firefox-esr-115.7.0esr/gfx/gl/GLContextProviderEAGL.mm firefox-esr-115.9.0esr/gfx/gl/GLContextProviderEAGL.mm --- firefox-esr-115.7.0esr/gfx/gl/GLContextProviderEAGL.mm 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/gl/GLContextProviderEAGL.mm 2024-03-14 05:21:25.000000000 +0000 @@ -90,6 +90,8 @@ bool GLContextEAGL::MakeCurrentImpl() const { if (mContext) { + GLContext::ResetTLSCurrentContext(); + if (![EAGLContext setCurrentContext:mContext]) { return false; } diff -Nru firefox-esr-115.7.0esr/gfx/gl/GLContextProviderWGL.cpp firefox-esr-115.9.0esr/gfx/gl/GLContextProviderWGL.cpp --- firefox-esr-115.7.0esr/gfx/gl/GLContextProviderWGL.cpp 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/gl/GLContextProviderWGL.cpp 2024-03-14 05:21:25.000000000 +0000 @@ -158,12 +158,16 @@ const auto curCtx = mSymbols.fGetCurrentContext(); const auto curDC = mSymbols.fGetCurrentDC(); + GLContext::ResetTLSCurrentContext(); + if (!mSymbols.fMakeCurrent(mRootDc, mDummyGlrc)) { NS_WARNING("wglMakeCurrent failed"); return false; } - const auto resetContext = - MakeScopeExit([&]() { mSymbols.fMakeCurrent(curDC, curCtx); }); + const auto resetContext = MakeScopeExit([&]() { + GLContext::ResetTLSCurrentContext(); + mSymbols.fMakeCurrent(curDC, curCtx); + }); const auto loader = GetSymbolLoader(); @@ -297,6 +301,8 @@ } bool GLContextWGL::MakeCurrentImpl() const { + GLContext::ResetTLSCurrentContext(); + const bool succeeded = sWGLLib.mSymbols.fMakeCurrent(mDC, mContext); NS_ASSERTION(succeeded, "Failed to make GL context current!"); return succeeded; diff -Nru firefox-esr-115.7.0esr/gfx/gl/GLLibraryEGL.h firefox-esr-115.9.0esr/gfx/gl/GLLibraryEGL.h --- firefox-esr-115.7.0esr/gfx/gl/GLLibraryEGL.h 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/gl/GLLibraryEGL.h 2024-03-14 05:21:25.000000000 +0000 @@ -11,7 +11,7 @@ #include "base/platform_thread.h" // for PlatformThreadId #include "gfxEnv.h" -#include "GLTypes.h" +#include "GLContext.h" #include "mozilla/EnumTypeTraits.h" #include "mozilla/gfx/Logging.h" #include "mozilla/Maybe.h" @@ -264,7 +264,6 @@ const bool CHECK_CONTEXT_OWNERSHIP = true; if (CHECK_CONTEXT_OWNERSHIP) { const MutexAutoLock lock(mMutex); - const auto tid = PlatformThread::CurrentId(); const auto prevCtx = fGetCurrentContext(); @@ -287,6 +286,11 @@ } } + // Always reset the TLS current context. + // If we're called by TLS-caching MakeCurrent, after we return true, + // the caller will set the TLS correctly anyway. + GLContext::ResetTLSCurrentContext(); + WRAP(fMakeCurrent(dpy, draw, read, ctx)); } diff -Nru firefox-esr-115.7.0esr/gfx/gl/GLXLibrary.h firefox-esr-115.9.0esr/gfx/gl/GLXLibrary.h --- firefox-esr-115.7.0esr/gfx/gl/GLXLibrary.h 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/gl/GLXLibrary.h 2024-03-14 05:21:26.000000000 +0000 @@ -6,7 +6,7 @@ #ifndef GFX_GLXLIBRARY_H #define GFX_GLXLIBRARY_H -#include "GLContextTypes.h" +#include "GLContext.h" #include "mozilla/Assertions.h" #include "mozilla/DataMutex.h" #include "mozilla/gfx/XlibDisplay.h" @@ -65,6 +65,7 @@ Bool fMakeCurrent(Display* display, GLXDrawable drawable, GLXContext context) const { DECL_WRAPPER_SCOPE(display) + GLContext::ResetTLSCurrentContext(); return mSymbols.fMakeCurrent(display, drawable, context); } diff -Nru firefox-esr-115.7.0esr/gfx/ipc/InProcessCompositorSession.cpp firefox-esr-115.9.0esr/gfx/ipc/InProcessCompositorSession.cpp --- firefox-esr-115.7.0esr/gfx/ipc/InProcessCompositorSession.cpp 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/ipc/InProcessCompositorSession.cpp 2024-03-14 05:21:26.000000000 +0000 @@ -61,7 +61,10 @@ } void InProcessCompositorSession::NotifySessionLost() { - mWidget->NotifyCompositorSessionLost(this); + // Hold a reference to mWidget since NotifyCompositorSessionLost may + // release the last reference mid-execution. + RefPtr widget(mWidget); + widget->NotifyCompositorSessionLost(this); } CompositorBridgeParent* InProcessCompositorSession::GetInProcessBridge() const { diff -Nru firefox-esr-115.7.0esr/gfx/ipc/RemoteCompositorSession.cpp firefox-esr-115.9.0esr/gfx/ipc/RemoteCompositorSession.cpp --- firefox-esr-115.7.0esr/gfx/ipc/RemoteCompositorSession.cpp 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/ipc/RemoteCompositorSession.cpp 2024-03-14 05:21:25.000000000 +0000 @@ -46,10 +46,13 @@ } void RemoteCompositorSession::NotifySessionLost() { + // Hold a reference to mWidget since NotifyCompositorSessionLost may + // release the last reference mid-execution. + RefPtr widget(mWidget); // Re-entrancy should be impossible: when we are being notified of a lost // session, we have by definition not shut down yet. We will shutdown, but // then will be removed from the notification list. - mWidget->NotifyCompositorSessionLost(this); + widget->NotifyCompositorSessionLost(this); } CompositorBridgeParent* RemoteCompositorSession::GetInProcessBridge() const { diff -Nru firefox-esr-115.7.0esr/gfx/thebes/SharedFontList-impl.h firefox-esr-115.9.0esr/gfx/thebes/SharedFontList-impl.h --- firefox-esr-115.7.0esr/gfx/thebes/SharedFontList-impl.h 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/thebes/SharedFontList-impl.h 2024-03-14 05:21:25.000000000 +0000 @@ -200,12 +200,6 @@ */ Pointer Alloc(uint32_t aSize); - /** - * Convert a native pointer to a shared-memory Pointer record that can be - * passed between processes. - */ - Pointer ToSharedPointer(const void* aPtr); - uint32_t GetGeneration() { return GetHeader().mGeneration; } /** diff -Nru firefox-esr-115.7.0esr/gfx/thebes/SharedFontList.cpp firefox-esr-115.9.0esr/gfx/thebes/SharedFontList.cpp --- firefox-esr-115.7.0esr/gfx/thebes/SharedFontList.cpp 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/thebes/SharedFontList.cpp 2024-03-14 05:21:25.000000000 +0000 @@ -138,11 +138,13 @@ class SetCharMapRunnable : public mozilla::Runnable { public: - SetCharMapRunnable(uint32_t aListGeneration, Pointer aFacePtr, - gfxCharacterMap* aCharMap) + SetCharMapRunnable(uint32_t aListGeneration, + std::pair aFamilyIndex, + uint32_t aFaceIndex, gfxCharacterMap* aCharMap) : Runnable("SetCharMapRunnable"), mListGeneration(aListGeneration), - mFacePtr(aFacePtr), + mFamilyIndex(aFamilyIndex), + mFaceIndex(aFaceIndex), mCharMap(aCharMap) {} NS_IMETHOD Run() override { @@ -150,26 +152,46 @@ if (!list || list->GetGeneration() != mListGeneration) { return NS_OK; } - dom::ContentChild::GetSingleton()->SendSetCharacterMap(mListGeneration, - mFacePtr, *mCharMap); + dom::ContentChild::GetSingleton()->SendSetCharacterMap( + mListGeneration, mFamilyIndex.first, mFamilyIndex.second, mFaceIndex, + *mCharMap); return NS_OK; } private: uint32_t mListGeneration; - Pointer mFacePtr; + std::pair mFamilyIndex; + uint32_t mFaceIndex; RefPtr mCharMap; }; -void Face::SetCharacterMap(FontList* aList, gfxCharacterMap* aCharMap) { +void Face::SetCharacterMap(FontList* aList, gfxCharacterMap* aCharMap, + const Family* aFamily) { if (!XRE_IsParentProcess()) { - Pointer ptr = aList->ToSharedPointer(this); + Maybe> familyIndex = aFamily->FindIndex(aList); + if (!familyIndex) { + NS_WARNING("Family index not found! Ignoring SetCharacterMap"); + return; + } + const auto* faces = aFamily->Faces(aList); + uint32_t faceIndex = 0; + while (faceIndex < aFamily->NumFaces()) { + if (faces[faceIndex].ToPtr(aList) == this) { + break; + } + ++faceIndex; + } + if (faceIndex >= aFamily->NumFaces()) { + NS_WARNING("Face not found in family! Ignoring SetCharacterMap"); + return; + } if (NS_IsMainThread()) { dom::ContentChild::GetSingleton()->SendSetCharacterMap( - aList->GetGeneration(), ptr, *aCharMap); + aList->GetGeneration(), familyIndex->first, familyIndex->second, + faceIndex, *aCharMap); } else { - NS_DispatchToMainThread( - new SetCharMapRunnable(aList->GetGeneration(), ptr, aCharMap)); + NS_DispatchToMainThread(new SetCharMapRunnable( + aList->GetGeneration(), familyIndex.value(), faceIndex, aCharMap)); } return; } @@ -240,7 +262,7 @@ (void)new (face) Face(aList, *initData); facePtrs[i] = fp; if (initData->mCharMap) { - face->SetCharacterMap(aList, initData->mCharMap); + face->SetCharacterMap(aList, initData->mCharMap, this); } } } @@ -613,16 +635,23 @@ } if (!XRE_IsParentProcess()) { // |this| could be a Family record in either the Families() or Aliases() - // arrays + // arrays; FindIndex will map it back to its index and which array. + Maybe> index = FindIndex(aList); + if (!index) { + NS_WARNING("Family index not found! Ignoring SetupFamilyCharMap"); + return; + } if (NS_IsMainThread()) { dom::ContentChild::GetSingleton()->SendSetupFamilyCharMap( - aList->GetGeneration(), aList->ToSharedPointer(this)); + aList->GetGeneration(), index->first, index->second); return; } NS_DispatchToMainThread(NS_NewRunnableFunction( "SetupFamilyCharMap callback", - [gen = aList->GetGeneration(), ptr = aList->ToSharedPointer(this)] { - dom::ContentChild::GetSingleton()->SendSetupFamilyCharMap(gen, ptr); + [gen = aList->GetGeneration(), idx = index->first, + alias = index->second] { + dom::ContentChild::GetSingleton()->SendSetupFamilyCharMap(gen, idx, + alias); })); return; } @@ -667,6 +696,26 @@ } } +Maybe> Family::FindIndex(FontList* aList) const { + const auto* start = aList->Families(); + const auto* end = start + aList->NumFamilies(); + if (this >= start && this < end) { + uint32_t index = this - start; + MOZ_RELEASE_ASSERT(start + index == this, "misaligned Family ptr!"); + return Some(std::pair(index, false)); + } + + start = aList->AliasFamilies(); + end = start + aList->NumAliases(); + if (this >= start && this < end) { + uint32_t index = this - start; + MOZ_RELEASE_ASSERT(start + index == this, "misaligned AliasFamily ptr!"); + return Some(std::pair(index, true)); + } + + return Nothing(); +} + FontList::FontList(uint32_t aGeneration) { if (XRE_IsParentProcess()) { // Create the initial shared block, and initialize Header @@ -1322,19 +1371,6 @@ } } -Pointer FontList::ToSharedPointer(const void* aPtr) { - const char* p = (const char*)aPtr; - const uint32_t blockCount = mBlocks.Length(); - for (uint32_t i = 0; i < blockCount; ++i) { - const char* blockAddr = (const char*)mBlocks[i]->Memory(); - if (p >= blockAddr && p < blockAddr + SHM_BLOCK_SIZE) { - return Pointer(i, p - blockAddr); - } - } - MOZ_DIAGNOSTIC_ASSERT(false, "invalid shared-memory pointer"); - return Pointer::Null(); -} - size_t FontList::SizeOfIncludingThis( mozilla::MallocSizeOf aMallocSizeOf) const { return aMallocSizeOf(this) + SizeOfExcludingThis(aMallocSizeOf); diff -Nru firefox-esr-115.7.0esr/gfx/thebes/SharedFontList.h firefox-esr-115.9.0esr/gfx/thebes/SharedFontList.h --- firefox-esr-115.7.0esr/gfx/thebes/SharedFontList.h 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/thebes/SharedFontList.h 2024-03-14 05:21:25.000000000 +0000 @@ -198,7 +198,8 @@ return !mDescriptor.IsNull() && mIndex != uint16_t(-1); } - void SetCharacterMap(FontList* aList, gfxCharacterMap* aCharMap); + void SetCharacterMap(FontList* aList, gfxCharacterMap* aCharMap, + const Family* aFamily); String mDescriptor; uint16_t mIndex; @@ -330,6 +331,11 @@ void SetupFamilyCharMap(FontList* aList); + // Return the index of this family in the font-list's Families() or + // AliasFamilies() list, and which of those it belongs to. + // Returns Nothing if the family cannot be found. + mozilla::Maybe> FindIndex(FontList* aList) const; + private: // Returns true if there are specifically-sized bitmap faces in the list, // so size selection still needs to be done. (Currently only on Linux.) diff -Nru firefox-esr-115.7.0esr/gfx/thebes/gfxDWriteFontList.cpp firefox-esr-115.9.0esr/gfx/thebes/gfxDWriteFontList.cpp --- firefox-esr-115.7.0esr/gfx/thebes/gfxDWriteFontList.cpp 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/thebes/gfxDWriteFontList.cpp 2024-03-14 05:21:26.000000000 +0000 @@ -554,7 +554,7 @@ gfxPlatformFontList* pfl = gfxPlatformFontList::PlatformFontList(); fontlist::FontList* sharedFontList = pfl->SharedFontList(); if (!IsUserFont() && mShmemFace) { - mShmemFace->SetCharacterMap(sharedFontList, charmap); // async + mShmemFace->SetCharacterMap(sharedFontList, charmap, mShmemFamily); if (TrySetShmemCharacterMap()) { setCharMap = false; } @@ -674,11 +674,13 @@ switch (StaticPrefs::gfx_font_rendering_directwrite_bold_simulation()) { case 0: // never use the DWrite simulation break; - case 1: // use DWrite simulation for installed fonts but not webfonts - useBoldSim = !mIsDataUserFont; + case 1: // use DWrite simulation for installed fonts except COLR fonts, + // but not webfonts + useBoldSim = + !mIsDataUserFont && !HasFontTable(TRUETYPE_TAG('C', 'O', 'L', 'R')); break; - default: // always use DWrite bold simulation - useBoldSim = true; + default: // always use DWrite bold simulation, except for COLR fonts + useBoldSim = !HasFontTable(TRUETYPE_TAG('C', 'O', 'L', 'R')); break; } } diff -Nru firefox-esr-115.7.0esr/gfx/thebes/gfxDWriteFonts.cpp firefox-esr-115.9.0esr/gfx/thebes/gfxDWriteFonts.cpp --- firefox-esr-115.7.0esr/gfx/thebes/gfxDWriteFonts.cpp 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/thebes/gfxDWriteFonts.cpp 2024-03-14 05:21:26.000000000 +0000 @@ -96,11 +96,15 @@ case 0: // never use the DWrite simulation mApplySyntheticBold = true; break; - case 1: // use DWrite simulation for installed fonts but not webfonts - mApplySyntheticBold = aFontEntry->mIsDataUserFont; + case 1: // use DWrite simulation for installed fonts except COLR fonts, + // but not webfonts + mApplySyntheticBold = + aFontEntry->mIsDataUserFont || + aFontEntry->HasFontTable(TRUETYPE_TAG('C', 'O', 'L', 'R')); break; - default: // always use DWrite bold simulation - // the flag is initialized to false in gfxFont + default: // always use DWrite bold simulation, except for COLR fonts + mApplySyntheticBold = + aFontEntry->HasFontTable(TRUETYPE_TAG('C', 'O', 'L', 'R')); break; } } diff -Nru firefox-esr-115.7.0esr/gfx/thebes/gfxFT2FontList.cpp firefox-esr-115.9.0esr/gfx/thebes/gfxFT2FontList.cpp --- firefox-esr-115.7.0esr/gfx/thebes/gfxFT2FontList.cpp 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/thebes/gfxFT2FontList.cpp 2024-03-14 05:21:25.000000000 +0000 @@ -427,7 +427,7 @@ gfxPlatformFontList* pfl = gfxPlatformFontList::PlatformFontList(); fontlist::FontList* sharedFontList = pfl->SharedFontList(); if (!IsUserFont() && mShmemFace) { - mShmemFace->SetCharacterMap(sharedFontList, charmap); // async + mShmemFace->SetCharacterMap(sharedFontList, charmap, mShmemFamily); if (TrySetShmemCharacterMap()) { setCharMap = false; } diff -Nru firefox-esr-115.7.0esr/gfx/thebes/gfxFcPlatformFontList.cpp firefox-esr-115.9.0esr/gfx/thebes/gfxFcPlatformFontList.cpp --- firefox-esr-115.7.0esr/gfx/thebes/gfxFcPlatformFontList.cpp 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/thebes/gfxFcPlatformFontList.cpp 2024-03-14 05:21:26.000000000 +0000 @@ -448,7 +448,7 @@ gfxPlatformFontList* pfl = gfxPlatformFontList::PlatformFontList(); fontlist::FontList* sharedFontList = pfl->SharedFontList(); if (!IsUserFont() && mShmemFace) { - mShmemFace->SetCharacterMap(sharedFontList, charmap); // async + mShmemFace->SetCharacterMap(sharedFontList, charmap, mShmemFamily); if (TrySetShmemCharacterMap()) { setCharMap = false; } diff -Nru firefox-esr-115.7.0esr/gfx/thebes/gfxFontEntry.cpp firefox-esr-115.9.0esr/gfx/thebes/gfxFontEntry.cpp --- firefox-esr-115.7.0esr/gfx/thebes/gfxFontEntry.cpp 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/thebes/gfxFontEntry.cpp 2024-03-14 05:21:25.000000000 +0000 @@ -132,12 +132,13 @@ // the entry, so locking not required. void gfxFontEntry::InitializeFrom(fontlist::Face* aFace, const fontlist::Family* aFamily) { + mShmemFace = aFace; + mShmemFamily = aFamily; mStyleRange = aFace->mStyle; mWeightRange = aFace->mWeight; mStretchRange = aFace->mStretch; mFixedPitch = aFace->mFixedPitch; mIsBadUnderlineFont = aFamily->IsBadUnderlineFamily(); - mShmemFace = aFace; auto* list = gfxPlatformFontList::PlatformFontList()->SharedFontList(); mFamilyName = aFamily->DisplayName().AsString(list); mHasCmapTable = TrySetShmemCharacterMap(); diff -Nru firefox-esr-115.7.0esr/gfx/thebes/gfxFontEntry.h firefox-esr-115.9.0esr/gfx/thebes/gfxFontEntry.h --- firefox-esr-115.7.0esr/gfx/thebes/gfxFontEntry.h 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/thebes/gfxFontEntry.h 2024-03-14 05:21:25.000000000 +0000 @@ -555,6 +555,7 @@ gfxCharacterMap* GetCharacterMap() const { return mCharacterMap; } mozilla::fontlist::Face* mShmemFace = nullptr; + const mozilla::fontlist::Family* mShmemFamily = nullptr; mozilla::Atomic mShmemCharacterMap; const SharedBitSet* GetShmemCharacterMap() const { diff -Nru firefox-esr-115.7.0esr/gfx/thebes/gfxMacPlatformFontList.h firefox-esr-115.9.0esr/gfx/thebes/gfxMacPlatformFontList.h --- firefox-esr-115.7.0esr/gfx/thebes/gfxMacPlatformFontList.h 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/thebes/gfxMacPlatformFontList.h 2024-03-14 05:21:25.000000000 +0000 @@ -54,7 +54,7 @@ // returns it; if not, the instance returned will be owned solely by the // caller.) // Note that in the case of a broken font, this could return null. - CGFontRef CreateOrCopyFontRef(); + CGFontRef CreateOrCopyFontRef() MOZ_REQUIRES_SHARED(mLock); // override gfxFontEntry table access function to bypass table cache, // use CGFontRef API to get direct access to system font data @@ -84,19 +84,19 @@ static void DestroyBlobFunc(void* aUserData); - CGFontRef - mFontRef; // owning reference to the CGFont, released on destruction + CGFontRef mFontRef MOZ_GUARDED_BY(mLock); // owning reference - double mSizeHint; + const double mSizeHint; - bool mFontRefInitialized; - bool mRequiresAAT; - bool mIsCFF; - bool mIsCFFInitialized; - bool mHasVariations; - bool mHasVariationsInitialized; - bool mHasAATSmallCaps; - bool mHasAATSmallCapsInitialized; + bool mFontRefInitialized MOZ_GUARDED_BY(mLock); + + mozilla::Atomic mRequiresAAT; + mozilla::Atomic mIsCFF; + mozilla::Atomic mIsCFFInitialized; + mozilla::Atomic mHasVariations; + mozilla::Atomic mHasVariationsInitialized; + mozilla::Atomic mHasAATSmallCaps; + mozilla::Atomic mHasAATSmallCapsInitialized; // To work around Core Text's mishandling of the default value for 'opsz', // we need to record whether the font has an a optical size axis, what its @@ -105,10 +105,10 @@ // These fields are used by gfxMacFont, but stored in the font entry so // that only a single font instance needs to inspect the available // variations. - gfxFontVariationAxis mOpszAxis; - float mAdjustedDefaultOpsz; + gfxFontVariationAxis mOpszAxis MOZ_GUARDED_BY(mLock); + float mAdjustedDefaultOpsz MOZ_GUARDED_BY(mLock); - nsTHashtable mAvailableTables; + nsTHashtable mAvailableTables MOZ_GUARDED_BY(mLock); mozilla::ThreadSafeWeakPtr mUnscaledFont; }; diff -Nru firefox-esr-115.7.0esr/gfx/thebes/gfxMacPlatformFontList.mm firefox-esr-115.9.0esr/gfx/thebes/gfxMacPlatformFontList.mm --- firefox-esr-115.7.0esr/gfx/thebes/gfxMacPlatformFontList.mm 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/thebes/gfxMacPlatformFontList.mm 2024-03-14 05:21:25.000000000 +0000 @@ -414,8 +414,8 @@ if (NS_SUCCEEDED(rv)) { gfxPlatformFontList* pfl = gfxPlatformFontList::PlatformFontList(); fontlist::FontList* sharedFontList = pfl->SharedFontList(); - if (!IsUserFont() && mShmemFace) { - mShmemFace->SetCharacterMap(sharedFontList, charmap); // async + if (!IsUserFont() && mShmemFace && mShmemFamily) { + mShmemFace->SetCharacterMap(sharedFontList, charmap, mShmemFamily); if (TrySetShmemCharacterMap()) { setCharMap = false; } @@ -552,6 +552,13 @@ } CGFontRef MacOSFontEntry::GetFontRef() { + { + AutoReadLock lock(mLock); + if (mFontRefInitialized) { + return mFontRef; + } + } + AutoWriteLock lock(mLock); if (!mFontRefInitialized) { // Cache the CGFontRef, to be released by our destructor. mFontRef = CreateOrCopyFontRef(); @@ -616,7 +623,9 @@ } hb_blob_t* MacOSFontEntry::GetFontTable(uint32_t aTag) { + mLock.ReadLock(); AutoCFRelease fontRef = CreateOrCopyFontRef(); + mLock.ReadUnlock(); if (!fontRef) { return nullptr; } @@ -637,6 +646,16 @@ } bool MacOSFontEntry::HasFontTable(uint32_t aTableTag) { + { + // If we've already initialized mAvailableTables, we can return without + // needing to take an exclusive lock. + AutoReadLock lock(mLock); + if (mAvailableTables.Count()) { + return mAvailableTables.GetEntry(aTableTag); + } + } + + AutoWriteLock lock(mLock); if (mAvailableTables.Count() == 0) { nsAutoreleasePool localPool; diff -Nru firefox-esr-115.7.0esr/gfx/thebes/gfxPlatformFontList.cpp firefox-esr-115.9.0esr/gfx/thebes/gfxPlatformFontList.cpp --- firefox-esr-115.7.0esr/gfx/thebes/gfxPlatformFontList.cpp 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/thebes/gfxPlatformFontList.cpp 2024-03-14 05:21:26.000000000 +0000 @@ -3014,7 +3014,8 @@ } void gfxPlatformFontList::SetCharacterMap(uint32_t aGeneration, - const fontlist::Pointer& aFacePtr, + uint32_t aFamilyIndex, bool aAlias, + uint32_t aFaceIndex, const gfxSparseBitSet& aMap) { MOZ_ASSERT(XRE_IsParentProcess()); auto list = SharedFontList(); @@ -3028,14 +3029,35 @@ if (AppShutdown::IsInOrBeyond(ShutdownPhase::AppShutdownConfirmed)) { return; } - auto* face = aFacePtr.ToPtr(list); - if (face) { + + const fontlist::Family* family; + if (aAlias) { + if (aFamilyIndex >= list->NumAliases()) { + MOZ_ASSERT(false, "AliasFamily index out of range"); + return; + } + family = list->AliasFamilies() + aFamilyIndex; + } else { + if (aFamilyIndex >= list->NumFamilies()) { + MOZ_ASSERT(false, "Family index out of range"); + return; + } + family = list->Families() + aFamilyIndex; + } + + if (aFaceIndex >= family->NumFaces()) { + MOZ_ASSERT(false, "Face index out of range"); + return; + } + + if (auto* face = + family->Faces(list)[aFaceIndex].ToPtr(list)) { face->mCharacterMap = GetShmemCharMap(&aMap); } } -void gfxPlatformFontList::SetupFamilyCharMap( - uint32_t aGeneration, const fontlist::Pointer& aFamilyPtr) { +void gfxPlatformFontList::SetupFamilyCharMap(uint32_t aGeneration, + uint32_t aIndex, bool aAlias) { MOZ_ASSERT(XRE_IsParentProcess()); auto list = SharedFontList(); MOZ_ASSERT(list); @@ -3049,46 +3071,20 @@ return; } - // aFamilyPtr was passed from a content process which may not be trusted, - // so we cannot assume it is valid or safe to use. If the Pointer value is - // bad, we must not crash or do anything bad, just bail out. - // (In general, if the child process was trying to use an invalid pointer it - // should have hit the MOZ_DIAGNOSTIC_ASSERT in FontList::ToSharedPointer - // rather than passing a null or bad pointer to the parent.) - - auto* family = aFamilyPtr.ToPtr(list); - if (!family) { - // Unable to resolve to a native pointer (or it was null). - NS_WARNING("unexpected null Family pointer"); - return; - } - - // Validate the pointer before trying to use it: check that it points to a - // correctly-aligned offset within the Families() or AliasFamilies() array. - // We just assert (in debug builds only) on failure, and return safely. - // A misaligned pointer here would indicate a buggy (or compromised) child - // process, but crashing the parent would be unnecessary and does not yield - // any useful insight. - if (family >= list->Families() && - family < list->Families() + list->NumFamilies()) { - size_t offset = (char*)family - (char*)list->Families(); - if (offset % sizeof(fontlist::Family) != 0) { - MOZ_ASSERT(false, "misaligned Family pointer"); + if (aAlias) { + if (aIndex >= list->NumAliases()) { + MOZ_ASSERT(false, "AliasFamily index out of range"); return; } - } else if (family >= list->AliasFamilies() && - family < list->AliasFamilies() + list->NumAliases()) { - size_t offset = (char*)family - (char*)list->AliasFamilies(); - if (offset % sizeof(fontlist::Family) != 0) { - MOZ_ASSERT(false, "misaligned Family pointer"); - return; - } - } else { - MOZ_ASSERT(false, "not a valid Family or AliasFamily pointer"); + list->AliasFamilies()[aIndex].SetupFamilyCharMap(list); return; } - family->SetupFamilyCharMap(list); + if (aIndex >= list->NumFamilies()) { + MOZ_ASSERT(false, "Family index out of range"); + return; + } + list->Families()[aIndex].SetupFamilyCharMap(list); } bool gfxPlatformFontList::InitOtherFamilyNames(uint32_t aGeneration, diff -Nru firefox-esr-115.7.0esr/gfx/thebes/gfxPlatformFontList.h firefox-esr-115.9.0esr/gfx/thebes/gfxPlatformFontList.h --- firefox-esr-115.7.0esr/gfx/thebes/gfxPlatformFontList.h 2024-01-15 21:07:29.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/thebes/gfxPlatformFontList.h 2024-03-14 05:21:25.000000000 +0000 @@ -357,12 +357,10 @@ base::SharedMemoryHandle ShareShmBlockToProcess(uint32_t aIndex, base::ProcessId aPid); - void SetCharacterMap(uint32_t aGeneration, - const mozilla::fontlist::Pointer& aFacePtr, - const gfxSparseBitSet& aMap); + void SetCharacterMap(uint32_t aGeneration, uint32_t aFamilyIndex, bool aAlias, + uint32_t aFaceIndex, const gfxSparseBitSet& aMap); - void SetupFamilyCharMap(uint32_t aGeneration, - const mozilla::fontlist::Pointer& aFamilyPtr); + void SetupFamilyCharMap(uint32_t aGeneration, uint32_t aIndex, bool aAlias); // Start the async cmap loading process, if not already under way, from the // given family index. (For use in any process that needs font lookups.) diff -Nru firefox-esr-115.7.0esr/gfx/thebes/gfxUserFontSet.cpp firefox-esr-115.9.0esr/gfx/thebes/gfxUserFontSet.cpp --- firefox-esr-115.7.0esr/gfx/thebes/gfxUserFontSet.cpp 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/gfx/thebes/gfxUserFontSet.cpp 2024-03-14 05:21:26.000000000 +0000 @@ -18,6 +18,7 @@ #include "mozilla/gfx/2D.h" #include "gfxPlatformFontList.h" #include "mozilla/PostTraversalTask.h" +#include "mozilla/dom/WorkerCommon.h" #include "gfxOTSUtils.h" #include "nsIFontLoadCompleteCallback.h" #include "nsProxyRelease.h" @@ -786,9 +787,17 @@ } void gfxUserFontEntry::Load() { - if (mUserFontLoadState == STATUS_NOT_LOADED) { - LoadNextSrc(); + if (mUserFontLoadState != STATUS_NOT_LOADED) { + return; + } + if (dom::IsCurrentThreadRunningWorker()) { + // TODO: Maybe support loading the font entry in workers, at least for + // buffers or other sync sources? + NS_DispatchToMainThread(NewRunnableMethod("gfxUserFontEntry::Load", this, + &gfxUserFontEntry::Load)); + return; } + LoadNextSrc(); } void gfxUserFontEntry::IncrementGeneration() { diff -Nru firefox-esr-115.7.0esr/intl/tzdata/GIT-INFO firefox-esr-115.9.0esr/intl/tzdata/GIT-INFO --- firefox-esr-115.7.0esr/intl/tzdata/GIT-INFO 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/intl/tzdata/GIT-INFO 2024-03-14 05:21:26.000000000 +0000 @@ -1,5 +1,5 @@ -commit a4248d02cdf8329364d86e317e34422a894ae2f5 +commit 6f877dbcd7930f92fe8f97929e2ca683e7d443a2 Author: yumaoka -Date: Wed Mar 29 08:31:53 2023 -0400 +Date: Thu Feb 8 15:05:36 2024 -0500 - ICU-22339 Update tzdata to 2023c + ICU-22659 tzdata2024a updates in ICU Data repo diff -Nru firefox-esr-115.7.0esr/intl/tzdata/VERSION firefox-esr-115.9.0esr/intl/tzdata/VERSION --- firefox-esr-115.7.0esr/intl/tzdata/VERSION 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/intl/tzdata/VERSION 2024-03-14 05:21:26.000000000 +0000 @@ -1 +1 @@ -2023c +2024a Binary files /srv/release.debian.org/tmp/pBtj_XbLTU/firefox-esr-115.7.0esr/intl/tzdata/source/be/metaZones.res and /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/be/metaZones.res differ Binary files /srv/release.debian.org/tmp/pBtj_XbLTU/firefox-esr-115.7.0esr/intl/tzdata/source/be/timezoneTypes.res and /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/be/timezoneTypes.res differ Binary files /srv/release.debian.org/tmp/pBtj_XbLTU/firefox-esr-115.7.0esr/intl/tzdata/source/be/windowsZones.res and /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/be/windowsZones.res differ Binary files /srv/release.debian.org/tmp/pBtj_XbLTU/firefox-esr-115.7.0esr/intl/tzdata/source/be/zoneinfo64.res and /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/be/zoneinfo64.res differ Binary files /srv/release.debian.org/tmp/pBtj_XbLTU/firefox-esr-115.7.0esr/intl/tzdata/source/ee/metaZones.res and /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/ee/metaZones.res differ Binary files /srv/release.debian.org/tmp/pBtj_XbLTU/firefox-esr-115.7.0esr/intl/tzdata/source/ee/timezoneTypes.res and /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/ee/timezoneTypes.res differ Binary files /srv/release.debian.org/tmp/pBtj_XbLTU/firefox-esr-115.7.0esr/intl/tzdata/source/ee/windowsZones.res and /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/ee/windowsZones.res differ Binary files /srv/release.debian.org/tmp/pBtj_XbLTU/firefox-esr-115.7.0esr/intl/tzdata/source/ee/zoneinfo64.res and /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/ee/zoneinfo64.res differ Binary files /srv/release.debian.org/tmp/pBtj_XbLTU/firefox-esr-115.7.0esr/intl/tzdata/source/le/metaZones.res and /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/le/metaZones.res differ Binary files /srv/release.debian.org/tmp/pBtj_XbLTU/firefox-esr-115.7.0esr/intl/tzdata/source/le/timezoneTypes.res and /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/le/timezoneTypes.res differ Binary files /srv/release.debian.org/tmp/pBtj_XbLTU/firefox-esr-115.7.0esr/intl/tzdata/source/le/windowsZones.res and /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/le/windowsZones.res differ Binary files /srv/release.debian.org/tmp/pBtj_XbLTU/firefox-esr-115.7.0esr/intl/tzdata/source/le/zoneinfo64.res and /srv/release.debian.org/tmp/dIvyVDnrPl/firefox-esr-115.9.0esr/intl/tzdata/source/le/zoneinfo64.res differ diff -Nru firefox-esr-115.7.0esr/intl/tzdata/source/metaZones.txt firefox-esr-115.9.0esr/intl/tzdata/source/metaZones.txt --- firefox-esr-115.7.0esr/intl/tzdata/source/metaZones.txt 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/intl/tzdata/source/metaZones.txt 2024-03-14 05:21:26.000000000 +0000 @@ -89,7 +89,6 @@ America_Mountain{ 001{"America/Denver"} CA{"America/Edmonton"} - MX{"America/Hermosillo"} } America_Pacific{ 001{"America/Los_Angeles"} @@ -361,6 +360,9 @@ Goose_Bay{ 001{"America/Goose_Bay"} } + Greenland{ + 001{"America/Godthab"} + } Greenland_Central{ 001{"America/Scoresbysund"} } @@ -473,9 +475,6 @@ Macau{ 001{"Asia/Macau"} } - Macquarie{ - 001{"Antarctica/Macquarie"} - } Magadan{ 001{"Asia/Magadan"} } @@ -500,9 +499,6 @@ Mawson{ 001{"Antarctica/Mawson"} } - Mexico_Northwest{ - 001{"America/Santa_Isabel"} - } Mexico_Pacific{ 001{"America/Mazatlan"} } @@ -773,6 +769,7 @@ geor{"Georgia"} giis{"Gilbert_Islands"} grea{"Greenland_Eastern"} + gree{"Greenland"} grwe{"Greenland_Western"} guam{"Guam"} gulf{"Gulf"} @@ -801,7 +798,6 @@ liis{"Line_Islands"} loho{"Lord_Howe"} maca{"Macau"} - macq{"Macquarie"} maga{"Magadan"} mais{"Marshall_Islands"} mala{"Malaysia"} @@ -809,7 +805,6 @@ marq{"Marquesas"} maur{"Mauritius"} maws{"Mawson"} - meno{"Mexico_Northwest"} mepa{"Mexico_Pacific"} mgmt{"GMT"} mong{"Mongolia"} @@ -1823,6 +1818,13 @@ "America:Godthab"{ { "Greenland_Western", + "1970-01-01 00:00", + "2024-03-26 01:00", + } + { + "Greenland", + "2024-03-26 01:00", + "9999-12-31 23:59", } } "America:Goose_Bay"{ @@ -2324,11 +2326,6 @@ "America_Eastern", } } - "America:Nipigon"{ - { - "America_Eastern", - } - } "America:Nome"{ { "Bering", @@ -2404,23 +2401,6 @@ "America_Eastern", } } - "America:Pangnirtung"{ - { - "America_Eastern", - "1970-01-01 00:00", - "1999-10-31 06:00", - } - { - "America_Central", - "1999-10-31 06:00", - "2000-10-29 07:00", - } - { - "America_Eastern", - "2000-10-29 07:00", - "9999-12-31 23:59", - } - } "America:Paramaribo"{ { "Dutch_Guiana", @@ -2465,11 +2445,6 @@ "2016-12-03 23:00", } } - "America:Rainy_River"{ - { - "America_Central", - } - } "America:Rankin_Inlet"{ { "America_Central", @@ -2541,11 +2516,6 @@ "9999-12-31 23:59", } } - "America:Santa_Isabel"{ - { - "Mexico_Northwest", - } - } "America:Santarem"{ { "Amazon", @@ -2599,6 +2569,11 @@ { "Greenland_Eastern", "1981-03-29 02:00", + "2024-03-31 01:00", + } + { + "Greenland", + "2024-03-31 01:00", "9999-12-31 23:59", } } @@ -2666,11 +2641,6 @@ "Atlantic", } } - "America:Thunder_Bay"{ - { - "America_Eastern", - } - } "America:Tijuana"{ { "America_Pacific", @@ -2715,11 +2685,6 @@ "9999-12-31 23:59", } } - "America:Yellowknife"{ - { - "America_Mountain", - } - } "Antarctica:Casey"{ { "Australia_Western", @@ -2779,6 +2744,31 @@ { "Casey", "2020-10-03 16:01", + "2021-03-13 13:00", + } + { + "Australia_Western", + "2021-03-13 13:00", + "2021-10-02 16:01", + } + { + "Casey", + "2021-10-02 16:01", + "2022-03-12 13:00", + } + { + "Australia_Western", + "2022-03-12 13:00", + "2022-10-01 16:01", + } + { + "Casey", + "2022-10-01 16:01", + "2023-03-08 16:00", + } + { + "Australia_Western", + "2023-03-08 16:00", "9999-12-31 23:59", } } @@ -2858,6 +2848,11 @@ { "Kazakhstan_Eastern", "2004-10-30 20:00", + "2024-02-29 18:00", + } + { + "Kazakhstan_Western", + "2024-02-29 18:00", "9999-12-31 23:59", } } @@ -3373,6 +3368,11 @@ { "Kazakhstan_Eastern", "2004-10-30 21:00", + "2024-02-29 18:00", + } + { + "Kazakhstan_Western", + "2024-02-29 18:00", "9999-12-31 23:59", } } @@ -3658,11 +3658,6 @@ "Australia_Central", } } - "Australia:Currie"{ - { - "Australia_Eastern", - } - } "Australia:Darwin"{ { "Australia_Central", @@ -4158,18 +4153,6 @@ "2016-03-26 23:00", } } - "Europe:Uzhgorod"{ - { - "Moscow", - "1970-01-01 00:00", - "1990-06-30 22:00", - } - { - "Europe_Eastern", - "1990-06-30 22:00", - "9999-12-31 23:59", - } - } "Europe:Vaduz"{ { "Europe_Central", @@ -4222,18 +4205,6 @@ "Europe_Central", } } - "Europe:Zaporozhye"{ - { - "Moscow", - "1970-01-01 00:00", - "1990-06-30 22:00", - } - { - "Europe_Eastern", - "1990-06-30 22:00", - "9999-12-31 23:59", - } - } "Europe:Zurich"{ { "Europe_Central", @@ -4394,18 +4365,6 @@ { "Alaska_Hawaii", "1970-01-01 00:00", - "1983-10-30 11:00", - } - { - "Hawaii_Aleutian", - "1983-10-30 11:00", - "9999-12-31 23:59", - } - } - "Pacific:Johnston"{ - { - "Alaska_Hawaii", - "1970-01-01 00:00", "1983-10-30 11:00", } { diff -Nru firefox-esr-115.7.0esr/intl/tzdata/source/timezoneTypes.txt firefox-esr-115.9.0esr/intl/tzdata/source/timezoneTypes.txt --- firefox-esr-115.7.0esr/intl/tzdata/source/timezoneTypes.txt 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/intl/tzdata/source/timezoneTypes.txt 2024-03-14 05:21:26.000000000 +0000 @@ -5,13 +5,47 @@ bcpTypeAlias{ tz{ aqams{"nzakl"} + aukns{"auhba"} + caffs{"cawnp"} + camtr{"cator"} + canpg{"cator"} + capnt{"caiql"} + cathu{"cator"} + cayzf{"caedm"} cnckg{"cnsha"} cnhrb{"cnsha"} cnkhg{"cnurc"} gaza{"gazastrp"} + mxstis{"mxtij"} + uaozh{"uaiev"} + uauzh{"uaiev"} + umjon{"ushnl"} usnavajo{"usden"} } } + ianaMap{ + timezone{ + "Africa:Asmera"{"Africa/Asmara"} + "America:Buenos_Aires"{"America/Argentina/Buenos_Aires"} + "America:Catamarca"{"America/Argentina/Catamarca"} + "America:Coral_Harbour"{"America/Atikokan"} + "America:Cordoba"{"America/Argentina/Cordoba"} + "America:Godthab"{"America/Nuuk"} + "America:Indianapolis"{"America/Indiana/Indianapolis"} + "America:Jujuy"{"America/Argentina/Jujuy"} + "America:Louisville"{"America/Kentucky/Louisville"} + "America:Mendoza"{"America/Argentina/Mendoza"} + "Asia:Calcutta"{"Asia/Kolkata"} + "Asia:Katmandu"{"Asia/Kathmandu"} + "Asia:Rangoon"{"Asia/Yangon"} + "Asia:Saigon"{"Asia/Ho_Chi_Minh"} + "Atlantic:Faeroe"{"Atlantic/Faroe"} + "Europe:Kiev"{"Europe/Kyiv"} + "Pacific:Enderbury"{"Pacific/Kanton"} + "Pacific:Ponape"{"Pacific/Pohnpei"} + "Pacific:Truk"{"Pacific/Chuuk"} + } + } typeAlias{ timezone{ "Africa:Asmara"{"Africa/Asmera"} @@ -29,11 +63,18 @@ "America:Indiana:Indianapolis"{"America/Indianapolis"} "America:Kentucky:Louisville"{"America/Louisville"} "America:Knox_IN"{"America/Indiana/Knox"} + "America:Montreal"{"America/Toronto"} + "America:Nipigon"{"America/Toronto"} "America:Nuuk"{"America/Godthab"} + "America:Pangnirtung"{"America/Iqaluit"} "America:Porto_Acre"{"America/Rio_Branco"} + "America:Rainy_River"{"America/Winnipeg"} "America:Rosario"{"America/Cordoba"} + "America:Santa_Isabel"{"America/Tijuana"} "America:Shiprock"{"America/Denver"} + "America:Thunder_Bay"{"America/Toronto"} "America:Virgin"{"America/St_Thomas"} + "America:Yellowknife"{"America/Edmonton"} "Antarctica:South_Pole"{"Pacific/Auckland"} "Asia:Ashkhabad"{"Asia/Ashgabat"} "Asia:Chongqing"{"Asia/Shanghai"} @@ -55,6 +96,7 @@ "Atlantic:Jan_Mayen"{"Arctic/Longyearbyen"} "Australia:ACT"{"Australia/Sydney"} "Australia:Canberra"{"Australia/Sydney"} + "Australia:Currie"{"Australia/Hobart"} "Australia:LHI"{"Australia/Lord_Howe"} "Australia:NSW"{"Australia/Sydney"} "Australia:North"{"Australia/Darwin"} @@ -90,10 +132,13 @@ "Europe:Kyiv"{"Europe/Kiev"} "Europe:Nicosia"{"Asia/Nicosia"} "Europe:Tiraspol"{"Europe/Chisinau"} + "Europe:Uzhgorod"{"Europe/Kiev"} + "Europe:Zaporozhye"{"Europe/Kiev"} "Mexico:BajaNorte"{"America/Tijuana"} "Mexico:BajaSur"{"America/Mazatlan"} "Mexico:General"{"America/Mexico_City"} "Pacific:Chuuk"{"Pacific/Truk"} + "Pacific:Johnston"{"Pacific/Honolulu"} "Pacific:Kanton"{"Pacific/Enderbury"} "Pacific:Pohnpei"{"Pacific/Ponape"} "Pacific:Samoa"{"Pacific/Pago_Pago"} @@ -302,11 +347,9 @@ "America:Moncton"{"camon"} "America:Monterrey"{"mxmty"} "America:Montevideo"{"uymvd"} - "America:Montreal"{"camtr"} "America:Montserrat"{"msmni"} "America:Nassau"{"bsnas"} "America:New_York"{"usnyc"} - "America:Nipigon"{"canpg"} "America:Nome"{"usome"} "America:Noronha"{"brfen"} "America:North_Dakota:Beulah"{"usxul"} @@ -314,7 +357,6 @@ "America:North_Dakota:New_Salem"{"usndnsl"} "America:Ojinaga"{"mxoji"} "America:Panama"{"papty"} - "America:Pangnirtung"{"capnt"} "America:Paramaribo"{"srpbm"} "America:Phoenix"{"usphx"} "America:Port-au-Prince"{"htpap"} @@ -322,13 +364,11 @@ "America:Porto_Velho"{"brpvh"} "America:Puerto_Rico"{"prsju"} "America:Punta_Arenas"{"clpuq"} - "America:Rainy_River"{"caffs"} "America:Rankin_Inlet"{"cayek"} "America:Recife"{"brrec"} "America:Regina"{"careg"} "America:Resolute"{"careb"} "America:Rio_Branco"{"brrbr"} - "America:Santa_Isabel"{"mxstis"} "America:Santarem"{"brstm"} "America:Santiago"{"clscl"} "America:Santo_Domingo"{"dosdq"} @@ -344,7 +384,6 @@ "America:Swift_Current"{"cayyn"} "America:Tegucigalpa"{"hntgu"} "America:Thule"{"glthu"} - "America:Thunder_Bay"{"cathu"} "America:Tijuana"{"mxtij"} "America:Toronto"{"cator"} "America:Tortola"{"vgtov"} @@ -352,7 +391,6 @@ "America:Whitehorse"{"cayxy"} "America:Winnipeg"{"cawnp"} "America:Yakutat"{"usyak"} - "America:Yellowknife"{"cayzf"} "Antarctica:Casey"{"aqcas"} "Antarctica:Davis"{"aqdav"} "Antarctica:DumontDUrville"{"aqddu"} @@ -461,7 +499,6 @@ "Australia:Adelaide"{"auadl"} "Australia:Brisbane"{"aubne"} "Australia:Broken_Hill"{"aubhq"} - "Australia:Currie"{"aukns"} "Australia:Darwin"{"audrw"} "Australia:Eucla"{"aueuc"} "Australia:Hobart"{"auhba"} @@ -549,7 +586,6 @@ "Europe:Tallinn"{"eetll"} "Europe:Tirane"{"altia"} "Europe:Ulyanovsk"{"ruuly"} - "Europe:Uzhgorod"{"uauzh"} "Europe:Vaduz"{"livdz"} "Europe:Vatican"{"vavat"} "Europe:Vienna"{"atvie"} @@ -557,7 +593,6 @@ "Europe:Volgograd"{"ruvog"} "Europe:Warsaw"{"plwaw"} "Europe:Zagreb"{"hrzag"} - "Europe:Zaporozhye"{"uaozh"} "Europe:Zurich"{"chzrh"} "Indian:Antananarivo"{"mgtnr"} "Indian:Chagos"{"iodga"} @@ -585,7 +620,6 @@ "Pacific:Guadalcanal"{"sbhir"} "Pacific:Guam"{"gugum"} "Pacific:Honolulu"{"ushnl"} - "Pacific:Johnston"{"umjon"} "Pacific:Kiritimati"{"kicxi"} "Pacific:Kosrae"{"fmksa"} "Pacific:Kwajalein"{"mhkwa"} diff -Nru firefox-esr-115.7.0esr/intl/tzdata/source/windowsZones.txt firefox-esr-115.9.0esr/intl/tzdata/source/windowsZones.txt --- firefox-esr-115.7.0esr/intl/tzdata/source/windowsZones.txt 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/intl/tzdata/source/windowsZones.txt 2024-03-14 05:21:26.000000000 +0000 @@ -126,12 +126,11 @@ ZZ{"Etc/GMT+6"} } "Central Asia Standard Time"{ - 001{"Asia/Almaty"} + 001{"Asia/Bishkek"} AQ{"Antarctica/Vostok"} CN{"Asia/Urumqi"} IO{"Indian/Chagos"} KG{"Asia/Bishkek"} - KZ{"Asia/Almaty Asia/Qostanay"} ZZ{"Etc/GMT-6"} } "Central Brazilian Standard Time"{ @@ -173,10 +172,7 @@ } "Central Standard Time"{ 001{"America/Chicago"} - CA{ - "America/Winnipeg America/Rainy_River America/Rankin_Inlet America/Re" - "solute" - } + CA{"America/Winnipeg America/Rankin_Inlet America/Resolute"} MX{"America/Matamoros America/Ojinaga"} US{ "America/Chicago America/Indiana/Knox America/Indiana/Tell_City Ameri" @@ -241,10 +237,7 @@ "Eastern Standard Time"{ 001{"America/New_York"} BS{"America/Nassau"} - CA{ - "America/Toronto America/Iqaluit America/Montreal America/Nipigon Ame" - "rica/Pangnirtung America/Thunder_Bay" - } + CA{"America/Toronto America/Iqaluit"} US{ "America/New_York America/Detroit America/Indiana/Petersburg America/" "Indiana/Vincennes America/Indiana/Winamac America/Kentucky/Monticell" @@ -268,7 +261,7 @@ FI{"Europe/Helsinki"} LT{"Europe/Vilnius"} LV{"Europe/Riga"} - UA{"Europe/Kiev Europe/Uzhgorod Europe/Zaporozhye"} + UA{"Europe/Kiev"} } "Fiji Standard Time"{ 001{"Pacific/Fiji"} @@ -325,7 +318,6 @@ 001{"Pacific/Honolulu"} CK{"Pacific/Rarotonga"} PF{"Pacific/Tahiti"} - UM{"Pacific/Johnston"} US{"Pacific/Honolulu"} ZZ{"Etc/GMT+10"} } @@ -403,10 +395,7 @@ } "Mountain Standard Time"{ 001{"America/Denver"} - CA{ - "America/Edmonton America/Cambridge_Bay America/Inuvik America/Yellow" - "knife" - } + CA{"America/Edmonton America/Cambridge_Bay America/Inuvik"} MX{"America/Ciudad_Juarez"} US{"America/Denver America/Boise"} ZZ{"MST7MDT"} @@ -463,7 +452,7 @@ } "Pacific Standard Time (Mexico)"{ 001{"America/Tijuana"} - MX{"America/Tijuana America/Santa_Isabel"} + MX{"America/Tijuana"} } "Pacific Standard Time"{ 001{"America/Los_Angeles"} @@ -638,7 +627,7 @@ } "Tasmania Standard Time"{ 001{"Australia/Hobart"} - AU{"Australia/Hobart Australia/Currie Antarctica/Macquarie"} + AU{"Australia/Hobart Antarctica/Macquarie"} } "Tocantins Standard Time"{ 001{"America/Araguaina"} @@ -789,7 +778,10 @@ "West Asia Standard Time"{ 001{"Asia/Tashkent"} AQ{"Antarctica/Mawson"} - KZ{"Asia/Oral Asia/Aqtau Asia/Aqtobe Asia/Atyrau"} + KZ{ + "Asia/Oral Asia/Almaty Asia/Aqtau Asia/Aqtobe Asia/Atyrau Asia/Qostan" + "ay" + } MV{"Indian/Maldives"} TF{"Indian/Kerguelen"} TJ{"Asia/Dushanbe"} diff -Nru firefox-esr-115.7.0esr/intl/tzdata/source/zoneinfo64.txt firefox-esr-115.9.0esr/intl/tzdata/source/zoneinfo64.txt --- firefox-esr-115.7.0esr/intl/tzdata/source/zoneinfo64.txt 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/intl/tzdata/source/zoneinfo64.txt 2024-03-14 05:21:26.000000000 +0000 @@ -3,17 +3,17 @@ // License & terms of use: http://www.unicode.org/copyright.html //--------------------------------------------------------- // Build tool: tz2icu -// Build date: Tue Mar 28 17:28:32 2023 +// Build date: Wed Feb 7 16:30:19 2024 // tz database: ftp://ftp.iana.org/tz/ -// tz version: 2023c -// ICU version: 73.1 +// tz version: 2024a +// ICU version: 75.0.1 //--------------------------------------------------------- // >> !!! >> THIS IS A MACHINE-GENERATED FILE << !!! << // >> !!! >>> DO NOT EDIT <<< !!! << //--------------------------------------------------------- zoneinfo64:table(nofallback) { - TZVersion { "2023c" } + TZVersion { "2024a" } Zones:array { /* ACT */ :int { 357 } //Z#0 /* AET */ :int { 369 } //Z#1 @@ -759,7 +759,7 @@ links:intvector { 166, 542 } } //Z#166 /* America/Miquelon */ :table { - trans:intvector { -1850328920, 326001600, 544597200, 562132800, 576046800, 594187200, 607496400, 625636800, 638946000, 657086400, 671000400, 688536000, 702450000, 719985600, 733899600, 752040000, 765349200, 783489600, 796798800, 814939200, 828853200, 846388800, 860302800, 877838400, 891752400, 909288000, 923202000, 941342400, 954651600, 972792000, 986101200, 1004241600, 1018155600, 1035691200, 1049605200, 1067140800, 1081054800, 1099195200, 1112504400, 1130644800, 1143954000, 1162094400, 1173589200, 1194148800 } + trans:intvector { -1847650520, 326001600, 544597200, 562132800, 576046800, 594187200, 607496400, 625636800, 638946000, 657086400, 671000400, 688536000, 702450000, 719985600, 733899600, 752040000, 765349200, 783489600, 796798800, 814939200, 828853200, 846388800, 860302800, 877838400, 891752400, 909288000, 923202000, 941342400, 954651600, 972792000, 986101200, 1004241600, 1018155600, 1035691200, 1049605200, 1067140800, 1081054800, 1099195200, 1112504400, 1130644800, 1143954000, 1162094400, 1173589200, 1194148800 } typeOffsets:intvector { -13480, 0, -14400, 0, -10800, 0, -10800, 3600 } typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302" } finalRule { "Canada" } @@ -842,9 +842,9 @@ finalYear:int { 2008 } } //Z#180 /* America/Nuuk */ :table { - trans:intvector { -1686083584, 323845200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000, 859683600, 877827600, 891133200, 909277200, 922582800, 941331600, 954032400, 972781200, 985482000, 1004230800, 1017536400, 1035680400, 1048986000, 1067130000, 1080435600, 1099184400, 1111885200, 1130634000, 1143334800, 1162083600, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301187600, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396141200, 1414285200, 1427590800, 1445734800, 1459040400, 1477789200, 1490490000, 1509238800, 1521939600, 1540688400, 1553994000, 1572138000, 1585443600, 1603587600, 1616893200, 1635642000, 1648342800, 1667091600, 1679792400, 1698541200, 1711846800, 1729990800 } + trans:intvector { -1686083584, 323845200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000, 859683600, 877827600, 891133200, 909277200, 922582800, 941331600, 954032400, 972781200, 985482000, 1004230800, 1017536400, 1035680400, 1048986000, 1067130000, 1080435600, 1099184400, 1111885200, 1130634000, 1143334800, 1162083600, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301187600, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396141200, 1414285200, 1427590800, 1445734800, 1459040400, 1477789200, 1490490000, 1509238800, 1521939600, 1540688400, 1553994000, 1572138000, 1585443600, 1603587600, 1616893200, 1635642000, 1648342800, 1667091600, 1679792400, 1711846800, 1729990800 } typeOffsets:intvector { -12416, 0, -10800, 0, -10800, 3600, -7200, 0, -7200, 3600 } - typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102030403" } + typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201030403" } finalRule { "EU" } finalRaw:int { -7200 } finalYear:int { 2025 } @@ -970,12 +970,12 @@ links:intvector { 204, 374, 378 } } //Z#204 /* America/Scoresbysund */ :table { - trans:intvector { -1686090728, 323841600, 338961600, 354679200, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } + trans:intvector { -1686090728, 323841600, 338961600, 354679200, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000, 859683600, 877827600, 891133200, 909277200, 922582800, 941331600, 954032400, 972781200, 985482000, 1004230800, 1017536400, 1035680400, 1048986000, 1067130000, 1080435600, 1099184400, 1111885200, 1130634000, 1143334800, 1162083600, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301187600, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396141200, 1414285200, 1427590800, 1445734800, 1459040400, 1477789200, 1490490000, 1509238800, 1521939600, 1540688400, 1553994000, 1572138000, 1585443600, 1603587600, 1616893200, 1635642000, 1648342800, 1667091600, 1679792400, 1698541200, 1711846800, 1729990800 } typeOffsets:intvector { -5272, 0, -7200, 0, -7200, 3600, -3600, 0, -3600, 3600 } - typeMap:bin { "0102010403040304030403040304030403040304030403040304030403040304030403" } + typeMap:bin { "01020104030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030201" } finalRule { "EU" } - finalRaw:int { -3600 } - finalYear:int { 1997 } + finalRaw:int { -7200 } + finalYear:int { 2025 } } //Z#205 /* America/Shiprock */ :int { 110 } //Z#206 /* America/Sitka */ :table { @@ -1031,7 +1031,7 @@ } //Z#218 /* America/Toronto */ :table { transPre32:intvector { -1, 1928231148 } - trans:intvector { -1632070800, -1615140000, -1601753400, -1583697600, -1567357200, -1554667200, -1534698000, -1524074400, -1503248400, -1492365600, -1471798800, -1460916000, -1440954000, -1428861600, -1409504400, -1397412000, -1378054800, -1365962400, -1346605200, -1333908000, -1315155600, -1301853600, -1283706000, -1270404000, -1252256400, -1238954400, -1220806800, -1207504800, -1188752400, -1176055200, -1157302800, -1144000800, -1125853200, -1112551200, -1094403600, -1081101600, -1062954000, -1049652000, -1031504400, -1018202400, -1000054800, -986752800, -968000400, -955303200, -936550800, -765396000, -747248400, -733946400, -715806000, -702504000, -684356400, -671054400, -652906800, -634161600, -620845200, -602704800, -589395600, -576093600, -557946000, -544644000, -526496400, -513194400, -495046800, -481744800, -463597200, -450295200, -431542800, -418240800, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 } + trans:intvector { -1632070800, -1615140000, -1601753400, -1583697600, -1567357200, -1554667200, -1534698000, -1524074400, -1503248400, -1492365600, -1471798800, -1460916000, -1440954000, -1428861600, -1409504400, -1397412000, -1378054800, -1365962400, -1346605200, -1333908000, -1315155600, -1301853600, -1283706000, -1270404000, -1252256400, -1238954400, -1220806800, -1207504800, -1188752400, -1176055200, -1157302800, -1144000800, -1125853200, -1112551200, -1094403600, -1081101600, -1062954000, -1049652000, -1031504400, -1018202400, -1000054800, -986752800, -968000400, -955303200, -936550800, -765396000, -747248400, -733946400, -715798800, -702496800, -684349200, -671047200, -652899600, -634154400, -620845200, -602704800, -589395600, -576093600, -557946000, -544644000, -526496400, -513194400, -495046800, -481744800, -463597200, -450295200, -431542800, -418240800, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 } typeOffsets:intvector { -19052, 0, -18000, 0, -18000, 3600 } typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } finalRule { "Canada" } @@ -1079,9 +1079,9 @@ } //Z#225 /* America/Yellowknife */ :int { 113 } //Z#226 /* Antarctica/Casey */ :table { - trans:intvector { -31536000, 1255802400, 1267714800, 1319738400, 1329843600, 1477065600, 1520701200, 1538856000, 1552752000, 1570129200, 1583596800, 1601740860 } + trans:intvector { -31536000, 1255802400, 1267714800, 1319738400, 1329843600, 1477065600, 1520701200, 1538856000, 1552752000, 1570129200, 1583596800, 1601740860, 1615640400, 1633190460, 1647090000, 1664640060, 1678291200 } typeOffsets:intvector { 0, 0, 28800, 0, 39600, 0 } - typeMap:bin { "010201020102010201020102" } + typeMap:bin { "0102010201020102010201020102010201" } } //Z#227 /* Antarctica/Davis */ :table { trans:intvector { -409190400, -163062000, -28857600, 1255806000, 1268251200, 1319742000, 1329854400 } @@ -1124,13 +1124,17 @@ finalRaw:int { 0 } finalYear:int { 2006 } } //Z#237 - /* Antarctica/Vostok */ :int { 331 } //Z#238 + /* Antarctica/Vostok */ :table { + trans:intvector { -380073600, 760035600, 783648000, 1702839600 } + typeOffsets:intvector { 0, 0, 18000, 0, 25200, 0 } + typeMap:bin { "02000201" } + } //Z#238 /* Arctic/Longyearbyen */ :int { 447 } //Z#239 /* Asia/Aden */ :int { 311 } //Z#240 /* Asia/Almaty */ :table { - trans:intvector { -1441170468, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 686091600, 695768400, 701812800, 717537600, 733262400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400 } + trans:intvector { -1441170468, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 686091600, 695768400, 701812800, 717537600, 733262400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1709229600 } typeOffsets:intvector { 18468, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 } - typeMap:bin { "010304030403040304030403040304030403040304030201030403040304030403040304030403040304030403040304030403" } + typeMap:bin { "01030403040304030403040304030403040304030403020103040304030403040304030403040304030403040304030403040301" } } //Z#241 /* Asia/Amman */ :table { trans:intvector { -1230776624, 108165600, 118270800, 136591200, 149806800, 168127200, 181342800, 199749600, 215643600, 231285600, 244501200, 262735200, 275950800, 481154400, 496962000, 512949600, 528670800, 544399200, 560120400, 575848800, 592174800, 610581600, 623624400, 641167200, 655074000, 671839200, 685918800, 702856800, 717973200, 733701600, 749422800, 765151200, 779662800, 797205600, 811116000, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 930780000, 938124000, 954367200, 970178400, 985816800, 1001628000, 1017352800, 1033077600, 1048802400, 1066946400, 1080252000, 1097791200, 1112306400, 1128031200, 1143756000, 1161900000, 1175205600, 1193349600, 1206655200, 1225404000, 1238104800, 1256853600, 1269554400, 1288303200, 1301608800, 1319752800, 1333058400, 1387486800, 1395957600, 1414706400, 1427407200, 1446156000, 1459461600, 1477605600, 1490911200, 1509055200, 1522360800, 1540504800, 1553810400, 1571954400, 1585260000, 1604008800, 1616709600, 1635458400, 1645740000, 1666908000 } @@ -1260,10 +1264,10 @@ } //Z#269 /* Asia/Gaza */ :table { transPre32:intvector { -1, 2109557424 } - trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1219957200, 1238104800, 1252015200, 1269640860, 1281474000, 1301608860, 1312146000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400, 1616796000, 1635458400, 1648332000, 1666998000, 1682726400, 1698447600, 1712966400, 1729897200, 1743811200, 1761346800, 1774656000, 1792796400, 1806105600, 1824850800, 1837555200, 1856300400, 1869004800, 1887750000, 1901059200, 1919199600, 1932508800, 1950649200, 1963958400, 1982703600, 1995408000, 2014153200, 2026857600, 2045602800, 2058307200, 2077052400, 2090361600, 2107897200, 2121811200, 2138742000 } - transPost32:intvector { 0, -2141706496, 0, -2125985296, 0, -2110256896, 0, -2095140496, 0, -2092112896, 0, -2091511696, 0, -2078807296, 0, -2064900496, 0, -2061268096, 0, -2060062096, 0, -2046752896, 0, -2034055696, 0, -2031028096, 0, -2028612496, 0, -2015303296, 0, -2003210896, 0, -2000183296, 0, -1997162896, 0, -1983853696, 0, -1972970896, 0, -1969338496, 0, -1965713296, 0, -1952404096, 0, -1942126096, 0, -1939098496, 0, -1933658896, 0, -1920954496, 0, -1911281296, 0, -1908253696, 0, -1902209296, 0, -1889504896, 0, -1881041296, 0, -1877408896, 0, -1870759696, 0, -1857450496, 0, -1850196496, 0, -1847168896, 0, -1839310096, 0, -1826000896, 0, -1819956496, 0, -1816324096, 0, -1807860496, 0, -1794551296, 0, -1789111696, 0, -1786084096, 0, -1775806096, 0, -1763101696, 0, -1758266896, 0, -1755239296, 0, -1744356496, 0, -1731652096, 0, -1728026896, 0, -1724394496, 0, -1712906896, 0, -1699597696, 0, -1697182096, 0, -1694154496, 0, -1681457296, 0, -1668148096, 0, -1666942096, 0, -1663309696, 0, -1650007696, 0, -1636698496, 0, -1636097296, 0, -1632464896, 0, -1618558096, 0, -1602224896, 0, -1586503696, 0, -1571380096, 0, -1555054096, 0, -1541140096, 0, -1523604496, 0, -1510295296, 0, -1492154896, 0, -1478845696, 0, -1460705296, 0, -1447396096, 0, -1428650896, 0, -1415946496, 0, -1397201296, 0, -1384496896, 0, -1365751696, 0, -1353047296, 0, -1334302096, 0, -1320992896, 0, -1302852496, 0, -1289543296, 0, -1271402896, 0, -1258093696, 0, -1239348496, 0, -1226644096, 0, -1207898896, 0, -1195194496, 0, -1177054096, 0, -1163140096, 0, -1146209296, 0, -1131690496, 0, -1115364496, 0, -1100240896, 0, -1085124496, 0, -1068791296, 0, -1054279696, 0, -1051252096, 0, -1023434896, 0, -1020407296, 0, -993194896, 0, -989562496, 0, -962350096, 0, -959322496, 0, -955697296, 0, -942388096, 0, -932110096, 0, -928477696, 0, -924247696, 0, -910938496, 0, -901265296, 0, -897632896, 0, -892193296, 0, -879488896, 0, -870420496, 0, -867392896, 0, -860743696, 0, -848039296, 0, -840180496, 0, -836548096, 0, -829294096, 0, -815984896, 0, -809335696, 0, -806308096, 0, -797844496, 0, -784535296, 0, -778490896, 0, -775463296, 0, -766394896, 0, -753085696, 0, -748250896, 0, -744618496, 0, -734945296, 0, -721636096, 0, -717406096, 0, -714378496, 0, -702890896, 0, -690186496, 0, -687166096, 0, -683533696, 0, -671441296, 0, -658736896, 0, -656321296, 0, -652688896, 0, -639991696, 0, -626682496, 0, -625476496, 0, -622448896, 0, -608542096, 0, -595232896, 0, -577092496 } + trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1219957200, 1238104800, 1252015200, 1269640860, 1281474000, 1301608860, 1312146000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400, 1616796000, 1635458400, 1648332000, 1666998000, 1682726400, 1698447600, 1713571200, 1729897200, 1744416000, 1761346800, 1774656000, 1792796400, 1806105600, 1824850800, 1837555200, 1856300400, 1869004800, 1887750000, 1901059200, 1919199600, 1932508800, 1950649200, 1963958400, 1982703600, 1995408000, 2014153200, 2026857600, 2045602800, 2058307200, 2077052400, 2090361600, 2107897200, 2121811200, 2138742000 } + transPost32:intvector { 0, -2141706496, 0, -2125985296, 0, -2110256896, 0, -2095140496, 0, -2078807296, 0, -2064900496, 0, -2060663296, 0, -2060062096, 0, -2046752896, 0, -2034055696, 0, -2030423296, 0, -2028612496, 0, -2015303296, 0, -2003210896, 0, -1999578496, 0, -1997162896, 0, -1983853696, 0, -1972970896, 0, -1968733696, 0, -1965713296, 0, -1952404096, 0, -1942126096, 0, -1938493696, 0, -1933658896, 0, -1920954496, 0, -1911281296, 0, -1907648896, 0, -1902209296, 0, -1889504896, 0, -1881041296, 0, -1876804096, 0, -1870759696, 0, -1857450496, 0, -1850196496, 0, -1846564096, 0, -1839310096, 0, -1826000896, 0, -1819956496, 0, -1815719296, 0, -1807860496, 0, -1794551296, 0, -1789111696, 0, -1785479296, 0, -1775806096, 0, -1763101696, 0, -1758266896, 0, -1754634496, 0, -1744356496, 0, -1731652096, 0, -1728026896, 0, -1723789696, 0, -1712906896, 0, -1699597696, 0, -1697182096, 0, -1693549696, 0, -1681457296, 0, -1668148096, 0, -1666942096, 0, -1662704896, 0, -1650007696, 0, -1636698496, 0, -1636097296, 0, -1631860096, 0, -1618558096, 0, -1601620096, 0, -1586503696, 0, -1570775296, 0, -1555054096, 0, -1540535296, 0, -1523604496, 0, -1509690496, 0, -1492154896, 0, -1478845696, 0, -1460705296, 0, -1447396096, 0, -1428650896, 0, -1415946496, 0, -1397201296, 0, -1384496896, 0, -1365751696, 0, -1353047296, 0, -1334302096, 0, -1320992896, 0, -1302852496, 0, -1289543296, 0, -1271402896, 0, -1258093696, 0, -1239348496, 0, -1226644096, 0, -1207898896, 0, -1195194496, 0, -1177054096, 0, -1163140096, 0, -1146209296, 0, -1131690496, 0, -1115364496, 0, -1100240896, 0, -1085124496, 0, -1068791296, 0, -1054279696, 0, -1050647296, 0, -1050046096, 0, -1037341696, 0, -1023434896, 0, -1019802496, 0, -1018596496, 0, -1005892096, 0, -993194896, 0, -988957696, 0, -987146896, 0, -973837696, 0, -962350096, 0, -958717696, 0, -955697296, 0, -942388096, 0, -932110096, 0, -927872896, 0, -924247696, 0, -910938496, 0, -901265296, 0, -897028096, 0, -892193296, 0, -879488896, 0, -870420496, 0, -866788096, 0, -860743696, 0, -848039296, 0, -840180496, 0, -835943296, 0, -829294096, 0, -815984896, 0, -809335696, 0, -805703296, 0, -797844496, 0, -784535296, 0, -778490896, 0, -774858496, 0, -766394896, 0, -753085696, 0, -748250896, 0, -744013696, 0, -734945296, 0, -721636096, 0, -717406096, 0, -713773696, 0, -702890896, 0, -690186496, 0, -687166096, 0, -682928896, 0, -671441296, 0, -658736896, 0, -656321296, 0, -652084096, 0, -639991696, 0, -626682496, 0, -625476496, 0, -621844096, 0, -608542096, 0, -595232896, 0, -577092496 } typeOffsets:intvector { 8272, 0, 7200, 0, 7200, 3600 } - typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } + typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } finalRule { "Palestine" } finalRaw:int { 7200 } finalYear:int { 2088 } @@ -1271,16 +1275,16 @@ /* Asia/Harbin */ :int { 316 } //Z#271 /* Asia/Hebron */ :table { transPre32:intvector { -1, 2109557273 } - trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1220216400, 1238104800, 1252015200, 1269554400, 1281474000, 1301608860, 1312146000, 1314655200, 1317330000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400, 1616796000, 1635458400, 1648332000, 1666998000, 1682726400, 1698447600, 1712966400, 1729897200, 1743811200, 1761346800, 1774656000, 1792796400, 1806105600, 1824850800, 1837555200, 1856300400, 1869004800, 1887750000, 1901059200, 1919199600, 1932508800, 1950649200, 1963958400, 1982703600, 1995408000, 2014153200, 2026857600, 2045602800, 2058307200, 2077052400, 2090361600, 2107897200, 2121811200, 2138742000 } - transPost32:intvector { 0, -2141706496, 0, -2125985296, 0, -2110256896, 0, -2095140496, 0, -2092112896, 0, -2091511696, 0, -2078807296, 0, -2064900496, 0, -2061268096, 0, -2060062096, 0, -2046752896, 0, -2034055696, 0, -2031028096, 0, -2028612496, 0, -2015303296, 0, -2003210896, 0, -2000183296, 0, -1997162896, 0, -1983853696, 0, -1972970896, 0, -1969338496, 0, -1965713296, 0, -1952404096, 0, -1942126096, 0, -1939098496, 0, -1933658896, 0, -1920954496, 0, -1911281296, 0, -1908253696, 0, -1902209296, 0, -1889504896, 0, -1881041296, 0, -1877408896, 0, -1870759696, 0, -1857450496, 0, -1850196496, 0, -1847168896, 0, -1839310096, 0, -1826000896, 0, -1819956496, 0, -1816324096, 0, -1807860496, 0, -1794551296, 0, -1789111696, 0, -1786084096, 0, -1775806096, 0, -1763101696, 0, -1758266896, 0, -1755239296, 0, -1744356496, 0, -1731652096, 0, -1728026896, 0, -1724394496, 0, -1712906896, 0, -1699597696, 0, -1697182096, 0, -1694154496, 0, -1681457296, 0, -1668148096, 0, -1666942096, 0, -1663309696, 0, -1650007696, 0, -1636698496, 0, -1636097296, 0, -1632464896, 0, -1618558096, 0, -1602224896, 0, -1586503696, 0, -1571380096, 0, -1555054096, 0, -1541140096, 0, -1523604496, 0, -1510295296, 0, -1492154896, 0, -1478845696, 0, -1460705296, 0, -1447396096, 0, -1428650896, 0, -1415946496, 0, -1397201296, 0, -1384496896, 0, -1365751696, 0, -1353047296, 0, -1334302096, 0, -1320992896, 0, -1302852496, 0, -1289543296, 0, -1271402896, 0, -1258093696, 0, -1239348496, 0, -1226644096, 0, -1207898896, 0, -1195194496, 0, -1177054096, 0, -1163140096, 0, -1146209296, 0, -1131690496, 0, -1115364496, 0, -1100240896, 0, -1085124496, 0, -1068791296, 0, -1054279696, 0, -1051252096, 0, -1023434896, 0, -1020407296, 0, -993194896, 0, -989562496, 0, -962350096, 0, -959322496, 0, -955697296, 0, -942388096, 0, -932110096, 0, -928477696, 0, -924247696, 0, -910938496, 0, -901265296, 0, -897632896, 0, -892193296, 0, -879488896, 0, -870420496, 0, -867392896, 0, -860743696, 0, -848039296, 0, -840180496, 0, -836548096, 0, -829294096, 0, -815984896, 0, -809335696, 0, -806308096, 0, -797844496, 0, -784535296, 0, -778490896, 0, -775463296, 0, -766394896, 0, -753085696, 0, -748250896, 0, -744618496, 0, -734945296, 0, -721636096, 0, -717406096, 0, -714378496, 0, -702890896, 0, -690186496, 0, -687166096, 0, -683533696, 0, -671441296, 0, -658736896, 0, -656321296, 0, -652688896, 0, -639991696, 0, -626682496, 0, -625476496, 0, -622448896, 0, -608542096, 0, -595232896, 0, -577092496 } + trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1220216400, 1238104800, 1252015200, 1269554400, 1281474000, 1301608860, 1312146000, 1314655200, 1317330000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400, 1616796000, 1635458400, 1648332000, 1666998000, 1682726400, 1698447600, 1713571200, 1729897200, 1744416000, 1761346800, 1774656000, 1792796400, 1806105600, 1824850800, 1837555200, 1856300400, 1869004800, 1887750000, 1901059200, 1919199600, 1932508800, 1950649200, 1963958400, 1982703600, 1995408000, 2014153200, 2026857600, 2045602800, 2058307200, 2077052400, 2090361600, 2107897200, 2121811200, 2138742000 } + transPost32:intvector { 0, -2141706496, 0, -2125985296, 0, -2110256896, 0, -2095140496, 0, -2078807296, 0, -2064900496, 0, -2060663296, 0, -2060062096, 0, -2046752896, 0, -2034055696, 0, -2030423296, 0, -2028612496, 0, -2015303296, 0, -2003210896, 0, -1999578496, 0, -1997162896, 0, -1983853696, 0, -1972970896, 0, -1968733696, 0, -1965713296, 0, -1952404096, 0, -1942126096, 0, -1938493696, 0, -1933658896, 0, -1920954496, 0, -1911281296, 0, -1907648896, 0, -1902209296, 0, -1889504896, 0, -1881041296, 0, -1876804096, 0, -1870759696, 0, -1857450496, 0, -1850196496, 0, -1846564096, 0, -1839310096, 0, -1826000896, 0, -1819956496, 0, -1815719296, 0, -1807860496, 0, -1794551296, 0, -1789111696, 0, -1785479296, 0, -1775806096, 0, -1763101696, 0, -1758266896, 0, -1754634496, 0, -1744356496, 0, -1731652096, 0, -1728026896, 0, -1723789696, 0, -1712906896, 0, -1699597696, 0, -1697182096, 0, -1693549696, 0, -1681457296, 0, -1668148096, 0, -1666942096, 0, -1662704896, 0, -1650007696, 0, -1636698496, 0, -1636097296, 0, -1631860096, 0, -1618558096, 0, -1601620096, 0, -1586503696, 0, -1570775296, 0, -1555054096, 0, -1540535296, 0, -1523604496, 0, -1509690496, 0, -1492154896, 0, -1478845696, 0, -1460705296, 0, -1447396096, 0, -1428650896, 0, -1415946496, 0, -1397201296, 0, -1384496896, 0, -1365751696, 0, -1353047296, 0, -1334302096, 0, -1320992896, 0, -1302852496, 0, -1289543296, 0, -1271402896, 0, -1258093696, 0, -1239348496, 0, -1226644096, 0, -1207898896, 0, -1195194496, 0, -1177054096, 0, -1163140096, 0, -1146209296, 0, -1131690496, 0, -1115364496, 0, -1100240896, 0, -1085124496, 0, -1068791296, 0, -1054279696, 0, -1050647296, 0, -1050046096, 0, -1037341696, 0, -1023434896, 0, -1019802496, 0, -1018596496, 0, -1005892096, 0, -993194896, 0, -988957696, 0, -987146896, 0, -973837696, 0, -962350096, 0, -958717696, 0, -955697296, 0, -942388096, 0, -932110096, 0, -927872896, 0, -924247696, 0, -910938496, 0, -901265296, 0, -897028096, 0, -892193296, 0, -879488896, 0, -870420496, 0, -866788096, 0, -860743696, 0, -848039296, 0, -840180496, 0, -835943296, 0, -829294096, 0, -815984896, 0, -809335696, 0, -805703296, 0, -797844496, 0, -784535296, 0, -778490896, 0, -774858496, 0, -766394896, 0, -753085696, 0, -748250896, 0, -744013696, 0, -734945296, 0, -721636096, 0, -717406096, 0, -713773696, 0, -702890896, 0, -690186496, 0, -687166096, 0, -682928896, 0, -671441296, 0, -658736896, 0, -656321296, 0, -652084096, 0, -639991696, 0, -626682496, 0, -625476496, 0, -621844096, 0, -608542096, 0, -595232896, 0, -577092496 } typeOffsets:intvector { 8423, 0, 7200, 0, 7200, 3600 } - typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } + typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } finalRule { "Palestine" } finalRaw:int { 7200 } finalYear:int { 2088 } } //Z#272 /* Asia/Ho_Chi_Minh */ :table { - trans:intvector { -1851577590, -852105600, -782643600, -767869200, -718095600, -457776000, -315648000, 171820800 } + trans:intvector { -1851577590, -852105600, -782643600, -767869200, -718095600, -457772400, -315648000, 171820800 } typeOffsets:intvector { 25590, 0, 25200, 0, 28800, 0, 32400, 0 } typeMap:bin { "0102030102010201" } links:intvector { 273, 312, 634 } @@ -1444,9 +1448,9 @@ links:intvector { 250, 307 } } //Z#307 /* Asia/Qostanay */ :table { - trans:intvector { -1441167268, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000 } + trans:intvector { -1441167268, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000, 1709229600 } typeOffsets:intvector { 15268, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 } - typeMap:bin { "010304050403040304030403040304030403040304030201030403040304030403040304030403040304030403040304030405" } + typeMap:bin { "01030405040304030403040304030403040304030403020103040304030403040304030403040304030403040304030403040503" } } //Z#308 /* Asia/Qyzylorda */ :table { trans:intvector { -1441167712, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695768400, 701812800, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000, 1545328800 } @@ -1550,7 +1554,7 @@ trans:intvector { -1325483420 } typeOffsets:intvector { 21020, 0, 21600, 0 } typeMap:bin { "01" } - links:intvector { 238, 284, 331 } + links:intvector { 284, 331 } } //Z#331 /* Asia/Ust-Nera */ :table { trans:intvector { -1579426374, -1247558400, 354898800, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701794800, 717519600, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400, 828198000, 846342000, 859647600, 877791600, 891097200, 909241200, 922546800, 941295600, 953996400, 972745200, 985446000, 1004194800, 1017500400, 1035644400, 1048950000, 1067094000, 1080399600, 1099148400, 1111849200, 1130598000, 1143298800, 1162047600, 1174748400, 1193497200, 1206802800, 1224946800, 1238252400, 1256396400, 1269702000, 1288450800, 1301151600, 1315828800, 1414249200 } @@ -2542,10 +2546,9 @@ typeOffsets:intvector { -14400, 0 } } //Z#604 /* SystemV/AST4ADT */ :table { - transPre32:intvector { -1, 2096195296, -1, 2111916496, -1, 2127644896, -1, 2143366096 } trans:intvector { -2135872800, -2120151600, -2104423200, -2088702000, -2072973600, -2056647600, -2040919200, -2025198000, -2009469600, -1993748400, -1978020000, -1962298800, -1946570400, -1930849200, -1915120800, -1898794800, -1883671200, -1867345200, -1851616800, -1835895600, -1820167200, -1804446000, -1788717600, -1772996400, -1757268000, -1741546800, -1725818400, -1709492400, -1693764000, -1678042800, -1662314400, -1646593200, -1630864800, -1615143600, -1599415200, -1583694000, -1567965600, -1551639600, -1536516000, -1520190000, -1504461600, -1488740400, -1473012000, -1457290800, -1441562400, -1425841200, -1410112800, -1394391600, -1378663200, -1362337200, -1347213600, -1330887600, -1315159200, -1299438000, -1283709600, -1267988400, -1252260000, -1236538800, -1220810400, -1205089200, -1189360800, -1173034800, -1157306400, -1141585200, -1125856800, -1110135600, -1094407200, -1078686000, -1062957600, -1047236400, -1031508000, -1015182000, -1000058400, -983732400, -968004000, -952282800, -936554400, -920833200, -905104800, -889383600, -873655200, -857934000, -842205600, -825879600, -810151200, -794430000, -778701600, -762980400, -747252000, -731530800, -715802400, -700081200, -684352800, -668026800, -652903200, -636577200, -620848800, -605127600, -589399200, -573678000, -557949600, -542228400, -526500000, -510778800, -495050400, -478724400, -463600800, -447274800, -431546400, -415825200, -400096800, -384375600, -368647200, -352926000, -337197600, -321476400, -305748000, -289422000, -273693600, -257972400, -242244000, -226522800, -210794400, -195073200, -179344800, -163623600, -147895200, -131569200, -116445600, -100119600, -84391200, -68670000, -52941600, -37220400, -21492000, -5770800, 9957600, 25678800, 41407200, 57733200, 73461600, 89182800, 104911200, 120632400, 126684000, 154501200, 162367200, 183531600, 199260000, 215586000 } typeOffsets:intvector { -14400, 0, -14400, 3600 } - typeMap:bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" } + typeMap:bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" } finalRule { "SystemV" } finalRaw:int { -14400 } finalYear:int { 1977 } @@ -2554,10 +2557,9 @@ typeOffsets:intvector { -21600, 0 } } //Z#606 /* SystemV/CST6CDT */ :table { - transPre32:intvector { -1, 2096202496, -1, 2111923696, -1, 2127652096, -1, 2143373296 } trans:intvector { -2135865600, -2120144400, -2104416000, -2088694800, -2072966400, -2056640400, -2040912000, -2025190800, -2009462400, -1993741200, -1978012800, -1962291600, -1946563200, -1930842000, -1915113600, -1898787600, -1883664000, -1867338000, -1851609600, -1835888400, -1820160000, -1804438800, -1788710400, -1772989200, -1757260800, -1741539600, -1725811200, -1709485200, -1693756800, -1678035600, -1662307200, -1646586000, -1630857600, -1615136400, -1599408000, -1583686800, -1567958400, -1551632400, -1536508800, -1520182800, -1504454400, -1488733200, -1473004800, -1457283600, -1441555200, -1425834000, -1410105600, -1394384400, -1378656000, -1362330000, -1347206400, -1330880400, -1315152000, -1299430800, -1283702400, -1267981200, -1252252800, -1236531600, -1220803200, -1205082000, -1189353600, -1173027600, -1157299200, -1141578000, -1125849600, -1110128400, -1094400000, -1078678800, -1062950400, -1047229200, -1031500800, -1015174800, -1000051200, -983725200, -967996800, -952275600, -936547200, -920826000, -905097600, -889376400, -873648000, -857926800, -842198400, -825872400, -810144000, -794422800, -778694400, -762973200, -747244800, -731523600, -715795200, -700074000, -684345600, -668019600, -652896000, -636570000, -620841600, -605120400, -589392000, -573670800, -557942400, -542221200, -526492800, -510771600, -495043200, -478717200, -463593600, -447267600, -431539200, -415818000, -400089600, -384368400, -368640000, -352918800, -337190400, -321469200, -305740800, -289414800, -273686400, -257965200, -242236800, -226515600, -210787200, -195066000, -179337600, -163616400, -147888000, -131562000, -116438400, -100112400, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 154508400, 162374400, 183538800, 199267200, 215593200 } typeOffsets:intvector { -21600, 0, -21600, 3600 } - typeMap:bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" } + typeMap:bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" } finalRule { "SystemV" } finalRaw:int { -21600 } finalYear:int { 1977 } @@ -2566,10 +2568,9 @@ typeOffsets:intvector { -18000, 0 } } //Z#608 /* SystemV/EST5EDT */ :table { - transPre32:intvector { -1, 2096198896, -1, 2111920096, -1, 2127648496, -1, 2143369696 } trans:intvector { -2135869200, -2120148000, -2104419600, -2088698400, -2072970000, -2056644000, -2040915600, -2025194400, -2009466000, -1993744800, -1978016400, -1962295200, -1946566800, -1930845600, -1915117200, -1898791200, -1883667600, -1867341600, -1851613200, -1835892000, -1820163600, -1804442400, -1788714000, -1772992800, -1757264400, -1741543200, -1725814800, -1709488800, -1693760400, -1678039200, -1662310800, -1646589600, -1630861200, -1615140000, -1599411600, -1583690400, -1567962000, -1551636000, -1536512400, -1520186400, -1504458000, -1488736800, -1473008400, -1457287200, -1441558800, -1425837600, -1410109200, -1394388000, -1378659600, -1362333600, -1347210000, -1330884000, -1315155600, -1299434400, -1283706000, -1267984800, -1252256400, -1236535200, -1220806800, -1205085600, -1189357200, -1173031200, -1157302800, -1141581600, -1125853200, -1110132000, -1094403600, -1078682400, -1062954000, -1047232800, -1031504400, -1015178400, -1000054800, -983728800, -968000400, -952279200, -936550800, -920829600, -905101200, -889380000, -873651600, -857930400, -842202000, -825876000, -810147600, -794426400, -778698000, -762976800, -747248400, -731527200, -715798800, -700077600, -684349200, -668023200, -652899600, -636573600, -620845200, -605124000, -589395600, -573674400, -557946000, -542224800, -526496400, -510775200, -495046800, -478720800, -463597200, -447271200, -431542800, -415821600, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 154504800, 162370800, 183535200, 199263600, 215589600 } typeOffsets:intvector { -18000, 0, -18000, 3600 } - typeMap:bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" } + typeMap:bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" } finalRule { "SystemV" } finalRaw:int { -18000 } finalYear:int { 1977 } @@ -2581,10 +2582,9 @@ typeOffsets:intvector { -25200, 0 } } //Z#611 /* SystemV/MST7MDT */ :table { - transPre32:intvector { -1, 2096206096, -1, 2111927296, -1, 2127655696, -1, 2143376896 } trans:intvector { -2135862000, -2120140800, -2104412400, -2088691200, -2072962800, -2056636800, -2040908400, -2025187200, -2009458800, -1993737600, -1978009200, -1962288000, -1946559600, -1930838400, -1915110000, -1898784000, -1883660400, -1867334400, -1851606000, -1835884800, -1820156400, -1804435200, -1788706800, -1772985600, -1757257200, -1741536000, -1725807600, -1709481600, -1693753200, -1678032000, -1662303600, -1646582400, -1630854000, -1615132800, -1599404400, -1583683200, -1567954800, -1551628800, -1536505200, -1520179200, -1504450800, -1488729600, -1473001200, -1457280000, -1441551600, -1425830400, -1410102000, -1394380800, -1378652400, -1362326400, -1347202800, -1330876800, -1315148400, -1299427200, -1283698800, -1267977600, -1252249200, -1236528000, -1220799600, -1205078400, -1189350000, -1173024000, -1157295600, -1141574400, -1125846000, -1110124800, -1094396400, -1078675200, -1062946800, -1047225600, -1031497200, -1015171200, -1000047600, -983721600, -967993200, -952272000, -936543600, -920822400, -905094000, -889372800, -873644400, -857923200, -842194800, -825868800, -810140400, -794419200, -778690800, -762969600, -747241200, -731520000, -715791600, -700070400, -684342000, -668016000, -652892400, -636566400, -620838000, -605116800, -589388400, -573667200, -557938800, -542217600, -526489200, -510768000, -495039600, -478713600, -463590000, -447264000, -431535600, -415814400, -400086000, -384364800, -368636400, -352915200, -337186800, -321465600, -305737200, -289411200, -273682800, -257961600, -242233200, -226512000, -210783600, -195062400, -179334000, -163612800, -147884400, -131558400, -116434800, -100108800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 154512000, 162378000, 183542400, 199270800, 215596800 } typeOffsets:intvector { -25200, 0, -25200, 3600 } - typeMap:bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" } + typeMap:bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" } finalRule { "SystemV" } finalRaw:int { -25200 } finalYear:int { 1977 } @@ -2593,10 +2593,9 @@ typeOffsets:intvector { -28800, 0 } } //Z#613 /* SystemV/PST8PDT */ :table { - transPre32:intvector { -1, 2096209696, -1, 2111930896, -1, 2127659296, -1, 2143380496 } trans:intvector { -2135858400, -2120137200, -2104408800, -2088687600, -2072959200, -2056633200, -2040904800, -2025183600, -2009455200, -1993734000, -1978005600, -1962284400, -1946556000, -1930834800, -1915106400, -1898780400, -1883656800, -1867330800, -1851602400, -1835881200, -1820152800, -1804431600, -1788703200, -1772982000, -1757253600, -1741532400, -1725804000, -1709478000, -1693749600, -1678028400, -1662300000, -1646578800, -1630850400, -1615129200, -1599400800, -1583679600, -1567951200, -1551625200, -1536501600, -1520175600, -1504447200, -1488726000, -1472997600, -1457276400, -1441548000, -1425826800, -1410098400, -1394377200, -1378648800, -1362322800, -1347199200, -1330873200, -1315144800, -1299423600, -1283695200, -1267974000, -1252245600, -1236524400, -1220796000, -1205074800, -1189346400, -1173020400, -1157292000, -1141570800, -1125842400, -1110121200, -1094392800, -1078671600, -1062943200, -1047222000, -1031493600, -1015167600, -1000044000, -983718000, -967989600, -952268400, -936540000, -920818800, -905090400, -889369200, -873640800, -857919600, -842191200, -825865200, -810136800, -794415600, -778687200, -762966000, -747237600, -731516400, -715788000, -700066800, -684338400, -668012400, -652888800, -636562800, -620834400, -605113200, -589384800, -573663600, -557935200, -542214000, -526485600, -510764400, -495036000, -478710000, -463586400, -447260400, -431532000, -415810800, -400082400, -384361200, -368632800, -352911600, -337183200, -321462000, -305733600, -289407600, -273679200, -257958000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 154515600, 162381600, 183546000, 199274400, 215600400 } typeOffsets:intvector { -28800, 0, -28800, 3600 } - typeMap:bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" } + typeMap:bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" } finalRule { "SystemV" } finalRaw:int { -28800 } finalYear:int { 1977 } @@ -2605,10 +2604,9 @@ typeOffsets:intvector { -32400, 0 } } //Z#615 /* SystemV/YST9YDT */ :table { - transPre32:intvector { -1, 2096213296, -1, 2111934496, -1, 2127662896, -1, 2143384096 } trans:intvector { -2135854800, -2120133600, -2104405200, -2088684000, -2072955600, -2056629600, -2040901200, -2025180000, -2009451600, -1993730400, -1978002000, -1962280800, -1946552400, -1930831200, -1915102800, -1898776800, -1883653200, -1867327200, -1851598800, -1835877600, -1820149200, -1804428000, -1788699600, -1772978400, -1757250000, -1741528800, -1725800400, -1709474400, -1693746000, -1678024800, -1662296400, -1646575200, -1630846800, -1615125600, -1599397200, -1583676000, -1567947600, -1551621600, -1536498000, -1520172000, -1504443600, -1488722400, -1472994000, -1457272800, -1441544400, -1425823200, -1410094800, -1394373600, -1378645200, -1362319200, -1347195600, -1330869600, -1315141200, -1299420000, -1283691600, -1267970400, -1252242000, -1236520800, -1220792400, -1205071200, -1189342800, -1173016800, -1157288400, -1141567200, -1125838800, -1110117600, -1094389200, -1078668000, -1062939600, -1047218400, -1031490000, -1015164000, -1000040400, -983714400, -967986000, -952264800, -936536400, -920815200, -905086800, -889365600, -873637200, -857916000, -842187600, -825861600, -810133200, -794412000, -778683600, -762962400, -747234000, -731512800, -715784400, -700063200, -684334800, -668008800, -652885200, -636559200, -620830800, -605109600, -589381200, -573660000, -557931600, -542210400, -526482000, -510760800, -495032400, -478706400, -463582800, -447256800, -431528400, -415807200, -400078800, -384357600, -368629200, -352908000, -337179600, -321458400, -305730000, -289404000, -273675600, -257954400, -242226000, -226504800, -210776400, -195055200, -179326800, -163605600, -147877200, -131551200, -116427600, -100101600, -84373200, -68652000, -52923600, -37202400, -21474000, -5752800, 9975600, 25696800, 41425200, 57751200, 73479600, 89200800, 104929200, 120650400, 126702000, 154519200, 162385200, 183549600, 199278000, 215604000 } typeOffsets:intvector { -32400, 0, -32400, 3600 } - typeMap:bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" } + typeMap:bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" } finalRule { "SystemV" } finalRaw:int { -32400 } finalYear:int { 1977 } diff -Nru firefox-esr-115.7.0esr/ipc/glue/GeckoChildProcessHost.cpp firefox-esr-115.9.0esr/ipc/glue/GeckoChildProcessHost.cpp --- firefox-esr-115.7.0esr/ipc/glue/GeckoChildProcessHost.cpp 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/ipc/glue/GeckoChildProcessHost.cpp 2024-03-14 05:21:26.000000000 +0000 @@ -263,8 +263,7 @@ WindowsProcessLauncher(GeckoChildProcessHost* aHost, std::vector&& aExtraOpts) : BaseProcessLauncher(aHost, std::move(aExtraOpts)), - mCachedNtdllThunk(GetCachedNtDllThunk()), - mWerDataPointer(&(aHost->mWerData)) {} + mCachedNtdllThunk(GetCachedNtDllThunk()) {} protected: bool SetChannel(IPC::Channel*) override { return true; } @@ -276,7 +275,6 @@ bool mUseSandbox = false; const Buffer* mCachedNtdllThunk; - CrashReporter::WindowsErrorReportingData const* mWerDataPointer; }; typedef WindowsProcessLauncher ProcessLauncher; #endif // XP_WIN @@ -399,9 +397,6 @@ mProcessState(CREATING_CHANNEL), #ifdef XP_WIN mGroupId(u"-"), - mWerData{.mWerNotifyProc = CrashReporter::WerNotifyProc, - .mChildPid = 0, - .mMinidumpFile = {}}, #endif #if defined(MOZ_SANDBOX) && defined(XP_WIN) mEnableSandboxLogging(false), @@ -1587,10 +1582,6 @@ mLaunchOptions->handles_to_inherit.push_back(reinterpret_cast(h)); std::string hStr = std::to_string(h); mCmdLine->AppendLooseValue(UTF8ToWide(hStr)); - - char werDataAddress[17] = {}; - SprintfLiteral(werDataAddress, "%p", mWerDataPointer); - mCmdLine->AppendLooseValue(UTF8ToWide(werDataAddress)); } // Process type diff -Nru firefox-esr-115.7.0esr/ipc/glue/GeckoChildProcessHost.h firefox-esr-115.9.0esr/ipc/glue/GeckoChildProcessHost.h --- firefox-esr-115.7.0esr/ipc/glue/GeckoChildProcessHost.h 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/ipc/glue/GeckoChildProcessHost.h 2024-03-14 05:21:26.000000000 +0000 @@ -258,7 +258,6 @@ #ifdef XP_WIN void InitWindowsGroupID(); nsString mGroupId; - CrashReporter::WindowsErrorReportingData mWerData; # ifdef MOZ_SANDBOX RefPtr mSandboxBroker; std::vector mAllowedFilesRead; diff -Nru firefox-esr-115.7.0esr/js/src/builtin/intl/TimeZoneDataGenerated.h firefox-esr-115.9.0esr/js/src/builtin/intl/TimeZoneDataGenerated.h --- firefox-esr-115.7.0esr/js/src/builtin/intl/TimeZoneDataGenerated.h 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/js/src/builtin/intl/TimeZoneDataGenerated.h 2024-03-14 05:21:26.000000000 +0000 @@ -1,5 +1,5 @@ // Generated by make_intl_data.py. DO NOT EDIT. -// tzdata version = 2023c +// tzdata version = 2024a #ifndef builtin_intl_TimeZoneDataGenerated_h #define builtin_intl_TimeZoneDataGenerated_h @@ -22,8 +22,14 @@ "America/Ensenada", // America/Tijuana [backzone] "America/Indiana/Indianapolis", // America/Indianapolis [northamerica] "America/Kentucky/Louisville", // America/Louisville [northamerica] + "America/Montreal", // America/Toronto [backzone] + "America/Nipigon", // America/Toronto [backzone] "America/Nuuk", // America/Godthab [europe] + "America/Pangnirtung", // America/Iqaluit [backzone] + "America/Rainy_River", // America/Winnipeg [backzone] "America/Rosario", // America/Cordoba [backzone] + "America/Thunder_Bay", // America/Toronto [backzone] + "America/Yellowknife", // America/Edmonton [backzone] "Asia/Chongqing", // Asia/Shanghai [backzone] "Asia/Harbin", // Asia/Shanghai [backzone] "Asia/Ho_Chi_Minh", // Asia/Saigon [asia] @@ -34,13 +40,17 @@ "Asia/Yangon", // Asia/Rangoon [asia] "Atlantic/Faroe", // Atlantic/Faeroe [europe] "Atlantic/Jan_Mayen", // Arctic/Longyearbyen [backzone] + "Australia/Currie", // Australia/Hobart [backzone] "EST", // Etc/GMT+5 [northamerica] "Europe/Belfast", // Europe/London [backzone] "Europe/Kyiv", // Europe/Kiev [europe] "Europe/Tiraspol", // Europe/Chisinau [backzone] + "Europe/Uzhgorod", // Europe/Kiev [backzone] + "Europe/Zaporozhye", // Europe/Kiev [backzone] "HST", // Etc/GMT+10 [northamerica] "MST", // Etc/GMT+7 [northamerica] "Pacific/Chuuk", // Pacific/Truk [backzone] + "Pacific/Johnston", // Pacific/Honolulu [backzone] "Pacific/Kanton", // Pacific/Enderbury [australasia] "Pacific/Pohnpei", // Pacific/Ponape [backzone] }; @@ -67,7 +77,6 @@ { "America/Lower_Princes", "America/Curacao" }, // America/Lower_Princes [backward] { "America/Marigot", "America/Port_of_Spain" }, // America/Marigot [backward] { "America/Mendoza", "America/Argentina/Mendoza" }, // America/Mendoza [backward] - { "America/Santa_Isabel", "America/Tijuana" }, // America/Santa_Isabel [backward] { "America/St_Barthelemy", "America/Port_of_Spain" }, // America/St_Barthelemy [backward] { "Antarctica/South_Pole", "Antarctica/McMurdo" }, // Pacific/Auckland [backward] { "Arctic/Longyearbyen", "Europe/Oslo" }, // Arctic/Longyearbyen [backward] diff -Nru firefox-esr-115.7.0esr/js/src/jit/BaselineBailouts.cpp firefox-esr-115.9.0esr/js/src/jit/BaselineBailouts.cpp --- firefox-esr-115.7.0esr/js/src/jit/BaselineBailouts.cpp 2024-01-15 21:07:31.000000000 +0000 +++ firefox-esr-115.9.0esr/js/src/jit/BaselineBailouts.cpp 2024-03-14 05:21:27.000000000 +0000 @@ -125,6 +125,8 @@ BailoutKind bailoutKind_; + bool canUseTrialInlinedICScripts_ = true; + // The baseline frames we will reconstruct on the heap are not // rooted, so GC must be suppressed. gc::AutoSuppressGC suppress_; @@ -486,7 +488,8 @@ JSFunction* nextCallee, TrialInliningState trialInliningState) { nextCallee_ = nextCallee; - if (trialInliningState == TrialInliningState::Inlined) { + if (trialInliningState == TrialInliningState::Inlined && + canUseTrialInlinedICScripts_) { // Update icScript_ to point to the icScript of nextCallee const uint32_t pcOff = script_->pcToOffset(pc_); icScript_ = icScript_->findInlinedChild(pcOff); @@ -496,6 +499,9 @@ // inlined ICScript available, but we also could not if we transitioned // to TrialInliningState::Failure after being monomorphic inlined. icScript_ = nextCallee->nonLazyScript()->jitScript()->icScript(); + if (trialInliningState != TrialInliningState::MonomorphicInlined) { + canUseTrialInlinedICScripts_ = false; + } } } diff -Nru firefox-esr-115.7.0esr/js/src/jit/MacroAssembler.cpp firefox-esr-115.9.0esr/js/src/jit/MacroAssembler.cpp --- firefox-esr-115.7.0esr/js/src/jit/MacroAssembler.cpp 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/js/src/jit/MacroAssembler.cpp 2024-03-14 05:21:26.000000000 +0000 @@ -2662,11 +2662,11 @@ branchTest32(Assembler::Zero, scratch2, scratch2, &doAddDynamic); AllocatableRegisterSet regs(RegisterSet::Volatile()); - LiveRegisterSet save(regs.asLiveSet()); + regs.takeUnchecked(scratch2); + LiveRegisterSet save(regs.asLiveSet()); PushRegsInMask(save); - regs.takeUnchecked(scratch2); Register tmp; if (regs.has(obj)) { regs.takeUnchecked(obj); diff -Nru firefox-esr-115.7.0esr/js/src/jit/arm/MacroAssembler-arm.cpp firefox-esr-115.9.0esr/js/src/jit/arm/MacroAssembler-arm.cpp --- firefox-esr-115.7.0esr/js/src/jit/arm/MacroAssembler-arm.cpp 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/js/src/jit/arm/MacroAssembler-arm.cpp 2024-03-14 05:21:26.000000000 +0000 @@ -4592,7 +4592,7 @@ return; } - ScratchFloat32Scope scratch(*this); + ScratchDoubleScope scratch(*this); FloatRegister freg = reg.fpu(); if (type == MIRType::Float32) { convertFloat32ToDouble(freg, scratch); @@ -5843,11 +5843,13 @@ masm.quotient32(rhs, lhsOutput, isUnsigned); } } else { - // Ensure that the output registers are saved and restored properly, - MOZ_ASSERT(volatileLiveRegs.has(ReturnRegVal0)); - MOZ_ASSERT(volatileLiveRegs.has(ReturnRegVal1)); + // Ensure that the output registers are saved and restored properly. + LiveRegisterSet liveRegs = volatileLiveRegs; + liveRegs.addUnchecked(ReturnRegVal0); + liveRegs.addUnchecked(ReturnRegVal1); + + masm.PushRegsInMask(liveRegs); - masm.PushRegsInMask(volatileLiveRegs); using Fn = int64_t (*)(int, int); { ScratchRegisterScope scratch(masm); @@ -5870,7 +5872,7 @@ LiveRegisterSet ignore; ignore.add(lhsOutput); - masm.PopRegsInMaskIgnore(volatileLiveRegs, ignore); + masm.PopRegsInMaskIgnore(liveRegs, ignore); } } @@ -5899,10 +5901,12 @@ remainder32(rhs, remOutput, isUnsigned); quotient32(rhs, lhsOutput, isUnsigned); } else { - // Ensure that the output registers are saved and restored properly, - MOZ_ASSERT(volatileLiveRegs.has(ReturnRegVal0)); - MOZ_ASSERT(volatileLiveRegs.has(ReturnRegVal1)); - PushRegsInMask(volatileLiveRegs); + // Ensure that the output registers are saved and restored properly. + LiveRegisterSet liveRegs = volatileLiveRegs; + liveRegs.addUnchecked(ReturnRegVal0); + liveRegs.addUnchecked(ReturnRegVal1); + + PushRegsInMask(liveRegs); using Fn = int64_t (*)(int, int); { @@ -5923,7 +5927,7 @@ LiveRegisterSet ignore; ignore.add(remOutput); ignore.add(lhsOutput); - PopRegsInMaskIgnore(volatileLiveRegs, ignore); + PopRegsInMaskIgnore(liveRegs, ignore); } } diff -Nru firefox-esr-115.7.0esr/js/src/jit-test/tests/ion/bug1874502.js firefox-esr-115.9.0esr/js/src/jit-test/tests/ion/bug1874502.js --- firefox-esr-115.7.0esr/js/src/jit-test/tests/ion/bug1874502.js 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-115.9.0esr/js/src/jit-test/tests/ion/bug1874502.js 2024-03-14 05:21:26.000000000 +0000 @@ -0,0 +1,8 @@ +// |jit-test| --no-threads; --fast-warmup + +function f(x) { + Math.fround(function () { x; }); +} +for (let i = 0; i < 30; i++) { + f(Math.fround(1)); +} diff -Nru firefox-esr-115.7.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_backward_links.js firefox-esr-115.9.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_backward_links.js --- firefox-esr-115.7.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_backward_links.js 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_backward_links.js 2024-03-14 05:21:27.000000000 +0000 @@ -1,7 +1,7 @@ // |reftest| skip-if(!this.hasOwnProperty("Intl")) // Generated by make_intl_data.py. DO NOT EDIT. -// tzdata version = 2023c +// tzdata version = 2024a const tzMapper = [ x => x, diff -Nru firefox-esr-115.7.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_backzone.js firefox-esr-115.9.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_backzone.js --- firefox-esr-115.7.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_backzone.js 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_backzone.js 2024-03-14 05:21:26.000000000 +0000 @@ -1,7 +1,7 @@ // |reftest| skip-if(!this.hasOwnProperty("Intl")) // Generated by make_intl_data.py. DO NOT EDIT. -// tzdata version = 2023c +// tzdata version = 2024a const tzMapper = [ x => x, @@ -81,7 +81,6 @@ "Antarctica/DumontDUrville": "Antarctica/DumontDUrville", "Antarctica/McMurdo": "Antarctica/McMurdo", "Antarctica/Syowa": "Antarctica/Syowa", - "Antarctica/Vostok": "Antarctica/Vostok", "Asia/Aden": "Asia/Aden", "Asia/Bahrain": "Asia/Bahrain", "Asia/Brunei": "Asia/Brunei", diff -Nru firefox-esr-115.7.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_backzone_links.js firefox-esr-115.9.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_backzone_links.js --- firefox-esr-115.7.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_backzone_links.js 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_backzone_links.js 2024-03-14 05:21:26.000000000 +0000 @@ -1,7 +1,7 @@ // |reftest| skip-if(!this.hasOwnProperty("Intl")) // Generated by make_intl_data.py. DO NOT EDIT. -// tzdata version = 2023c +// tzdata version = 2024a const tzMapper = [ x => x, diff -Nru firefox-esr-115.7.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_notbackward_links.js firefox-esr-115.9.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_notbackward_links.js --- firefox-esr-115.7.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_notbackward_links.js 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_notbackward_links.js 2024-03-14 05:21:26.000000000 +0000 @@ -1,7 +1,7 @@ // |reftest| skip-if(!this.hasOwnProperty("Intl")) // Generated by make_intl_data.py. DO NOT EDIT. -// tzdata version = 2023c +// tzdata version = 2024a const tzMapper = [ x => x, diff -Nru firefox-esr-115.7.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_version.js firefox-esr-115.9.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_version.js --- firefox-esr-115.7.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_version.js 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/js/src/tests/non262/Intl/DateTimeFormat/timeZone_version.js 2024-03-14 05:21:26.000000000 +0000 @@ -1,8 +1,8 @@ // |reftest| skip-if(!this.hasOwnProperty("Intl")) // Generated by make_intl_data.py. DO NOT EDIT. -// tzdata version = 2023c -const tzdata = "2023c"; +// tzdata version = 2024a +const tzdata = "2024a"; if (typeof getICUOptions === "undefined") { var getICUOptions = SpecialPowers.Cu.getJSTestingFunctions().getICUOptions; diff -Nru firefox-esr-115.7.0esr/js/src/tests/non262/Intl/supportedValuesOf-timeZones-canonical.js firefox-esr-115.9.0esr/js/src/tests/non262/Intl/supportedValuesOf-timeZones-canonical.js --- firefox-esr-115.7.0esr/js/src/tests/non262/Intl/supportedValuesOf-timeZones-canonical.js 2024-01-15 21:07:30.000000000 +0000 +++ firefox-esr-115.9.0esr/js/src/tests/non262/Intl/supportedValuesOf-timeZones-canonical.js 2024-03-14 05:21:26.000000000 +0000 @@ -1,7 +1,7 @@ // |reftest| skip-if(!this.hasOwnProperty("Intl")) // Generated by make_intl_data.py. DO NOT EDIT. -// tzdata version = 2023c +// tzdata version = 2024a // This file was generated with historical, pre-1970 backzone information // respected. diff -Nru firefox-esr-115.7.0esr/layout/generic/ReflowInput.cpp firefox-esr-115.9.0esr/layout/generic/ReflowInput.cpp --- firefox-esr-115.7.0esr/layout/generic/ReflowInput.cpp 2024-01-15 21:07:33.000000000 +0000 +++ firefox-esr-115.9.0esr/layout/generic/ReflowInput.cpp 2024-03-14 05:21:30.000000000 +0000 @@ -304,7 +304,8 @@ // frames NS_FRAME_CONTAINS_RELATIVE_BSIZE is marked on. return mFrame->HasAnyStateBits(NS_FRAME_IS_DIRTY) || IsIResize() || (IsBResize() && - mFrame->HasAnyStateBits(NS_FRAME_CONTAINS_RELATIVE_BSIZE)); + mFrame->HasAnyStateBits(NS_FRAME_CONTAINS_RELATIVE_BSIZE)) || + mFlags.mIsInLastColumnBalancingReflow; } void ReflowInput::SetComputedISize(nscoord aComputedISize, diff -Nru firefox-esr-115.7.0esr/layout/generic/ReflowInput.h firefox-esr-115.9.0esr/layout/generic/ReflowInput.h --- firefox-esr-115.7.0esr/layout/generic/ReflowInput.h 2024-01-15 21:07:33.000000000 +0000 +++ firefox-esr-115.9.0esr/layout/generic/ReflowInput.h 2024-03-14 05:21:29.000000000 +0000 @@ -503,6 +503,11 @@ // nsColumnSetFrame is balancing columns bool mIsColumnBalancing : 1; + // We have an ancestor nsColumnSetFrame performing the last column balancing + // reflow. The available block-size of the last column might become + // unconstrained. + bool mIsInLastColumnBalancingReflow : 1; + // True if ColumnSetWrapperFrame has a constrained block-size, and is going // to consume all of its block-size in this fragment. This bit is passed to // nsColumnSetFrame to determine whether to give up balancing and create diff -Nru firefox-esr-115.7.0esr/layout/generic/nsColumnSetFrame.cpp firefox-esr-115.9.0esr/layout/generic/nsColumnSetFrame.cpp --- firefox-esr-115.7.0esr/layout/generic/nsColumnSetFrame.cpp 2024-01-15 21:07:33.000000000 +0000 +++ firefox-esr-115.9.0esr/layout/generic/nsColumnSetFrame.cpp 2024-03-14 05:21:30.000000000 +0000 @@ -662,6 +662,8 @@ }(); kidReflowInput.mFlags.mTableIsSplittable = false; kidReflowInput.mFlags.mIsColumnBalancing = aConfig.mIsBalancing; + kidReflowInput.mFlags.mIsInLastColumnBalancingReflow = + aConfig.mIsLastBalancingReflow; kidReflowInput.mBreakType = ReflowInput::BreakType::Column; // We need to reflow any float placeholders, even if our column block-size diff -Nru firefox-esr-115.7.0esr/layout/generic/nsImageMap.cpp firefox-esr-115.9.0esr/layout/generic/nsImageMap.cpp --- firefox-esr-115.7.0esr/layout/generic/nsImageMap.cpp 2024-01-15 21:07:34.000000000 +0000 +++ firefox-esr-115.9.0esr/layout/generic/nsImageMap.cpp 2024-03-14 05:21:30.000000000 +0000 @@ -467,7 +467,7 @@ Point p1(pc->CSSPixelsToDevPixels(mCoords[0]), pc->CSSPixelsToDevPixels(mCoords[1])); Point p2, p1snapped, p2snapped; - for (int32_t i = 2; i < mNumCoords; i += 2) { + for (int32_t i = 2; i < mNumCoords - 1; i += 2) { p2.x = pc->CSSPixelsToDevPixels(mCoords[i]); p2.y = pc->CSSPixelsToDevPixels(mCoords[i + 1]); p1snapped = p1; @@ -493,7 +493,7 @@ nscoord x1, x2, y1, y2, xtmp, ytmp; x1 = x2 = nsPresContext::CSSPixelsToAppUnits(mCoords[0]); y1 = y2 = nsPresContext::CSSPixelsToAppUnits(mCoords[1]); - for (int32_t i = 2; i < mNumCoords; i += 2) { + for (int32_t i = 2; i < mNumCoords - 1; i += 2) { xtmp = nsPresContext::CSSPixelsToAppUnits(mCoords[i]); ytmp = nsPresContext::CSSPixelsToAppUnits(mCoords[i + 1]); x1 = x1 < xtmp ? x1 : xtmp; diff -Nru firefox-esr-115.7.0esr/layout/generic/test/file_bug514732_window.xhtml firefox-esr-115.9.0esr/layout/generic/test/file_bug514732_window.xhtml --- firefox-esr-115.7.0esr/layout/generic/test/file_bug514732_window.xhtml 2024-01-15 21:07:34.000000000 +0000 +++ firefox-esr-115.9.0esr/layout/generic/test/file_bug514732_window.xhtml 2024-03-14 05:21:30.000000000 +0000 @@ -5,7 +5,7 @@ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" width="600" height="600" - onload="setTimeout(nextTest,0);" + onload="setTimeout(startTests,0);" title="bug 514732 test"> diff -Nru firefox-esr-115.7.0esr/layout/reftests/css-grid/grid-repeat-auto-fill-fit-001-ref.html firefox-esr-115.9.0esr/layout/reftests/css-grid/grid-repeat-auto-fill-fit-001-ref.html --- firefox-esr-115.7.0esr/layout/reftests/css-grid/grid-repeat-auto-fill-fit-001-ref.html 2024-01-15 21:07:34.000000000 +0000 +++ firefox-esr-115.9.0esr/layout/reftests/css-grid/grid-repeat-auto-fill-fit-001-ref.html 2024-03-14 05:21:30.000000000 +0000 @@ -10,6 +10,8 @@